Giter Club home page Giter Club logo

wheelsredemption's Introduction

The Wheels of Redemption

Mobile Game prototype made with Unity based on the popular flash game Wheels of Salvation.

THIS CODE IS RELEASED UNDER THE GPL LICENSE, IF YOU WANT TO USE IT FOR ANYTHING THAT IS NOT OPEN-SOURCE CONTACT ME FIRST.

Gameplay

Download

The app is not officially released on any store, but here is the latest unofficial build:

Setup

This was developed with Unity 5.4.0f3 and will not work on more recent versions. I also had trouble running this Unity version in Windows 10 (Windows 7 was used at the time of development).

This limitation is due to the fact that Unity updated the C# and Mono versions later on and that caused some issues with templates (more precisely the introduction of the covariant and contravariant concepts).

A refactor was started in one of the branches, but was never finished.

Gameplay

levels

On the image above we can see the main elements of the game:

  1. Standard Wheel: Wheels are separated in four quadrants. For a standard wheel all four are "sticky", meaning that the player attach to them. The size of the wheel dictates how fast it rotates. A wheel can be slowed down by the player if ne presses it for some time. I will slowly regain speed when he releases the pression.
  2. Starting platform: This is where the player starts. He goes from left to right automatically. He cannot stop that movement. He must jump to the first wheel by clicking anywhere on the screen except on a wheel.
  3. End platform: This is the platform the player must reach to win the level. He wins as soon as he touches it.
  4. Wooden Wheel: This type of wheel has one or more quadrant that is not "sticky". The player will bounce against them.
  5. Wall: This is the limit of the level, the player will bounce a little bit against them.
  6. Lava: The lava rises all the time, the player must reach the end platform before it touches him. He loses the level otherwise.

Future

You can look at the issues to see a bit what remains to do, but here are some ideas and priorities:

  • Finish the refactor of the communication engine that causes trouble with templates
  • Add real assets
  • Add fragile wheels that break after the player went once on them
  • Add coins and perfs to buy with them
  • Add some upgrades for the player
    • Double jump
    • Big jump
    • Rocket boots
    • Spiky boots (to be able to use wooden wheels)
    • Light boots (to not break the fragile wheels)
  • Add an infinite map, procedurally generated

wheelsredemption's People

Contributors

sytten avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

wheelsredemption's Issues

Reactive camera

  • Adapt the screen for different resolutions
  • Try to see if it looks good on different devices
  • Adapt the camera

Errors logger

As discussed here #44 (comment), we should have a proper logger.

  • Must be able to handle crashes
  • Must log errors, warnings and info depending on the setting specified
  • Logs should be dated and written in a file on the device
  • The logs should be sent to our AWS server

This is not a priority right now, but it must be done before we start to have real testers.

Win Menu

When the player finishes a level, we present this menu,

  • The player should be able to go back to the main menu
  • The player should be able to continue to the next level
  • That menu should be designed for an ad bar at the bottom
    Eventually we will add metrics (high score, best time) here too

Lava

  • Collider should be growing over time
  • If the hero touches it, restart the level

Part of wheels not sticky

  • Must be able to set one or multiple arc(s) as "not sticky"
  • The "not sticky" parts must a have a different sprite (set automatically if possible)

I suggest we divide the wheel in four arcs with each one an arc collider.
I found that MIT library (meaning we can use it in our closed-source software if we write somewhere that we used it) that could be used for the colliders:
https://github.com/GuyQuad/Custom-2D-Colliders

InGameMenuDisplay inherite Monobehaviour

