First Enemies and Controller Support
I had a whole article written up and ready to go, but of course when I clicked save the page timed out and I lost an hour + worth of writing... I don't have the energy to write this blog again, so I'm just going to give a quick summary of this week. Hopefully short and sweet is alright!
Art
Here are the new enemies Ref the artist has been working on. We've gone through a lot of iterations and I think they look pretty great!
(I love the way his helmet bounces when he walks!)
(Tank enemy. Slow. Lumbering. Boney)
Controller support
While Ref was working on the enemy I was working on implementing controller support.
Tech stack:
- Rewired
- My UI Helper Package - https://github.com/UncleEnzo/UIHelper
Architecture:
- Rewired
- Handles controller api calls for all possible controllers + mouse and keyboard
- Emits the last used controller
- Controller Swap Event
- A global event emits if we switched from mouse/keyboard to controller or vice versa
- Controller Manager
- Uses update function to read whether the last controller used was Mouse/Keyboard or controller.
- If they switch, it will enable/disable the mouse cursor and send out the ControllerSwapEvent
- Virtual Pointer
- GameObject with a sprite version of the cursor
- Listens for the controller swap event
- Globally emits the mouse or controller viewport position so that other parts of the game can use it for aiming
- When mouse and keyboard is enabled it disables the sprite and lets the unity input.mouse api control the cursor position
- When the controller is enabled it enables the sprite and lerps it in the direction the joystick is pointing
- UI Helper package
- Controls the current canvas screen (canvas group) that's active and disables the selectable elements on the other ones
- Listens for the controller swap event. If it is a controller it automatically focuses on the first selectable element on the canvas group and handles navigation
- If it's a mouse it defocuses from all elements and lets unity IPointer interfaces handle clicking and selection.
Accessibility
I also wrote a shader that adds outlines to enemies. It's disabled by default but outlines are now an accessibility feature in the options menu. Players can enable outlines on enemies and control their color. hopefully this provides more color contrast to players that want it.
(Outline examples)
Last thing I did was make a custom cursor sprite. Behold my glorious (terrible) art
(It looks exactly like the cursor from 20 minutes till dawn, I know, but I drew it myself!)
You will also be able to change the cursor color in the options menu now since a common complaint I get was how hard it is to see sometimes!
Looking Forward
Next week I aim to wrap up controller support and go back to playtesting the game and balancing / fixing the later levels! On the art side, I think we will continue to iterate over the remaining enemies for Level 1, and, maybe, start thinking about the first Elite and Boss enemies :0. I'm both excited and scared to get to that part.
Files
Get Bloodmoon Survivors
Bloodmoon Survivors
Survive the night by fighting your way through hordes of enemies
Status | Prototype |
Author | TheNevel |
Genre | Action |
Tags | 2D, bullet-heaven, Bullet Hell, Loot, Pixel Art, Roguelike, Roguelite, Singleplayer, Survivor-like, vampire-survivors |
Languages | English |
Accessibility | Configurable controls |
More posts
- Cowboy Grenadier Boss fight and lighting4 days ago
- Music updates, Level 2 First Boss, and Fixing Camera and resolution support9 days ago
- Particles, Attack Pattern Cleanup, and First Music Tracks18 days ago
- Preparing Steam Demo, Final Boss Level 124 days ago
- New Capsule Art, Steam, and Attack Telegraphs31 days ago
- Halloween Bosses, Tutorials, and Glyphs39 days ago
- Small update - Progressing45 days ago
- Logos, Bosses, and Preparing For Tutorialization52 days ago
- Bloodmoon Survivors 186 New Achievements Update60 days ago
- The Bloodmoon rises (in black & white), new elites, and achievements galore66 days ago
Leave a comment
Log in with itch.io to leave a comment.