[Release] Disable Enemies to Reveal Enemies

Recommended Posts

Howdy thumbs. This is a bit of late post as I've already released the game, but i figured I still should. 




I made a game in Pico8 inspired by Disable Enemies to Reveal Enemies. It's a very simple roguelite in which you have a level with enemies spawned in. You can see only one of them, and must disable that enemy in order to see the next one, who you disable to see the next etc. until all enemies are disabled and you can descend to the next floor. 


All you can do in the game is move around, and if you move into a visible enemy's square, you disable them. But you cannot disable the invisible enemies, though they can disable you. This made for a weird dynamic where I had to figure out a way to signal that the player was in danger, rather than just having undetectable enemies. So I used audio cues.


I initially just set it up so there'd be one sound effect every time the enemy saw the player and another when the enemy took a step towards the player. However due to a bug, both sounds were combining. Whenever the player was visible the enemy would always move towards them, meaning both sounds played together. Once the player slipped around the corner, the enemy would keep following to the last place they spotted the player, but now only playing one sound effect. 


I actually liked how that came out a lot, it ended up making a very clear distinction between those two modes, and (I think) the combo sound is more threatening and perilous than just the enemy taking steps, so even if it's not 100% clear, there is a way to intuit where the enemy might be and what they're doing. 


I liked how this game forced me to consider sound design integral to the system and not just additive, which is how I always approached it before. It helped a lot that Pico8 has a built in sound creator. 


I only made this in the last 3/4 days, but given more time I'd like to expand on what the player can do. As it is, you don't have many options in dealing with enemies, and sometimes you can get caught when stepping around a corner, with no way to avoid or expect it. I'd like to add something like whistling, where you can detect and attract guards in a small radius. As well as some gadgets, like being able to cut through walls. Things that give the player more verbs and make them less of a sitting duck. 


I'm quite happy with it, so I hope other folks enjoy it! 



I later added the ability to whistle, to locate where the invisible enemies are. This reveals their location and your location to them, so you need to be careful about giving yourself away too much. It gives a player more visibility at a risk, but it prevents the crapshoot of turning a corner just to get slammed by an entirely undetectable enemy.

My Pico8 Cart PNG


(also sorry if this post is a bit of a mess, I wrote it on my phone) 

Share this post

Link to post
Share on other sites

Had a bit more time, so I've now made some updates. Added 2 more sets of sprites that swap out after doing a few levels. Also added a "whistling" option for the player. It allows you to locate enemies by their reaction, but also means they start actively searching for the source of that sound, putting you in potential danger. 


Adding this layer got pretty heavy and involved some (VERY) rudimentary pathfinding, so for my next Pico8 I'd like to look into how people made more intricate games under the constraints it introduces. Trying to do anything with what I have here is getting immensely cumbersome. 

Share this post

Link to post
Share on other sites

At first I was not really convinced by having invisible enemies but after few run this combined with the whistling mechanic works quite well. You have to stop whistle see if this safe and proceed. If an invisible enemy is around I simply walk more carefully or take a detour.


I think it's difficult to attack enemy since you are never sure when they will move toward you. So approaching an enemy and knowing who will attack or be desirable is a bit difficult to predict. I got a feel for it after a bit but I couldn't explain precisely how it works (turn based? random movement?)


Nicely done!

Share this post

Link to post
Share on other sites

Fun little game! Kind of reminds me of NES Gauntlet, if it were a puzzle game. Does take some figuring out as to what counts as moving onto vs. being moved onto, as mentioned. Also had a couple times where I burned through all my lives by starting in a room with an invisible enemy right next to me, but I guess that just means


whistling when you spawn would be a good gameplay tactic.


Share this post

Link to post
Share on other sites

@Lama Himself Thanks, glad you enjoyed it!


The enemy movement is pretty dense, and the number 1 area for improvement but I'll lay out how it works. I'll stick it in spoilers cause it's pretty long:


The player always moves first, followed by the enemies. This means that you can disable an enemy you're next to, but if there's an empty space between you and them, then you should 

not move into it because they can then disable you. Part of the whistle mechanic is allowing you to draw in visible enemies so you can line them up to attack.


How enemies decide to move depends on if they've seen or heard you. If they have neither seen nor heard you, they just have a low chance to move randomly.


If an enemy sees you, they'll charge right for you. Once you're out of sight, they continue to the last spot where they had seen you, at which point they stop and revert back to random movement.


The sound complicates things. If an enemy has heard you, they'll try and find the source of the sound. This means they pick a direction that seems to lead to that source, and continue walking in it. Once they hit a spot where there's multiple ways to go, they re-evaluate which seems to move closer to the sound, and then head that way. They stop looking for the sound either after they've found the spot where you whistled, or if they turn 3 corners (which is meant to represent giving up after some time).


However there are some bugs. Obviously sight should take priority over sound, but in reality this seems to be hit and miss. Sometimes they chase the sound instead of the player standing in front of them. I'd like to figure out exactly why that's happening, I suspect I just haven't coded the priority order properly. Also this is a very inelegant "pathfinding" solution, which is especially evident when it causes enemies to pace back and forth. Again, that should stop after a period but sometimes it seems to be endless for some reason.


That was long, but hopefully clarifies things! Like many jam games for me, it got denser and the weight of everything just kept piling on. If I was starting from scratch I could try be much cleaner, but the organically grown spaghetti code is fun to work out.


@ryanfb You spawned right by an enemy? Hm, that shouldn't happen because I specifically block enemies from spawning in the top left corner of the map. Was that after being hit once elsewhere? It doesn't reset enemy positions after you die, which is maybe a mistake for this reason.


Also wow, I played Gauntlet and I can totally see what you mean. That'd definitely be the approach to take if I was trying to develop this into a full game.

Share this post

Link to post
Share on other sites

The visuals and the movement system reminded me of playing DOS games like The Magic Candle II, and I'm always glad to have those memories resurrected. Love the retro sound effects, too.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now