Game Development Community

dev|Pro Game Development Curriculum

Game Development 101: Tools

by Ron Kapaun · 03/24/2014 (1:08 pm) · 25 comments

GAME DEVELOPMENT 101: Blog 2, Tools:

Hey all, I wanted to take this time to expand on a few ideas that I have brought up recently in blogs and forum posts recently. The ideas all concern TOOLS and what they mean to us game developers. So, without further ado, lets start.

MY TOOLS:

I wanted to start out with some basic concepts and ideas concerning the tools I chose to use. Let's face it, there is no 'make my game button' (this is UNIVERSAL for all game engines). So, that means I have to use tools to bring my ideas from my head into a format that allows other people to experience what I am thinking.

Here is a short list of the tools I use.

1. Torque 3D (The game engine)
a. The game engine combines all of the game play elements and allows me to 'present' my ideas within a 'common' format.

2. 3D Studio Max
a. I use this program (TOOL) as my primary modeling software. I build all the objects, characters, weapons and enemies in this tool. These are created and exported to Torque 3D.

3. Blender
a. Blender is a program VERY much like 3D Studio Max. Again, I use this for characters, objects, etc. There are somethings that Blender is better at than 3D Max (IMO). In those cases I use this FREE program rather than MAX (which is NOT cheap by any means.)

4. The GIMP
a. The GIMP is an image processing program. I use this in order to make textures and in some cases, visual effects. The commercial equivalent would probably be Photoshop. (Again, not free and does not cover all aspects of texture creation.)

5. SCULPTRIS
a. I use this for a number of things.
1. I use this program (TOOL) to refine my art assets (add detail etc.)
2. I often use this (TOOL) to 'paint' on my geometry from Blender or MAX

6. TextPad/Torque Dev:
a. I use these programs (TOOLS) to work on scripts. Scripts DRIVE my game play (usually) The commercial equivalent would be Torsion.

7. Visual Studio C++
a. THE HEART and SOUL of my (TOOLS). With Visual Studio, I can manipulate the CORE engine functions for my game. If I need to remove a tool (and free up resources) I do it here. If I need to create a new 'core' class of object, I do it here. This is basically, bread and butter when it comes to game dev (in my pipeline).

