Learning C#: Rocket Lander progress
Alright, the C# course is coming along nicely. All base mechanics for rocket lander are in, including debugs and cheats to assist development. All I need to do now is to make some good levels. I have stuck to these test-levels because I wanted to focus on coding and game mechanics. But since the game mechanics are more or less complete - it's time to put this on the shelf and proceed with the next project which is a StarFox-type rail shooter. I'll update the blog when I have made some for this game.
Learning C#: Rocket Lander
I'm continuing with the C# course and this time it's a moon lander type game. Things are developing nicely with PL controls, collision detection, win/lose conditions, level progression/loading, state machines etc. Code-wise I must say that things are really starting to click, and the feeling when you are deviating from the course to write your own code and systems, and seeing it actually work as intended is a very satisfying feeling. I now see why some of my friends stay up all night coding - the feeling when thing work as intended is very rewarding.
I completed the Terminal Hacker game. It was a very big learning experience, and my knowledge in Blueprints really helped me out when it came to variables, arrays, "custom actions" etc. Gonna keep going with the next project in the course! Here's the simple game in action:
Learning C#: Terminal Hacker
The C# course is coming along nicely. Now it's time to make a Terminal Hacker game.
The game has a menu system that PL can navigate
PL gets to choose a list of a targets with increasing difficulty
PL then gets to guess different passwords, and gets presented with hints that are scrambled versions of of the correct password.
PL wins if they guess the right password. PL loses if they fail to guess he password too many times.
Some more Blueprints
Thought I'd keep doing some blueprints, and I heard that GameDev got a new course out, so I got it. First little project is a little physics based game where the PL controls a board with a maze using the mouse, and try to get a marble into the goal as quickly as possible. A simple little game.
Learning C#: Hello World
At MachineGames it’s a tradition to include at least one Easter egg or reference to Wolfenstein 3D in our own Wolfenstein Games. In Wolfenstein: The New Order (2014) there is an Easter egg where Blazkowicz goes to sleep, only to have a nightmare where he is in the first level of Wolfenstein 3D. A fun little Easter egg that was appreciated by the community.
In our next game, Wolfenstein: The Old Blood we expanded on the easter egg so instead of having just one level of Wolfenstein 3D, we added the whole first episode of Wolfenstein 3D spread out throughout the single player campaign, ending with the killing of Hans Grosse. The biggest change from the original Wolfenstein was that the pickups and the weapons were in 3D, and the the vista that B.J runs into after defeating Hans Grosse got fleshed out a bit.
A Game Within a Game
When we made Wolfenstein 2, the question was how we would handle Wolfenstein 3D this time around. We ultimately settled on not having it be a hidden easter egg at all, but rather we’d include the entire game and remake it to fit the setting of Wolfenstein 2, and put it right in front of the player, in an arcade cabinet located in the living room of Eva’s Hammer – the Nazi submarine hijacked by the resistance.
In the alternate history of Wolfenstein 2 the Nazis won the war and enslaved the world, so their Wolfenstein 3D version would be the complete opposite of the Wolfenstein 3D version we all know and love. Instead of playing as B.J Blazkowicz killing Hitler and the Nazi leadership you would play as "Elite Hans" killing B.J Blazkowicz and the Kreisau leadership.
Who is Elite Hans?
Elite Hans is the GI-Joe of the Nazi Regime, a made up character made to glorify the military and recruit young kids into the various wars of the empire. We originally referred to him as SS-Hans, but for legal purposes mainly concerning the laws of Germany and Austria we settled with "Elite Hans".
Our marketing department made amazing in-universe mock commercials starring Elite Hans to advertise both the release of the game, and the collector’s edition of Wolfenstein 2, which is made entirely in-character as a real Elite Hans toy.
The making of Wolfstone 3D
The time came to make the game itself. It was a technical, logistical and artistic challenge. There were mainly 4 people involved in this. Myself (Aydin Afzoud), a Olle Rosenquist (Senior Programmer), Christian Grawert (Senior Level Designer) and Karl Johan Dimming (Sound Designer) with additional support.
The plan was originally to outsource the pixel art to an experienced pixel-artist and have them convert and redesign all nazi-related Wolfenstein pixel art into the the anti-nazi pixel art we were looking for. But the candidate I had in mind was unfortunately busy at the time, so I had to take it upon myself to redraw everything that needed redrawing.
I'm a game designer and not an artist at MachineGames, my regular job tasks include designing weapons, enemies, and systems for the "real" game, which means that if I was to make all the art for Wolfstone 3D I had to do it on the side. So to gauge how long would take to tackle this task I started out with converting Mecha-Hitler to Mecha-B.J, as I figured that if I could pull that off it would mean that I'd be able to redo the other enemies too.
That went pretty well, so I started redoing the all the enemies. They were actually harder since they have a lot lot more sprites compared to the bosses, but luckily most of them only needed new uniforms. However it wasn’t just a quick fix in Photoshop, I had to stick to the WOLF3D palette, no other colors were possible.
Then it came time to redo the all nazi wall-art. It consisted of redrawing swastikas and other nazi symbols and convert them to the symboks of Kreisau and the antifascist resistance. And of course replacing Hitler with Blazkowicz. Here's a little sample of sprites that got edited or redrawn completely.
The programmer responsible for the technical implementation is Senior Programmer Olle Rosenquist. He re-wrote the entire code for Wolfenstein 3D - everything is remade again from the ground up, it runs its own thread and updates a single texture on the arcade cabinet. It even replicates the proper IBM Mode 13h. The game supports loading, saving, and everything that the original Wolf3D had, contrary to popular belief it is not an an emulation.
Personally I find it very impressive how he got Wolf3D to function within the game and draw it on a single texture. Regarding the development of Wolfstone 3D Olle says:
“[It was] Interesting to go back and see how they made everything work with the resources they had at the time, especially some of the self-modifying rendering code. Was less fun to make it comply with the modern world of localization and console technical requirements, different profiles/ save-slots and now there's 2 games to bug test since it's a real proper game running (not an emulator) within the 'real' one.”
Unfortunately for us, Nazi-symbols were also baked in to entire levels, meaning a a lot of levels had to be redesigned. This was made by Senior Level Designer Christian Grawert.
We had things ranging from small swastikas here and there to huge swastika based levels
(The left version is original Wolfenstein 3D, the right version is Wolfstone 3D)
Basically all voice audio had to be re-recorded to fit the theme of the game We opted to emulate the notoriously bad/funny voice acting in the original Wolfenstein 3D, as well as the audio quality of the time. The person responsible for the recording, mixing and implementation was Sound Designer Karl-Johan Dimming and he did a great job in making it replicate the original sound quality.
Here are some examples of replaced lines. The voice actors are me and our HR Administrator Nicole Åkerlid:
When it comes to Music, Mattias Wennlund removed the Nazi-music and even added some new unused music that was lurking in the original files. The music is made by the great Robert Prince.
Back in 1992, Apogee, the publishers of Wolfenstein 3D were going to run a competition. They had hidden a message deep inside a very hard and sadistic maze that said “CALL APOGEE, SAY AARDWOLF”. The idea was that the first person to call the publisher and say it would win the grand Prize. The problem was that as soon as the game was released, people just unpacked all the files, found the message and called en masse to Apogee saying AARDWOLF! So they cancelled the competition and patched out the message. Joe Siegler have a very good blog post regarding the whole AARDWOLF debacle. Apparently people kept calling in 20 years later yelling "AARDOWLF! AARDWOLF", believing they were the first to find the message.
When we made Wolfstone 3D we thought: "Let’s finally run the AARDWOLF competition, 25 years later! The AARDWOLF shall have its justice!" So we did - a special sprite hidden inside a maze, inside a game inside another game.
Our version said Tweet @Wolfenstein say “Aardwolf”. And the first three persons did it received Wolfenstein II: Collector’s Edition for free!
And just like in 1992 people are still finding the easter egg and tweeting it. I also added a coded message in the sprite b̶u̶t̶ ̶n̶o̶b̶o̶d̶y̶ ̶h̶a̶v̶e̶ ̶s̶o̶l̶v̶e̶d̶ ̶i̶t̶ ̶y̶e̶t̶.̶ ̶S̶o̶ ̶t̶h̶e̶ ̶E̶a̶s̶t̶e̶r̶ ̶e̶g̶g̶ ̶s̶t̶i̶l̶l̶ ̶h̶o̶l̶d̶ ̶s̶o̶m̶e̶ ̶s̶e̶c̶r̶e̶t̶s̶!̶ 2022 EDIT: 5 years later SHODANFreeman cracked the code, and solved the easter egg fully. It says THESLIPGATEISOPENINGPREPAREFORHELLONEARTH. And since then, the slipgate opened and a new official Quake episode was released and DOOM Eternal was set on earth, so it all came true.
Summary & Acknowledgements
This is a very abbreviated insight in how Wolfstone 3D was made. There was a lot more work involved: Narrative Designer Tommy Tordsson Björk wrote the end-art, Mattias Wennlund implemented all the SFX, and the heroic QA department at Bethesda bug-tested it thoroughly.
Making Wolfstone 3D was fun and challenging, and it’s nice to see that old hardcore Wolfenstein 3D fans went back and replayed the "opposite version" and explored the new levels. It was likewise fun to introduce Wolfenstein 3D (albeit an altered version) to a whole new generation of FPS fans that had never played the grandfather of first person shooters.
And since you’ve read this far I’ll let you in on a secret: If you press Right Trigger + Left Trigger + Right Bumper + Left Bumper + Right Stick + Left Stick all at once you’ll get full ammo, all weapons, all keys and full health. Might be useful when tackling Wolfstone and gunning your way to Mecha Blazkowicz!
Pixel Art Effect: Molotov Cocktail Impact
This was a hard one! Molotov cocktail impacts have so much going on. The initial flame from the ignited gas, the combustion of the main propellant and the spreading lingering fire.
Pixel art fire effects
I've been poking around with 2D effects a bit more, so here are some different looping fire effects!
And here is a version with a little less intensity
I've always preferred grenade effects that don't overdo explosion part, but rather focuses on the smoke/dust so I made one! EDG32 palette
I tried fixing the last 2 frames and the irregular GIF loop, but it seems Photoshop can only export gifs at max 50 FPS, even though I set the max to 60. Oh well, here is the fixed version albeit too slow.
Pixel Art Effect: Fire
Pixel Art Effect: Burning Tire
I've continued to poke around with effects, this time it's 2D pixel art! I used the Wolf3D palette for this one
Pac-Man progress part 5, working AI
Implemented a simple AI that wanders around the maze, killing the player on overlap.
Not as advanced as the original Pac-Man AIs but I'm not making a replica of that game, just learning Unreal 4.
Pac-Man progress part 4
Effects look like crap, but that's because they are butchered versions of the Infinity Blade effects. When I've learned Cascade I'll replace them with something better. First functionality then polish!
Pacman progress, part 3
Continuing the course, and thus continuing the Pac-Man project.
I want to try to build a simple carnival-game in Unreal, and I settled for a skeeball-style game. And after some time on forums and youtube I finally got the pick up and throw mechanic to work.
Pac-Man part 2
We have a full level, materials, enemies, audio, pellets, power-pellets and lots of component blueprints.
Time to implement some game logic.
Pac-Man project in Unreal Engine 4
I keep going at it with blueprints and UE4... To get more skills and become even more familiar with UE I've enrolled in a course, the point of which is to work with different aspects of Unreal 4 and to create a simple arcade game. So that's my goal now: Pac-Man from scratch. Complete with AIs, HUD, Top Scores, Load/Save games, effects etc.... I'l chronicle how it goes. The playing field is starting to take shape
The blog of Aydin Afzoud, Senior Game Designer at MachineGames.