Home Artists Posts Import Register

Content

Greetings all. I thought I should take a moment to write a bit about what I've been up to and what is coming up.

What I've been doing...

Intro sequence (completed)

About a month ago I was fortunately able to start getting a bit more time available to get back into development on a daily basis. Since then I was able to make a lot of progress with the introduction sequence for the demo, completing all the necessary animation and dialogue writing. This took quite a bit of work, as there are multiple unique animations used, some requiring quite a lot of frames. I also designed a way to get Torgeir's portaits to speak during dialogue, which looks pretty good. The writing was also a few days work. However, it is now possible to play innkeep from starting the game, going into the inn, and playing through the whole sequence that sets up the scenario for the demo. All in all it's some fancy stuff, and I believe it will help with impressing some publishers down the line. ;-)


Implementing a new backup system (completed)

Sorry to say, but up until last month I was still manually backing up my game the old fashioned way. That means, every other day or so I'd make a copy of the latest build, and stash it on locations such as google drive and/or dropbox.

This is a bit of an issue, as if you forget for a day or two and something happens, you could lose a lot of work. There is also no real version control here. Let's say you change something to the code and you break it? And you want to easily revert back the specific change you think is the issue? I would need to unpack the old code, go into the file, find the section I want, and manually copy and paste it back across. Not really a very good system for the future. Especially if I ever need somebody else to help with porting the game, or working on some specific issue.

Now however I have GitHub installed and operating nicely. This software backs the code up so we don't risk losing everything if my computer is stolen one day when I'm not home. But also, and perhaps more importantly, it keeps track of all the changes made in the code base, and allows you to save them as "branches". So I might have my main branch, for example, 0.04, and then a branch labeled 0.05, which is going to contain the current changes I'm working on. This is really going to potentially save me a lot of stress down the road when it comes to releasing updates, collaborating, etc. 

I've also gone and set up an AWS Glacier account. This is for bulk, long-term storage of data. Slower to store (I have to use some dedicated FTP software), but also cheap. Here is where I'll be stashing whole prior builds, including larger files like graphics files.

Porting the Project into GMS2 (completed)

Another big step I took in the last couple of weeks has been finally bringing the project from Game Maker Studio 1.4 to Game Maker Studio 2 (GMS2). Generally, GMS2 has a far more advanced user interface (with a few backward steps here and there), and can let you do some neat things that GMS 1.4 can't. I started work on Innkeep at the beginning of 2015 (gulp), when GMS2 did not yet exist. When it came out a year and a half later, there were still some issues with it, and it seemed best I stick to 1.4 After a while I simply forgot about GMS2 and plowed ahead. However it has gotten to the point where all online tutorials for certain things are in GMS2, and certain features that I want to use arent available in 1.4. So I decided to bite the bullet and try porting the game over. 

Thanks to your generous support I was able to afford to purchase a copy of the software and make the jump. Fortunately, it turned out to be easily to port the project over than I expected. In fact, most of it is done automatically! There were a few issues that needed fixing, but less than I expected.


Created new sound system, options system and credits page (completed)

There's now actual credits in the game. Including for my fantastic patreon supporters. The options submenu is no longer blank, but has a number of tabs. One of them fully functioning: the sound system. The master volume, music volume and sfx volume can be independently adjusted. The sliders are also quite fancy, but I was able to reduce the work here by re-using already existing in-game sprites. The coding side was a couple of days pretty intense work, but the result was some of the best designed / well thought out code I have made so far. ;-) Which brings me to...


Improving the Code Base (In progress)

...my current task, improving upon the old code base. Over time, as my programming skill has improved, it's become increasingly clear to me that a lot of my old code is... trash. There are a few issues...

1. Insufficient documentation. This makes it hard to know what is going on in the code when you come back to it after a while.

2. Poor layout. For example, everything all bunched together in 700 lines in an object, without the use of scripts to help compartmentalize when its a good idea.

3. Not respecting logical hierarchy. Having certain actions occur in objects that are too far down the tree, as it were. 

4. Inefficient solutions to solving certain problems.

Now, my concern at the end of the day is to get Innkeep finished. Not to be obsessive about having "perfect" code (everything is relative at some point). However, the state of much of the code base unfortunately is so poor that it means I will be moving faster in the long term if I make some basic improvements.

Let's take a quick look at one example:

Currently, my intro dialogue is hard-written into a number of scripts, using basic If Then logic. (If you know anything about coding I'm sure you're already wincing.) What this means is that if I want to change something down the road, I need to find that specific script, locate the specific section, and make the change I desire. Similarly, if I wanted to say, localize the dialogue, I would need to be constantly reading from txt files throughout the script, once for each line. This kind of system simply cannot be reasonably scaled up to a full sized game.

What is actually needed is for me to embrace arrays, and to have a single array containing a whole dialogue. The code then needs to be able to interpret the text stored in the array, and navigate through the choices available accordingly. This would massively reduce the total amount of code required, and also make it far easier to localize by reading from a txt file once. Fortunately, there are some great tutorials now for GMS2 showing just how to do this kind of work. 

That's just one example. But there are similar issues with how I have handled my camera system, and how I implemented animation control in my characters. Fixing these issues will help me massively reduce stress / complexity down the line. And while doing so, I can also make some improvements to the readability  / logical flow of my code, to ensure that if anybody else ever needs to look at it they wont want to immediately murder me.


Coming Up

So what's coming up in the near (2021) future?

Fixing up the code base may take a few weeks of daily effort. However once that is done there's a number of very cool things I'll be working on.

1. The tutorial for serving drinks. 

Once the player has completed the intro dialogue sequence there will be a tutorial on pouring and serving characters drinks. Of course, in making this tutorial, I also need to update / create a system for characters drinking. ;-) The grabbing tankard / pouring side of things is already finished.

2. Tutorial for stoking fire. This mechanic already exists, but a little tutorial (some minor dialogue plus pop up windows) required.

3. Kitchen work. I'll be jumping into getting the kitchen functioning, with a simple cooking and serving system implemented. The main thing is to have the core working, with expansion of recipies, resources etc. happening down the road.

4. Tutorial for cooking / serving food.

5. Dialogue with Morgan. Once food is brought to Morgan (the sorceress), we enter the second stage of the tutorial, introduced by Morgan. She'll recruit you to help defeat the bandits. For this purpose, you'll need to practice some eavesdropping on conversations.

6. Creation of remaining bandits and their portraits. (We are still missing a few.)

7. Eavesdropping system and tutorial. The player will be able to listen in on conversations to gain information. The primary goal is to discover which bandits are in possession of certain items that we want to steal. 

8. Bard music. We have a bard character to meet and get to sober up for playing a distracting tune or two.

9. Stealing from sleeping guests and tutorial. Once the player knows who has what, we need a tutorial for actually stealing from them. ;-)

10. Concluding dialogue sequence with animation. Got a little twist planned at the end.

It's a pretty substantial list, but I hope to make solid progress once the code base has been sorted out. Most importantly though, it's all fun stuff, and progress into the core of the game experience after so many years doing foundational work.

I'll try and put out some more regular updates here as I go. But of course don't forget to keen an eye on my twitter feed, or the discord channel as well.

And as always, thanks for your support!

Daniel








Files

Comments

No comments found for this post.