14 MAY 2022:
So much progress this week that I can only properly show it off in a Youtube video!
- My experimental branch of Scrapship has been successful and is now the main branch!
- The game now detects the player's desktop width and height and goes to a windowed fullscreen by default. This gives the game a more cinematic effect and creates a lot more playspace.
- The screen moves around the player instead of the player moving around the screen. This massive improvement allows the player to scroll infinitely in any direction while imparting a greater feeling of freedom and space to the experience. To me, it doesn't make sense to confine the player to a narrow corridor of action like you see in a lot of shmups. Especially in a game that takes place in . . . space.
- Reworked AI system that allows a LOT more enemies to spawn. This is still a work in progress, but even as-is, I see it as an improvement over the last version.
- The THREAT BAR. You'll see this as a red bar on the left side of the screen. Certain actions (like firing your weapons or damaging enemies) will cause it to increase. The game gets harder as the Threat Level increases.
- The MORALE BAR. As you destroy enemies, their morale decreases. When it reaches a set point, the railgun appears allowing you to go to repair your ship and go to the next level.
- More collectible scrap on-screen. Some is "free scrap" that floats around, but destroying enemies also generates scrap that can be collected. Scrap can be spent at the railgun store between levels. The scrap also helps give the player a sense of movement through space.
- Prior to this update, Scrapship was almost at 11,000 lines of code. The current version you see in the video only has 7,500 lines of code. I was able to accomplish this by consolidating a lot of redundant subroutines.
BONUS:
Morale is displayed using a counter that is broken down into hundreds, tens and ones digit spaces. One of my challenges was writing the code to make this decrement properly. Side note: I initially tried a modulus route, but that was returning incorrect values.
Below is the code I used to accomplish this. The same principle can be used in any programming language.
Quote of the Week:
"Pleasure in the job puts perfection in the work." -- Aristotle
Thanks for reading and have a great rest of your week!