Child of Olwen

2D Precision Platformer

Description

Winter is coming to an end and your destiny as the spirit of spring is to progress the world into your season. Use your agile movement to avoid the dangerous spikes, melt the last winter snow and wake up the animal wildlife from their winter sleep. 

Project Details

  • 8 weeks, half time
  • 9 people (4 programmers, 3 artists, 2 level designers)
  • Created with our school's in house engine
  • C++

My Contributions

Player Movement & Metrics

  • Handling input to affect velocity. 
  • Applying velocity to the position.
  • Decrementing velocity over time.
  • Implemented the game’s movement features:
    • Running
    • Jumping
    • Double jumping
    • Wall jumping

Collision & Gravity

  • Collision checking between points around the player and the tilemap.
  • Moved the player downwards with gravity while not colliding with the ground.
  • Implemented two different slopes (45 and 22.5 degrees) that the player could run on or slide on if too steep.

Snow & Growing Flowers

  • Wrote code for disappearing (melts) when colliding with the player.
  • Spawning a flower there instead that grows rapidly from the ground.
  • Loading from Json files exported from Tiled.
  • Added a checkbox in the level editor so that the level designers could choose if a specific snow pile should grow.

Spikes

  • Wrote code that kills the player on collision.
  • Loading from Json files exported from Tiled.

Springflowers

  • Wrote code to launches the player in their direction on collision.
  • I implemented both upwards and downwards launching springs.
  • Played idle and launching animation depending on the state of the springflower.

Camera

  • Projecting object positions from world to screen space, scaling them depending on distance and rendering them.
  • Smooth panning towards the player.
  • Zooming to distances given by triggers placed in Tiled by the level designers. This gave the designers the power to control how much the player sees.

Threaded seamless level transitions

  • Loaded the next level on a thread and patched them together by offsetting all the loaded objects to the end of the previous level.

Tilemap

  • Created a class with an array of tiles that updated and managed the tiles.
  • Added multiple tile layers to support objects like snow and spikes on top of the ground tiles.

Parallax Editor

  • Created a standalone C# windows forms tool that was used to place out parallax images in the back- and foreground of the game. 
  • The game could be run at the same time as the editor and updated on the press of a button. I first implemented real-time editing but had some issues and decided to go with a button.
  • The game had a marker that moved in the world for the parallax that was currently being edited in the editor.

Level loading from Tiled

  • Loaded levels from JSON files exported from Tiled Level Editor.

Team

Screenshots