Archive for February, 2012
Our UDK project updating procedure
--------------------------------------------------------------
This is a basic look at the procedure we use to update our projects to newer UDK builds. I use the update for Rooks Keep I performed today as an example.
First of all, UDKs are installed in a folder named to obviously incidate the project, but also the name must show the UDK version.
The format looks like this: SuperFunGame-20XX-XX.
I install the January 2012 UDK for Rooks Keep to a folder named: RooksKeep-2012-01.
This folder sits next to previous project installs like: RooksKeep-2011-09 and so on.
I NEVER try to overwrite the old install!!!
Once the fresh install is done, I set up desktop shortcuts for: the x86 game exe, the x64 game exe and the editor. I set the “-log” switch on the game shortcuts so the log output window shows up while the game runs.
I then test out the shortcuts and make sure it all runs.
Now on to making it use our own project.
All conent for our projects is always contained in a folder structure seperate from the other UDK and example game content. In this case, the folder where all Rooks Keep’s content goes is ..\UDKGame\Content\RooksKeep.
To put content in the new install is very simple, I just copy the whole RooksKeep content folder. Done.
The localzation files are in a different folder and I have to copy the individual files. There are only three of them in RooksKeep for now. We never edit the stock UDK localization files.
Source code is also quite straight forward. We have three class packages and I just copy those folders across into the …\Development\Src\ folder. I make sure to NEVER edit any of the UDK’s packages and classes, so that whole headache is completely avoided here.
If you noticed that I didn’t copy the compiled .u script files, that was completely deliberate. The old binaries will just crash the new install, so I will have those compiled from source code instead.
Ok, that was all the easy stuff. Next I have to do the config files.
There are a few custom .ini files that are specific to RooksKeep. I just copy those into the new install and there is nothing to overwrite.
The main config files are called DefaultEngine.ini, DefaultGame.ini and DefaultInput.ini. With every new UDK update, something has usually been changed in these and I don’t want to erase those updates so I can’t simply overwrite the .ini files with the ones from teh older RooksKeep install. With these three, I load up both the old and the new of each one and compare them carefully and copy across all the stuff relevant to RooksKeep. I use the ‘Compare’ feature in Notepad++ which makes this whole task bloody quick and simple.
Another thing I do is edit the searchpaths in NP++ to search the sourcecode in the new folder. It sucks to edit code and then realize you were editng the old files…
I also edit a config file of NP++ itself to update the run command I have set up to compile the code. After that is done, I compile the code.
This time I was lucky and there were no compiler errors. Nothing in the UDK’s code had been changed that caused in compatabilties in the code. This could also have something to do with avoiding as many dependancies as possible and basing off the least derived classes I possibly can.
Usually, however, there are a few errors and the only way to deal with them is to manually address each one individually as one would normally handle compile errors.
Finally, testing time. I just run the game. The game always takes a long time to start up when running a newly updated project because it has to build all the shaders for all the materials in the project’s content.
When it had finished, it started with Rooks Keep’s front end map and menu and I tested out a map and it all seemed fine. That was a very simple update!
--------------------------------------------------------------
Rooks Keep Skill Icons
--------------------------------------------------------------
Hail all!
So I’ve just  finished up a bunch of skill icons for Rooks Keep. Gaze upon them in wonderment right here:
A few things I had to remember to do with the icons:
-They had to be descriptive of their skill function
-Each one had to be colored so as to be easily discernible from the others
So at a glance you can easily tell which icon is for what skill. I reckon I got it
--------------------------------------------------------------
Rooks Keep: Character Content Elements
--------------------------------------------------------------
Greetings minions!
Our blog’s been a little lazy here unfortunately, so I’ll strike it with an insightfully intriguing post on the Rooks Keeps character content pipeline. I won’t go into the specifics of actually creating the content, rather focussing on the work inside UnrealEd. This doesn’t include the rather large coding side of things either; it’s simply the content side of things. That’s somehting for another section entirely.
So, let’s start at the beginning then.
————————————–
Firstly, we design the character, followed by the concept art for it. DC does the concept art and modeling for the character, then the UV’s and then renders up all the required maps that I will need for texturing (Normal, Ambient-Occlusion, Cavity and Wireframe). Once texturing concludes, I’ll do the rig and create the required animations, sounds and anything else specific to the character (such as masks).
Once all the work outside of UE is finshed, it’s time to get it all ready for the game. And that’s the stuff I’ll list and explain here.
———————-
-Meshes:
The characters are made up of several meshes, and also require other objects for various gore and FX related purposes.
- Character [The actual character mesh/rig]
- Weapons [The weapon(s) and other attachments that the character holds in their hands]
- Head [This is a character specific head gib used for gore]
- Gibs [These are a global set of gibs used for all characters. These include both flesh and metal pieces]
-Textures: [Often a character has more than one material slot]
The character requires a fair number of textures, which includes the usual Diffuse/Specular/Normal set and extras such as masks and emissive maps. The textures (primarily the masks) will often have various color channels dedicated to specific material functions, which will be listed here as “RGBA=”.
- Diffuse [This is the characters primary color map and sets the overall look of the character] [A=OpacityMask]
- Specular [This sets the 'shininess' of the character texture]
- Normal [The normal map appears to add extra detail to the mesh, by performing some voodoo magic]
- Emissive [This map indicates areas of the texture that are unaffected by lighting, and is often used to make areas glow]
- MaterialMask [We use this texture to set various properties on the characters material, such as reflection intensity, specular power and others] [R=Reflection G=SpecularPower B=Fresnel A=DetailNormal]
- Color Mask [This mask indicates which areas of the character can be colored by the in-game color chooser. It also sets where blood appears] [R=PrimaryColor G=SecondaryColor B=WeaponBlood A=SprayBlood]
- Gore Mask [The gore mask indicates specific areas used by the gore system] [R=Decapitation G=FootBlood B=InjuryBlood]
- Footsteps [These are bloody footstep textures used as decals when a character walks through a blood pool]
- Head Gibs [The textures used by the head gib meshes]
- Gibs [Gib textures]
- Decals [Blood decals used for various gore requirements, such as spatters, explosions, pools and drips]
- Particles [These are the textures used by the various particle systems, including gore and weapon effects]
-Animations:
- Walk
- Run
- Charge [A walking sequence used when a piece is in combat with another]
- Idle
- Idle one-shots [Idle sequences to break up the otherwise looping idle animation]
- Blocking
- Quick Attacks
- Slow Attacks
- Parry: Left / Right / Up / Down [Each piece requires a parry sequence in each basic direction]
- Quick Attacks Parried [These sequences are used when the attack of the character is parried by the enemy]
- Slow Attacks Parried [These sequences are used when the attack of the character is parried by the enemy]
- Death: Stab / Slash / Decapitated / Fried
- Pain
- Dodge
-Sounds:
- Pain[Beasts]
- Effort[Beasts] [Used when the character attacks and performs some other movements]
- Die[Beasts]
- Impacts [These are sounds of weapons successfully hitting characters. They come in both flesh and metal variants]
- Footsteps [These include various foot types on various surface types]
- Swing Weapon [Played when weapons are swung]
- Attacks [Character attack sounds. Right now, these are used by the Bishops of both sides]
- Parry Attack [The sound played by the attackers weapon when it is parried]
- Enemy Parry [Played by the victims weapon when it successfully parries an attack]
- Weapons on ground [Played by weapons left by dead players as they are moved around]
- Corpse Impacts [Sounds of dead bodies been moved around by other players]
- Blood Splats [When blood hits a surface]
- Decapitation [The joyous sound of a head leaving it's owner]
- Gibs [Gib impacts with surfaces]
- Heads [Decapitated head impacts with surfaces]
- Explosion [When a character explodes]
-FX:
-Particles
- Gore Slash
- Gore Stab
- Gore Smash
- Gore Decap
- Gore Explode
- Gib Trails [Blood particles flicking off flying bits]
- Weapon Impacts [Played when weapons parry]
- Weapon Drips [Blood drips from bloody weapons]
- Weapon Trails [Trails left by weapons swinging through the air]
- Attacks [Effects used by certain attacks, such as the Bishop fire and lighting]
-Decals
- Blood Pools
- Blood Splats
- Blood Footsteps
- Gib Impacts
- Blood Explosion
-Other/Miscellaneous: These are some of the other, equally important, elements that need to be added:
Material
The primary material/shader of all characters. This blends all the character textures and masks into the final shader that is applied to the meshes.
Material Instances
These are instances of the main character material that simply change variables from it’s parent.
AnimTree
The ‘AnimTree’ handles most animation functionallity, animation blending, and is used for other features such as: Shrinking head bones for decapitation and Foot placement IK.
Physics Asset
The Physics asset is used for Ragdoll physics and other physics based calculations and collisions.
Mesh LOD’s
The main character mesh also requires 3 extra LOD’s to improve performance when required. These can, fortunately, be generated inside UE.
Sockets
Sockets are locations placed on meshes that are referenced by code.
- Neck [Spawns a head stump mesh when decapitated]
- HeadGore [Gore particle spray upon decapitation]
- Three Weapon Edges [These are used by weapon FX trails, referenced by animation notifies]
- Weapon Sockets [Held weapons]
Notifies
Notifies set events during animation sequences, such as when to play trails left by weapons as they swing and when to play footstep sounds.
Cloth
Physics calculated cloth objects, such as the cloaks on the King and Queen of the ‘Knights’ faction.
Physics Material
Physics materials set various properties on meshes and physics objects.
SoundCues
Sounds Cues are used to blend together various sounds, tweak volumes, attenuation and other audio properties. Almost all sounds played are SoundCues.
Map Based Environment/Reflection-maps
We’ve added support to character materials, that allows them to search for map-specific reflection maps.
———————————————–
Whew! And that’s that for now! As you can see, a lot of work goes into each character piece, and this doesn’t include the actual content creation and coding for them.
I trust you found this insightful, useful or an otherwise educational experience. If, on the other hand, you were bored stiff and angry by the end of it.. Hahaha! Sucker!
--------------------------------------------------------------