I hope you are all well, and enjoying the holidays! I've been awake for about 30 hours again, so I might be a bit loopy, but I'll try and make this update interesting and mostly coherent!
First, I'd like to apologize for being so long to update again. I really wanted to make this update be The One. With gameplay footage(!) But I'm afraid I wasn't able to make it happen. It fills me with a lot of shame, I really wanted to do that for this update, but I need to stop crawling under a rock just because things are rocky. I promise this will be the last time you go without an update for so long! Next update should be either on new years, or on the 15th of January, depending on how much I can finish while working through Christmas (I am my own Scrooge)
Now, about Sealark development!
I drew character bios for a number of the cast members! Clicking the pictures below should take you to a full sized version if you wanted to gander their bios.
I've also spent a lot of time animating, but it's a slow process for me still. Working on refining my process and finishing Dove's complete sheet (she has by far the most frames of any character, and will serve as the guide for every other character), the bulk of the time between this and the last update was spent programming however.
About that programming! The next few paragraphs will get into it with some sleep addled depth, but to summarize it up a little. I spent a lot of time working on features that didn't pan out in the end, and had to rewrite entire portions of Sealark's code in order to fix design mistakes I made in the beginning. I've made a lot of progress too of course, but fixing these mistakes has cost me a lot of time...
>> Start psuedo-techno-babble (feel free to skip to the next bolded line!)
To get right into it, I've changed a number of things from the last time I talked about Sealark's code. Biggest thing first! The system of handling "Entities" is now gone. It was by far the worst mistake I made programming. It sounded nice on paper! Each and every object in the game was an Entity, and could communicate amongst each other without worrying about dangling pointers. But in practice, it was a mess. It became difficult to know the lifetime certain Entities had, who was managing who, who depended on who, and while it was easy to know if they were no longer alive, programming how that type of situation should be handled at every turn became too much. In short... all the freedom led to complete chaos. It's sad because I spent a lot of time building around this central design, but it's better to trash it now than later when it's too huge to do anything about.
The new system replacing it isn't a single huge "system" at all. I've discovered that trying to abstract away every object in the game under a single set of rules simply isn't going to work, without requiring a lot of boilerplate inside each one. So now, instead of Entities, there are now many different, much smaller and focused systems. Quite a few, one for characters, one for fish, one for levels, one for items, for inventories, for objects laying around, for the background and weather, for variables, for the story, for dialog, for the GUI, etc. All of these things that used to be Entities and were mixed in the same pot, so to speak, are now split and tiered into different discrete chunks of code to themselves. Relationships are very clear now, lifetime management is practically gone, and it's immensely easier to add things into the game now!
The reason I avoided this approach to start with was because I thought it would create limitations on what I could do later on. And it's true, but that is actually a good thing I'm realizing. I just have to make the limitations interesting, and do interesting things within them. If only I knew that starting out, rughgh... but at least I do now.
Other changes, which aren't quite changes so much as harsh realizations, is that I've scrapped a few pet features I wanted to include that were causing me far too much trouble, and taking too much focus. These things were hair dynamics, sky dynamics, liquid dynamics, lighting dynamics. A lot of dynamics. And they would be cool, which is why I was so stubborn! I'd love to be the smarty pants who made all these physics based mechanisms play nice with sprite work. But I'm only one person (who isn't exactly all that smart to start with) and I'm taking too long. I have a lot of work put down on these things already, but I have to cut my losses on them, and move to more important things, like FISH, if I hope to make real progress.
It isn't all a trail of bitter tears though! I've finished writing the file parser that the whole game can use. I'm rather proud of the format the files take; they are similar to a JSON file, but make it easier to include things such as animation frames for a sprite sheet, or geometry primitives for loading a level. It makes full use of macros and automation, for what would otherwise be tedious number filling.
Another thing that is finished, is how game variables are stored within the game, as well as how they are saved and loaded. Error handling is also complete, and should be able to do things such as provide an error report, even when the disk is inaccessible or if memory is exhausted.
Finally, aside from cutting bugs out of the physics and drawing systems, and testing to make sure everything that was done worked as it should (and fixing them when they didn't), the biggest timesink was restructuring the code to deal with Entities being gone. Most of the game's logic depended on it in some way, but it's finally sorted out. I'm really happy with what I have now, though it took me a while to get to it. Going forward, things should be much smoother now!
<< End of the Boring!
Sorry that dragged on so long! Right now, now that the programming side of things is back in shape finally, I'm focusing on animation and getting as much done as possible before the end of this year. I have a lot of animation work to do for most of the characters still, and even more fish. Once I post this, that's where I'm gonna be for the next few weeks straight. I still have a lot to learn about animation as a process, but I'm making a lot of improvements! So long as I do it as soon as I wake up and don't stop until I sleep (or faint), I'll keep making headway.
Because of the delay though, I need to bring up the the release date...
The release date will have to be pushed back farther, I'm afraid to say (very afraid to say (please don't hurt me!))
I want to be absolutely certain this time when I give a deadline. I don't want to push it back another time. But to do that, I'll need to examine the work that remains to get Sealark in the air (sea?), and look at myself and see how fast I can really do it. With those in hand, I should be able to say with certainty when Sealark will release. The next update, January, I should know by then. I hope that's okay...
Thank you all for sticking by me! It really means a lot to me!
I hope you have a good Christmas and happy new year!