Plans for polishing and finalization of game logic.

Updates

Missed many past updates, I’ll try my best to continue to post, but no guarantees if it will continue weekly or monthly.

Polishing

While starting to work on polishing the game, I realized that there were some fundamental issues like having many different internal states that had to be visualized. This all leads into simplifying rules, making gameplay more intuitive, making art as minimal as possible, but all without decreasing difficulty.

Started working on an easy way to animate things.

Game Logic Changes

All these different iterations and versions of the game I keep making, are to find unique mechanics that are simple to understand, but allow for new, challenging puzzles. The last version with the “snake” player, was definitely more challenging for players than the one with life points. However, the merging rules were not intuitive and too complex for players to fully understand by simply playing the game. If I just remove the merging rules, then the snake mechanic feels like something arbitrarily thrown in, with very weak puzzle emergence. It’s still better than life points overall, but has a lot of complexity with little difficulty improvements.

Going back to the drawing board, we can pull in a bit of DNA from almost every version of Project Square and Toroban, but this time sticking to the idea of a design that can be polished and minimal.

Great Mechanics Discovered

These are ideas that have the potential for making great mechanics, discovered from previous versions. There are different reasons why they didn’t work before, but I have solutions for all of them and are planning to integrate them all with the next version:

  • Toroidal world
    • Obviously keeping this, and now making it even better - see below
    • Solves screen scaling issues, what to show for background, and adds some interesting puzzle elements
  • Time travel
    • Playing/paused states + allowing these to be changed during the level
    • Timeline concepts of branching, and going backwards/forwards in time
    • Visual display of time states doesn’t allow for clean design
  • RGB
    • Having so many objects with RGB states and the color mixing concepts are great
    • There are 8 different states for minimal benefit, other than forcing mixing concepts
  • World offsets
    • This one was an amazing way to interact with the toroidal world
    • No known way to animate due to confusing wrapping math, along with disparities between logic and rendering code
    • Void areas were empty and unusable, introduces new background problem that toroidal world was supposed to solve
  • Player rules
    • Cloning
      • Having multiple player entities can make interesting puzzles, given more constraints/interaction rules
    • Snake/following
      • Players that follow each other are cool, but see above about merging rules being too complex
    • Death state
      • Works well with time travel and other mechanics here
    • These variations on their own were interesting, so want them all but need to keep it simple
  • Water
    • This one is an old idea, with a nice, refreshing theme
    • Stacking layer mechanic was visually confusing and unacceptable, so this was removed a long time ago, instead of being fixed

Solutions & Conclusion

The prototypes showed me both what was good and bad. I’ve done a lot of brainstorming the past several weeks, and have come up with this:

  • RGB is now used to display visual states
    • Red: Paused
    • Green: World offset
    • Blue: Pull
  • Void world level
    • Void spaces that are revealed when changing the world offset, can be used as an alternate dimension with completely different objects in that area of the level
    • Function to map global (player perspective) coordinates to internal level coordinates - this can be made more robust and reused by rendering code. Animation can be made smooth by queuing up movement animations on output sprites, with source & target mapped positions. Logic should be more understandable by doing everything at the tile-level, instead of the level-level :D. The set of output sprites is now known based on window size.
  • Animations
    • Changing world offset
    • Light beams
    • Timeline history erasure/restoration
  • Simple water
    • Water will drown all player entities that enter, but all objects and light are allowed to pass through.
  • Simple player
  • Control block

I am purposefully hiding details, because all of this is subject to change. I do have most of this figured out and documented. I’ll keep working on all these changes, which should provide a cleaner, more minimal, more challenging, and more intuitive game.