Skip to content
A colorful 2D platformer game.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Shapes That Move

Shapes That Move is a simple platformer game written with the Unity3D engine. It includes realistic physics™, easy level creation, and a variety of objects to make your levels fun.


Prebuilt binaries for Windows, Mac OS X, and Linux can be found on the releases page.


Shapes That Move is built using Unity 2018.2 (Personal) on Windows and Linux. Opening the project it is as simple as cloning the repository and opening it in the Unity Editor.

Single-level builds are supported using the level scene in the build - multi-level builds use the MainScene.unity scene in Assets/.


Levels are stored in the Assets/StreamingAssets/Levels folder. Each level is basically a Unity scene file, but some considerations must be kept in mind:

  1. The level should include the GameState prefab, and preferably the ShapesDefaultCamera and GameBoundary prefabs for consistency. It is therefore a good idea to copy Assets/LevelTemplate.unity to the levels folder and begin work there.

  2. The level scene MUST have its asset bundle set to levels, or it will fail to import in multi-level mode (i.e. via MainScene).

    • After adding a level to the levels asset bundle, you must also rebuild the runtime asset bundle via the Assets->Build Asset Bundles menu option. Otherwise, scenes will either be outdated or fail to load!
  3. Safe objects to add into the world in a level include everything in WorldItems/ and Resources/SimpleTextMesh (for in-game textboxes).

    • Script-wise, AutoMaterial, AutoMover, and KillOnTouch are safe to add to most objects. (BindDisplay works as well but that currently requires manual tweaking and a dummy gameobject)

Level packs

Level packs are simple JSON files that tell Shapes' level selector which scenes to expose and in which order. All level packs named Assets/StreamingAssets/Levels/*.levelpack are automatically discovered on runtime, so there is no configuration needed to explicitly load them. For level creators, you will likely want to create a new .levelpack file or add your work to an existing one.

The level pack format is as follows: an object with a "levels" key pointing to a list of objects with a "name" and "path" key each. Omit file extensions when specifying the scene path.

            "name": "How to Move",
            "path": "Tut1Movement"
            "name": "How to Hop",
            "path": "Tut2Jump"



You can’t perform that action at this time.