Read notes and ideas from the artist here.

Characters
Rydian
Normal Jump (Can Jump Up 2 Blocks)
Normal Speed (5 Wide Hole Jumped)
Strong Movement (Can Easily Push Objects)

Yena
Normal Jump (Can Jump Up 2 Blocks)
Fast Speed (8 Wide Hole Jumped)
Normal Movement (Struggles To Push Objects)

Kitten
High Jump (Can Jump Up 3 Blocks)
Normal Speed (5 Wide Hole Jumped)
Normal Movement (Struggles To Push Objects)

If you want to get a feel for the movement, the test demo has a door at the bottom of the first cliff. Interact with it to get to a little physics test level that was used to tweak the character movements.


Objects
Springs will launch any character upwards a max of 8~9 blocks in the air with repeated bouncing. You have to be moving/falling into them to bounce off of them, they won't bounce you up if you just walk into them neutrally.

Boxes can be pushed around, stood on, and jumped off of. Boxes can stack on each other and you can still jump off of them, so block towers will work.

Balls and other round objects cannot be jumped off of, only rolled around. Being round, they tend to just roll off of things. Different balls can have different weights and can roll more or less easily.


Level Size
Here's a screenshot of the test level with all objects visible and a grid overlay.



The test level is 60x40 cells. Each cell is 16x16 pixels, the same size of the player.

An actual game level should be more along the lines of 90x40 cells, to give more room for exploration and moving around than the test level does. The exact size doesn't matter, just try to stay around that in general.


Level Makeup
The current plan is to include 3 NPCs per world, with 5 worlds.

Every level is made up of tiles and objects.

Tiles MUST fit the 16x16 grid. This means you cannot take an existing land tile and put it halfway between two others. Tiles always go on the grid, no exceptions. The physical land itself is made up of just squares and triangles, as seen in this closeup screenshot. Triangles can be flipped backwards like in this example, and squares can be stretched into rectangles of varying size.


Objects, on the other hand, are not constrained by the grid. Objects include interactive/movable objects (balls, boxes, buttons), NPCs, background scenery objects (trees and rocks), etc. These can be placed and overlapped and such as needed. Objects can also be scaled individually, but this will likely only be useful for balls and boxes.

To see the sprite sheets for the game so you know what sort of graphics and decorations can/will be used to render the level, look here. The various files should show the current state of the graphics at any given time.

Just so you know for technical reasons, this is the order that things are rendered in. First/higher layers are further back, so they show up behind the closer/later objects.
Layer 1 = Decoration objects like trees. Deepest layer so everything else shows up on top of them.
Layer 0 = NPCs, fetch items. They show up in front of background objects, but behind everything else
Layer -1 = Player and interactive objects like balls and boxes.
Layer -2/-3 = Ground/level earth terrain tiles.


Game Mechanics
The basic mechanics of the game will be simple. The player spawns into a level, but the exit door is closed. The player must make all the NPCs happy by giving them all the item they need before the door to the next level opens. The items will be scattered around the level, with some of them needing basic puzzle-solving or platforming to get to.



Some mechanics you can include are...
* Roll a number of objects into a container for an NPC's request.
* Push boxes onto buttons.
* Doors/barriers that appear/vanish based on buttons.
* Tricky platforming needed to get around.
* Using springs and/or bouncing objects to get higher.
* Stacking boxes to get higher.
* Deliver a certain rollable/pushable object to an NPC.

I'm willing to code basic interactions for two objects, but I want this to remain relatively-simple, so try to keep to ideas that resemble the above list while being creative about how it fits into the level.