My first love affair with an FPS game was in 1995. I was an intern at a local radio station and someone had installed the shareware version of DOOM on the CD database computer. A fast, sprawling ballet of violence unfolded before my eyes. This was what a computer game was supposed to be like! Running around 3D dungeons, guns blazing, blood splattering, and demons growling and scaring the bejeezus out of me before they were being blown to bits. We didn't get a whole lot of work done that summer. And my fate was sealed; I was going to be a game developer.
It took me a good 4 years of modding, scripting, and 3D modeling to land a job at a small startup game studio. Thrilled, I found myself working on a real multiplayer FPS game as a part of a team of 15 people. Coming from a hobbyist, do-it-all-by-yourself mindset, I remember my jaw hitting the floor as the project manager told me some numbers over lunch. He estimated that for one single person to create the whole game, it would take 65 years. 65 years!
In the following months, Moore's law and a relentless push for realism saw budgets and team sizes skyrocket. Soon it wasn't uncommon for an FPS project to have a head count in the hundreds. The would-be-indie developer inside me mourned these figures as I pondered my secret indie ambitions and sensed those already impossible 65 years stretching into 650.
Of course, back then, everybody was building their own game engine from scratch. Game programming books would explain in great detail how to construct your code from the bare metal up, going into hardware specifics, the basics of rasterizing polygons, brutal 3D math, and communicating with different brands of audio cards. You could license a game engine, but it would set you back hundreds of thousands of dollars. Besides, game coders loved to do everything from scratch back then (and as a result rarely got around to finishing their games).
Then, something happened. During the early 2000s, affordable and free engines such as Torque, Auran Jet, Crystal Space, and Ogre started popping up. Around the same time, the idea of "gap games" revitalized the indie movement. They were of real high quality, but were limited in scope; not your multimillion dollar production, but no scrawny "bedroom programmer" games either. They were fantastic looking games that could realistically be created by a small team with a good off-the-shelf engine in a reasonable amount of time. The dream was revived.
The Unity engine was first built for the Mac game GooBall. As the story goes, the team realized that, in the end, their game didn't show as much promise as their game engine, and Unity3d was announced at the 2005 Apple Worldwide Developers Conference. Initially, what Unity had going for it was the ability to run high-definition 3D games on a web browser. When the iOS and Android support was added, it became the engine of choice for mobile game development, and everything just exploded. Today, Unity3d is a free, extremely popular, powerful, and multiplatform AAA game engine. It has triggered an incredible surge in indie game development and spawned untold indie game successes. The addition of the Unity Asset Store allows thousands of pros and hobbyists to share and trade high-quality scripting, art, sound, design, and services.
UFPS started out as my side project dubbed by Ultimate FPS Camera. I released it as a small script pack in the Asset Store just to see what would happen. The response was overwhelming. Three years later, the system has grown into a full blown FPS solution. My team has assisted many hundreds of indies in pursuing their game ideas. We've seen many awesome and original games take shape; some released to critical acclaim. I've also had the privilege of working with the authors of several amazing Unity assets, including Gabriel and Karl, the developers of ProBuilder, two incredibly dedicated and talented guys who have put innumerable hours of hard work into their tool suite (so you won't have to). It's with a sense of joy and excitement that I learned of this book being written and featuring ProBuilder along with UFPS.
In this book, John has summarized not only how to take advantage of the awesome power of Unity and Asset Store. In a casual and direct way, he explains how to arrive at a small, complete FPS in the shortest amount of steps possible. He doesn't go into the nitty gritty details of programming camera systems, level editors, or a combat AI from scratch. Instead, he helps you free up time for the core activities that make your game fun with creative game- and level-design. If you're prototyping a game or just starting out as a game developer, the power available to you through this book, Unity, and its Asset Store would have been unthinkable just a few years ago.
Good luck with your dream game!
Creator of UFPS