Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

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"




A colorful 2D platformer game.




No packages published