— Shoin Wolfe (@shoinwolfe) August 21, 2016
As I mentioned in my last post, I’m currently focused on making 3D content.
So in order to get rapidly good, I decided to publicly challenge myself to make and ship a game in 30 days. Sure, there’s less stressful ways of getting better at something. I did take a few tutorials on unity3d.com to understand the basics, and I could continue to take them all, as well as enroll in a few online classes. But that’s not an efficient way of learning.
The best way to learn, in the 21st century, is to start making things right off the bat, and Googling anything you don’t know on the way. The great thing about the Internet is that somebody else has already encountered the problem you are having, and have written the answers for you.
So, despite it being the 3rd month since I first downloaded Unity (the 3D game engine) and having never made a game before, I decided to make the Donald Trump Simulator. It’s a game where Trump chases you while you throw ‘Facts’ at him. That was about all I had prepared before starting this project. Planning more than this would be inefficient, because I don’t have any clue about what is easy and what is hard in making a game.
Also, I’m a huge believer of ontological design:
…we design, that is to say, we deliberate, plan and scheme in ways which prefigure our actions and makings — in turn we are designed by our designing and by that which we have designed; – Anne-MarieWillis
Ontological design, in practice, simply means that, as I make this game, what I learn to be possible (or impossible) to do will mold the game’s ultimate direction. It’s important to embrace the limitations you face, because while you’re still a novice as something, nothing will go exactly as you planned. Some people even say constraints are what makes us more creative.
So here was my process of creating the Donald Trump Simulator in 30 days:
The first thing I did was to set up the mesh environment (map). A really creepy one. One problem though. I knew the environment of a game takes a huge amount of time to create. If I started from scratch the entire month could be spent just making the world. I only have 30 days to finish the game, though.
Luckily, Unity provides a marketplace called the Unity Asset Store where you can find 3D objects, maps, sounds, code, or just about anything you need to create a game. If you don’t have a big developer team to make everything you need from scratch, it’s the perfect store to get what you need.
After searching around, I found a free environment that could serve as a good foundation for my horror game. Best of all, it was free!
As you can see from the picture, the downloaded environment was inherently creepy. But I wanted to make it even creepier, and get rid of the cowboy-ish vibe. So I took away the mountains, dimmed the environment lights, changed the skybox (sky material) to a darker pattern and also added thick fog to the whole scene.
Fog + minimal lighting = creepy.
Literally any object that comes out of the fog towards the camera will terrify the player.
First Person Camera
Next, I added a first-person camera and a camera controller (so I can move the camera/player). Unity is actually nice enough to provide a standard first person camera rig, where the keyboard controls of (WASD & arrow keys) are already assigned to moving the camera. You just go to Assets -> Import Package -> Characters. Once imported, you just drag the First Person Character into the scene and it just works.
— Shoin Wolfe (@shoinwolfe) August 21, 2016
AI was easy. Especially since all I needed was the enemy (Trump) to chase the player. So far, Unity has made everything that I thought would be hard into a piece of cake. 🍰
The enemy AI simply needs to chase me while navigating around buildings and walls. That means all I need to add is a Nav Mesh Agent to the enemy object.
Then add a script to tell the enemy object to chase the player object.
After that I bake(render) the nav mesh, so that the nav mesh agent understands the map its being placed on. (This screenshot is from after the game was complete.)
There’s a great tutorial on nav mesh agents here.
Initially, I thought making Trump would be the hardest task for this project. I’ve never created complex a 3D object before.
Again, I didn’t want to spend two weeks on this. I tried to think of the simplest way to get the best result. I considered ordering an actual halloween Donald Trump mask, 3D scanning it with the Autodesk 123D app, then sticking it onto a body asset I’d find on the Unity asset store. But that wouldn’t be a solution for future projects.
I found a web app that let’s you upload 2D images and make 3D models out of them. The result was subpar and a bit too loony. It also wouldn’t let me configure the hair, which is a huge problem if I’m trying to create Trump’s beautiful hair.
Then I found Adobe Fuse. Fuse is the photoshop of 3D character building, with customizable body parts and clothing. Best of all, it’s (currently) free. It’s like the in-depth version of the character customization you find in games like Skyrim or Tony Hawk Underground.
Here was my first rendition of Trump:
It was awful. It looked nothing like Trump. At best, it looks like Trump’s imaginary uncle that was a former bully in high school. The hair was also nothing like Trump’s. But there’s only so much you can do with with a pre-made selection of body parts.
But then I discovered a tool on Fuse, which let me directly alter the meshes (shapes) by dragging them! Now we’re talking.
Things were looking up. Trump was a bit frog-faced, but with enough time, it looked like I could make a good replica of him.
Everything was looking good.
Until I hit Ctrl+Z
*25 minutes of denial and searching for fixes on forums*
The Ctrl+Z function was bugged! If you mess with the mesh directly, it couldn’t correctly undo your actions. Now I knew why Adobe released Fuse for free.
With the face ruined and no way to undo it, I had to remake Trump. But he ended up looking a lot better:
I gave him manga-hair too! I never used this guy, though. Too subtle of a change for anyone to notice, in-game.
I was satisfied with how Trump was looking. It was time to start animating him and bring him to life.😈
But Before we get into animation
Before we get into how I animated Trump, it’s important to mention that making custom 3D animations is hard. Really hard. I see many of my favorite indie developers make games that don’t have a single character in it, because of how hard animations are. Think of all of the muscle, joint, and rotation movements that go into something as simple as walking. That’s why 3D animators can make up to even six figures in salary these days.
Making this game made it clear why it’s usually impossible for a single person to make a high quality game built from scratch and compete with big companies.
We, as a global culture, are obsessed with startups, because the story of a few people getting together to compete against multi-million dollar companies is nothing short of extraordinary, and yet this disruption story is happening all around us. Kodak, with 17000 employees, filed for bankruptcy the same year Instagram was bought for 1 billon USD with 16 employees.
But disruption in gaming is a different story. The more people you have doing architecture, character, animation, props modeling, UV mapping, material design, particles and code, you’ll end up with a much more beautiful and robust game. A Grand Theft Auto 5 (GTA5) game built by 1000 people will certainly be better than a GTA5 game attempted to be built by one person in the same time frame.
But I don’t think that’ll be true for long.
With everyday that passes, it’s getting easier for solo-creators like me to build beautiful and robust games, thanks to free assets, new tools, and ease of contracting work. Even three years ago, making this Donald Trump game would’ve been impossible, since Adobe Fuse, the free environment I used, and the web application for animation I’m going to show you in the next post, didn’t exist. And that’s the important part.
With the newest tools, hacks, and an inventive perspective, we have the ability to make our imaginations into reality, all on our own.
That’s what I hope to convey to you in these posts on how I made the Donald Trump Simulator in 30 days.
That’s what I hope to convey in almost all of my blog posts.
In part 2, I’m going to tell you how ridiculously easy the animation process was. (Post coming soon)
I'm on Twitter @shoinwolfe if you ever want to talk.