GarageGames Community Tune-Up

v1.3 - June 2002
Hard work has a future. Laziness pays off now.

Slacker!
Editor's corner
E3 is to the GDC as Star Wars: Episode 2 is to a movie that doesn't suck. Remember that if you plan on taking the SAT!

Chain Reaction: no, not that Keanu Reeves movie
Project Focus
Talking with Jeff Tunnell of Monster Studios (and GarageGames) about their upcoming title, Chain Reaction.

Microsoft Starter Kit
Contracts and Agreements
If you plan on keeping your team in order, and on the straight and narrow you might want to consider some legal options. Here are a few.
So simple, yet so useful
Level design: utilities
Yes, life is good. If you're a level designer using Torque, this tool makes it even better.

I don't think we have enough Counter-Strike clones
Community Discussion
Will popularity kill the cat?



Rejoice! A patch is coming
month++
Caution: there are too many cool developments to try to work with in one sitting. May cause dry mouth or head exploding.
The answer is B
Q & A
These will only be multiple choice, right?



Jerry Springer meets Everquest
memory leak
Other sites have interviews with people at E3 trying to explain why their game is worth selling your soul for. We one-up them by interviewing the actual games!


Editor's Corner: developments
Don't be late, just change the deadline!Before you say "the newsletter is late!" I must tell you we've switched to a semi-monthly format. The development of the newsletter and its features takes a good deal of time (about two weeks on average) so a monthly issue would eat up over half of my free-time in terms of game development.

As we all know, time is a very valuable resource. With it cut in half, it can be difficult to get much done.
Now that you understand why this newsletter isn't late, let's talk about what's been going on E3! If you didn't go, you missed a whole lot of flashy gaming goodness you'd expect from the most popular and commercialized game development expo in the world.
I've got to admit, the E3 really seemed to offer less than normal this year. The most interesting things this year (for me at least) was Doom 3's engine, America's Army, and Nintendo stepping up with some cool looking games. Definitely nothing to scoff at, but it just didn't feel like enough to really make it such an epic event people talk about for many months into the future like in the past. Of course, I don't think anyone will forget that game America's Army. The US Army creating a game to lure in video game playing teenagers? If that doesn't support that video games can create violent behavior, then nothing will!
Oh, and don't even get me started on Dead or Alive Xtreme Beach Volleyball. One question though: why "Xtreme" and not "Extreme"? oohhhh, those are why.
As for me, I've begun work on two projects. I'm currently helping coordinate a "game development club" made of students from local colleges. The goal is to provide a non-virtual environment to work on creating a game from start to finish. Normally something not available to students and the vast majority of indie developers, and in the past few weeks we've done pretty well in setting the tone for the team and the project design. Weekly meetings help us get things done, and we've had a great turnout.
The past months have really been great for the GarageGames community. Dedicated people are working on helping integrate AI and shaders, as well as many great additions to the engine and documentation. I think I speak for the entire community when I say "Thank you!" to all of those whom have taken their time to help provide so many great things to this community.

A special thank you to Desmond Fletcher and Bryan Walters for contributing to this issue of the Tune-Up. Desmond wrote the level design tools tutorial, while Bryan asked the questions for the interview with Jeff Tunnell and Chain Reaction. Thanks guys! Your work is greatly appreciated.
- Matt

return to top

Project Focus
Chain Reaction

Bryan Walters: Over the past few months we have seen how GarageGames has been helping independent game developers, but what about you and your side-projects? I've done some research and noticed that you are working on a game called Chain Reaction with Monster Studios.

Jeff Tunnell: Back in the day, when I was running Jeff Tunnell Productions under Dynamix and Sierra, we created a small game called "The Incredible Machine" that was a kind of Rube Goldberg construction set. The game was successful, but it was also my favorite game of all the seventy different titles that I have worked on during my career.

