Posted September 11, 2022 by Gaming Squid
#Update
Update Overview:
The main part of this update is the Octorock enemies that have been added into the game. These enemies are the most basic type of enemy in the game and its the one that you see most of in the original Legend of Zelda NES game. The reason why I wanted this update to have one of the enemies included within the game is because when you are moving across the overworld, without any enemies being there, the world feels empty and lifeless and might make the game less interesting to play. So by adding the Octorock enemy within the game, the game now has more life to it as there are other moving things in the overworld and everything isn't just static anymore.
The Octorock enemy AI isn't a one to one replication of the original games, but it has the same base functions and purpose to them.
New Feature (Octorock enemy):
Quality of Life Improvements / Smaller Changes:
All Project Files Available:
You might have seen that in the downloads there are two png images that can be downloaded which contain the two tilesets that I have used to create all of the backgrounds in this project, but along with this update, I am going to be providing all the GBStudio project files to download.
My plan from the beginning was to make all of the files that I use to create the game free to download as when I am creating projects, sometimes I find it easier to understand things by look at what is happening within the project rather than someone trying to explain it to me, so if you want you can do that with the project files or change the project to include your own changes to it or just take the assets that I have created and use them in your own project if you want.
All that I ask is please do not just download the project and re-upload it claiming it to be your own. Crediting me isn't mandatory but would be appreciated if you create a project.
Developer Notes and Experiences:
Octorock AI:
This update wasn't very difficult to add to the game, but I had to learn quite a bit about how to create an enemy AI as I haven't created an AI in any project before, so I was learning how to make one and when I had created the 'framework' for the AI, I did a lot of tweaking to try and get it how I wanted. I created the AI around random numbers and probability so that way I can change the numbers if I think the Octorock is shooting the rock too often or moving too many steps etc. Doing this made me realise how annoying GBStudio random system was as after some research, I found out that every time the choose random number between x and y event ran, it wasn't exactly different each time because of the random number coming from the GameBoy system memory or something like that. This made the AI constantly and only do things like move the same amount of steps each time when it is supposed to be random each time.
Thanks to the help of the GBStudio subreddit, I got told that I have to do something with the create random seed event which I had never touched before, but I had to add this script with the players button inputs to try and get a different, more random outcome of the Octorock AI. Thankfully it made the Octorock behave more randomly than what it was previously.
Tile Swapping:
At the beginning of developing this update, I wanted to introduce tile swapping into my project as it will help in a lot of areas of the game because of the GameBoys limit on how many actors can appear on screen at one time. So I wanted to use tile swapping a there are part in the original Legend of Zelda NES game such as the Armos enemy that appears to be a background tile, but when the player touches it, it becomes an actor and a moving enemy. I think I could use this method on the secret cave entrances where the player has to bomb the walls as well to swap the background tiles rather than adding another actor ontop.
However, when researching tile swapping, it was more complex than I originally though as currently there isn't a way to make it work using the GBStudio engines event scripts, instead you have to code it yourself using the GBStudio GBVM script which allows you to code in things that the engine doesn't offer itself.
So instead I created the Octorocks and their AI for this update, but I might have a look into the tile swapping and GBVM again in the future for another update.
Plans for the future of the project:
I think the project has progressed quite a lot from the original first release version that was just walking around the overworld as the project feels much closer to the original game and more lifelike with the introduction of the Octorock enemies, dungeons, bombs etc.
However updates from now on may slowdown or stop entirely as there are other things that I need to use my attention on whether its different projects or other things.
As of writing this devlog, the project has over 300 views and over 100 browser plays so thanks for checking my project and devlogs out.