Hello everyone, I figured out that releasing an update each time I add a new feature is rather hard, and on top of that spoils the game feel. Instead, I will add posts on the blog featuring Skywalk’s progress, and will upload the up-to-date release whenever I feel like it’s time to. So here’s what I’ve been working on the past weeks :
Enemies’ Identities :
Identities are data files containing information about the enemy, such as its health, damage per hit, damage at contact, movement pattern, and the file path of its texture.
Enemies’ behaviours and AIs, however, are hard coded in the Game Engine, not in the Identity File. It means that the Identity file do not specify the nature of the enemy, but rather how it moves and how it looks like.
A single Identity can be assigned to multiple enemies with different or similar behaviours, this will result in enemies that look the same and move according to the same pattern.
Identities were already implemented in the game engine, the new feature I added however, is the ability to write an Identity in the form of a text file, and feed it to the game engine. I’ve set up this functionnality in order to separate the game engine from the game content, that means if I wanted for example to implement a new enemy in the game, I wouldn’t have to hard code its movement and such in the game engine and compile it all over again.
Movement Pattern Smoothing :
The movement pattern is an array of positions used by the enemy as targets in its movement. It is fed to the enemy by the mean of its Identity at the creation. It also contains speed at each position and whether the enemy has to fire or to disappear at a position, and other properties.
What I’ve newly added however is an algorithm that makes the movement pattern smoother, it takes all the positions and generates new derived ones that represent a smoother version of the movement pattern.
This was done in order to minimize the work I will have to do when creating enemies. I will only need to specify a small amount of positions that represent the global movement of the enemy, the smoothing algorithm will then work on those positions to make the enemy move more smoothly.
The smoothing algorithm I made uses the concept of recursion, where the deeper the recursion, the more accurate the curve gets.
Dash Visual Effect :
The visual representation of Dashing in previous versions was rather dull, and didn’t represent a speed power-up at all. So I implemented a classic visual effect of Dashing, which is a set of silhouettes, used by many games such as Megaman ( both X and Zero), Boktai, Hyper Light Drifter, Castlevania ( backward dashing), Metroid ( Speed-up):
The Rushed Enemy :
I programmed a new enemy behaviour, in order to evaluate the polymorphic nature of the game engine, that is, the ability to add and support multiple enemies’ behaviours. So here’s the Rushed Enemy, I’ll let the GIF screencapture below describe its behaviour :
Clean and Bug-free :
The game engine finally works properly with no bugs submitted so far, what a relief !
The Collision detection code works properly, and the enemies, the player, and the bullets get managed the right way ( creation -> update -> drawing -> deletion). I recently had run-time issues related to accessing out of program’s memory range. It took me like a week to find and solve the problem ( as it turned out, that was more than a single problem).
I will be working Inchaalah on more features, including a Command List module that will enable level creation ( similar to a script), more enemies behaviours, camera module ( background shifting…), an Identity Maker ( sofware that enables making and editing Identities), and more.
Hope you’re as excited as I am ! Sayonara !