Chain Reaction is being created in my other company, Monster Studios, by the original team that developed TIM. The team members are Chris Cole, Kevin Ryan, and Brian Hahn, and all were key members of the family oriented products that I worked on while at Dynamix.

The calm before the storm
The calm before the storm

Bryan: What kind of game is Chain Reaction?

Jeff: For those that have not seen our website, Chain Reaction is all about placing small parts on the screen. The player chooses from around 50 different parts such as conveyor belts, electric motors, ropes, balls, etc. to set up "chain reactions." These parts all react according to a rigid body physics model the way you think they should. For instance, a ball drops onto a light switch, which turns on the electricity to a light bulb, causing the light to be focused through a magnifying glass, which starts the fuse burning on the cannon, which shoots the cannon ball, etc.

The goal of the game is to make our monster character, MC, drive his spaceship onto his landing pad. It sounds simple, but these complex reactions create a challenging and fun puzzle play mechanic.

Bryan: Why work on this project?

Jeff: The team loves what we did with The Incredible Machine, and feels there is a tremendous amount of creative idea left to explore in this genre.

Crazy conveyor belts
Crazy conveyor belts

Bryan: Will you be using Torque or working on a totally new engine?

Jeff: Chain Reaction is being made with a small engine being built from scratch. Since the game was started two and a half years ago, the Torque Game Engine was not available.

I wish CR were running on the TGE because our cross platform problems would be solved. In addition, we could have multi-player capability and would not have to worry about graphics card incompatibilities, etc.

From where I sit as the head of a small indie studio, the entire Torque and GarageGames offer is fantastic.

Bryan: I know that you are very busy with GarageGames, so is this affecting your work at Monster Studios and progress with Chain Reaction?

Jeff: Monster Studios does not take an enormous amount of time right now since we are still in the product building stage. In fact, it is a wonderful fit with what I am doing at GarageGames because it gives me a great perspective of the indie game development studio. With my Monster Studios hat on, I have a much better idea of what is palatable from a publishing agreement standpoint.

Bryan: Will you be sharing new things you learn in the development of Chain Reaction with the GG community?

Jeff: Monster Studios will be a "guinea pig" so to speak, for the rest of GarageGames' indie community. I think it shows a lot of commitment to the GG way of doing things to put our own money and development energy into this idea.

Think about it for a minute, and you realize that it would be easy for me to do this because I want GG to succeed, but what about the other three guys that are betting their livelihoods on this as well.

MC rockets into a wall
MC rockets into a wall

Bryan: Also why did you decide to make this project in a new studio and not at GarageGames with outside help?

Jeff: Like I always say, GarageGames is just four guys and we can't do everything. Tim, Rick, and Mark have their hands full keeping the site running, updating the Torque, and generally running GG. They simply do not have the time to make a game too.

Bryan: Will a part of the new GarageGames office be for Monster Studios?

Jeff: Kevin lives in Shaver Lake, CA, Chris works from his home, and Brian is in the new office with us GarageGames guys.

Bryan: What are your plans for getting the word out on Chain Reaction?

Jeff: We will be showing Chain Reaction to some folks at E3. Start looking for more promotion starting in June.

Bryan: When can we expect to see a demo?

Jeff: Our expected ship date in Jun/Jul, but we have already missed enough self-imposed deadlines that we are not promising anything. Given that we are a self-funded, microscopic indie development team, things always take longer than we think they should.

However, the game is looking sweet and it will set a new standard for non-traditional games. Once we release the game, we will go back and release a demo.

Falling after an explosion
Falling after an explosion

Bryan: I've seen a screen from the Torque demo and was wondering by any chance will the demo be turning into a game from GG?

Jeff: We will be moving Chain Reaction over to the Torque in order to get our Mac version (Linux as well). In fact, that will probably be the next product Chris works on after Torque ships. Kevin is already working on a Torque game tentatively called Marble Reaction. Roughly, it is a kind of like Marble Madness meets Super Monkey Ball meets Tony Hawk. Should be ready by late Fall 2002.

