Sponsored By

Featured Blog | This community-written post highlights the best of what the game industry has to offer. Read more like it on the Game Developer Blogs.

Postmortem: Gregory Kogos' Playdate puzzle platformer Omaze

"My initial pitch was 'port_ RotoRing_ to Playdate,' but as the development went on, the actual process was more like 'remix RotoRing ideas for Playdate and see how it goes!'"

May 17, 2022

4 Min Read
The Omaze title screen on a Playdate that's flanked by the original experimental title and an adorable black cat

Author: by Gregory Kogos

Game: Omaze
Developer: Gregory Kogos
Release Date: 16/05/2022
Platforms: Playdate
Number of Developers: 1

00_omaze_postmortem.jpg

How it started

My background is creating alt.ctrl custom hardware games. The most successful one is RotoRing -- a circular puzzle platformer played on two LED Rings with a rotating knob and a button that runs on Arduino. 

To help provide a better understanding of the following article, here’s the video of RotoRing gameplay [below].

Since its creation in 2017, every time I saw a product with a physical spinning input (Microsoft Surface Dial, Logitech Craft keyboard or even Nintendo Labo) I reached out to make a "port" of RotoRing for it. Unfortunately, I had no takers. Still, when I saw the Playdate's crank I did the same, but this time I was lucky that Nick Suttner -- who was helping Panic with finding devs -- had already played RotoRing at a festival in Busan and was very enthusiastic about it.

My initial pitch was "port RotoRing to Playdate”. But as the development went on, the actual process was more like “remix RotoRing ideas for Playdate and see how it goes!"

 

How it went

The first trial was placing two rings in the center of the screen simulating original RotoRing. That didn’t work well. I quickly realised that I had four colors to use on RotoRing to indicate the player, enemy, exit and background. On Playdate there are only two colors, and while I could’ve got away with dithering and geometric shapes it simply didn’t look good. 

The inner circle was also too small and crammed, and then I had all this unused space on the sides of the screen just sitting there. So, I decided to get rid of one orbit and instead make players switch between the inner and outer sides of the big circle. Eventually this layout morphed into the game's boss levels.

01_omaze_-_boss.gif


However, for the main game the layout was still too limiting. I had to come up with something that would convey the ideas of RotoRing on the rectangular 400x240 1bit screen. That's when the idea for a grid of circles hit me. It immediately solved all of the problems I had and added more gameplay opportunities, while preserving the original gameplay principals: going around in circular motion, and switching from one ring to another while avoiding enemies and solving puzzles. That’s also when the game got it's name, Omaze!

After visually studying "everything that has circles"I decided on the 5x3 grid size so it would fill the entirety of the Playdate's 400x240 screen. As I printed the grid layout to sketch the levels I found it aesthetically pleasing, and that's when the idea was locked in place.

Sketches of circular levels for Omaze

Here are the examples of RotoRing mechanics remixed for Omaze. Same ideas -- different layout. 

Basic movement:

03_rotoring_-_basic_movement.gif03a_omaze_-_basic_movement.gif


Static hazards:

04_rotoring_-_hazards.gif04a_omaze_-_hazards.gif


Moving enemies:

05_rotoring_-_moving_enemies.gif05a_omaze_-_moving_enemies.gif


Hazards move when you move:

06_rotoring_-_hazards_move_as_you_move.gif

06a_omaze_-_hazards_move_as_you_move.gif


Crank

Spinning the crank is great, but it's also incredibly satisfying to dock it! There are APIs that detect whether the crank is docked or undocked, which essentially gives the Playdate one more on/off switch. It's a feature that might often be overlooked, so I decided to incorporate docking the crank into the gameplay. 

I added the autorotate circles and dash circles, where with secondary action (button A). With those in place some sections of the game are played with two buttons only, and with the crank docked. It's nice a change of pace that helps freshen things up.

07_dock_the_crank.gif

Art

08_omaze_-_visual_refs.png

Coming from Arduino development I'm used to generating everything with code. That means all of the game's art and animations are generated with geometry drawing functions like circle, arc, and polygon. I also didn't use any built-in collisions because checking a player has hit the enemy is as simple as comparing their positions on the circle. Some pre-rendered images are used only for Omaze's launch card and menu.

I feel like this generative approach helps to make the game look as minimal as possible, which might be a good idea for bringing some clarity to your visual language on a rather small Playdate screen

Audio

The sound is generated with a built-in synth. Not only does it reduce the size of the game (it’s <60 Kb), but it also helps to make the sound design reactive and responsive. For example, the sound of movements in Omaze will vary depending on how fast you move: crank it faster and the pitch is higher and vice versa.

While working on audio I made little tool to check how the certain synth would sound directly through Playdate speaker and shared it on dev forum.

Conclusion

As with alt.ctrl games, developing for Playdate provides creative constraints that can inspire creators to dive deep into game design and aesthetic minimalism. It also helps turn the process of development into something that feels more unobtrusive and pure.

Read more about:

Featured Blogs
Daily news, dev blogs, and stories from Game Developer straight to your inbox

You May Also Like