8. VARIOUS TOOLS:
a. Meshlab (mesh complexity reduction)
b. Crazy Bump (Normal mapping, Parallax mapping, Specular mapping etc)
c. Bryce 7 (generic modeling (terrain etc)
d. WorldBuilder (terrains and terrain texture mapping)
e. tree[d] (branches for my environment models)
f. SketchUp (quick 'temp' models and space fillers)
g. GoldWave (sound FX and Music editing)
h. AcidPro (music production... along with my midi keyboards and other music software)
i. L3TD (yet another terrain tool)
j. Terragen (skyboxes and to a limited extent, terrains)
k. xNormal (Normal mapping and other maps)
l. Poser 4/5 (reference images and BVH animations)
j. FRAPS (Video/Screenshot capture)
k. Vegas Movie Studio (Video/cutscene editing)
l. RenderMonkey: (Shader production/along side Visual Studio)
m. Nvidia FX Composer (I run Nvidia so it's nice to make sure shaders work with those cards)
n. FileZilla (I have to be able to upload to the web)

SO WTF DOES THIS ALL MEAN TO ME?

My point with this BLOG is simple:

It takes a HUGE amount of programs and knowledge to produce digital content. (Heck, I think I count around 24 tools that I have to have MORE than a passing relationship with!) Most of you know, I have NOT produced a full game but, I have produced a number of fairly popular demo levels etc. These have been well received by this and many other communities.

It takes me a HUGE amount of time to create even a single level. My Conifer Forest Pack demo level took nearly 3 months from concept/idea to published work. Keep in mind this was just ART that you could walk around in. There is no 'game' associated with these demos. There is no AI or other 'game play' aspects. I still took nearly 3 months to complete it. Even something simple: say my Office Furniture Starter Pack, for example. That took nearly 2 months from concept to a simple video where I blew stuff up and the objects behaved 'sort of' as expected.

OK, WE GET THAT. HOW DOES THAT RELATE TO THIS BLOG?

Ahhh, now we get to the guts of all of this. You can tell by my list, I don't just use T3D. T3D is my choice for presentation. I can't really model in T3D, I can't Texture those models, much less animate or 'destroy' an object. I can't really code or script using T3D. I develop levels and games using a VAST number of programs and systems and FORCE them to work within T3D. T3D provides me with a set of 'rules' to make things happen. Sometimes, often times, forcing all the assets and playing by the rules to work in T3D can be terrible. Sometimes, again OFTEN times, it can be rewarding and quite fun. I often feel 'super SMART' when I figure out a problem or come up with (what I think) a unique solution to a problem. Sometimes, I feel 'STUPID as a BRICK' for NOT finding a solution sooner or I find something that should have been 'obvious'.

Feeling 'stupid' and feeling 'hyper-smart'.... THAT is game development! You need to feel both. You need to get use to working in a TON of different TOOLS. NOT just a game engine but, an entire suite of programs and systems. There is NO way any one 'engine' will allow you to do ALL of things we need to do in order to make a game. It's just not possible. However, because I am a developer, I AM able to identify what needs to happen and build a system (using a number of NON-related programs) to make whatever I need to happen within my choice of presentation TOOL (in this case T3D). THIS IS GAME DEVELOPMENT at it's CORE.

Regardless of your choice of 'game engine' or set of tools, your single goal is to make happen what you need to make happen in order to present your thoughts and ideas to the masses.


WOW I POSTED AND FORGOT MY BEST TOOL!

Yep, I forgot this: My Own BRAIN

This is really easy to forget, YOUR imagination, your research, your ability to identify and solve problems is probably your BEST tool concerning game development. EVERY TOOL I have listed has one thing in common;

I LEARNED THEM BECAUSE I HAD A PROBLEM TO SOLVE. Sometimes, they may not be the right answer, often they are the best solution. Either way, my thoughts and ideas DRIVE my game and my development path. In the end, I have to make things happen. Often that means thinking, planning, testing and re-testing. Time, effort, research and THOUGHT are my BEST tools. (Can't believe I left that out.... wow)

NEXT BLOG: Artificial Intelligence: How I thought I was clever and found out I was only average;

quick excerpt:

Making something generated by a computer, be it object, character or a simple box appear to be smart when there is nothing 'real' about them can be a HUGE challenge. For example; I wanted what I thought was a simple thing to occur. The idea was simple, bad guy shoots at me, I shoot back, Bad guy is hit, and dives for cover. Pretty basic yes? Well, NOT in my world.

There are a TON of program problems and issues with something like this 'simple behavior' that we take for granted.
Here is a short list;
1. Bad guy needs to know where I am at how to shoot at me.
a. This sounds simple but, it's not.
2. Bad guys needs to know when he has been hit.
a. Not only hit, but hit and how badly.
2. Bad guy then needs to be aware of his environment.
a. Where is the bad guy in relation to cover and me *the player
3. Bad guy needs to actually hide
a. LOL, sounds easy but it's not at ALL.
b. If the Bad guy hides, how do you tell it that it needs to 'duck' or be hit? (what if the only cover is a block that is half the size of the player...)
4. Bad guy needs to know that he still has to fight back
a. We can probably solve this with a simple timer but, would it appear smart?


MORE TO FOLLOW ON MY NEXT GAME DEV BLOG.....

Hope you enjoyed the little peek into my world!

Thanks for reading and NEVER give up!

Ron
Page «Previous 1 2
#1
03/24/2014 (3:06 pm)
1. No he doesn't he needs to react to an object entering a vision cone trigger, told via a tag or a collision layer that it's the player.
a. yes it is.
2. an animation plays on a bullet collision, again a tag or whatever determines the bullet type and effect on the bad guy this switches on a hit point count, the hit points go down a certain level another animation is swapped in of a guy limping or whatever, the switch can also set the reaction time of the bad guy, or a run for cover.
a. controlled with a simple switch
3. No he doesn't he merely has to move either in patrol or what not which can be done using a waypoint system.
a. The bad guy has to be informed by the AI controller. Everything can be faked and rather easily.
4. Bad guy merely needs to seek cover that is feasible, this will be set again using tags or layers.
b. If he hides behind a tree a switch will be set to one if behind a medium sized rock, a switch set to 2 which plays a crouch pose in a loop, if very small rock he lays flat on the floor gun pointing around. That would be a 3.
A fairly simple FSM would take care of all this. It doesn't have to appear smart, one simply puts in a large enough patrol to make it impossible for a player to kill them all at once, which means immediately after attacking the player is put in peril so the player wishes the bad guys aren't smart. If you want convincing AI on a one to one fight you make it multiplayer and draft in another player to play smart.

#2
03/24/2014 (5:41 pm)
Quote: A fairly simple FSM would take care of all this. It doesn't have to appear smart, one simply puts in a large enough patrol to make it impossible for a player to kill them all at once, which means immediately after attacking the player is put in peril so the player wishes the bad guys aren't smart. If you want convincing AI on a one to one fight you make it multiplayer and draft in another player to play smart.

So....basically don't bother making the AI actually somewhat intelligent?
Depending on the gameplay, AI should actually be fairly intelligent.
If you're going to mow through hundreds of guys in a level, a la CoD, then it doesn't matter so much.

If you're going for a high-intensity experience where the AI are at least as capable as you, so playing smart is critical, you want at least moderately smart AI for the effect.

Just handwaving good AI with 'just get other players to do it' isn't a good way to approach the problem of AI.

The Tactical AI Kit by Bryce actually does most all this stuff and it's pretty clever - and it does it without cheating anything. It also took Bryce a ton of time and effort to put together. Good AI is not a easy subject at all and I'm not surprised Ron had difficulty with it.

I'm looking forward to your escapades through AI Ron, should be an interesting read.
#3
03/24/2014 (5:50 pm)
@Ron : I really love seeing the software line-up of other devs, there are always a few programs we weren't aware of that might be useful!

I'd be curious to read a run-down of the strengths of Blender vs. 3d Studio Max vs Sketchup vs. Sculptris when it comes to game assets development.

Having used Blender for years now, the sculpting, UV Unwrapping, rigging and DAE export are lightyears beyond what they were even months ago.

@JED : There are as many answers to these questions as there are developers. Take a look at Richard Ranft's many helpful answers to various posts : his solutions are always detailed and backed up by in-engine examples, even though he might sound a bit grumpy at times :)

In comparison, the answers you provide are very high-level; Getting it to work in-game, in concordance with all the other game variables in an efficient way that provides fun and interesting gameplay is another story entirely.

Quote: "If you want convincing AI on a one to one fight you make it multiplayer and draft in another player to play smart."

No. Just...no. That is called "avoiding the question".
#4
03/24/2014 (6:07 pm)
@ Ron

It's amazing how competitive we humans can be is it not? You offer your knowledge to help others and so one tries to prove they are smarter than you before you even finish your thoughts.

@ Jed
Ever think that perhaps you like toast and so your are naturally drawn to it yet some one else prefers jam so they are more drawn to it? Now put them both together...

Also Jed
couldn't imagine having played one of my favorite games of all time if the AI in it used your logic. I mean what if Metal Gear Solid for the original PlayStation chose more guards over what felt like smart ones. Yes cheap tricks can have a place but not always IMO.

Edit:
I guess what I'm really trying to say is it's obvious that Ron's target audience for this blog is not you but if you wish to add in your 2 cents do it in a way that is productive instead of condescending. I mean imagine if we could all work together and those that were coding gurus could teach those that struggled at it and those modeling mad men could teach those who struggle with it it push out Varga quality models every time...

http://www.paultosca.com/makingofvarga.html
#5
03/24/2014 (6:18 pm)
Sketchup is great for buildings, but bad for polycount.. compared to a building in constructor. Which is a shame because there are some half decent add-on modules for sketchup that would save you a ton of time. Even exporting sketchup models into DAE, then import into Blender and re-export has given me countless hours of frustration in trying to sort it out. Would be interesting to see your results on this.
#6
03/24/2014 (6:35 pm)
@Jules

Haha, good point. I've seen some pretty slick stuff come out of sketchup, but MAN does it not try and optimize. That's probably why Ron has Meshlab, to help optimize stuff like that.
#7
03/24/2014 (10:00 pm)
@Sidikian - as someone else pointed out a game is not the engine. AAA are the resources that are brought to the engine, the game you mention cost millions of dollars to make. Ray casting for realtime AI is not always the best solution.AAA companies will combine all manner of AI to optimise a game. BTW I didn't accuse Ron of being a liar, can't say he treated me to the same common courtesy. The point of the post was to show I do have a certain understanding of how a game is put together. Often the best seeming real AI occurs because the designers sit down and plan how AI should look e.g. a patrolling guard, does he turn and look over his shoulder every few seconds or randomly. Games have a great deal of constraints usually budgetary which often determine how many animations can be made and that stuff often determines AI. It doesn't take many NPCs doing raycasting every update for a game to slow down. AI is invariably a combination of things to achieve a faked reality. Go and look for an AI package on youTube called 'Rain' it demonstrates one soldier on patrol, the animation is jittery because of how the soldier looks for the player in realtime, the movement does not look real at all, that sort of thing has to be overcome by some clever decision making. AAA companies have the experience and the money to do that. Again if your aim is to make a game just like your favourite AAA you're not going to do that whatever engine you use because even with the knowledge you don't have the financial resources to do it.

Before I get kicked off the forum for upsetting some members this will be my last post anyway as I no longer use these engines although I own the 2D and the 3D versions and paid for them long before they ever went MIT as well as a great many of the game kits and add-ons I only ever visited these forums because of an affection and admiration for garagegames which were the first game changers in the indie world but the problem with these forums is an ivory tower mentality. To quote Stephen Hawking, "The greatest enemy of knowledge is not ignorance, it is the illusion of knowledge."

#8
03/24/2014 (10:29 pm)
No point in running after a dog who chases his own tail. I won't be a dead horse any more.
#9
03/25/2014 (2:02 am)
@Ron,
I had a sneaky plan for AI bots that are on the player's side. I was planning on giving the players the ability to code those bots with their own AI. For this I planned on using a context based language like Javascript (ECMA). That way they I can limit what the AI "see" and the players cannot code other players bots or anything else.

That was just a "feature". There would still need to be basic AI code for pathfinding, shooting, etc.
#10
03/25/2014 (4:24 am)
Ron great read!
I just recently purchased the TAIK. I haven't added it to my build yet but I have gotten a chance to play around with the demo mission. The AI seem pretty good, one of the better AI solutions I've played around with..
Good luck with your game!!!
#11
03/25/2014 (6:54 am)
@Demolishun: That's a pretty cool idea! I find however that having to code A.I. as a gameplay feature can become very tedious if the system is not rock-solid and battle-tested through hell and back.


@JED : Probably wasting my time here but hey it's my day off...

No one will kick you off the forums, even though it seems to be what you're secretly wishing for. The exercise here is trying to have a discussion, which you seem to try to turn into some sort of duel to the death.

Ron describing his tool chain leads to a condescending criticism of a preview snippet from his next blog? That makes no sense, however you look at it.

I completely disagree with your claim that these forums reflect an "ivory tower mentality". We are all trying to use these engines (T3D and T2D) and try to improve them, make games with them and share our experiences.

We are not only game-makers, we are also fascinated with HOW game engines work, and Torque gives us the possibility to learn that : DIY at its best. You cannot fault an ever-evolving platform like Torque for not having feature X or Y.

If that's not your cup of tea, fine! Nobody is saying you're an idiot for using UE4 or Unity but please don't attack us for using and loving the Torque Engines.
#12
03/25/2014 (7:44 am)
@Jeff - thanks for the heads up on MeshLab.. I tried it with Sketchup, works to a certain degree but you should see the meshes in sketchup after they have been exported to dae - they are a mess and even Meshlab may struggle to get it right, lots of tweaking involved i fear :)
#13
03/25/2014 (7:48 am)
Hey all,

Thanks for the feedback, glad some of you are interested. As for JED's comments, leave him be. He is entitled to his opinion and here is the thing.... He is right about the FSM. It is one option to solve the problem I presented. Nothing wrong with that at all. We can disagree and argue about stuff. Let's just lay off the personal attacks and such. JED, I apologize if I offended you somehow. It was not intended. I never assumed you knew nothing about game dev. These blogs are for those that are new to it. (Because there are more than a few new folks around). I pretty much sum it up in my blog preview, take what you want, throw the rest out...

Jules, Yeah meshlab is ok for simplifying geometry and yeah, sketchup can be a real poly hog. I generally use Sketchup just for quick mockups. (I simply can just knock out basic geometry faster in it.... For finals I tend to import the mockup into max or blender and recreate a 'final' with the details and whatnot in place. (this also helps with scaling and a few other things. I will then bake things like lighting and stuff.... (Since my game is a fairly simple FPS type thing, I don't have to worry about Time of Day and stuff... so I bake the lights, spec, etc etc. and it makes the final models look better.)
#14
03/25/2014 (9:17 am)
@Ron:

Thanks for the insight, always helpful to see into another artist's world. I was surprised you didn't list Ultimate Unwrap - wondering what you use to convert formats, or do you need to?

I personally find both Max and Blender to have counterintuitive interfaces - I have stayed with Max as I'm taking classes in it and at least know how to get around in it...

'nother question, do you ever uses torque dts shapes?
#15
03/25/2014 (3:16 pm)
Gibby,

Yeah, I do NOT use Ultimate Unwrap. I may have to check it out but, so far I am pleased with (and spent enough time with) 3D Max to become REALLY familiar with it's UVW Unwrap capabilities. Same goes for Blender. Between those two programs I have not had any issues with unwrapping models.

Additionally, I have a neat little community add-on/UI for Blender that makes it behave a 'bit more' like 3D Max. Never shall the two meet but, it gives me the 'feeling' of working max a bit more.

As for the .dts format. Heck, I was born and raised on the .dts format. In fact all of my stacks, hierarchy and such are still .dts format. (aka: Base01/Start01/detail...etc etc. I just choose to release things as .DAE because it's more universally accepted and if people choose and have the background they can then convert the .DAE to .obj or .FBX or whatever format works in all the assorted engines out there.

Finally, as for Format, I tend to build in polys. This is obvious for anyone that knows 3D. So, I lean toward .obj format for MOST things. In Max, I just work and save in .max format. (I usually have 2 stages... FileName_01_start.max and FileName_01_final.max.) This allows me to export to .dae or .obj. or even .dts and still have a file where I am working in pure geometry... The _start.max is JUST geometry and the _Final is what I export to the engine) without all the bells and whistles that Torque requires. So, for example... I screw up and vertex paint a tree wrong, I have it saved as a 'final' and export to T3D, test it... it's hosed up.... well I can revert to my '_start' version and simply redo the paint process, re-save it as my '_final' and go from there.

And LASTLY, when working in NON-.dts (Torque native format) I use .obj format because it seems to me that it stores the most accurate data and I have YET to run into a system or program that does not support it. This allows me to accurately 'dumb down' high poly meshes, while retaining texture coordinates etc. Saves time over all.

Hope that helps further explain things.
#16
03/25/2014 (4:15 pm)
Quote:So, I lean toward .obj format for MOST things. In Max, I just work and save in .max format. (I usually have 2 stages...

That's great to hear - I don't know 3d all that well but had settled on .obj as my standard interchange format because I've been using both T3D and UDK.
#17
03/25/2014 (6:22 pm)
I'm still not sure what shaders are for still looked at render monkey to see what it could do i'm so lost still, i see also 3ds max 2015 supports shader creation not sure what route would be best. and tips ron?
#18
03/25/2014 (6:28 pm)
PS I'm interested if you can see what you think of my tools to see if there's something you would suggest, id love to make sure i have the tools that are needed for the ins and outs:


  1. 3DS Max 2014
  2. ZBrush
  3. Daz Studio
  4. Vue 11
  5. World Machine
  6. Photoshop
  7. Adobe Auditions
  8. Fruity Loops
  9. Finale Print Music
  10. Sweet Home 3D
  11. xNormal
  12. Crazybump
  13. Forester
  14. Genetica
  15. Genetica
#19
03/25/2014 (11:16 pm)
Kevin,

As for the 3D Max Shader Gen tools, most of what I have seen would greatly benefit from HLSL standardization. Of course, NOT on the MAX side but the T3D side. (Though the DX9c refit has done a bit to help with that.)

As for the rest of your pipeline, Looks solid. Seem to me you are using pretty much the same stuff, with slight name variations. I must admit, Genetica was one that I was not aware of of. Looks really interesting.

Max is obvious, Zbrush is more or less like my use of Sculptis (though Zbrush has WAY more advanced features). Daz Studio... I use pure Poser 4 and 5 for similar results. Vue 11 (sort of like) Bryce 7 and to a certain extent World Machine (terrains) (in the basic sense). World machine we both see the value in. Photoshop... I use GIMP... same same really, though if you are using a pretty modern version of PS then you have a HUGE advantage in 16 bit images v. 8 bit. Then you have a bunch of Audio stuff.... many of these function the same so cool there. CrazyBump, xNormal... again, we see similar functions.

Then we come to Forester... Not a bad choice. I personally don't use a tree gen. For example, I use tree[d] for branch textures but the tree modeling I do by hand in MAX. Just a personal choice really. I can be a bit of a control freak about trees and such. Random trees never 'seem' that random to me and... if I can control the poly count to the lowest level, I will. Again though, personal choice. Nice workflow thanks for sharing!

Oh yeah.. as for the audio stuff (I sort of 'glanced' over it). Nothing beats my Roland and Ensoniq Keyboards with midi interfaces and supporting software.... oh yeah and all the crazy piano and guitar lessons my parents made me attend. This is an additional 'hobby skill' that I happen to have and at times exploit....
#20
03/26/2014 (9:14 am)
@ Kevin
Sorry if I miss understood what you said or how you meant it, but hopefully I can help explain what shaders are.

I guess IMO the best way to think of a shader is a gif (a textural image that looks to have motion BC it's basically like a slide show of movement; think of a flip book where you brush the pages and it looks like it's moving) but placed on a 3 dimension object or a group of textures that have special qualities similar to this.

To quote someone from an old tutorial on how to make player skins for my fav. Game of all time:
"Shaders Ok, now we get in to the more advanced stuff.

I am not sure what the technical definition of a Shader is in the Unreal Engine is, but I'll try to explain it. It's a file that groups several textures together to create one large texture orgy. Rather, it's the way the engine assigns things like normal maps and opacity masks to a texture. The outcome is an object that can be used like a texture in your pointer file, but it includes all the effects you want."

So a shader can be a group of textures that contain things like a normal map:
A normal map is a texture trick that tells certain parts of a texture to react differently to a lighting source and thus giving depth to flat surfaces in more lit areas.
Two ways that this normal map are made are:
Being generated from a color texture in some paint type program (think gimp or crazy bump even really)
And secondly when the 3d artist creates anything they can create a high polygon model and a low polygon model and bake in the high polygon's light reception into the low polygon model and thus giving the low polygon model more depth.

A cube map is easiest explained as taking an object made of mirrors and placing it inside a box. Now paint a happy face on one of the insides of the box. The object made of mirrors now will reflect that happy face on it. Now if you turn your object made of mirrors the side(s) facing the inside of the box that has the happy face will now reflect the happy face. That same concept is how they work in game, if you were to apply your object made of mirrors in texture form and place it on say a visor for a helmet as the helmet would move you see a happy face move around on it as if the helmet is actually reflecting the happy face.

Shaders can contain all types of textural effects like movement, reflectiveness, light emission, and so on all grouped together.

Now in unreal it was easy to make a shader you just literally pointed at your texture files and could tweak them from a shader generator in it's creation set, torque is another beast though and is not as user friendly in this regard IMO at least if your a more visual person like me. Last I looked into it you could added things like texture rotation direction etc, but you had to adjust mainly in code format.


Edited for a better explanation of how a cube map works.
Edit 2 I thought I remembered some thing similar in torque like unreal's shader gen and I remembered the material editor. Not exactly sure where a program like render monkey comes in in relation to it though.

Material editor
http://docs.garagegames.com/torque-3d/official/content/documentation/World%20Editor/Editors/MaterialEditor.html
Page «Previous 1 2