This project is a fan-based game. Wolfenstein and it's assets are all owned by ZeniMax Media inc.
I've always been a big fan of old-school games and I still play them from time to time. Not only because I simply think that they are fun to play, but also because you can experience the history in them. I believe that these older titles still carry many lessons to take inspirations from. Because of that respect I have for these games, I wanted to make a small homage to one of the most important games in history - Wolfenstein 3D!
Scripting made in C#
Made in Unity
Created in 2 weeks half-time
Wolfenstein 3d in two weeks
Obviously I couldn't make the whole of Wolfenstein 3D from scratch in just two weeks. I had to cut some corners to actually manage to finish this project, but not too many corners so that it wouldn't feel like a complete game at all. It was a hard thing to balance. But not only that, this was one of the first things I scripted. It was very much a learning experience for me. I did actually overscope quite a bit. In the beginning I wanted to have it be as close to 1:1 with the original product, but there simply wasn't enough time.
The enemies are a bit simpler with a area that the player has to step into for them be noticed. I made them react to bullets in their area, so they could still notice the player if they shot in their area. The ranged enemies stayed at a distance, but still followed the player if they ran away. The dogs used a similar system, but obviously they don't have guns. They chase the player and when in range they attack them in melee.
I made four levels where the last level is a bossfight against Hitler. Every level introduces one new enemy-type. The first level has the dogs, second has the nazi guard, third has SS-soldiers and the fourth has Hitler in a small arena. I didn't use the different phases that the original used, because there simply wasn't enough time.
I cut the knife and minigun from the game because I felt it wasn't worth the time-investment to create a whole system just for a knife that nobody would ever use. The minigun was cut because my game was simply too short and not hard enough to warrant it's use. It would simply take too much time to properly balance the game for it not feel completely unbalanced.
To solve the issue of what the player would do if their ammo was out, I made the pistol have infinite ammo. This way the player always had some way to defend themselves. It felt like a much better solution than to make a melee-system that simply isn't very fun. But the machine gun obviously still uses ammo, that can be found in the levels and dropped by the enemies.
designing the castle
I didn't have time to make the maze-like levels that the original is famous for. My levels are pretty small, narrow and linear. But I do have secret rooms in the three first levels for the player to find. These levels aren't only there to give the player supplies to easier manage the enemies. I've also placed treasures in each level as a bonus to reward explorers.
I tried to make all the rooms have unique combat encounters and not just place some guys in rooms with no real thought. There was playtesting done so that the player couldn't alert a enemy in a totally different room. I mixed the enemies in later levels which forced the players to think strategically. When shooting a enemy you stagger them, which means that they can't shoot back. To prioritize the stronger enemies first, preventing them from attacking was the smartest way to stay alive in the third level where the SS-soldier is introduced.
I introduced the machine gun in the middle of the second level to make combat a bit more interesting. That weapon is very much needed in the third level to prevent the player from taking too much damage from the SS-soldiers.
Just like in the original Wolfenstein 3D I placed keys for the player to collect in each level. Without them the player can't open all the doors and finish the levels.
Scripting and sprites
As I've mentioned before, this was my first real scripting project I've made. I learned a lot through the making of this game, but some systems are a bit unconventional. The biggest example is how I made the locked doors. I used a int instead of a bool for the keys that would open the doors. When the player had a value of 1 key, they could open the locked doors. This was because I used the player-stat class for key values and it was much easier taking the code from there than to make a new system for just the doors. It worked just as well, even though it was a bit unconventional.
Using sprites for everything was both easier and harder than imagined. The things I though would be harder were easier, and the things I thought would be easier were harder. Making the sprites always face the player worked somewhat from the beginning, but they would face the player with their whole sprite. So when the player went close to a table, it would flip and look up on the player. That made the collision bug out and sometimes flip the player that was locked to not look up or down or be able to fall.
Getting the animations to work was very hard. This was the second time I had worked with any animations at all, and now I was doing it with spritesheets which was completely new. Getting each animation to work and play when I wanted to required many hours of work. The animations aren't completely fluent, such as the shooting animation and you can play the "death-animation" on enemies two times if you continue shooting them. But even still I am very proud of what I managed to do with them. The game felt very alive with the animations and sounds from the original Wolfenstein 3D
I am still amazed that I managed to do so much in only two weeks, with something that I was fairly new at, and it turned into something that I am proud of!
I made systems, animations, sounds and even four levels, and they all work similarly to how they work in the original game! Of course there is a lot more to be done for it to be completely like Wolfenstein 3D, such as bigger levels, all the weapons and a fully fledged Hitler-fight, but I am still more than happy with what I managed to make!