By: Rachel Cordone
Review:
Immediately after investigating the table of contents, I had a feeling this book would suit me, for the following reason: I have trouble learning when material is presented to me in puzzle pieces, but a picture of the end result fails to be displayed. In the first chapter of this book alone: the UDK composition and structure is comprehensively explained, your integrated development environment (IDE) is installed and configured, and your first game is compiled and tested. Now that's giving me the whole picture! After reading chapter one, I was eager to manipulate this game into my own.
The next portion of this book does exactly what any good programming book should do: explain the fundamentals of programming, and in this case, object-oriented programming (OOP). One common misconception beginner programmers often make, is that there is only one "correct" choice when choosing a language. The reality is that all OOP languages (C, C++, C#, Python, etc) behave the same, and by learning one and becoming proficient in it, you will most certainly be able to easily interpret the rest. Fortunately UnrealScript, being an OOP itself, behaves no differently than other OOP languages. After reading the next two chapters filled with programming fundamentals like variables, data types (strings, integer, arrays, etc), operators, classes, functions, actors and more, I can honestly say that any first time programmer will be well suited and ready to adapt to any language, be it C++ or any other.
Let's take a brief look at an excerpt from this part of the book, to give you an idea of the simple level of understanding this book demonstrates:
Using an if statement, that sentence would be written like this:
<em>if(bRaining) </em>
<em>{ </em>
<em>bUmbrella = true; </em>
<em>} </em>
We could also add an else statement to it:
If it's raining I'll take an umbrella, otherwise I'll wear short sleeves.
That would be written like this:
<em>if(bRaining) </em>
<em>{ </em>
<em>bUmbrella = true; </em>
<em>}</em>
<em>else </em>
<em>{ </em>
<em>bShortSleeves = true; </em>
...this book actually contains a better entry-point and overview of object-oriented programming than any how-to programming book...
-Alex Crawford
So now that your comfortable with programming terminology and UnrealScript's syntax, the next few portions of the book have you getting down and dirty with the code. You'll experiment with inheritance by creating your own custom weapon, use function overrides to modify the player's camera, and use typecasting to apply an invisibility modifier to your player. Once your had plenty of practice manipulating the code, the next portion of the book has you creating your own classes from scratch. Some highlights taught while creating classes are collision detection, even more camera modification, and implementing a HUD!
The book doesn't slow down there; next your hit with functions. Functions are extremely powerful blocks of code that preform tasks. Let's take another look at a piece of code from the book:
<em>{ </em>
<em>if(CurrentWeaponLevel < MAX_LEVEL) </em>
<em>CurrentWeaponLevel++; </em>
<em>FireInterval[0] = FireRates[CurrentWeaponLevel - 1]; </em>
<em>if(IsInState('WeaponFiring')) </em>
<em>{ </em>
<em>ClearTimer(nameof(RefireCheckTimer)); </em>
<em>TimeWeaponFiring(CurrentFireMode); </em>
<em>} </em>
<em>AddAmmo(MaxAmmoCount);</em>
Just as soon as you think you've learned enough to expand upon and create your own game, you realize your only half way through the book. The book then ventures into programming what is often thought to be (and can be) overly-complicated artificial intelligence (AI). After that, you get a (very) short break from programming, and learn about UDK's very powerful Kismet editor. Kismet can be used to provide powerful action and event procedures visually through UDK's intuitive editor. Right after you learn to use Kismet's editor, your back to programming and creating your own Kismet actions that can be used by your non-programming companions (told you it was a short break)!
Next, and very fortunately covered in this book, is what is often thought to be the most exciting feature in any game: multiplayer. The book teaches you all about the server-client relationship and setting up and connecting to a server. This chapter of the book is actually extremely extensive, and provides more knowledge about UDK multiplayer than you will ever likely accumulate by any other means.
Summary:
Rachel Cordone never fails to provide a satisfactory entry-level explanation for everything, as well as in depth coverage for advanced usage. Overall, this book actually contains a better entry-point and overview of object-oriented programming than any how-to programming books I've read!
I confidently believe that anyone who studies this book will not only gain a firm knowledge of programming that can be carried into various languages, but also be able to put forth a quality production using Unreal Development Kit.