Bryan: Why haven't we heard a lot about this game yet? From what I've seen it looks like a very fun and unique game. Why haven't we heard about it and are you trying to keep it a secret?

Jeff: We are keeping it kind of close to our vest until we are ready to roll it out. Recently we made a deal to bring Jay Moore into our group to do our marketing. As all of you indies will find out, doing marketing with "no budget" is an interesting endeavor. Jay is an expert at doing this, so I'm sure you will see much more about the game in the future.

3... 2... 1... Blast off!
3... 2... 1... Blast off!

Editor, Matt Webster: Thank you for your time Jeff, and thanks Bryan for coordinating the interview. This game sounds great, and it's refreshing to see a unique take on the puzzle genre. If Chain Reaction manages to harness even half of the creativity and freedom of The Incredible Machine it's going to be a great game.

Related links
Monster Studios
Chain Reaction
The Incredible Machine: Contraptions demo
Who is Rube Goldberg?

return to top

Contracts and Agreements
Legal Starter Guide
While I wanted to provide a guide tailored towards legal options for independent developers, I realized I really shouldn't be offering my two cents on topics that could effectively make or break a project or even a career. What I can do is steer you in the right direction for finding good legal resources that pertain to game development.

Keep in mind that the resources provided are by no means complete, and any significant contractual or financial agreement should be handled under the supervision of a knowledgeable legal contact; preferably a lawyer.

Project planning
Proposing to a publisher
Your first project
Budgeting and scheduling

Intellectual Property
Patent law (1)
Patent law (2)
Copyright law
Licensing issues

Contracts & Agreements
Non-disclosure agreements (1)
Non-disclosure agreements (2)
Negotiating contracts

Press
Public relations
Handling bad press

Important reads
Independent Development Myths Debunked
Financial aspects of game development
Project financing and profit margins
2000 IGF finalists update

If you know of any articles that should be added to this list, please contact me at cptfallout2@hotmail.com.

return to top

Level design: utilities
Utilities for the Mapper

By: Desmond Fletcher

Mappers like tools; tools to speed up the process and make the project look better. Well, Torque has a number of functions that fit this bill. So we took the Torque Wrench, tuned up a few areas of code, and created a utilities menu (recently posted to Resources) with the mapper in mind. The utilities menu features console functions organized into lists with the different functions activated by radio buttons or sliders. The features to date are organized into four areas: metrics, interiorRenderModes, logfile, and sun vector calculator. This article focuses on the interiorRenderModes.

