Friday, November 03, 2023

First month as a solo game developer.

 I'm not sure if I should put double quotes around "game developer" lol. But yes, it's just over a month since I began my game development journey.

So far I am very pleased with my progress; I finally have time to totally focus into learning Unreal and I finally understand why it is so complicated compared to Unity or Godot - Unreal's framework is designed for multiplayer - all the core things you'd need for a multiplayer game are there, you just need to fill in the blanks with your game. 

For me I am doing a single player game, so it took me awhile to understand that the way lots of things are done are for multiplayer purposes, and lots of it I can just drop since I don't use them.

With this knowledge in mind, this was the first test I did over two days. 

Its a prototype/test to figure out how to decouple player inputs from the submarine's motion. The few tutorials I've done they usually combine both into the player's character, but I wanted to make sure these two things are not tightly coupled as I might want to have different kinds of submarines.

Immediately after I finished the above unreal tests, Spelkollektivet held their annual Halloween Game Jam and I decided to use Godot to do a small slice of a much bigger game I have planned. Godot is a brand new engine to me, and I only did the 2d/3d tutorials before using it for the game jam. Also bought and learnt Asesprite for this jam. Thankfully the syntax was very python-like, so it was not much of an issue since I do fair bit of workflow related stuff with python in Houdini.

I definitely bit off more than I could have for the five day jam duration; I did the design, coding and pixel art. Sounds/BGM were from Freesound as I had no time to do those XD

During the game jam, one of the devs was working on a vr game in a web browser. WHAT. I'm embarassed to say I did not keep up with WebXR and thought I'd try my hand at it for a few days (they were using playcanvas). A quick look into it though, I decided I did not want to learn javascript. I then looked to see if Godot could do WebXR and it could! It appears that Godot could do WebXR as well BUT (so many buts) VR games are not on my development list so I decided to just take 2 days to fuss around with VR in Godot and this is what I came up with:

Overall my experience with Godot is pretty positive. If I'm making a 2D game I will most likely use it. For 3D though, I'm not sure. The way materials and 3d assets are imported feels very clunky. In addition, the remote scene view is a far cry from what's available in Unity/Unreal. One example was when I was trying to troubleshoot collision hitboxes. Well... you simply can't see them when the game is running, so how am I supposed to know what they're doing? I'd have to code something to display the collision geometry in game versus Unity/UE where there are many options to view specific objects whilst the game is running.

Another very odd issue I found when using Godot's tween system is wrongly reported errors. In both my Godot projects I'd come across and error where I was told the tween object is null.But the actual error (both null ptrs) was in a totally separate function. For the first time I'd spent hours troubleshooting and decided to just re-write the whole thing. And when I did that the nullptr issue finally got a proper error.

With the game jam over I am now focusing full time on figuring out unreal so I can create a game. Yesterday I figured out how to setup unreal's lighting so that it's neutral and the colour chart responds as expected.

Neutral Lighting (Extended Gamut off, tone curve off, auto exposure off):
Neutral lighting scene

Default without any overrides.

With post process volume off (i.e. auto exposure on, expanded gamut on, tone curve enabled.

There is so much to learn! After that, I had to re-acquaint myself with Houdini Engine once again. It seems like with the proper attributes, assets brought into Unreal via the Houdini Engine connection can have materials and even instancing setup without user intervention. Only tried materials and it works a charm.

One issue I have with using Houdini Engine is having to have both software up and running at the same time. This also might pose issues when returning to the project after a few years.

THAT SAID.

The final output from a hda in unreal is to be baked and final, with no need for Houdini at that stage. 

 If you wanna follow along my journey I'm active on Mastodon at https://mastodon.gamedev.place/@CatBiteStudios