Categories
Development Journal

A Humbling Experience

Got busy for a stretch there but I expected as much. Time to get back at it.

Plan of Attack

Last week my lovely wife finally convinced me to schedule time for game development. She must’ve heard enough of me trying to engineer some grand mechanism for how I was going to get myself to start putting in the necessary hours. Turns out it really is as simple as just putting it on my calendar.

My goal is 10 hours a week of game dev related work which includes a multitude of very necessary activities like learning, blogging, planning and documentation. Things like watching videos or reading articles related to game development and design are the very types of things I’ll need to rely on to keep myself feeling productive when I can’t bring myself to write code for 3-4 more hours after doing it all day at work. I’m keeping track of my hours by work type so I can look back on the number at some point.

Procedural Generation is Hard

I made the mistake of confusing a rudimentary understanding of how something like procedural generation works with knowing how to do it. Big mistake. I’ve been wracking my brain with this one for the last few weeks, going back and forth from tutorials to Unity to articles to a console app in Visual Studio and the scope of my implementation is about as basic as it gets. I understand what I want to do but finding an efficient way that makes sense when I look back at the code has been a battle. It also really doesn’t help that I have an incurable case of aggressive refactor-itis.

I did manage to finally get a working version of a platforming grid generator that adheres to a few basic rules and I’ll be expanding on this in the coming week or two.

grid example
Well…it’s a start

What I have now is a 3×3 grid with modules in three row groups. Right now I am just opening a path from the top to the bottom and adding some platforms in the gaps to allow the player to jump up. The next step is to spawn a target object that when picked up causes the grid to regenerate and spawn a new pickup elsewhere, leaving the currently occupied module intact. After that I want to expand the grid and add some more variability to the modules.

Thoughts

I expected this part of the project to be a fun learning experience that I would ultimately breeze through but man did this really get the imposter syndrome going. I’ve gained a lot of confidence in my programming abilities in the last four years working as a programmer but this was some uncharted territory – I haven’t felt this lost in a while.

I think the biggest difference between this and what I do at work is that at work I am operating within a clearly laid out set of parameters for how an application needs to work to fulfill the project requirements. Here I am defining the requirements and functionality on the fly. The other hard thing is how the spatial aspect of the design translates to code. It’s one thing to say ‘if this module has a platform then the one above it needs to have an open floor’ and another to actually implement that logic. Are the modules in a list or a 2D array? Do we store a reference to neighbors in each module or use collision detection to get the neighbors when needed? What’s easy vs what is performant? My approach so far has been to experiment and I think that is ultimately the space I will need to get comfortable living in for a while.