Photo of Chris Miller
HomeBlogResume
On making the next game,

July 17, 2023

A spark without tinder

Making games has always been important to me. Whether physical or digital, I believe games as an art and an experience allows you to provide a level of immersion and play nothing else can and the ability to craft that for those your care about is something I cherish. I’ve been making games for over 10 years at this point. Nothing particularly good, but it’s grown me into the engineer and maker I am today.

And lately, I have been feeling antsy. I crave a creative outlet to sink my thoughts and capacity into and I think it should be a game. But no ideas have jumped out at me yet, and I think it’s because games are massive undertakings that I’ve quit on time and time again. Even the smallest endeavors can take ages and I fear committing to something I’m not/others aren’t actually that interested in and then having to add another game to the “never finished” list. I want this next game to be one to put out as “playable and complete-ish”. High bar I know.

So the last little while has been exploring possibilities and figuring out what draws me to a game idea, and what ends up killing them. To start, lets talk my past experiences:

In the Beginning

I’ve been attempting to make games for as long as I’ve been programming.

Game Dev is actually how I first got into coding in general, starting with scratch’s drag and drop engine before graduating to Unity3D’s scripting language and C# support once in middle school.

Thanks to past me’s diligence and data hoarding I actually still have built versions of a lot of the games my friends and I made in this era! Circa 2015 me built an archive website for the projects talking a little be about them, which I’ve deployed with little modifications to preserve it’s kinda horrible but charming state: https://legacy.realliance.net/

My favorite from this era is hands down Wizard Connect 2: a super janky arena shooter based on lots of low gravity jumping while casting weird ass spells at each other (large balls, but with different tracking algorithms and effects). I can’t tell if I just have nostalgia glasses for this game or if it was just actually fun, but it felt super cool getting to play with lots of people in the computer lab all in the same match. High chaos factor.

Game Dev as a Competition

After the first year or so of making games for fun and as a part of something to do in class (was fortunate to go to a school that had a computer/engineering lab), the rest of middle school and high school (ages ~12 - 18) game dev was focused mainly on designing games for an extra curricular engineering competition that my friends and I were a part of (shoutouts to the Technology Student Association for giving me crippling burn-out and anxiety). These all fit a general formula:

  • Short (3-5 levels)
  • Simple enough for the judges (someone’s volunteering parents) to complete
  • Some degree of educational value
  • Single Player
  • Must fit on a DVD

Lots of these were pretty neat! I have the source material for these but little in the way of built versions quickly accessible, I’ll need to hunt down copies off of DVDs that I believe were hoarded at my parents house.

What stands out with this era of game dev is that, due to the competition, games were forced to stay in a certain scope and brought to some degree of completion.

University Game Dev

