We have one more week before our demo releases on Steam! This past month has been crazy. With final touches, polishes, new features and a trip to Cedarville, I (Dan) have been working overtime on my side hustle. We’re excited to show off what we’ve been working on. And soon enough, you’ll be able to play what we’ve been working so hard on the last six years!
One thing to mention before we get into the meat of our update. We are in need of boosting our pre-launch numbers. To help us with these numbers, please visit our Kickstarter page and click “Notify me on launch”.
Now, onto game updates!
Cedarville Trip
At the beginning of December, we were invited back to Cedarville’s 2024 Video Game Exhibition.
We got to meet / talk with about a hundred individuals interested / excited about the game. We had about 15 people play the game. The majority of these folks played a good 30 minutes or so, getting a good idea of what Violet will be about.
Overall, it was a good experience and we received a lot of good feedback that has already been implemented in the game.
We had one individual who was really into our demo! As he was playing and we were chatting, we didn’t realize that the showcase was over! We appreciate all of the support and feedback at the showcase!
Pixel Art
Tony has been working hard finishing all of the final touches / polishes on pixel art. However, we do have a few new art assets to share. First, if arrows are shot perpendicularly they will stick in enemies and Asteric. Below are a few animations of Asteric removing the arrow from an enemy or himself:
We also spent a lot of time in December working on polishing the horse animations. Below are a few of those:
And finally, a prototype of our Centaur Enemy!
We were hoping to get more done in December with the Centaur! Unfortunately, we only got to still frames. We were hoping still frames would work to fight against the Centaur in the demo, but it does not. We’ll probably be taking the Centaur out of the demo. But, we wanted to show what we’ve been working on in regards to the Centaur!
8 Weeks Remaining Updates
In the conclusion of our last post, we said:
“Believe it or not, this post doesn’t even cover the last two weeks!”
And, we weren’t kidding! In those two weeks we had completed the following:
- Demo Content (including many side quests)
- Added NPC Generic Hair
- Added Talk Circles (to indicate how many more unique dialogs an NPC has left)
This actually encompasses a lot! We decided to showcase these with video clips!
Forest Town
We spent the last month or so polishing up Forest town. This included adding new NPCs, side quests and main quest objectives. We also started working on Forest Town’s theme as well. We can hear this in these video clips below:
The Forest Town NPCs have their own clothing style that reflects the atmosphere — a cozy / laid back town nested in the forest. However, a wizard lives in this town that can grant us the power to automatically merge:
Once we have received the power to automatically merge, we can remove the gate that blocks our path into the Ancient Temple:
There are quite a few other things to do in Forest Town! Be sure to explore it thoroughly:
Saving and Loading
One major feature request we have been receiving is the ability to save and load the game. We understand this request, as the demo is pretty lengthy. However, because of the complexity of saving and loading, as well as our data structures and gameplay to change in the future, we originally did not want to invest time into this. Plus, the intention of the demo is to be played through in one sitting, taking about 4 hours or so.
The problem though is that players have been occasionally getting crashes. This is a pretty rare occurrence and unfortunately we haven’t been able to reproduce these (and trust us, we don’t take crashes / bugs lightly). If we could, we’d fix these in a jiffy. However, with the amount of time before the release of the demo, we realized it would be in the best interest of our players, in case of a crash, to have some kind of saving / loading system. That way, progression isn’t completely lost if a crash happens.
Thus, we have spent the last few weeks working on a MVP saving / loading feature. This feature is actually much more elaborate than we were originally planning (we were just going to restore a players inventory). However, we were able to save story flags, completed forts (removing enemies from these forts), heart pieces, inventory and more! Plus, we added an auto-save feature that automatically saves in the background.
You’ll see a couple of additional things in this video clip as well:
- We updated the Title Screen to include our concept art, as well as a Continue Game, New Game, Options and Quit Game.
- We added some text during the loading screen while the game loads. We also updated the loading audio track, for those who have really slow machines, so that my (Dan’s) voice communicates to the player that the game is still loading and that there are no issues.
- We added a Main Menu screen, that has the Save button, as well as a Quit to Title Screen button.
All of these features were important and were necessary to make saving / loading work seamlessly for the player.
Correct Button Labels for Controllers
Our controller button labels were correct, for the face buttons. However, our names were inconsistent across other controller types for the bumpers, triggers, sticks and pause buttons. Therefore, we went through and cleaned this up to be dependent on the controller the player is using:
Encrypting External Data
With the release of the demo, the public would have access to the game. This also means that any files / data in these folders are going to be scrutinized and we can’t just tell people “don’t do that”. Therefore, we decided to spend a week encrypting external data, such as the text file and world assets. That way, if people starting digging into these assets, all they will see is gibberish.
We also wanted to encrypt our audio files as well. However, we couldn’t figure out a good way to do this, in the limited amount of time we have. Unfortunately that meant moving these files into Game Maker / RAM, making memory usage for the player about 100mb more. Once we figure out a good way to playback audio files from disk that are encrypted, we will move these audio files back outside of Game Maker.
Apple / Mac “Fun”
Apple does not make it easy for developers to make software. In order for self-made software to work on another computer / device, Apple requires a process known as Code signing. Unfortunately, we wasted a few days trying to get our builds to work on Macs. However, we found this guide by Game Maker which helped us get our builds to work on other machines. We adapted this guide into our own step-by-step process. Hopefully this can help any other developers deal with Apple’s “Fun”:
- Let’s make our build by clicking Create Executable (
CTRL+F8
) and then choosing Package as Zip. - This will begin compiling the game with Xcode. Once this is done, this will create a zip (Archive) and run the game, as well as having the “Xcode” project handy, but we need to do a few things.
- In Xcode go to Signing & Capabilities and then select the +Capabilities section. From the window that opens, double click on the
Hardened Runtime
option. - Of course, we’ve already created an Archive (which can be deleted), but now we need to create ANOTHER archive, by going to
Product > Archive
. - In
Window > Organizer > Archives
, we should see our build / archive we just created (probably two, but like in step 4, we can delete the older one). Click on the Distribute App button. - Click the Direct Distribution (aka Developer ID) option and click Distribute.
- We will then need to Upload. The gods at Apple will notarize. This seems to go really quick, though they do say “less than an hour”. There is supposed to be a notification, but we have not seen this.
- We will see our Developer ID status in the organizer window at the bottom right. Once this is ready, it will say “Export Notarized App”. Wherever we put this is were our app will be. We can copy and bring to our Steam upload process.
Other Notable Updates
We’ve had three streamers play our game so far! It’s been exciting to see people enjoy our game. We can watch these clips / streams at these links below (Content Warning: there is some language in these streams):
- KirbGoneFishin (just clips)
- Guinnanth
- Pause and Effect
These playthroughs were invaluable, as it introduced a few bugs we needed to fix as well a few game play issues. Luckily, we were able to fix / update the majority of the issues seen in these streams!
In fact, one bug we have been encountering for about 4 years was caught on stream, and I (Dan) was finally able to fix this bug! We can see it here. At 1:24:47, we burn ourselves, and then our temperature gauge malfunctions. We were finally able to figure out that it was because the very first frame a fire spawns was incorrectly setting its percentage (how potent the flame is) to 0, instead of what it should be. Percentages of 0 are assumed to be fires that are being put out / removed. Well, if we happened to take burn damage on the exact same frame as we spawn a flame (that has a percentage of 0), our temperature becomes NaN (because we divide by 0, and this is how Game Maker does division by 0) and would break our temperature gauge permanently!
Below are some other notable updates:
- We added a fortune teller, a character than essentially tells the player what to do next, if they are stumped.
- Dying in the dungeon sends the player back to the beginning of the Dungeon. That way, the player isn’t trapped in a boss battle they can’t beat and can stock up on supplies and items.
- As you probably saw, we made our trailer! During the months of October and November, we added some hotkeys to make getting these shots easier / better, as well as disabling certain UI / HUD elements. This will be inaccessible during normal game play though, because we’ve disabled keyboard cheats in our builds now.
- We finally got around to adding text to signs. That way, if we get lost in the world, we can at least follow a road back to a town, or some other notable landmark.
- We added the Ancient Garden.
- Kennedy renamed all of our current NPCs to their actual names. I (Dan) was currently using names like Grandma NW, so I’d remember where these characters were located / what dialogue they have. It has been quite different to see these characters with names!
- We fixed a major bug with our
RampTile
(an invisible trigger that increases / decreases whatlayerDepth
we are on). There was an assumption that the point of a mask / hitbox will always be INSIDE of the rectangle. Well, our character’s swimming mask is NOT inside and the assumption was off (and therefore not getting off ramps properly).
Conclusion
As you can imagine, this month has had an extreme amount of polishing and fixing. So much so, that in our notes for writing this post, we ended up throwing away roughly 3 pages of features / bug fixes. And this post is already quite lengthy!
Please wish list and share (especially our Kickstarter page) with anybody who would be interested! We appreciate you reading and keeping up-to-date with the development. Be sure to follow the socials and stay tuned for the release on January 3rd!