Page 4 of 4

Saving and loading

Original date: December 10, 2021

So, we now have a pause feature, and a pause screen with menu. That was easy.

We also have a save and load feature. That was not easy.

I originally intended to allow the player to save mid-mission. Well, nope. The thing is, Godot doesn’t actually come with a save feature, you have to script it yourself. That means I have to exactly tell it what to save. Every variable, every current value, and write that into a JSON file. Loading is the same in reverse, read the contents of a JSON file and populate variables with the values from that file.
If I wanted to load mid-mission, I’d not only have to store the current position and orientation of the player (which will be difficult to restore as the physics engine won’t let me move the player by setting the coordinates), but also which enemies are dead and which alive, which powerups were collected, which doors were open or closed, which switches were in which position and so on. Yeah, no.

Of course I can’t just store the state of the current level in the JSON, because a level is a “scene” and a scene is a “node” (that’s what Godot calls any game object). And guess what cannot be stored in a JSON? Precisely: nodes.

So, the player can save between missions and load from the title screen. Which is actually exactly how it was in the original game. That way I only have to store a couple of global variables. Well… and which weapons the player already has. Which I write in an array/list. And what is an array? A node…
At least it’s a small list, I just have to store each entry of the list in the JSON and recreate the list on load. So, yes, it works. Whew.

Game mechanics

Original date:

 I’ve had enough of the red walls so I changed the graphics. I used this opportunity to take a look at Godot’s tileset editor. The wall tiles are not final, I’m just not very good at designing tiles. Getting the patterns to line up was frustrating and there’s still errors. Maybe I’ll find someone to do that for me at some point, but it works for now.

There’s a couple of new things. There’s doors now. Choosing lightning arcs may not be the best idea for doors, likely players will expect them to cause damage on contact, but I liked the idea. They’re harmless, actually. Just regular doors. Some can be opened simply by approaching them and hitting the “activate” key, some can only be opened via switch (the square with the 0, not final graphic of course) and some require the player to collect a specific key card.

There’s also teleporters now, that disc on the left. That was a doozy. The original idea was to simply move the player. That is, change the coordinates from current to the coordinates of the destination. However, Godot’s physics engine prevents moving objects in this way. It will correct the movement and reset the coordinates.
The only way that worked was to delete the original player and spawn a new one in at the destination. However, that comes with a bunch of issues, mainly scripts that were looking for an object “player” no longer finding said object because the newly spawned player has a different name which is heck knows what. So I had to alter a couple of scripts to accomodate this.

Heads Up Display

Original date: November 22, 2021

Implemented the HUD. From left to right: shields (drops when the player takes damage, duh), below that is hull integrity (starts dropping if shields are depleted), slots for key cards, minimap (not implemented yet), currently selected primary and secondary weapons + ammo, afterburner fuel and a “special” bar, which is currently used when the player has an invulnerability shield active.

The animation also shows an invulnerability shield. This one is the timed version, which makes you completely invulnerable for 30 20 seconds. There is also another version that simply absorbs a certain amount of damage until it disappears.

I may also implement a damage boost, but I’m not certain about that yet.

What you see in the video is the current sandbox level which I use to try out stuff. The small icons are pickups/powerups – ammo, fuel, shields, armor and so on.

First enemy

Original date: November 07, 2021

The first enemy is now in the game (codename: “Clabombe”). The ones you saw in the previous gifs were simply target dummies. This guy is very simple. Once it detects the player, it will activate and simply work like a homing mine, flying towards the player and exploding on contact, causing damage. Clabombe’s behaviour is pretty much identical to the SAD modules.

Here’s a render of Clabombe in its aggro state.

More weapons and other stuff

Original date: September 10, 2021

Managed to implement homing missiles. This was more difficult than expected, especially since I had used a tutorial which simply didn’t work the way I needed it to. However,, the things I learnt in the process will not only be useful for other homing weapons, but also for creating enemies.

The final player weapon also works now. The Search And Destroy (SAD) Modules launch in sets of three. Other than missiles, they do not fly at a constant speed.

Like ShadowWraith, Cyberwraith will have the player navigate through a maze of rooms. The camera will be static and change rooms together with the player. Rooms are not separate, however. Leaving a room does not shake enemies and it is possible to fire into other rooms. The camera for this system was the final thing implemented today.

Weapons

Original date: September 10, 2021

Development of Cyberwraith began in September 2021. I stream the development on Saturdays around 20:00 (8 PM) CET on https://www.twitch.tv/raen_andaleio (not streaming at the moment, note by the author)
The stream is in German, but switching to English is no problem. Not all development is streamed, I work on the game whenever I have time.

ShadowWraith had multiple primary and secondary weapons which were collected as the game progressed. Weapons were the first feature I implemented in Cyberwraith after movement and afterburner. I always loved how these weapons felt, so I decided to stay close to the originals here.

Here’s some secondary weapons: Grenades (complete with blast radius) and a powerful beam. This one was not in the original game, but I felt like it, so…

The Beginning

Original date: September 09, 2021

 Hi, I’m Raen. I’ve always been the creative sort – 3d modelling, worldbuilding, writing, music, some with more success some with less. I also enjoy making games, although only one is finished enough to be shared. There were previous attempts at creating something, but I was never able to finish anything for various reasons (engine becoming obsolete, data loss, time constraints, …).

If you’re interested, you can download it for free here. It’s called Orphan of the Stars, created in RPG Maker VX Ace.
https://wds.rainydays-design.com/en/home

When I was around 11 or 12 years old, I discovered a game that I became almost addicted to. ShadowWraith, a Macintosh exclusive, released in 1995 designed by Ravi Mehta of Terminal Sunset and published by StarPlay. I loved the game, the way it handled and the music. The screenshot above is taken from the game.

Recently I got the chance to play it again, thanks to the powers of emulation and I decided to create a game inspired by ShadowWraith. Since I had been curious about the Godot game engine for a while, Cyberwraith was born.

So, development diary for the game goes here.

Newer posts »

© 2025 Cyberwraith Devlog

Theme by Anders NorenUp ↑