Compilation error:
[Unity] Assets/Scripts/Hero/States/State.cs(31,9): error CS0103: The name `InGameMenuDisplay' does not exist in the current context
It seems that Monobehaviour doesn't like static functions. Plus it is useless to have this inheritance.
The class should also be marked as static.

Touch on wheel makes it slow down

  • Need to replace the InputManager to be more flexible
  • When the player presses a wheel it slows down and speeds back up when its released
  • The player should jump on button pressed instead of release (otherwise its confusing for the player)

Choose final name

Since I plan to publish the game in open alpha in maximum one month, it would be nice to chose a final name.
Current candidates:

  • Wheels of Redemption
  • Wheely

Pause

If the player temporary quit the application (phone closed for example) or home button hit.

  • The game should enter a pause state
  • The game should resume only when the play touches the screen once
  • There should be a visual indication of the pause (gray screen and a big Pause for example)

Bouncy wheels

  • The hero should bounce on specified quarter of the wheel
  • Create necessary prefab with different texture

Basic assets

  • Create basic assets (rectangles)
    • Hero
    • Platform
    • Wheels
    • Background
    • Lava
    • Walls
  • Assign them to the sprite
  • Create prefabs

Camera

  • Should follow the player
  • Must have boundaries

Finish Zone

  • On collide, the player wins
  • For now, restart the level (fade on black)

Jump From Wheels

  • Detach hero from the wheel
  • Calculate and apply initial force to player

Locking levels

  • Levels should use a locking mechanism (using the progression save, see issue #27)

Lost menu

We the player dies, we present that menu.

  • The player should be able to go back to the main menu
  • The player should be able to replay the level
  • The menu should be designed for an ad bar at the bottom
    We will eventually also add metrics in this menu.

Handle touch screen inputs

The title says it all.

  • Must be able to navigate the menus
  • Must make the player jump when clicking on screen

Hero

  • Must be able to jump when pressing the touchscreen
  • Force applied must be related to the time the player pressed the screen (need a maximum too)
  • Space bar emulation for PC tests

Split Levels Menu

  • Levels should be divided in sub-menus (we need to determine how we want to separate them)

Wheels

  • Rotating wheels
  • Can change dimension easily
  • Can change speed easily

Level Loading

We must discuss about the level loading

  • It should be flexible for the level designer
  • It must be easy to upgrade/change a lot of levels easily
  • It must small in size (cause we will have a lot of them)
    I see two solutions: Each level is a scene OR We load a file and replace the objects (always in the same scene)

Destroyable wheels

  • When the player go on the quarter once, its destroyed (the player can't stick anymore)
  • Create the necessary prefab and apply a different texture to it

Starting Zone

  • Hero drop on a platform
  • Must move automatically from left to right and back

Save progression

  • We should have a permanent file where we save the player progression
  • It must be flexible enough so we can add more information later (for example stars on the level for the performance, best time, coins accumulated, etc)

Interior Walls

As I was thinking about level design I thought it would be nice to add various shape walls inside the levels to make the levels more difficult in the later levels.

  • Walls should be able to have various rectangular sizes (and still look good)
  • Suggestion: Maybe we could have types of walls, some with bounciness, others without, etc.

Start menu

  • Should have a Play button
  • Should have a Settings button
  • Optional buttons: High Score/Achievement, Share the game
  • Should be planned for an ad banner at the bottom

Create icon

  • Must have the various sizes required by Unity
  • Must represent well the game

Stick to Wheels

  • Hero must stick to the wheels when he hits it
  • On collision, replace the hero to be ready for another jump

Rework messaging system

Since we update to unity 5.5 and the compiler was updated to C# 4, it no longer supports the method I was using to dispatch generic events.
I will rewrite it using delegates or an event aggregator.

Levels Menu

We the play hit play, we present this menu

  • Should be have to choose a sub-menu of levels (we need to determine how we want to separate them) Moved to #41
  • Each sub-menu should have multiple levels using a locking mechanism (using the progression save, see issue #27) Moved to #40
  • Should dynamically display all the available levels of the game
  • Should load the right level when clicked
  • Should have a button to return to the main menu

Level design

When the core game features will be done, we should consider how we want to create the levels.
If we decide to create them all ourselves we will need some guide lines for the difficulty of each level as well as for the difficulty progression.
Maybe a bit of exterior help would be nice to have here.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.