howdy pardner! this is a retro action platformer hwere you, cowboy, scale a tower of dangers and bandits.
what awaits you at the top is somethign, quite frankly, magnificient ( i havent decided yet).
made in Rust with Macroquad.
howdy pardner! this is a retro action platformer hwere you, cowboy, scale a tower of dangers and bandits.
what awaits you at the top is somethign, quite frankly, magnificient ( i havent decided yet).
made in Rust with Macroquad.
I worked a lot on the visuals of the boss battle (see the second attachment), i made the dialogue UI smoothly glide in, and i added cinematic bars that appear during the boss fight. I also added dust effects when he lands. Other than that, i also added decorative piles of barrels, so when he throws barrels at the player, he is no longer just pullign them out of thin air.
I also improved the lasso visuals, made it connect to the actual ring, rather than the centre of it, and change the texture of the hook when the lasso connects, to show the lasso wrapped around it.
I also decided to sort levels in to different “worlds”. I dont really want to call it worlds as its all in a single tower, but they just correspond to different visual themes of levels with different relevant mechanics, like the second world has machinery, pipes and lava, and introduces the horse mechanic and lasers.
I want each world to end with a boss battle, and the boss i previously made is now the boss for the first world.
I also spent roughly 2 hours debugging some visual bugs that i only got on Windows. On my linux laptop which i have been developing the game thus far, everything looked good. But on this windows computer, there were flashing at the edges of some tiles, there was a gap between the player’s torso and legs, and pixels werent pixel-perfect. I havent really fixed the root of the issues, but at least i fixed the symptoms of it, so i think its fine?
Added a boss battle! The boss has two different attack phases, and you need to shoot him 16 times to kill him. He also has a line of dialogue that he says the first time you fight him. To add support for bosses, I chose to create a Boss trait in my Rust code. All bosses will implement this trait. The trait itself is really simple, just a single update function that receives mutable references to the entire game state.
The reason i chose to make it like this is because all bosses i want to add will have practically nothing in common with eachother, aside from perhaps a position property, but even thats debatable. By just having a trait, it means all bosses have their own struct, their own unique properties and their unique code. Them also having access to the entire game state means the entire boss fight itself can also be managed by the boss, things like raising barriers to trap the player on the arena, or showing particle effects. Everything about bosses is very flexible, is what i’m trying to say.
I spent a lot of the time on the animations itself, and i think he looks alright. A lot of the other time was also refactoring old enemy and projectile code. I also updated the laser beam animation and gave a minor visual overhaul to two levels.
Thats about it!
Added transition between levels! Previously it would just cut to the new level which looked a bit abrupt, and there was no way for the player to realistically know that they had traveled up a floor by the elevator, as you just kind of teleported to another elevator.
This took quite some time to get working right and I had to restructure some code which is why this kind of minor feature took so long to implement. I also had to bother with drawing the entire previous level during the transition when both floors were visible at the same time.
Added LASERS!! I can place laser cannons around the map that fire a laser ray every couple seconds. I think theyre really fun! I also added a new death animation for lasers (see video attachment 2). I also made a new system for my level editor where i can mark the delay of enemies (including laser cannons) which took a really long time to implement but now allows me finer control over enemy behaviour.
I also made horses omnidirectional (vid #3). They can be placed as such to climb walls, or even walk in the ceiling! I think thats really fun :>
I also made horses return to their spawn point after having being ridden, to prevent soft locks on some levels. I can however in my level editor mark a “no return” zone, where the horse will not return to its origin while the player is inside, because on some levels i’ll want them to stay by the player to for instance boost the player to a higher platform.
I also made a new level utilizing vertical horses and lasers, and as usual ill continue working on more levels!
Log in to leave a comment
This devlog i added support for animated tiles which i used to create lava, a fun new way to die! I also added support for different death animations based on death cause ,which looks really good. I also added a new jump animation thats really silly and i love it!
I also added HORSES! Horses stand idle until the player mounts them, at which point they start running, uncontrollable by the player. They can walk on lava (OBVIOUSLY), and when you dismount a horse you also gain a bit of height which can be used to jump higher. Both of these aspects will be utilized in level design .
I’ll keep working on new levels next!
Log in to leave a comment
I added a new enemy that throws dynamite which explodes in a ball of fire !! i really like the way it turned out, and adding this enemy forced me to rework the projectile system to make it a lot more flexible which means i have more flexibility in the future to add cool stuff!
I also changed the ways level progress, since at the end of a level, there is an elevator that takes you to the next floor of the tower, and previously you would always be reset to the left wall of the tower, but now i made it so the next level will always start at the side of the tower that the last level ended on. It’s somewhat hard to explain but i hope the picture makes more sense.
Next I reckon i’ll keep working on pumping out more levels.
This devlog ive worked on levels! I first and foremost added an elevator at the end of every level that takes you to the next level. I also added spikes which kill you, as well as a new bandit (that also does kill you).
I’ve also decorated the levels a fair bit, added windows and chandeliers and more props. I also added tooltips to the first level that show you the controls, like LMB to shoot and RMB to lasso swing.
Added swinging with a lasso! I can now place hooks like the one you see in the attachment below that the player can swing from. The most of the time of this devlog was spent on the physics for the swinging and the exact implementation details of how it should work, making it easier to use and more arcade-like rather than perfectly realistic.
I also added dying and restarting the current level when you die.
Next I think I’ll work on creating actual levels! Maybe adding more enemies, too
Added enemies and firing projectiles! The enemies cant currently fight back and just randomly move left and right. I made the player animation be split in to two animations, one for the torso and one for the legs. This makes it possible to show ex. a shooting animation independently of the legs’ animation.
Will work on making enemies shoot back at you!
Log in to leave a comment
Added player and physics! I could reuse the physics calculation code from old projects, otherwise this wouldve taken like five hours. In Tiled, the tilemap editor I use, i have one specific layer be the “collision” layer, which is the one that the player collides with. The rest are just background or details.
Since this is supposed to be a tower, I made it draw the sides of the building at the horizontal edges of the level, and draw a solid dark color above and below it, which is supposed to be the outside of the building / other floors of the tower.
Anyways, will work on maybe adding enemies or more complex levels next?
Log in to leave a comment
Ive set up level loading from Tiled! Tiled is a tilemap editor software, and ive now added support to load their fileformat to level data in my project. The entire level is also statically rendered to a texture, so when i draw the level each frame, rather than drawing each tile individually, it just draws the rendered texture.
Will work on player (movement) next!
Log in to leave a comment
Initial commit! I set up the bare minimum for loading assets and rendering a little character to the screen! I am using RUST with macroquad as my game engine, ive used it a lot before and i reallllyyyy like it!! The assets i actually load directly from aseprite project files, this is something i learnt some time ago, and it saves SO MUCH time! I can even directly reference specific animation tags! I have learnt alot from my previous games and this is one of the most useful things i started implementing for all my games.
The game will be an action platformer with a cowboy theme or something. thanks for reading <3
Log in to leave a comment