Tools are everything

Published November 25, 2011
Advertisement
You've probably heard the whole "don't make engines, make games" shtick. As I progress I am learning another important lesson: tools are the most important aspect of any project, game or engine. Whether you're rolling a custom engine or shopping around for middleware, tools should be absolutely top priority. Seriously.

The question should not be "how many shiny graphics techniques can I incorporate?". It should be "how easy is it to create content for this game?". Content is the center of every game, whether that content is an AI algorithm, a map layout, or an art asset. If the content pipeline is even a little inefficient, it will prevent you from making the game you want to, whether you realize it or not. If you have to jump through hoops to create a new level or script a story sequence, you're going to put it off and focus instead on adding another feature that provides tangible results, like a new lighting technique. Problem is, those features don't make the game. Content does.

Even if your content pipeline is efficient, you'd be amazed what better tools can do for you. I recently learned this when I started using the audio authoring tool XACT. Before the switch, adding sounds to my project was pretty streamlined. Create the wave file, add it to the Visual Studio project, done. In code I could loop the sounds and control their pitch and volume and who knows what else. But I didn't really take advantage of these features, because it was a pain. I got away with the bare minimum.

Started using XACT, and suddenly I'm adding new sounds, playing with the settings, and actually enjoying it. What changed? I didn't "unlock" any new features in the audio system. My code didn't change either. Yet the sound is much better now. The tool made the difference. It made it easy for me to go in and control sounds without writing code and recompiling. Now there will be a lot more variation in the sound, because it's so easy to do.

Another example. I recently added a button to switch between my editor and the actual game instantly, without exiting and booting the game. Now my level design still sucks, but it's much better than it was because I can instantly see the results of my work, and it actually makes it enjoyable.

I'm now wondering what other parts of my game are suffering from a lack of tools. Obviously the level editor is something I'm pouring a lot of work into, but what other tools could improve the process? Automated testing? A statistics collection tool for alpha releases? A better asset system?

I think this idea extends to code as well. When I started work on my iPhone game this summer, there were none of the nifty little transition animations that make mobile apps feel more responsive. I certainly had the ability to implement them; most of them just consist of "increase this number a little every frame until you reach the end". But it was a pain. Then I discovered an animation system built into the library I was using that reduced most animations to a single line of code. Suddenly I'm putting in animations all over the place.

So, moral of the story, tools are everything. If you're using Unity or UDK you're probably set to go, but just keep this in mind. Making your life (or your co-workers' lives) easier will result in a better game down the line.

[subheading]Project update[/subheading]
With that out of the way, here's the latest progress on Project Lemma! Yes, now that the game is taking a different direction, I'm not sure what it's going to be called anymore. So I'm reverting to the internal codename I've been using.

New features
  • First-person immersion: the player has arms, legs, and a shadow, and the camera can be animated along with the rest of the player's body. Speaking of animations, they now blend smoothly from one to the next instead of instantly switching.
  • More realistic destruction: if you break a block in half, it will actually split into two physics entities, instead of having the two halves magically remain attached to each other.
  • AI enemies: there's a turret and a ball thing that rolls toward you for a melee attack. The best part: I can make these enemies in any shape and size I want, and they're fully destructible, just like the environment.
  • More player moves: the player can now double jump (the second jump is a flip) and do a bicycle kick to smash through walls. The double jump can also be targeted so the player lands on an exact location.

Enough talk, here's the video!

[media]
[/media]


Mirrored on my blog
6 likes 12 comments

Comments

Aardvajk
OMG that is looking fricking awesome.
November 25, 2011 07:10 PM
nolongerhere
The lighting looks really, really good. And are you using voxels? Im somewhat jealous of your destructable objects with physics.
November 25, 2011 07:13 PM
evanofsky
Thanks guys! About the destructible objects, they're rendered as hardware-instanced cubes stretched out to various sizes. The pixel shader uses the world position of each vertex to determine the texture coordinates, so the textures don't get stretched out. The internal representation of the voxels is just a list of boxes. It also maintains a 3D array of pointers to these boxes; every cell in the array that is contained within a box has a pointer to that box. That way I have constant lookup times. This makes it possible to do the splitting in half effect, because I can get a list of adjacent boxes in constant time. It also allows me to use an algorithm to simplify the boxes by joining them together as often as possible for performance reasons.

I don't know if it's the best way (I hear that octrees are the standard accepted practice), but it works alright. I should do a more extensive article on the voxels soon.
November 25, 2011 07:42 PM
Florian22222
this game looks so awesome. have you done all this by yourself?
November 25, 2011 09:05 PM
zarfius
Very impressive :)

And the talk about tools is completely valid. It's not completely obvious when people start a project just how important tools are. I've sort of known this in the back of my mind for a while now, but you've just brought it to the foreground. I'm going to have a think about tools myself. Thanks.
November 25, 2011 09:50 PM
evanofsky
[quote name='Florian22222' timestamp='1322255143']
this game looks so awesome. have you done all this by yourself?
[/quote]
Thanks. Yeah, so far it's a one-man project.
November 25, 2011 10:48 PM
O-san
I like the sounds, they really add to the atmosphere of the game. Also nice to see that you have included the body in the first person view, I miss that in many FPS games. Keep it up! =)
November 26, 2011 11:45 AM
Digivance
just wanted to chime in and say this is a good article. Excellent effect adding in some eye candy (or ear candy in this case) to support your article.
November 26, 2011 03:03 PM
ne0_kamen
The game looks great!
November 27, 2011 12:45 AM
FLopez
ofcourse that engines are the best option for game dev for example portal 2 was developed with the source engine and look how famous its right now
November 27, 2011 01:44 AM
Cornstalks
I'm also learning the same thing as I work on my game. Great post! So far I've put a lot more time into my sprite editor than I have the actual game. I think that's the way it's going to be with most things. I've been suffering with a lack of focus lately though, as I know what I want to do in the sprite editor but it's just painful to do it (that is, I need to make the tool to make the game, but making the tool is painful in some aspects, so I'm searching for ways to make it less painful (tools for the tools?)).
November 27, 2011 04:29 AM
evanofsky
[quote name='Cornstalks' timestamp='1322368164']
I'm also learning the same thing as I work on my game. Great post! So far I've put a lot more time into my sprite editor than I have the actual game. I think that's the way it's going to be with most things. I've been suffering with a lack of focus lately though, as I know what I want to do in the sprite editor but it's just painful to do it (that is, I need to make the tool to make the game, but making the tool is painful in some aspects, so I'm searching for ways to make it less painful (tools for the tools?)).
[/quote]
Yeah, that's the one downside with focusing on tools. You spend the whole time working on them and never push out a game. I think it really starts to pay off on the second or third game, provided the tools are generic enough to be reusable.
November 27, 2011 04:49 AM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement