Interview with Mark Dochtermann - Page 2

The Quake 3 Engine has a feature called "shaders". I'm sure quite a few people who made levels for SiN are interested in making a few for F.A.K.K.2 because they are familiar with the scripting language. Can you explain what exactly shaders do, as not all people know exactly what they are for?

Jack Mathews: A shader is basically a way for a level designer or a modeller to tell the hardware how he wants the triangles drawn. This is more involved than just checking a box that says "environment map this" or "lightmap this." It allows complete control over how the texture is perturbed, how vertex colors are generated, if geometry is deformed, and what each pass does all in a small scripting language. We use the shader for every triangle drawn - world geometry, character lighting, fonts, even the basic user interface. A sample shader is attached.

Shaders can be added by user mods simply by making a .shader file in the scripts directory. Plus, we've added some enhancements to Quake3's shader system for our own use that could benefit end users. One is that just about any useful number parameter in the shader can be replaced by "fromEntity" and it's controllable by the scripting language (similar to the scripting language from Sin). That means you can change colors of surfaces, move their texture coordinates or verts around, et cetera, from inside game script. We've also added support to let you explicitly define a multitexture shader pass if the user has multitexture, which I used this feature in our techdemo for some better looking water effects. The last thing that comes to mind is that we can generate alphas based on what angle you're viewing a surface from, which we've use in a host of effects from better looking water to volumetric dust fields being lit up by sunlight.

Sample shader:

textures/creeperpens/edenhay
{
qer_editorimage textures/creeperpens/edenhay.tga

{
map textures/micromacro/macro_generic1.tga
tcMod transform 0.996194 -0.0871557 0.0871557 0.996194 0 0
tcMod scale 0.17 0.23
}
{
map textures/creeperpens/edenhay.tga
blendFunc GL_DST_COLOR GL_SRC_COLOR
}
{
map $lightmap
blendFunc GL_DST_COLOR GL_ZERO
}

}

This shader describes a three pass process - First a macro texture, then a base texture, then the lightmap.

What kind of additions have been made to the scripting language?

If anything the script language has been cleaned up and simplified. One big area that was severely lacking in Sin was documentation. Thanks to Eutectic and the others at the Node, this wasn't too much of a problem, but we wanted to fix that problem in F.A.K.K.2. In Fakk 2 the same event system is used in the game dll, the client game dll and the client all for different purposes: scripting, client-side scripting and user interface. To find out what a specific command/event does just type in: eventhelp <eventname>. This will print out what arguments the event takes as well as a brief documentation string. One of the things we have planned for the future is to use the documentation and argument specification to pre-compile the events into a byte code so that developers can immediately see scripting errors and gain a speed improvement.

As always, the game code and client game code will be released to the net once FAKK 2 ships.

Will F.A.K.K.2 ship with the level editor, as was originally planned for SiN (but forgotten by Activision) ?

I don't know if we will have it on the CD, but it will definitely be available to the user community free of charge. It all comes down to a question of support. We cannot afford to spend the time and make the editor "user-friendly" but we still want the community to have the tools they need to make add-on products. Therefore, the path of least resistance is to release the editor after shipping so that there is no expectation of support.

There were some rumors that deathmatch might be played from first person view, is there any truth in this?

Deathmatch is a difficult topic for us because F.A.K.K.2 is a third person POV game. We felt that Raven did a great job with Heretic II, but there aren't that many people who prefer Heretic II to Quake 3 or even Sin CTF. We are still discussing what will be best for the game and haven't made any concrete plans on what F.A.K.K. Deathmatch will be like. The only thing we know for sure is that we aren't going to add a multi-player game to Fakk 2 unless it is truly fun and adds a new dimension to multiplayer gameing. When we do deathmatch, we want to do it right.

If not, is it possible for an end-user to change camera settings in such a way that it will look like you're playing from a first-person perspective?

It is possible to change your POV but it is not a "supported" feature of the game. Part of the problem is that a lot of the player movement in F.A.K.K2 is not predicted because of the players interaction with the environment. This is not a problem in third person but in first person controlling the character is not quite as smooth as a first person game.

<< Page 1 | Page 3 >>