Last week was intense! There's a lot of new stuff!
So without further ados, let's cut the cheese. 🧀
Loading Screens A-Plenty
So last week I said I was able to load a level from the main menu. However, there were some problems when it came to the reactivity of the app during that loading phase... The game froze and gave no signs of activity, promoting Windows to administer the "Not Responding" treatment.
To fix this I've broken up the loading process onto three separate loading processes.
I've also optimized the music playing feature: it now initializes before the menu screen, so now everything can be offset to a secondary thread. It's just a matter of waiting for the end of that process with a Coroutine and load the next scene when it's done.
This significantly speeds up the loading process to the point where some loading screen only shows up to immediately disappear after.
Getting In and Out of Levels
Secondly, I've finally linked all levels together.
Now, when the player jumps down the Ethernet port a loading screen is shown and the next level is then loaded.
This means that the player can theoretically complete the game for the very first time. (Yay!)
Thirdly, there is now more than one level.
Each level has their own localized name. In the future, an AESTHETIC Sonic-like splash screen will be shown to introduce the level. Right now it's only a small notification, but it's getting there.
Because the game uses a palette, it was really easy to add other levels. I did, however, need to make each level look distinct from one to another, so I had to work on their palettes a bit. In order to get the right feel, I've tried to get Vaporwave images that inspired me and extrapolate on their palettes to create new ones.
Here's a bunch level and their respective name:
Keep in mind that there'll be some level-specific props for each level in the future. (Just changing colours won't be enough to make each level unique)
I also want to mention that two of these levels, mainly Current Cave and Hot Hell, have inverted palettes. Usually, each colour changes their values from light at the top to dark at the bottom. These levels have these value flipped.
This creates an uneasy feeling, not unlike photo negatives. This effect was used in Current Cave to indicate that it's dark, while at Hot Hell it's hot.
While working on the game, it occurred to me that I've never built my game at all. This was kinda troubling, as I had a skewed view of the game's performance: the Unity Editor creates a lot of overhead, meaning that the game genuinely runs slower in the Editor than as a standalone.
So I've decided to finally build one small developer build to evaluate the game's performance.
While doing this I've also decided to tweak some the standalone's settings. For example, I've added a nice logo at the game's main splash screen. (Just a placeholder one don't worry)
I've also added a bunch of program icons and cursors.
While doing the cursor, it occurred to me that I could generate different cursors for each level, so I tried it.
First, I've created a base cursor image. Secondly, I map each colour channel of our base cursor to a colour given by the palette and store the result for later use. Then, when the level loads, we simply replace the cursor with the level's one and voilà.
But anyways, I was able to compile a development build and give the link to some of my friends and relatives...
I won't put it online right now: there're some easter eggs in it that aren't hidden yet 😉.
Counting .mp3 files, the game's size is about 80 MB. While this can be quite big it is but a development build, so not everything has to be perfect.
There's also three new "character" classes: gunner, marksmen and swordsmen.
When the player starts a game with a specific character, its choice is saved in the save file. When the player plays again, the last used character will be already highlighted.
But enough talk, let's get right into each of these classes.
Nicknamed "True American", this character starts with, well, a gun.
His weapon: The Gun
The gun is a new hit-scan weapon that can also be obtained in-game. It uses ammo and doesn't need to be charged like the bow.
This is quite handy, but this weapon is also especially loud: It's not the most subtle weapon out there.
Also, unlike the bow, it can only hold a set amount of bullets. (no reload sorry guys)
When the gun runs out of ammo, the player can use a secondary melee attack. This attack, however, is considerably weaker than using a bullet.
Once the player has a gun, ammo will spawn where common consumable items would also spawn. It can even be found in Malls if the player holds a gun when the level was generated.
The ammo is game persistent. This means that if the player had a gun, collected and used ammo, switched to another weapon and switch back to another gun then the ammo amount will stay the same.
His Item: The Cellphone
The True American also comes whit a cellphone. This gives him the ability to create one-way teleportation points.
For stats, he's really kinda weak compared to The Standard, but what he loses in raw defence he gains back in HP, making him a powerhouse if you can avoid direct contacts with enemies.
Nicknamed "Robin Hood", this character uses a bow to dish out damages.
His Weapon: The Bow
This new weapon can also be obtained in the game. The Bow is used in conjunction with arrows to create a formidable combo.
Unlike the gun, the bow isn't a hit-scan weapon: it instead throws arrows. In order to be effective, this weapon needs to be charged up. The player presses and hold the attack button, and release it to unleash a deadly arrow. The longer the player holds the button the faster and deadlier the arrow is.
The player can also use a secondary melee attack by quickly tapping the attack button rather than holding it down. This is useful to break breakable boxes or quickly dispatch weaker enemies without wasting any arrows.
Like the gun, when the player runs out of arrows, then the weaker melee attack is used.
Arrows behave just like gun ammo: they will be lootable when the player holds a bow and their amount is game persistent.
Oh, and it's a really expressive way to do art too:
His Item: The Survival Gear
Robin Hood also holds a survival backpack. This makes him able to consume some of his health and produce food items.
Robin Hood's stats are somehow similar to the True American's, but where the latter gains more in HP the first has a significant advantage in Agility.
Nicknamed "The Standard", this is the default character and probably the only character that isn't an unlock.
His Weapon: The Sword
The Standard uses a basic sword. It only has a melee attack with a set range.
It's quick enough to repeatedly attack in quick succession, but that's about it.
His Item: None
The Standard doesn't hold any items nor any other equipment whatsoever.
I'm not sure whenever or not there should be an unlockable item for this character much like The Binding of Isaac or not...
This is a placeholder stats, but the idea is that this character is an all ground one.
Upgraded particle physics.
- Now each rock crumbles made by breaking either a breakable wall or a rock will react according to their position and the explosive force of the bomb.
- Fixed a bunch of bugs with collision layers.
Added locked folder items.
This means that in order to open these you'll need a key.
- This means that in order to open these you'll need a key.
Optimized the VaporMaker album image system.
- Now the colour mapping takes place in the GPU rather than the CPU, saving memory and quickening the whole VaporMaker process.
- Optimized shaders so that the building of the game doesn't take ages.
- Added colour palette support for many GUI components.
- Made GUI component's colour listen to any palette changes so that their colour would always follow the palette.
- A lot of refactors and fixes.
- Made some GUI layout more responsive.
- a lot.
- Made State loading more dynamic.
What is planned next week is to polish and balance those new classes. I also want to polish some stuff that I've noted down.
After that, It's up to bosses. Afterwards, it's the usual suspect...
I got to say: the more and more new features get implemented the more and more this thing I have starts to resemble an actual game.