This member has provided no bio about themself...

RSS My Blogs

Unreal Development Kit Game Programming with UnrealScript Book Review

YamahaAlex37 Blog
Unreal Development Kit Game Programming with UnrealScript
By: Rachel Cordone

Review:

The first and most important thing you should consider when deciding if a book will be worth your time is determining the author's credibility. In this case, you will be very happy to note that Rachel Cordone's own indie studio (Stubborn Horse Studios) is the producer of the award winning Prometheus, a game commonly showcased when demonstrating UDK's capabilities. If you've seen or played a UDK tech demo, chances are it was Prometheus.

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:


uscript code:
If it's raining I'll take an umbrella.
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:


uscript code:
<em>function UpgradeWeapon() </em>
<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>
 

You'll be creating and expanding upon very powerful blocks of code in this manner to provide your game instructions.

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:

A common concern of entry-level game developers when choosing a game engine or programming language, is whether the skills they gain will be future-proof. In the case of game engines, developers should feel confident in choosing UDK with its extremely proven track record both in products created, and consistent monthly updates. As for UnrealScript, it is incredibly versatile and, for all practical purposes, offers the same depth of manipulation that modifying the engine's source code would, without the trouble.

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.