Implementation & Documentation


This Devlog will serve as a summary of this project's implementation.

ChatGPT nor any other AI assistance was used for this project.

Differences between concept and final product:

I originally wanted a more complex stealth system for this game, but the complexity of this would’ve made the game take a much longer time to develop so I scaled back on the stealth and put more effort into the combat. Whereas before, combat would’ve been all about shooting enemies as little as possible, relying on your stealth abilities to succeed. However, this morphed into a game where your ability to avoid enemies is only necessary if your ability to kill the enemies isn’t good enough. Combat is pretty fast and you can die very quickly, so you need to act quickly and hit your shots accurately.

I had another level planned before the final level initially as well. I never documented this but the intention was for this level to be a large room filled with a grid of the large stacked crates, where the player had to navigate between them and avoid enemies doing the same thing. It would’ve been a very claustrophobic level, and it was eventually scrapped because of time constraints and that it would’ve felt too annoying to play through with the way the gameplay was structured by the end of development.

Feedback from testing:

Over all, the things that needed the most work were the enemy AI and the core game mechanics. Shooting and stealth have undergone changes since this testing session, players get a max of 15 bullets and 15 health now, meaning players can take 3~ shots before dying, rather than 2 (enemies still take 2), and they can hold more ammo as I found players were using 3-4 shots to take out 1 enemy and then soon run out of ammo and die, so I decided this needed to change so players have more of a chance to explore for ammo pickups before this happens.

Some feedback was given about the stealth feeling too slow and that it wasn’t useful enough. I wrote about this above, how the action aspects of this action-stealth game started to become more of a focus through development, this influenced by desire to keep stealth as it is in the final game, where it is something to use in bad situations, and isn’t to be abused for easy wins.

The general theme of positive feedback I got was that the game gave a good challenge, without feeling unfair. Espionager is a difficult game, you die fast, things happen fast, you need to react and learn to succeed, which each player pointed out as such as they played without my prompting.

Players generally felt that each level was a good size and was well designed. I put a lot of thought into the enemy, cover and pickup placement in each level, in fact the position of each of those elements didn’t change at all throughout development.

Things missing from final game:

Player sprite & enemy sprite: These were originally planned and I was working on them (each sprite had 2 animation cycles finished) but I never had enough time to get them done in time, with the kind of game I was making where mechanics and gameplay are so important to get right in order for the game to actually be fun.

Silencers: silenced the player’s shots so enemies wouldn’t go looking for them when alerted.

Enemy hearing & memory: the enemy ai was originally meant to listen for player shots and remember where they last saw the player. This was scrapped when it became obvious that the time spent on this feature would mean I wouldn’t be able to finish the project within the given timeframe.

Pathfinding: enemies were going to follow a set path to reduce randomness and increase the desire for the player to repeat the level and learn, but I found that the game was more fun when it wasn’t exactly the same every time, so I let the enemies wander randomly around the area instead.

Sourced Assets Reference:

  • Inside Tileset - https://opengameart.org/content/a-lonely-nightmare-inside-tileset
    • Used for the tileset seen in each level.
  • USP-S Sound - Counter-Strike (Valve, Sierra Studios, 1999)
    • Used for the sound of the player shooting, based on the USP-S shooting sound effect.
  • Glock Sound - Counter-Strike (Valve, Sierra Studios, 1999)
    • Used as the enemy shooting sound, and based on the Glock shooting sound effect.
  • typewriterUI script - Nick Huang
    • Used to implement the typewriter text effect seen on some of the text elements in the game.

Original assets:

  • Pursuit Ray script - Original
    • The Enemy AI’s ability to track the player and determine direct line of sight with raycasting into all non-player objects.
  • CrateSprite - Original
    • The sprite for crates.
  • CrateStack - Original
    • Used when larger pieces of cover are needed.
  • EspionagerUI - Original
    • The user interface with Ammo & Health counters as well as symbols to represent the box count and the silencer count (never implemented)
  • DoorSprite - Original
    • Used for the doors that transport players to the next level.
  • Several other modifications made to the Player Shooting, Health & Movement scripts
    • Includes the ability to go into stealth mode with boxes, the ability for the player to receive pickups
  • Pickups Script - Original
    • Used to give objects the ability to grant the player supplies, with checkboxes for either ammo or stealth box pickups.

Files

v1.0 Play in browser
Oct 13, 2023

Leave a comment

Log in with itch.io to leave a comment.