Snake VS Block style level design?

Hi,

I want to make a game where the player is stationary on the screen and obstacles come in the screen from the top and move to the bottom, similar to how it is in the game called Snake VS Block:
https://play.google.com/store/apps/details?id=com.bentostudio.ballsvsblocks

Do you know how levels like these are designed?

  • Is the snake move upwards with the camera and the blocks are stationary? Or is the snake stationary and the blocks move down?
  • Are these usually pre-made levels in similar games in separate scenes or are they generated procedurally in a single scene?

If you know anything about how games like these are put together, please tell me how these levels are usually approached.

Thanks!

I developed a game similar to snake vs blocks. KPIs were mediocre, I ended up killing the prototype but if you live in the US, you can still check it out. https://apps.apple.com/us/app/tower-snake/id1504696653

To answer your first question, the snake is moving with the camera, not the blocks. The head is the only element that’s physics driven. You can store the path the head is taking and just map the rest of the body along that path, trimming at the position of the last active ball.

As for level design, it’s procedural. You can determine what’s legal and then add rows dynamically. For instance, you’ll never see 2 rows of blocks back to back.

My personal implementation went like this. I had a base class : Pattern. Then I had concrete implementations, say “FullRowOfBlocks”, “RowOfShortSplitters”, “RowOfLongSplitters”, etc. My CourseGenerator class held a Dictionary<Pattern, List> that determined what transitions were legal. Then I’d just spawn the rows, one at a time, based on how far the player had advanced.

There are also other minor rules to improve the experience of the user. Say in snake vs blocks, you have full rows of blocks sometimes. Those rows will always have at least 1 block the player can get through in order to avoid a scenario where the user just doesn’t have enough balls and the only possible outcome is losing. If the player had only 1 ball remaining, there’s going to be an open slot.