Milton’s Unity Quest

I had been itching to create something for a while, and a friend sent me a two week long game jam. They told me I should make something for it. The theme of the jam was “Bouncy.” Immediately I thought of a million different ideas. Some were vague and abstract, twisting the theme in different ways. Others were obvious, the first things that came to mind. I decided to go with something simple: a basic bouncy ball platformer. It had been done before, but I wanted to give it a shot because it sounded fun to make.

In my head I already knew what I wanted. A level-based time trial platformer where you play as a marble. I wanted the game to focus on fluid movement and a unique art style. I opened Unity, started a new project called “Marble Madness,” and began writing my first movement script.

This was my very first, rough script. It worked well enough to be fun and gave me the motivation to keep building, but it had plenty of flaws. I wanted the game to have a high skill ceiling without complicated controls, so the movement was fast and momentum-based. I added a jump button and then worked on the bouncing. Since the theme was “Bouncy,” I decided to make it so that if you held space as your marble hit the floor, you would bounce back up to about 75% of your max jump height. If you weren’t holding space, you would land smoothly and keep rolling. I also made sure this worked on slopes, so if you bounced on a ramp you would launch at that angle. That little detail gave the game a big skill ceiling. You had to decide when to hold space depending on whether you needed height or speed.

Once that felt good, I started making some simple test levels. I added a placeholder skin for the marble and some basic textures for the terrain. Since I’ve always loved customization in games, I knew I wanted players to be able to pick different marble skins, so I started working on that system too.

After a few hours of messing with styles, I kept coming back to the early 2000s Windows XP and Vista look. Games like 3D Pinball: Space Cadet, or more recently, Nubby’s Number Factory and Cruelty Squad. They’re the kind of games that at first look like no effort went into the visuals, but then you realize how much thought went into pulling off that style. As one Steam review of Cruelty Squad put it, “The dev put an incredible amount of thought and effort into every aspect of this game and then put twice as much thought and effort into making it look like they didn’t.”

I started designing a menu screen. It had some basic icons and placeholder buttons, and it mostly worked, but I quickly realized how hard it was to make them look right. Each button or icon would take me hours. Once I figured out a process, though, I could make them much faster. For example, with the settings button, I modeled it in Blender using textures from old retro CD packs I found on archive.org. Then I messed with the materials until I liked the look. I rendered it as a low-res PNG, brought it into Photoshop to add text and hover states, and then passed it through Aseprite to reduce the resolution and color palette. The dithering gave it that perfect retro look.

Eventually, I had almost all the icons I needed. I added silhouettes for locked skins, an equip button, and made everything functional. Around this time I also named the main marble “Milton.” That was just the name I had been using in the files, but I ended up putting it in the UI too, so whatever skin you had equipped would show up as “Milton.” Next, I needed to make a level select screen, and I didn’t want it to be boring.

Instead of a normal list of levels, I made a phone dial. You type in the level number you want and press enter. It was partly a joke and partly a shortcut, since it was easier to program. It also gave me a way to hide secret skins. If you typed certain codes on your keyboard while on this screen, you could unlock skins that didn’t appear in the normal locked skins list. This was mostly meant as a way to thank friends who helped me out during development by giving them their own marble in the game. On the right side of the screen, I also added a spinning cube to preview levels. The plan was to replace the cube with small low-poly versions of each level once they were finished.

At this point I started running into problems. Loading new scenes in Unity was buggy. My scripts were unorganized, some of them didn’t even do anything, and the skin system would work sometimes and fail other times. The settings menu didn’t function, the pause menu wouldn’t unpause correctly, the cursor wouldn’t lock, and overall I wasn’t happy with the colors or branding of the game. I spent a full day just cleaning things up and fixing what I could.

I ended up remaking the color scheme, renaming the game “Milton’s Marble Quest,” and rewriting the movement script from scratch. Friends helped with music and marble skins. I made an opening icon and a credits screen, and I built a handful of levels, including a tutorial that taught momentum and bouncing. At this point I was happy with the game. It was short, just a small demo, but it was fun.

I didn’t finish in time for the game jam. The scope was way too big for two weeks. But I learned so much from the process. Even though it’s still buggy, I want to finish Milton’s Marble Quest one day and release it properly.

Next
Next

Minecraft projects