The hurdle no one thinks about


So gamedev has been progressing... slowly... the reason why is for two incidents that happened with the game. This is going to be very long and probably boring, but might have an interesting anecdote or two about the horrors of long term game development.

1. The data loss

So around May I decided to switch from the built in gamemaker source control to Source Tree. GM's built in source control solution is much too slow and although it's easier to see what has been changed and what has remained the same before. It does not outweigh the huge delay in opening the project. So I decided to just use a third party program Source Tree. This wasn't the actual issue however

The issue arose when I decided to "reorganize" the files by deleting ones that were obsolete, like objects that managed puzzles that were no longer needed. Even whole areas that were replaced by other ones. The problem with that is that I think is a big error on GameMaker's part, as of 2.2 if you duplicate an object, then delete the original it'll delete all of the duplicates as well. I THINK that's what happened, I've no idea but I've encountered similar problems before where objects just disappear out of thin air and my only evidence is that I deleted an object related to that one. This is a problem that doesn't show up in typical game jam projects though but rather in long term game projects where the amount of stuff you need to keep track of starts to pile up but unfortunately enough the game engine your using has a bug that completely fucks you over for doing that.

So wait, you just said you had source control, just rewind the project to an earlier state before you did that reorganizing right? Well no. The thing is when i committed the changes of me deleting files it probably showed a bunch of files being deleted that weren't supposed to, and I just noticed because well, I'm deleting a bunch of objects. I then went on to work on further parts of the game where I have a save file or starting position set up for me to work on it. Several weeks pass and I have some new bosses and areas to explore. But then after playtesting from the beginning I find out I can't get to an early room that didn't exist and well, I discovered what had actually happened. So I have a choice, either rewind back to the state before all the files got deleted and then just add the files I currently made up to this point OR recover the files that I have deleted into the current project. I'd simply progress through the game, have it crash because it's looking for an object that was accidentally deleted, then look for that object in the history and recover it.

The way game maker's file structure works however, is not so simple. It has a .yyp file in the base of the project that indexes every resource in the game. There are chunks of data entries that list these resources and their configs, but luckily source tree lets me reverse individual chunks of data. Well... sorta, sometimes the file just simply isn't there. Probably because of the weird parenting method it does with resource dependencies, the same thing that caused the problem in the first place. Sometimes I do it and it says can't load when i start the project. Luckily this problem is only for a few unimportant objects and I can see what the code is in the objects that are gone so I can just copy paste/recreate it in the editor. All of this though, takes a lot of time, it's easy but it's very boring and annoying because this feels like work I've already done. Occasionally there's that one resource that I missed and I go through the painful process I thought I had already done. It's very frustrating and very demotivating. Thankfully, had I not switched to Source Tree, this might have been harder to recover actually, which is why I brought up the first paragraph.

2. Enemy AI reworking

Some of the more exciting stuff is I decided to rework the AI and how they go about doing animations. The issue that arose from this is squarely on me though and is probably a cautionary tale on improving things that affect most of the gameplay/combat will be a lot more work then you realize. There's no way to predict this stuff though and there was an issue on how I organized enemies in the first place. I had a problem that enemies were static and for a lack of better term: NESy. If you got close to an enemy it would stand still and attack. It also had 4 facings so things would look jittery. Although it's a rather minimalist games there's a threshold I wanted to hit with the fidelity especially within the context of being a horror game (even though that identity I'm not sure about at this point).

The solution looks a bit like this. Attacks have more movement to them, the enemy turns a bit more smoothly. You get the idea. Problem is most of the enemy path finding and facings are all used by any enemy type that moves. Being the still inexperienced developer that I am, I made some bad choices on how to go about this. Essentially all the enemies at the moment (except the first one I reworked) are bugged, and I have to rework and change the way animations work (and decide if I want all the enemies to have 8 facing animations and also share the characteristics of most of the movement) to sum it up it's all very... messy. Thinking back, I should have just moved on and lived with the enemy being sort of static and annoying, but then again some of the enemies were due for a re-balancing so it was hard to predict how hard I would go with that.

Lesson from this, is well... be careful about dependencies. Just because you know all enemies are going to pathfind the same way, doesn't mean you won't make divergent changes down the line. This is something gamedevs learn and struggle with all the time I'm sure. When you wish you had just made something it's own thing, even if you thought it was a bad idea originally. I have a better restraint in at least how to properly assign "traits" and "behaviors" next time I make a game like this. It's just that I was also learning throughout the game's process that it gets messy when you collide with your more naive past self.

-So where am I at?

Well I'm still dealing with the above 2 incidents, and it's very demotivating especially during this insanely hot weather we've been having. I also recently moved and have been dealing with personal matters/priorities. Covid-19 has actually helped me work on this game more, but of course if only the circumstances within the game's development wasn't so arduous. It's been hard getting back into a consistent groove especially if my tasks involve just, recovering the game as it is. It's one of those slumps and hurdles no one really anticipates or thinks about when it comes to game development. We're usually thinking about implementing cool stuff or polish things better and the only hurdles being time/effort/skill to accomplish those things. Not exactly the organization process and that being disrupted by circumstances, but it's bound to happen sometimes.

I've been doing occasional game jams just to work on something new although those can be a little distracting at times, they do give me the feeling of wanting to go back to something more permanent, something grand and not limited to 48 hour dev cycles. I'm also taking a stab at Unity as I would like to switch to it eventually (if it's any good).

You might notice some new screenshots posted on various pages, this is mainly to just update the game's marketing to the state that it is, but also because I'm trying to get the game playable from start to finish, that I might as well take screenshots of the entire game as is while I'm at it.

I really don't know when the game will be done, but too much blood and sweat has been poured into this game for me to be deterred so, it'll get done. Just giving a heads up as to why it's been difficult.

Comments

Log in with itch.io to leave a comment.

Another Game Engine that might be worth looking into is Godot.

This is worth a read. Thanks for this.

(+2)

Can't wait to play this. It looks great.