When the mapper is using the DEBUG version of Torque, there are seventeen interiorRenderMode options available. The menu system makes it easy to select the different options (at least I know I can't remember them all at the console command-line; and I got tired of sticking post-its on my walls). In case you haven't got the utilities menu installed, I'll show the console functions in the section titles in the discussions below.


Normal --> setInteriorRenderMode(0);

The image below shows the utilities menu (activated by the F5 function key) with the "Render Options" window selected and the "Normal" radio button selected. All the modes for interior rendering can also be activated from the console (press the tilde "~" key to drop down the console and type the function command). For example, for normal view mode which shows all the interior textures and lightmaps, type in the expression setInteriorRenderMode(0); (including the semi-colon) and press enter.

Utility Menu

Render as Lines --> setInteriorRenderMode(1);

This setting displays the outlines of interior polyhedrons (brushes). This might be useful for evaluating placement on the terrain, matching placement of different interiors, etc.

Render Lines

Show Detail Polys --> setInteriorRenderMode(2);

All brushes that were categorized as members of the Detail class in your map editor will show up as Red; otherwise, the brushes will be displayed white. For a lengthier discussion on Detail brushes, please see this link on optimizing framerate.

Detail Polys

Show Ambiguous Polys --> setInteriorRenderMode(3);

Ambiguous planes appear to occur when two brushes share plane descriptions that have different texture parameters. If the texture parameters were the same, the compiler (map2dif) will attempt to "disambiguate" and remove one redundant plane description; if not, the brush is marked as ambiguous. Ambiguous planes are displayed Green; otherwise white.


Show Orphaned Polys --> setInteriorRenderMode(4);

Orphaned polys occur when a plane description has no winding (essentially it doesn't exist). These can occur in certain editors that don't control for broken polys during the editing process. Orphaned polys are displayed Blue; otherwise white.


Show Lightmaps --> setInteriorRenderMode(5);

This mode is useful for checking where shadows are falling on surfaces. The surfaces are not displayed with the texture.

Lightmaps

Show Only Textures --> setInteriorRenderMode(6);

Mode 6 displays only the textures (without the lightmaps). This mode is useful for capturing new textures of entire walls.

Only Textures

Show Portal Zones --> setInteriorRenderMode(7);

The images above have no interior (even though they are classified as interiors)--so there are no portals. However, when structures have interior spaces (you can go inside), then portal brushes provide some display optimization. Since portals are invisible in-world, mode 7 provides the tool to see where they are located. Portal zones are displayed with various colors.

Portals

Show Ambient lit Surfaces --> setInteriorRenderMode(8);

All surfaces that are affected by ambient lighting are displayed in Red.

Ambient Lit Surfaces

Show Collision Fans --> setInteriorRenderMode(9);

The collision surfaces of interiors are denoted by red tick marks at the vertices.

collision Fans

Show Triangle Strips --> setInteriorRenderMode(10);

Each brush surface is broken into triangles during the compile process. Mode 10 displays the triangles with various alternating colors so the triangles are easily visible.

Triangle Strips

Show Null Surfaces --> setInteriorRenderMode(11);

Null surfaces are brush planes that were textured with the NULL texture (see the link above). This mode helps find surfaces that were perhaps accidentally textured as NULL; these will be displayed as Red as shown in the image below; otherwise the textures are normal.

Null Surfaces

Show Large Textures --> setInteriorRenderMode(12);

This is one of the more useful modes when trying to optimize the final world for release. Sometimes mappers are tempted to use very high-resolution images; this is only a problem when there are a lot of them. Mode 12 helps locate where high-resolution textures are being used and perhaps make decisions about how critical they are. The list below shows the colors the textures are tinted based on size:

  • Blue if 256x256
  • Green if 256x512 or 512x256
  • Red if 512x512
  • Otherwise gray

The images below shows different texture sizes that were used on different Levels-of-Detail for the same interior:

Large Textures A
Large Textures B

Show Hull Surfaces --> setInteriorRenderMode(13);

Similar to triangle strip display, this mode displays the each brush surface in various colors.

Hull Surfaces

Show Vehicle Hull Surfaces --> setInteriorRenderMode(14);

Similar to Hull surfaces; various colors are used.


Show vertex colors --> setInteriorRenderMode(15);

Not functioning correctly at this time


Show detail level --> setInteriorRenderMode(16);

Ok, we saved the best for last: mode 16 is perhaps the most useful of the interiorRenderMode settings. When activated, the current detail level state is displayed in colors based on the list below. This makes is a lot easier to determine the best min_pixels settings in the map editor.

  • Level_0: white
  • Level_1: blue
  • Level_2: green
  • Level_3: red
  • Level_4: yellow
  • Level_5: violet
  • Level_6: cyan
  • Level_7: gray
  • Level_8: blue-gray
  • Level_9: green-gray

The images below show the changing detail levels for a group of interiors in sequence as we move our position farther away.

LOD: Detail 0
LOD: Detail 1
LOD: Detail 2

That's it for the interiorRenderMode settings. As I said at the beginning, the mapper can use set these modes from the console or can take advantage of a Utility Menu Gui recently posted by myself and Richard O'Brien: http://www.garagegames.com/index.php?sec=mg&mod=resource&page=view&qid=2565. However you choose, these are essential tools for producing efficient, optimized maps for Torque interiors. Enjoy.

return to top

Community Discussion
strip-mined design

This title might sound like the name of some new game development company, but it's referring to a trend among popular games. Not only are successful games followed-up with clones, but the market can become flooded with them. In result, the original idea or innovation is destroyed beyond recognition.

Responsible for the market-flood

Copying other successful games has been a mainstay in the industry. In the early 90s, pre-rendered graphical adventures became incredibly popular. 7th Guest and Myst to name a few. Many similar games were created in hopes of cashing in on the popular game-type. This type of game faded out due to technology getting better (namely real-time 3d rendering), but recent advancements have not met the same fate.

One of the most popular games in the world, Counter-Strike has come from no-where and brought along many followers: Global Operations, Ghost Recon, Combat Medic, and an endless number of game "mods" like Tactical Ops, Navy Seals, and Urban Terror. While not all created for the sole purpose of ripping off the success of Counter-Strike, they've smothered the market of games known as "tactical shooters". With so many similar titles out now, few can survive.

This year's E3 proved imitation is the highest form of flattery, yet again. The US Army had "America's Army", which lagged a bit behind the Counter-Strike golden age, but also common were games taking a page from last years major hits: Grand Theft Auto 3 and The Sims. Open-ended games seemed to be the "next big thing" according to many developers who presented their games, and more are undoubtedly on the way. According to Warren Spector (of Deus Ex fame), Grand Theft Auto III has shown that the world is ready for a free-form gameplay model. He hopes Deus Ex 2 is the next step in that evolution. If he thinks free-form is going to be big, you know many others have.

Everyone's old favorite (cel-shading), flooded the E3 this year. Even old mainstays like Mario and Zelda have joined the ever-growing mass of cel-shaded games, which seems to becoming more and more of a boring gimmick than anything else. While most of the cel-shaded games are highly anticipated, cel-shading does not represent the edgy style it did when Jet Set Radio hit the shelves over a year back. Gamespy.com even went as far to call cel-shading the new "lens flare".

Other links
Overused Ideas, E3 2002 "Award"
Warren Spector on Deus Ex 2 & free-form gameplay
Essay on copycat games

So what do you think? Is strip-mining of a successful idea unavoidable? Who is usually the worst offender? Is this always bad? What is the "next big thing" in terms of attracting copycat games? How can current hits or gimmicks survive this process of spin-offs?

Post your thoughts here

return to top

month++

GarageGames and Torque news Torque script documentation
GarageGames + HomeLan = Great for indie developers
GarageGames contracted to do Tribes 2 patch
Realm Wars Linux
Tutorials Bullet Holes [Torque] - GarageGames tutorial, Xavier Amado
fxLight (dynamic light) [Torque] - GarageGames tutorial, Melv May
Terrain Manager [Torque] - GarageGames tutorial, Bryan Turner w/ patch by Jeremy Noetzelman
Ogg Vorbis and WAV streaming [Torque] - GarageGames tutorial, Kurtis Seebaldt
Industry news & reccomended articles Max Payne: Sold! - Gamasutra.com news
Complete E3 coverage - Gamespy.com feature
Lost Along the Way: Design pitfalls - Gamasutra feature
Realistic Level Design - Gamasutra.com feature

return to top

Q & A
Mounting limits

How many objects can I mount to the player?

D. Michael

Guest, Joel Baxter responds: The Player object is a ShapeBase object. For the purposes of mounting stuff, it has capabilities that are just like any other ShapeBase object. Forget that it is a Player. That has no relevance.

A ShapeBase object can have two kinds of things mounted to it: ShapeBase objects (using mountObject), or ShapeBaseImage objects (using mountImage).

A ShapeBase object can have up to 32 mountpoints.

ShapeBase objects can be mounted to any mountpoint. You can mount as many of them as you like.

ShapeBaseImage objects can be mounted to any mountpoint. You can only mount up to 8 of these at a time, because each mounted ShapeBaseImage object must be associated with a unique "slot" number (indicating which thread resource will be used to drive its state machine), and there are only 8 slots.



Instant action

How do I have my player start with a weapon? It's a bit slow starting unarmed and having to track down a weapon.

A. Joplin

Guest, Stefan Moises responds: add the below into the createPlayer function in example/common/client/scripts/default.bind.cs

   %weapon = new Item()
   {
      dataBlock = Rifle;		// name of starting weapon datablock
   };
   
   %ammo = new Item() 
   {
      dataBlock = RifleAmmo;	// name of starting weapon's ammo datablock
   };
   
   MissionCleanup.add(%weapon);
   MissionCleanup.add(%ammo);
   %player.pickup(%weapon, 1);
   %player.pickup(%ammo, 2);



Stupid explosions!

Have you noticed that many times players are not hit by an explosion even when obviously within range of it. I can have explosions go off right next to my player and sometimes they hit and other times they don't. Direct collisions always seem to work.

Is there a problem with the radius code? Has anyone made a better version of it that's more consistent? I'd appreciate hearing if anyone has even seen this occur. Just want to make sure it's not just me, which maybe it is :)

Sabrecyd

Matt responds: Yep, this happens A LOT.

Why? The terrain mask. The code doesn't correctly detect all limbs when colliding with terrain, so an awkward angle or partially obscured player can magically avoid being hurt.

How do you fix this? Change the collision so it is a bit more luxurious than detecting for the center of the model or the head, which would take a slight hit on performance and be pretty tricky to do in a short amount of time.

Easy fix? Just remove the collision mask (in script) with the terrain.

While it might not look realistic, it really is. No one is going to be able to stand behind a tiny bump in the ground and expect not to get blown to all bloody hell with a rocket launcher. Sure, the dirt would go everywhere but so would the target's limbs. Removing the mask in the radiusDamage function will make the collision occur at the right place, but when it tries to figure out if the player is "sheltered" it will ignore terrain as a way to hide. This should eliminate the vast majority of "buggy" explosions, since explosions in interiors work perfectly. Only problem would be if you're using really big explosions, and it might knick someone who's clearly obscured from view.

So it's preferred if someone tries to figure a way for the radiusDamage function to accurately locate things in target area that are partially obscured, or when the surface has a strange normal (which I think is a major cause for this, mainly because the error occurs many times when I'm 110% unobscured) but if you want a quick fix for small explosions, then this will work for you.



No more names

I would like to toggle the names over players' heads, but I don't know how. Can you help me?

M. Gordon

Guest, Bryan Ross responds: place the following code at the end of example/common/server/game.cs

function toggleNames(%val)
{
	if(%val)
	{
		for(%i = 0;%i < PlayGui.getCount(); %i++)
		{
			%obj = PlayGui.getObject(%i);
			if(%obj.getClassName()$="GuiShapeNameHud")
			{
				%obj.visible = !%obj.visible;
				return;
			}
		}
	}
}

moveMap.bind(keyboard,"ctrl n",toggleNames);
Now, when you press "ctrl n" it will toggle the visibility of players' names.

Post your questions regarding this issue here.

return to top

memory leak
The real lives of online games
Unless you've been under a rock, you're aware of the immense popularity of massively multiplayer online role-playing games (MMORPGs). Many are out now, and many more are coming in the next year or so. Like so many things, the media tends to gloss over the less savory details and focus on whatever is easily marketed. You never hear the truth!Angry nerd kills ten; news at eleven!
Today, in true investigative fashion; we present you the real MMORPGs. Not all flash and smiles like the developers might want you to think, but something the public must be aware of. An exclusive to the Tune-Up that should change the way you think about these games and what they think about you.

A frank discussion with MMORPGs

Disclaimer: This is rated PG-13, so be prepared for lightly seasoned language.

return to top