Once out of high school and into university, game dev became a lot more open ended and a lot more sparse (until the end). The primary personal game project was Temple, a platformer based around playing a hovering ball. This took a few tries to get started (different languages, platforms, and frameworks) and was actively developed up to a year ago (https://github.com/ChristopherJMiller/temple). In addition to this was DoSSH, a multiplayer RPG played over SSH.

On top of that was the attempt to build a large multiplayer game as our big senior project, the same team together from the high school competitive video game development. We didn’t make it to a complete product, our project pivoted to being about the completed matchmaking system and user management system but it was still cool. We were trying to do a lot, it was called Wizard Connect 4 in homage to some ideas from the old middle school game (WC3 is lot to history).

Let’s figure out what’s next,

Reflecting on these eras I’m starting to really understand one thing: I look back the most fondly on the endeavors that aren’t just for others, but that can be experienced together. It tracks with also how when playing tabletop roleplaying games, I always love being the game master to build a world and let others explore it.

So in this quest to figure out what’s next, that at least sets design decision number one: Multiplayer Game. I don’t have a good track record for actually executing the multiplayer games in my past, but I’m learning my strengths and weaknesses. For example, in a recent multiplayer game attempt Hats with Friends (https://github.com/ChristopherJMiller/hats-with-friends), the project is now fully dead in the water due to not being able to wrap my head around networked physics (in addition to just a lot of 3D modeling). Turns out following along with a 2D example and then converting it to 3D successfully and then converting that to 3D deterministic physics was a step too far.

But Chris, if you just used a more mature game engine you could just use their off the shelf networked physics.

Look, I have a soft spot for Bevy they are making some good stuff lmao

I feel like if I’m going to make it to the other side of this project, it seems to take advantage of what strengths I have and strip down everything else to something I can attain without compromising the end result. Anything that is new territory should be tested upfront to not blow up the project later. A lot game design lately for me has been more about the interest in making the systems and less about making an interesting, or frankly fun, game. Maybe this calls for some rethinking in how I plan these projects.

Am I working backwards or forwards?

Temple’s development going stale was a pretty big disappointment for me. I spend months building the modular, ground up system I dreamed of, designed my own level editor and tile mapping system, all to actually get to level design and say “oh, I don’t actually have that many ideas this isn’t super fun”. It didn’t have that grab I was expecting, and maybe if I continued to work at it I could make it better but I felt the premise was beginning to hold it back. Because the player was a floating ball, jumps were often difficult to judge. What I thought would be this interesting fluid movement as you almost “float” from platform to platform with tiny jumps instead was unintuitive feeling and a little frustrating. If you are interested in trying it yourself to see what I mean builds are available on Itch with two playable levels, site password frog https://alumux.itch.io/temple

I think I was more interested in building out the systems with this idea of having the right tools meant I could design things without impediment. Instead I had a bunch of systems that equated to something not very fun out of the box, and still with plenty of design impediments. But also, I think cobbling together the most minimally viable game wouldn’t have solved it either. I’m really not a fan of “hacky” solutions in the name of getting it out the door, because that technical debt never goes away. But maybe there’s some sort of middle ground I need to pursue. Quick enough to get it into my and others hands to enjoy together, but not fast enough that I burn out from managing my own debt and not so slow that a miscalculation in the idea kills momentum. This feels easier said than done.

Another aspect of this is scoping, something I feel like you’re always improving on as an engineer. I still greatly over-scope my projects, coming up with the excuse of “oh it’s a later milestone problem” to then never making it to that scope. Because if you’re idea is only great once you add all the cool later milestone bits, small little novelties are the only thing giving it value and it’s lacking the main value-add. Though for the way I work, scoping needs to be something explicit or else I forget what on earth I was doing, so a little project management is helpful, maybe it should just be pushed down the line once I have that solid initial idea down and implemented.

So, middle grounds all around, let’s talk about what I’m comfortable actually doing and see if it informs anything.

Networking

Networking is absolutely my weakest skill around all of this, which kinda sucks and is something I’m working on. I’ve done a lot of reading into it, but adapting that into implementations has always been a bit difficult for me. Usually somewhere around the point of keeping clients and severs in sync when they’re both doing predictions and how to make that not a jittery mess gets lot in translation for me.

Also networking systems are always kinda cumbersome, but that speaks more to the libraries I’ve attempted to use. Naia, an up and coming library (https://github.com/naia-lib/naia) does an okay job but their lack of documentation has left me a little in the dark for certain aspects of it. However, if I want to move forward with my dream of this being some sort of multiplayer experience, I’ll probably use it again.

Before I can really decide on any game, I need to understand what’s on the table in terms of networking. So, regardless of future discussions I need to take some time to figure out what I’m comfortable implementing. Can I get networked physics to work and it feels good? If yes, that opens up a ton of cool ideas and experiences. If no, still plenty to look into but it needs to be known. This is absolutely a solved problem space, so I just need to give it it’s due diligence.

Graphics

Graphics are a hard one to pin down, probably because it helps define the game itself.

I can find my way around 3D models pretty well, but rigging and applying that rigging not so much, definitely a newer space. Also, as a solo project, it’s a massive allocation to model everything. If I did go 3D, it would have to be very basic models, we’re talking characters that look like basically meeples from board games.

Moving down to 2D, I can do some really basic pixel art but it never looks particularly professional (not that it needs to). This becomes a space where it’s easier to bring in external assets and not super opposed to that, just have to work to keep everything coherent in that scenario.

More basic than 2D sprite work would be ASCII art, as in your dwarf fortresses and net-hacks. I’ve always had a super soft spot for this type of work, and with projects such as doryen you can make some not super primitive scenes (proof: https://jice-nospam.github.io/doryen-rs/docs/demo/). So on the radar, but does limit game types.

Audio

Oh audio, I have such a fondness for the experience music can bring to games and art in general but I’m very novice at actually implementing it well. Whatever my idea is, I need the music and sfx experience to be good. Temple actually contains the only song I’ve actually fully “written” and performed in it, which is neat. I would probably outsource the actual tracks to either musical friends or whatever is available for free out there.

Platform

While snobby isn’t the correct word because that implies looking down on others for otherwise, I really enjoy building games in environments that I can fully control. That hasn’t stopped me from designing games in the likes of Roblox, Minecraft Modding, Super Mario World ROM-Hacking, etc etc but none of those projects ever stuck with me.

However, maybe taking this desperate search as a sign, if I come up with an idea but fail to pull it off when rolling on my own, I should consider building it on a platform. The current one in mind is s&box, the sequel to the ever popular Garry’s Mod. It would be able to give me the networking support I crave and even an audience for it.

This however points to the fact that the idea should be good enough on paper that I would see it as promising and fun when building it on my own but not implemented well enough to just adapt it into another platform.

Story

While I consider myself decent in terms of world building, I am not a strong fiction writer. My D&D campaigns were always plagued by having a really rich world with interesting things and systems, and then the story were “ehh waves hands it’s not like the players will end up following it anyways gotta roll with the punches.” Basic lines that end up getting derailed. Were they not captivating enough? Probably less to do with that and more the inner kleptomanic in every new player, and that’s how introducing an auction house run by a lich as a one-off novety pivoted our story into a boat campaign as the party high-tailed it off the continent after claiming some new trinkets.

Of course not every game is story driven, story is just one way to deliver experiential content to a player and driving agency in what they should be interested in. But set dressing at the very least is a powerful tool for informing what should and shouldn’t exist in whatever you’re building.

Do I want this game to be story driven? A part of me says yes? I have some world building ideas floating around in my head that haven’t been used since I’ve been out of the tabletop RPG scene since the pandemic started. Will this begin the wild life-long project of building multiple adventures and experiences in the same world to define canon events?? Probably not, though a cool idea.

Side Note: Capitalism Sucks

Starting full time work has been such a weird pivot for my brain. Where previously I could easily allocate myself writing and thinking time during the day and evenings in university, where my mind can just be fully cleared of other concerns and I could just be focused on building a world for my players to interact with this upcoming week, I just can’t anymore. I’m always thinking about work, or errands I need to run, or worries in the world, or honestly just instead wanting to take the little freedom I have after work and just spend time with people instead of working, even if it’s creative work. I miss having more time.

That’s probably everything worth talking about,

I can go into things like preferred genres and styles of networked games but at the end of the day I think I should do some writing, test my ideas, and report back anything that seems fun or started. I think this was a productive exercise, here’s what I think my final takeaways are:

  • I want to build a game I can experience with others
  • I need to prove to myself an idea is fun and practical from the get-go
  • I know I have a weak spot in networking, and need to strengthen that before determine what is a practical idea
  • I want to build it with Bevy, but should be open to building on an existing platform if it means getting a fun idea into the world
  • There are bits of a world in my head that I should write down, and maybe see if that turns into something?

So, this means the tasks to myself are:

  • Do some networking prototypes
  • Do some writing, no strings attached

In terms of starting points, this already feels like a nice way to get the juices going without promising myself too much. Once I have an idea I can get friends involved too, it is for them at the end of the day. If any of y’all are reading this, let me know if you have an idea that could also make things easier :)

Until next time!