Gameplay Mechanics, Specification
Movement
Characters can move:
- Forwards (walk right)
- Backwards (walk left)
- Jump
- Push objects forwards (right), pull objects backwards(left)
- Fight against other entities (enemies)
Enemy entities track characters position and follow them:
- Forwards (walk left towards player)
- Backwards (walk right away from player)
- Fight against other entities (players)
Storyteller entity
- Does not move it's position at all.
Other entities, but boxes are static. Boxes can be moved by the player.
Interaction
Characters interact with static and dynamic game elements, which they are able to collide with.
- Box: push/ pull
- Breakable floor: after X seconds after colliding --> character falls down
- Entity which is considered as "Storyteller": player presses 'F', if he is near to the entity --> textual interaction appears
- Other player: no interaction
- Gravity Shift - voting: both players vote for a 'Gravity Shift' by pressing 'G'
- That is the only interaction between both players.
Other game elements do not interact with each other.
Menu and UI elements:
- Buttons
- Submit input field information from host game and join game form.
- Create new game session
- Join a game session
- Choose
- Switch characters
- Choose Levels (by clicking on level in world map or sliding through each level in levels view)
- Submit input field information from host game and join game form.
- Input fields: Enter text.
- Slide through levels
- Buttons
Learn more about key handling here: 03-characters-controls
Players cannot interact with:
- In-game GUI elements (otherwise they could change timer or health bar information)
Collisions
Collisions can be found over every element, which is interactable (static and dynamic). Interactable elements are: box, floor, ceiling, wall, door, pressure plates, breakable floors, trap doors, characters, enemies, storytelling entity, collectibles. Floor and ceiling elements also have colliders, which are
Character's entities can not collide with:
- Each other, because both are on separate sides (one at the top, one at the bottom). If they shift gravity, they must not collide. Otherwise they would prevent each other from changing sides.
- In-game UI elements.
- Background elements in a level (e.g, gras or tree stumps)
Specialties in Collisions
- Box: is pushable/ pullable
- Breakable floor: after X seconds the floor breaks the collision, so that the character doesn't collide anymore.
- Pressure Plate: if pushed, state changes to active, if not pushed state is inactive --> active state can handle actions like open trap doors
- Characters: collide with everything they can walk on, but not with background elements (e.g., gras or tree stump)
- Collectible: only playable characters can collide with collectibles. These collectibles disappear after colliding with it.
Game loops and Animations
Character animations are set in loops, because we don't know how long the player will press the defined key.
Character:
- Walk
- Idle
- Jump
- Jump in idle state
- Die
- Push and Pull other objects (e.g., Boxes)
- Turn on 'Gravity Shift'
- Talk
- Fight:
- Shoot
- Slime slings
Storyteller entity:
- Idle
Enemies:
- Walk
- Fight
GUI elements:
- Timer counts down a specific time, for when the level has to be completed successfully.
Sound effects are looped, so that animations are synchronized with it.
Background music is looped, because we don't know how long a team of players needs to finish a level. That means, that background music needs to be scalable dynamically.
Spawn Points
- Characters spawn at the beginning of each level.
- Enemies spawn randomly in a specific time interval.
- Collectibles spawn in the end of each level.
- Storyteller entity spawns at random positions in each level.
- The rest of the elements will be placed statically in the level.
User Interface
Learn more about UI and UX here: 10-user-experience-and-sound-design
Game Sections
Levels
- Levels can be generated by a level template over an application called "tiled".
- Each level object (e.g, character, background gras, collectibles) can be arranged via drag and drop.
- Tiled templates can be transformed to JSON files.
Scenes
- Learn more about the different scenes here: 10-user-experience-and-sound-design