Call of the Dungeon
A downloadable game for Windows
Low-poly action souls-like game, fighting through a dungeon. Make your way through hordes of different monsters to kill the dungeon boss.
The Dungeon Calls to You
Make your way through the dangerous dungeon filled with monsters, all ready to come at you swinging. Will you defeat the monster lurking within and escape?
Call of the Dungeon is an action game focused on combat with the different types of monsters that reside within. You will make your way through rooms in the hopes to find the exit to this place you find yourself in. Wielding your blade you can send the monsters to the grave, or maybe you’d rather dodge roll out of the way and fly by. There are many different kinds of monsters: from the basic skeleton to the speedy spider to the invulnerable ghost. Each has its own attacks which you must avoid if you want to survive.
Monsters of the Dungeon
Skeleton
The Skeleton is a simple enemy. It will patrol the many rooms of the dungeon awaiting any trespassers. After spotting you it will run towards you and swing its sword dealing a fair amount of damage.
Spider
The Spider is far weaker than the skeleton; however, its smaller, faster body makes it much easier for it to catch you off guard. Best take these out quickly, as they will be much harder to outrun then the bones.
Mimic
The Mimic hides and waits for the unsuspecting player to approach in hopes of securing some loot, but the only thing this monster holds is a devastating blow. Mimics aren’t easy to kill, it might be best to avoid these enemies as opposed to defeating them. The one upside is that they are much more stationary compared to the other monsters which inhabit this structure.
Ghost
The Ghost wanders the halls of the dungeon, floating from room to room. Don’t let it spot you, as this ghost isn’t friendly. The Ghost will follow the player and very nearly scare them to death if they get too close. The Ghost is already dead, so your sword won’t help you much against this opponent. However, the ghosts are quite shy and will freeze from a human’s stare. Look at the ghosts to stop them in their tracks (or lack thereof).
Golem
At the end of the dungeon awaits the strongest monster of all. Awakening only when disturbed, the Golem is a terrifying opponent. Get too close, and it might try to deal a devastating blow with its heavy fist. However, if you stay too far, you might want to be on your guard that it doesn’t come barreling towards you. This Golem is a tough opponent, but it is the final thing between you and escape. You have no choice but to take it down.
Player Moveset
- You can control the player using the [W], [A], [S], and [D] keys: moving forward, left, backwards, and right, relative to the camera’s direction, respectively.
- Use the mouse to rotate the camera’s position around the player.
- You can use the Mouse Scroll Wheel to zoom in the Camera.
- Holding down the [Shift] key while moving will allow the player to sprint.
- You may also press the [Shift] key to perform a dodge. While stationary this will cause the player to dodge backwards, but dodging in motion will perform a dodge roll.
- Pressing the [E] key will cause the player to swing their sword, damaging any monster it comes in contact with.
Post Mortem
What went right?
We were able to integrate the camera with the player movement as well making sure it was able to zoom in among other things. The player controls turned out pretty nice, aside from some bugs with collision of slopes/non flat ground. The animations for the player were very nicely implemented, giving the player a pretty fluid feeling.
We managed to implement 5 different kinds of enemies all with different mechanics or stats. The enemies all use similar code, so it was easy to create more enemies with slight adjustments after the first one was created. The most complex one, the Golem, turned out to be mostly functional for the final game. It did work out well enough to make it in the game as the final boss with fully functional, varying attacks.
The level design, lighting, and music provide a nice atmosphere for the game setting. We believe the level was extremely well designed. It wasn’t too confusing, having only small branching dead-ends, but it also wasn’t fully linear, to allow the player to also have a bit of exploration. Also, all the rooms were very expertly filled with objects to better add to the atmosphere of the dungeon.
What went wrong/what problems did you face?
The camera faced problems with clipping through walls and objects, as well as it not following the player sometimes. Some of this did persist into the final game, since not everything was able to be fixed for the build due to time constraints.
The player did have a large amount of bugs throughout development, the collision being one of the main issues which isn't completely fixed in the final build. It works well enough for the game, but we would have liked to be able to perfect it a bit more beforehand. We also did end up leaving in an extra move for the player which wasn’t meant to remain in its current state. That being a stronger attack by pushing the [R] key. This attack actually has the ability to damage the player. We didn’t end up listing this as a control in the directions as it isn’t really supposed to be in the game. There were also a couple of errors with animation not playing right or just did not fit with the player model.
The enemies did have many problems when they were being developed. Many of which came to certain ray tracing or collisions when doing certain attacks. For example, getting the player to freeze the ghost by looking at it had a very simple bug which took a lot of testing and debugging to fix. Or the Golem’s charge attack wouldn’t actually charge towards the player. A couple of bugs weren’t able to be fixed unfortunately, such as one that appeared very late into development, which resulted in the Golem losing one of its attacks.
We seemed to have some troubles when building the lighting for our level. Simply we were struggling to have it generate baked lighting for us, which caused the game’s performance to be decreased significantly. We also discovered that after the creation of our second level, it did not have collisions for a vast majority of the floor. This of course poses a problem where it is completely unplayable.
How did you overcome those problems?
We were able to smooth out the camera by fixing it so it can follow the player properly. We did make some adjustment to the camera height and position as well making sure it was able to move the camera with the player movement. We were also able to adjust the way the player would fall in order to improve their ability to walk up and down staircases or fall off ledges.
The enemies eventually got to be functioning quite well after enough debugging got a majority of the mechanics working on them. Simply taking the time to methodically go through the execution of the scripts allowed us to determine the exact point at which each problem was occurring. At least, for the ones which we had time to fix.
When the lighting seemed to not be functioning properly (it wasn’t being generated properly), we ended up having to try many different settings to figure out what seemed to be the problem. We believe we managed to have the lighting be functioning, but were unable to have it as baked lighting, which can cause some performance issues.
What changes were made and why?
The camera was able to zoom in and could be adjusted whenever you want during gameplay. The player also did have some of their moveset decreased as to what we initially intended. They initially were going to be able to interact with the level, whether it be picking things up or maybe switching a level, but we were unable to implement this in the player or the level in time. We also were initially going to have two playable character states, but the second state did not make it into the final build of the game as it was not fully implemented before the end.
The enemies are pretty close to what was planned in terms of their functionality. However, we did end up having to forego including some of the sound and visual effects that were initially intended to be a part of the game related to these enemies (like when they attacked or when they died). We also did end up having to remove the Golem’s throwing attack from the final game, which is unfortunate, because it was in a functioning state in the middle of development, but near the end it had some bugs which completely prevented it from working at all.
Due to time constraints, the levels had to be much less interactive then we had initially intended. We wanted to fill the levels with collectibles and loot, as well as puzzles to progress. Also, since we could not fix the lack of collision in the second level in time before the deadline, we had to remove that level from the final build, and only make it a single level game.
What did you learn?
When creating the camera, you have to consider the player model in factor to it as well. It requires some understanding on how collision works and how it can affect the camera as well.
We also learned how to adapt for unforeseen circumstances which can cause the direction of your game to need to change by quite a bit. We learned how to prioritize creating a functioning and playable game, based on the constraints you are given and your current situation. This involved having us determine what needs to stay in the game and what can be thrown out. This would most likely be important for all projects in the future since everything has some kind of deadline. And if you must finish a project by the deadline, you should prioritize when it needs to be completed over what is considered extra.
We also learned that it is quite important to make sure you get your lighting functioning properly early on (and don’t forget to make objects static if they aren’t moving). As it can be a time consuming process if you attempt to finish late into the design.
Credits
- Andy Saenz - Programmer, Player Controls and Movement
- Christian Smith - Programmer, Enemy AI
- Corbin Thelimann - Level Design, Lighting, Particles
Download
Install instructions
Simply you may unzip the file and run the .exe file