Hello ipsum Unity vs Godot

Late last night, Marco gave me the spark. I've been looking for a theme for a business management/GTA online vibe/logistics game. Marco came up with REDACTED. Perfect. Unique, exciting, not really done before, incredible potential for fun/satire/parody. And endless possibilities, just like my initial theme "logistics".

I had trouble sleeping because my mind was buzzing with ideas. (and coke, the beverage 😉)

The choice

I thought for a while about whether to choose Unity or Godot. A very dangerous thought that have killed many aspiring game devs. Fear not for I have solved this debate forever.

Never endning squabble

I favoured Unity because I know it well and 3D is easy for me there. Godot, because I never liked Unity's UI system and Godot's seems nice. However, I've heard bad things about Godot's 3D, and I have virtually zero experience in Godot. GDScript isn't super exciting and I had trouble with the C# workflow in Godot.

I finally decided on Unity. However, not for any rational reason or feature comparison. In a moment of crippling panic induced by the growing scope and realisation of the impossible task I had put before me, like heaven sent a thought struck me: I should make a prototype. It just needs to work. A proof-of-concept. That thought alone addressed feature creep and the stress I felt about code quality. Prototype it is. What is known to be best tool for prototyping games? Unity. An obvious choice.

If it should be in a ECS or maybe plan for a cheap network infrastructure or what if I need to rewrite it in rust?? It does not matter, at all. There is no poorly running game, yet.

grug say prototype early in software making

The start

I wrote a small checklist to guide me to a very, very small MVP. I wrote it as a kind of "user-story". The first thing the player does. The idea was that this first version is the first thing you can send to someone and they can see something kind of resembling a game, if they squint and dream hard.

After a speedrun of falling into tutorial hell by watching a bunch of YouTube tutorials to try and figure out how I should build this thing, I found something good! I suppose instead of tutorial hell we could call it a bit of inspiration to get the creative juices flowing. I looked at Software Inc's blog. Very inspiring to see how bad the project looked and how good it became (it also inspired this little blog). I downloaded the latest Unity editor and started a new project. I went with the built in the render pipeline so I wouldn't have to pick one of the proper ones yet. Enough choices for today.

I quickly threw together a room (supposed to be a garage) with a laptop. My 10/10 modelling skills with solely Unity cubes on full display.

I think I want free form placement in the game but let the player be guided by a grid. So, I started with a grid. Feels more polished to me than free form placement.

I have never really done any shader programming, and was not about to either! Unity’s Shader Graph was pretty pleasant! I ripped the whole thing from a YouTube tutorial but it looks good with little effort, and that, is perfect.

I really want to be careful not to focus too much on graphics, just enough to not make it an eyesore. I have to look at this thing for hours, if it burns my eyes to enter playmode I will not enjoy the process. It is a difficult balancing act. I have abandoned projects in the past because I got lost in pretty lights and effects. Realizing that I have made a painting, not a game.

never know what actual issue might be, grug often surprise! very often!

After one Saturday of work my checklist looks like this:

 

  • [x] You are in a garage
  • [x] You place a thing
  • [ ] That thing makes a stuff
  • [ ] You deliver that stuff
  • [ ] You get paid

I feel accomplished! 100% success rate! Nothing can stop me! I AM INVINCIBLE!!!

Day two...

I got up early, high on motivation and my favourite müsli. Only one thing echoed in my head:

Dumb, but done.

My own monkey-brained version of the Pareto principle. A mantra to keep me focused on what is truly important. Development is iterative. Everything I write will have to get thrown out eventually anyway. Full steam ahead towards the end of iteration one.

Taking a look at the checklist before I reconnect with nature it looks like:

  • [x] You are in a garage
  • [x] You place a thing
  • [x] That thing makes a stuff
  • [x] You get paid

You might have noticed that one bullet point is missing. However, if you look very carefully you might also noticed all bullet points are crossed over! The first iteration is done. It is dumb as hell but done as fuck. It is the most vile and disgusting code you will never see, but it works.

I hate GameObject.Find(”mispelledObject_1”). I hate drag-n-dropping into private [SerializedFeild]s. It sucks.

The DRY alarm bells are in full swing. All menus replicate the same damn lines over and over. This has to be my next priority! A decent UI system. I know it won’t be perfect. It will need about a million iterations before I am satisfied. So why not get started on iteration two?

Spongebob time card "10 seconds later"

Never mind. I couldn’t possibly begin to know what I will need from a UI system yet. I need gameplay first. Gameplay it is.

The end

Chatting with Marco (making him sanity check that the build works on his machine) later that evening, I mentioned I had written some small devlogs for myself and share them with him. This was the push I needed to publish them (this?). One small concern remains. What if someone steals my great game idea? (that i didn’t come up with myself) Sure, it is all about the execution and ideas are worthless and all that but still! It would suck if a better gamedev came alone, read this mess and made the game themselves. Or would it? Maybe then I could actually play this game instead of making it!

Then Marco calls out yet another of my dumb assumptions. You don't need to explain what kind of game you're making! Great thought. Philosopher.

If you figure it out or I can’t keep my mouth shut and you make the game, plz share. Will play.

This article was updated on June 24, 2024