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:
-
The level should include the
GameState
prefab, and preferably theShapesDefaultCamera
andGameBoundary
prefabs for consistency. It is therefore a good idea to copyAssets/LevelTemplate.unity
to the levels folder and begin work there. -
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 theAssets->Build Asset Bundles
menu option. Otherwise, scenes will either be outdated or fail to load!
- After adding a level to the
-
Safe objects to add into the world in a level include everything in
WorldItems/
andResources/SimpleTextMesh
(for in-game textboxes).- Script-wise,
AutoMaterial
,AutoMover
, andKillOnTouch
are safe to add to most objects. (BindDisplay
works as well but that currently requires manual tweaking and a dummy gameobject)
- Script-wise,
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.
{
"levels":
[{
"name": "How to Move",
"path": "Tut1Movement"
},
{
"name": "How to Hop",
"path": "Tut2Jump"
},
"..."
]
}
GPLv2