Leviathan: design as you go

Back in college I would gamedev quite heavily (and multitask/skip classes, yet get ahead because gamedev…). At two points I did duo projects. I did the code, the other guy did the design. This worked out splendidly.

What I noticed is the part of me that’s used for design doesn’t work well with the itty gritty smaller steps. I could design, or I could program, but trying to do both would make me suck at either and frustrate me because it was like it took two different types of moods to do them.

Design: you have to be creative, and you have to look ahead. The details matter but the bigger picture has more weight. Everything needs to be cohesive and serve the same theme and atmosphere. At the same time it should be decently creative and new to keep humans intrigued.

Programming: you have to be directed and focused, and you have to stay in the moment for many hours, sometimes days. The bigger picture doesn’t matter, just iron out the details and make the input and output behave as planned. Being creative is overkill; you’re not the first to solve this problem, don’t write your own solution. Consistency is key here; it makes well organised and understandable/readable code, which is much easier to debug.


If you design and program the programming loses its focus, and the design loses its creativity.

The design becomes more organised and less organic, less exciting. I end up redoing it a lot because it just doesn’t have any intrigue to it; why would I play this? I end up focusing on content instead of quality, like content will somehow make the bigger picture pop more. I started sticking things into a predictable box because I am still using my organised brain.

Programming becomes a chaotic slog. If I start re-planning during the programming I stop working and start pulling my hair out. I keep losing track of what I’m doing and designing code rather than prototyping (and fixing it later, should it need it). My brain wants perfection, because I’ve been chiselling that design. But the code isn’t what anyone will see; they just see the end result. It doesn’t matter how creatively I glued everything together or how extensible it is (when nothing is even extending it). I get enveloped in designing instead of actually producing, normally to the point of being overwhelmed and dropping it out of frustration.

And what’s up with that idealisation? Why do I go off and start daydreaming about inconsequential success of various mechanics? It is good to recognise them, but for some reason I hang on to those thoughts. When those thoughts do not come into fruition quickly enough I start feeling disillusioned, even though I haven’t even made or tested them yet.


Maybe doing it on different days. Never worked for me because the idea of the game triggers the design brain in me. I can’t help associating things (is there a way to even stop this?).

Doing it many months down the line. Great, now I’m obsessively trying to remember and at the same time critique the old me.

What about not doing any design? What about just making a screen and asking yourself “what do I want to do right now”?


The experiment in not having a design. I’d decided I would try for something like an asteroid game (which I’ve made before). You are a ship, a Leviathan like the concept found in Farscape or the similar concept of the Reapers in Mass Effect. Basically you are a bio-mechanical, sentient space ship. You are in space, and you can do things.


I’m making this in javascript and my dev stack feels really messy. I’ve decided to ignore this. It works. It should also not be a problem should I fix it in the future. It’s just really ugly and routinely confusing, though not frequently visited or confusing enough that some time can’t enlighten me. Apparently I did use webpack for one of my projects, though I have no memory of setting it up. Maybe I’ll switch to that later, however the game dev stack has a lot of libraries and I’m concerned something may not be supported.

I’m using pixi.js and it doesn’t have actual SVG support. I love SVG as a concept; it is clean, it is easily convertible to graphics driver use; why pixi doesn’t support it baffles me. There are a handful of third party libraries that you can get that do this, but none of them 100% support SVG, and as always I’m concerned about longevity. For the time being I’m using SVG in native pixi, and it gets converted to a sprite/bitmap and looks blurry up close, cannot have its effect edited, etc. It works for now, but when/if I start doing more complex things (which I want to now, animations would make the game feel tons better) I would need to fix this. On the other hand, if the game feels great without satisfying animations then it would be even better at the end (hopefully I won’t just be acclimated to it…).

The beginning:


 leviathan moving

PS: SVG is also not like doing pixel art. I’m baffled at the lack of competent tools. I did find one program with good pathing tools, but crap everything else and it cannot import the images back. Great concept as a tech, but appears to be terribly supported.


Kingdom game GUI nightmares

Of those who have ever played dwarf fortress, that was probably the worst example of user experience with a game’s controls and info content. Many people, myself included, while loving the game concept cannot get into it because the user interface is terribly confusing. There are 2 hour long tutorials on YouTube, and a whole starter pack of external cheat engine-like programs dwarf fortress players switch to to play the game, like the psychologist which lets you see dwarf skills and assign tasks to them. This is the worst example I’ve encountered; while dwarf fortress is amazing, it would gain a lot more traction from being more user friendly.

Gnomoria and rimworld are other ‘kingdom’ games, as I like to call them. They have tried to put some semblance of order into the controls. I’ve played both of these so I’m pretty good at not thinking about the controls. However, considering how much you can do in a game like this the GUI is not perfect in these games either.

Often in rimworld I forget which categories items are in. I have to switch between assignments and individual character information by clicking icons in other sections of the screen, too.

Gnomoria is even a little worse. I love gnomoria foremost, but for some reason it has a right click menu as well as a hotkey bar, and deeply nested commands. I also have a tendency of forgetting or going into wrong categories to find things (A well is a workshop?).

While these problems could maybe be fixed with enough tweaking; what a damned headache this all is.

So what then?

Back when I was a kid I ran into this nifty little tool for windows for the lazy. It was called Launchy. The way Launchy worked is you press its hotkey and an input box would pop up, into which you type whatever you were looking for and it finds it super quickly even if you didn’t finish typing. This tool boasted that it beats having desktop icons. I used it for a bit, but the reality is I like organising my desktop icons.

For a kingdom game with many objects to interact with and many commands to possibly execute on various different types of specific objects, something like Launchy seems like a much better choice than even beginning to try to organize a nested hotkey bar.

Theorycrafting user experience for the lazy

  1. User needs to pick a selection (tiles, objects, entities)
  2. Launchy opens up with input box
  3. User types something
  4. Launchy sorts though actions that can be done on their selection

We still end up having nested categories in some areas, for example:

  • Build > chair
  • Zone > stockpile
  • Assign profession > pick from custom professions

But other things get easier to find:

  • Clean
  • Haul
  • Repair
  • Deconstruct

And some useless nested categories can be coalessed together, for example:

  • Dig > floor slab, stairs up, stairs down, wall
  • Build > well, carpentry workshop, woodworking workshop, bed, floor slab, door, flower pot

Because everything is searchable things can be logically ordered and the list could be unimagably long without effecting usability in a detrimental way.

But wait, this is a lot of typing!

Yes and no. Pinnable of Launchy was that it would search as you type, so partially complete words counted. As well we could easily display a list of previously/most recently and most used items and the top one wins unless the user proves it wrong.

  1. Global most used words counter, for every level of commands in launchy
  2. Keep track of the last used word and put 100% weight on it in case of user immediate re-use

The selection stage should also allow you to, say, preplan your room boundaries and select build > wall for all of those tiles. Selection:

  • Click activates launchy for that tile
  • Click then shift click will select the area and activates launchy for those tiles
  • Ctrl click adds/removes selection to launchy selection and updates launchy options

Or on mobile, this seems to be the best option:

  • Tap activates launchy for that tile
  • Tap then long tap will select the area and activates launchy for those tiles
  • Tapping when launchy is activated adds/removes selection to launchy selection and updates launchy options
  • Double tapping removes all selection

Of course this is just theory and I haven’t play tested it yet. But looks good in theory… Right?