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.
Minecraft projects
I’ve been playing Minecraft for most of my life. I do a lot more than just playing survival, or building. I’ve always tried to push Minecraft to its furthest, without the use of mods.
I’ve always had this dream Minecraft feature, where any server you join, the game would automatically download the mods necessary to play, so each server could be an entirely new, different experience. Obviously this would never work, there are too many security and safety concerns. However, there are Plugins, and datapacks, that run on the server, to modify how things act, and it is possible to automatically download resource packs, when joining a server. Servers like Wynncraft, MCC Island, and Origin Realms, are all massive servers, that feel like completely different games, and the workarounds they have to use to make things work, is almost more difficult than just making a brand new game!
I’ve always been fascinated by this, datapacks, plug-ins, resource packs, are all very limiting compared to fully fleshed out mods, with a mod, it takes just a few lines of code to add in a brand new item, with its own item ID, and texture. with datapacks, it still isnt possible, the current workaround is to take an existing item, preferably one that isnt used often in game, and modify its item NBT data, or ‘components’, to change specific parts, like its sound effects, or name, or model. then you must make a completely separate resource pack, with very specific formatting, and its own metadata file to tell the game that the item with that NBT data, must use this model. this doesnt even take into consideration adding crafting recipes, which there still isnt much official support for. these methods are incredibly limiting, although, every update Mojang is working on adding support for new components, and nbt data.
I’ve worked on some servers that use these workarounds, some my own, and some for large events. I’ve dissected all the popular servers resource packs, which get stored locally on your computer, they contain the mcmeta files which can give you hints on how some assets work.
One of my largest solo projects, was my hat pack, which was just a datapack, and resource pack, that added ~50 wearable hats into your game. my first idea was for a public server, where people could either buy, or earn keys, to unlock crates, that would randomly give you a hat, similar to Team Fortress 2. These hats would come in different rarities, and could be traded, the idea was that there would be a legitimate market where people would trade their rare hats in exchange for other hats, or goods on the server. I eventually spun this off into its own pack, where the hats would have a very rare chance of spawning on hostile mobs heads.
Another project i worked on was a Minimap / World map plugin. Minimaps are a common client side mod that most minecraft players use daily, it renders a real time map of your surroundings, aswell as a world map which allows you to zoom out and see everywhere that you have been. It is a very useful mod, theres a reason so many people install them. however, I wanted to make a version that is entirely on the server. although this isnt truly feasible, it would cause the whole server to slow down if/when used by hundreds of people at once. But the concept worked. I would render the top down of the terrain generated, and display it on a map. maps in minecraft usually work by just, rendering a single section, if you move around, the map wouldnt follow you, and thats what this plugin changes.
Another purely visual project I worked on, was this custom tab menu. The tab menu in Minecraft is just a way to see players that are online, however it is often used by servers to advertise themselves, to show what server you are playing on. Tab menus can only be text, and they can be modified by the server, often times animated by changing the color and cycling each frame. I took this to the next level by adding images, but images arent supported, so I used a resource pack to add a bitmap image as a font file, putting that font overtop unused unicode characters that are normally untextured. after I created this, several large servers followed, making custom fonts, icons, etc. but I wanted to make something more unique, so I animated the image, by cycling through 20 different unicode characters on the tab menu, basically, a flipbook animation of unicode characters that are textured to look like full images. I also achieved the rank icons the same way, a custom texture, and the role just displays the unicode character in front of the usernames.
2D Unity RPG
To continue learning everything there is about Unity, I began this project, a simple 2D top down game, very simple graphically, 16x16 sprites, the only color used is white. drawing inspiration from baba is you, and other top down rpgs like zelda or pokemon. while it is simple, i think the post processing gives it charm, like playing on a CRT TV.
But the goal wasnt to blow anyone away with the visuals. I just wanted to learn the ropes of unity, there were so many simple things that I have no clue how they work, I can do materials, I can do shaders, but I have no idea what goes into making a main menu screen, or how to make an enterable house, or how to get text box dialogue to appear on screen, so that was the biggest challenge, programming.
In just under a week I was left with this, with basic sound effects, post processing, npc dialogue, collision, movement. I think of it as a possible framework to make a much bigger game. The biggest hurdle I had to overcome while making this was definitely the UI, it was incredibly confusing, but once I got the hang of it it was simple. another hurdle was definitely the movement, I did all the movement animations and sounds in the programming, not using Unitys built in animation controller.
Artistically while simple, I did have some trouble with it being too simple. There were lots of things I wanted to draw, and put into my game, but since every sprite was 16x16 black and white, they were too simple.
Unreal Engine Asset Level Design
This project was my first time using Unreal Engine for anything besides basic material editing. It had me design a mock-up for a level and turn it into a fully realized 3D world, utilizing provided assets, the floor, walls, and doors, and find fitting 3D assets on the Fab store. I also had to add in lights to make the level visually coherent.
This assignment taught me practical experience in how to design within a 3D environment, learning to consider factors such as player navigation and visual storytelling, how to stick with a cohesive style. What was surprising, was how tricky it became to populate even the smaller areas, with assets that felt like they belonged.