https://wiki.thedarkmod.com/api.php?action=feedcontributions&user=Gildoran&feedformat=atomThe DarkMod Wiki - User contributions [en]2024-03-28T08:58:45ZUser contributionsMediaWiki 1.39.5https://wiki.thedarkmod.com/index.php?title=Common_Texture_Mistakes&diff=4765Common Texture Mistakes2007-10-30T09:03:14Z<p>Gildoran: </p>
<hr />
<div>I've noticed certain mistakes are made by a lot of new or even experienced texture artists, so I thought I'd list them here in the hopes that it might prove helpful.<br />
<br />
--[[User:Gildoran|Gildoran]] 22:18, 24 August 2006 (CDT)<br />
<br />
; Not using exponent-of-2 image dimensions : Any images used by your textures need to have dimensions that are of the form ''2^x'' since those are the only sizes that graphics cards can accept.<br />
: Such sizes include: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, etc<br />
: If an image has a weird size like 300x100, D3 will resize it down to the nearest exponent of 2 (300x100 would become 256x64) resulting in lost image quality.<br />
; Lighting baked into the diffusemap : One of D3's big advantages is its fully-dynamic lighting with bumpmapping and specular highlights... a texture that properly uses these features can look very realistic, especially since its lighting always matches the situation it is used in. Unfortunately, gone are the days of just taking a photo and making it tilable; care must be taken to ensure that the lighting information comes from the normalmap rather than the diffusemap. The diffusemap must not be lit from any one direction, or it interferes with the normalmapping, causing the texture to look ugly when lit from new directions. Taking photos on cloudy days helps. Photos of walls are particularly problematic, since they're often lit from above by the sky. If you can flip your photo in any direction without the direction of the light appearing to change, it probably has good lighting.<br />
<br />
See [[Remove Shadows in Source Images]] for tricks on how to get rid of baked light from photo resources.<br />
<br />
; Having apparent repetitions : The human brain is very good at finding patterns. Unfortunately, this makes it very easy to notice a tiled texture, ruining suspension of disbelief for things like cobble floors, irregular stone walls and dirt. Often the difference between a mediocre texture and a great one is how well it tiles without being noticed. Special/interesting features that stand out tend to draw a player's attention towards the fact that the texture is repeating. Slightly monotonous textures, on the other hand, often have their repetition go unnoticed. It may be a good idea to leave features to things like decals and models.<br />
<br />
; Using an unnecessary specular map :<br />
Specular maps make things look shiny, and should only be used for metal, wet or highly polished surfaces. Adding specular maps to textures that don't need them (like most wood textures) makes them look vaguely plastic. Use specular maps rarely, and keep them subtle.<br />
<br />
<br />
<br />
[[Category:Textures]]</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=GUI_Overlays&diff=2167GUI Overlays2007-01-23T09:17:58Z<p>Gildoran: </p>
<hr />
<div>GUI overlays are a way to draw GUIs over the player's screen. They're used for things such as the HUD, readables and inventory display. They could also be used for things like fading out the player's vision, adding an in-game shop GUI, popping up hints, asking the player if they really want to leave the level, obscuring their vision with a clunky helmet, adding new elements to the HUD without modifying it, etc.<br />
<br />
'''darkmod_events.script''' contains documentation about the various script functions used to manipulate GUI overlays, but it might not be helpful unless some basic concepts about GUI overlays are understood. This page aims to explain those concepts. It assumes knowledge of GUIs.<br />
<br />
== Creating and destroying your first GUI overlay ==<br />
<br />
Let's say you want to draw "''guis/mygui.gui''" over the player's screen. To do that, you call '''createOverlay()''' on the player. For example:<br />
<br />
$player1.createOverlay( "guis/mygui.gui", 100 );<br />
<br />
The second argument (100) is the layer of the overlay. Overlays are drawn in ascending order by layer; overlays in higher layers are drawn on top of overlays in lower layers. The order in which overlays in the same layer are drawn is undefined. The HUD is in layer 0, so in order to ensure that the GUI is drawn over the HUD, we've put it in layer 100.<br />
<br />
So how do you delete the overlay you just created? You need to make use of [http://en.wikipedia.org/wiki/Smart_pointer#Handles handles]. The '''createOverlay()''' function returns a handle that can be used to access the overlay. This handle can then be passed to the '''destroyOverlay()''' function. For example, this will flash the GUI on screen for 5 seconds:<br />
<br />
float overlayHandle = $player1.createOverlay( "guis/mygui.gui", 100 );<br />
sys.wait(5);<br />
$player1.destroyOverlay( overlayHandle );<br />
<br />
If for some reason '''createOverlay()''' fails, it'll return '''GUI_INVALID'''.<br />
<br />
== Working with the HUD and entity GUIs ==<br />
<br />
To access the HUD, use the '''GUI_HUD''' handle. For example, to call the "''foobar''" event in the HUD, you would do:<br />
<br />
$player1.callGui( GUI_HUD, "foobar" );<br />
<br />
Similarly, you can interact with entity GUIs via '''GUI_ENTITY1''', '''GUI_ENTITY2''' and '''GUI_ENTITY3'''. To set a GUI parameter for the second GUI on a book, you might do:<br />
<br />
$book.setGuiFloat( GUI_ENTITY2, "page", 1 );<br />
<br />
== Interactive Overlays ==<br />
<br />
The player can interact with overlays created from interactive GUIs. While an interactive overlay exists, the player will be given a cursor which they can use to click on buttons and such, but their view will not be locked - it is up to the script to do that if so desired. If more than one interactive overlay exists, the player will only interact with the one that is drawn last.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=GUI_Overlays&diff=2166GUI Overlays2007-01-23T09:12:29Z<p>Gildoran: </p>
<hr />
<div>GUI overlays are a way to draw GUIs over the player's screen. They're used for things such as the HUD, readables and inventory display. They could also be used for things like fading out the player's vision, adding an in-game shop GUI, popping up hints, asking the player if they really want to leave the level, obscuring their vision with a clunky helmet, adding new elements to the HUD without modifying it, etc.<br />
<br />
'''darkmod_events.script''' contains documentation about the various script functions used to manipulate GUI overlays, but it might not be helpful unless some basic concepts about GUI overlays are understood. This page aims to explain those concepts. It assumes knowledge of GUIs.<br />
<br />
== Creating and destroying your first GUI overlay ==<br />
<br />
Let's say you want to draw "''guis/mygui.gui''" over the player's screen. To do that, you call '''createOverlay()''' on the player. For example:<br />
<br />
$player1.createOverlay( "guis/mygui.gui", 100 );<br />
<br />
The second argument (100) is the layer of the overlay. Overlays are drawn in ascending order by layer; overlays in higher layers are drawn on top of overlays in lower layers. The order in which overlays in the same layer are drawn is undefined. The HUD is in layer 0, so in order to ensure that the GUI is drawn over the HUD, we've put it in layer 100.<br />
<br />
So how do you delete the overlay you just created? You need to make use of [http://en.wikipedia.org/wiki/Smart_pointer#Handles handles]. The '''createOverlay()''' function returns a handle that can be used to access the overlay. This handle can then be passed to the '''destroyOverlay()''' function. For example, this will flash the GUI on screen for 5 seconds:<br />
<br />
float overlayHandle = $player1.createOverlay( "guis/mygui.gui", 100 );<br />
sys.wait(5);<br />
$player1.destroyOverlay( overlayHandle );<br />
<br />
If for some reason '''createOverlay()''' fails, it'll return '''GUI_INVALID'''.<br />
<br />
== Working with the HUD and entity GUIs ==<br />
<br />
To access the HUD, use the '''GUI_HUD''' handle. For example, to call the "''foobar''" event in the HUD, you would do:<br />
<br />
$player1.callGui( GUI_HUD, "foobar" );<br />
<br />
Similarly, you can interact with entity GUIs via '''GUI_ENTITY1''', '''GUI_ENTITY2''' and '''GUI_ENTITY3'''. To set a GUI parameter for the second GUI on a book, you might do:<br />
<br />
$book.setGuiFloat( GUI_ENTITY2, "page", 1 );</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=GUI_Overlays&diff=2165GUI Overlays2007-01-23T09:04:15Z<p>Gildoran: </p>
<hr />
<div>GUI overlays are a way to draw GUIs over the player's screen. They're used for things such as the HUD, readables and inventory display. They could also be used for things like fading out the player's vision, adding an in-game shop GUI, popping up hints, asking the player if they really want to leave the level, etc.<br />
<br />
'''darkmod_events.script''' contains documentation about the various script functions used to manipulate GUI overlays, but it might not be helpful unless some basic concepts about GUI overlays are understood. This page aims to explain those concepts.<br />
<br />
== Creating and destroying your first GUI overlay ==<br />
<br />
Let's say you want to draw "''guis/mygui.gui''" over the player's screen. To do that, you call '''createOverlay()''' on the player. For example:<br />
<br />
$player1.createOverlay( "guis/mygui.gui", 100 );<br />
<br />
The second argument (100) is the layer of the overlay. Overlays are drawn in ascending order by layer; overlays in higher layers are drawn on top of overlays in lower layers. The order in which overlays in the same layer are drawn is undefined. The HUD is in layer 0, so in order to ensure that the GUI is drawn over the HUD, we've put it in layer 100.<br />
<br />
So how do you delete the overlay you just created? You need to make use of [http://en.wikipedia.org/wiki/Smart_pointer#Handles handles]. The '''createOverlay()''' function returns a handle that can be used to access the overlay. This handle can then be passed to the '''destroyOverlay()''' function. For example, this will flash the GUI on screen for 5 seconds:<br />
<br />
float overlayHandle = $player1.createOverlay( "guis/mygui.gui", 100 );<br />
sys.wait(5);<br />
$player1.destroyOverlay( overlayHandle );<br />
<br />
If for some reason '''createOverlay()''' fails, it'll return '''GUI_INVALID'''.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Scripting&diff=2164Scripting2007-01-23T08:22:01Z<p>Gildoran: </p>
<hr />
<div>Here are some random articles regarding scripting:<br />
<br />
* [[AI Attachment Ingame Editing]]<br />
* [[AI Relations]]<br />
* [[Altering Frob with Scripting]]<br />
* [[BecomeActive, Thinking Entities]]<br />
* [[Button Functionality and Frob Triggers]]<br />
* [[Precaching (def files)]]<br />
* [[Signals]]<br />
* [[Switching to another Map]]<br />
* [[Triggering the Death Menu]]<br />
* [[Triggering Things in other Maps]]<br />
* [[GUI Overlays]]<br />
<br />
[[Category:Scripting]]</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Xdata_file_format&diff=2092Xdata file format2006-12-02T18:36:21Z<p>Gildoran: </p>
<hr />
<div>Xdata (short for eXternal data) files provide a way for scripts to easily load settings that are stored externally. When readables were being coded, people requested that it be possible to load readable settings from an external file instead of being forced to store all readable information in the entity spawn-arguments. Since readables would need to load an arbitrary list of settings from a file, I figured I might as well make them use a general-purpose format. Xdata declarations were created as a result.<br />
<br />
An xdata declaration is pretty much just a dictionary of strings, with a few extra features: precaching of referenced assets may be optionally done, and it's possible to inherit any number of other xdata decls. Xdata declarations are relatively similar to entity definitions (though their syntax is different), but I decided to keep them separate so as not to confuse or fill up the Doom 3 editor's entity list.<br />
<br />
--[[User:Gildoran|Gildoran]] 09:32, 2 December 2006 (CST)<br />
<br />
<br />
<br />
== Creating Xdata Files ==<br />
<br />
Xdata files are stored in '''xdata/''' and end in '''.xd'''. Each xdata file may contain any number of xdata declarations. The basic format of an xdata declaration is as follows:<br />
'''<asset name>'''<br />
{<br />
'''[data goes here]'''<br />
}<br />
<br />
The '''<asset name>''' follows the normal rules for a Doom 3 asset name: It must be a unique identifier which may take the form of a relative path (it may contain slashes, but not as the first or last characters), but spaces are not allowed. For example, the following is a valid xdata declaration:<br />
hello/world/blah<br />
{<br />
}<br />
<br />
Inside the braces, whitespace (including newlines) is ignored, except in string literals. The xdata declaration is evaluated from top to bottom; later statements may override statements that occured earlier.<br />
<br />
=== Key/value pairs ===<br />
<br />
The primary feature of xdata declarations are their key/value pairs. The simplest way to define a key/value pair is:<br />
'''<key string>''' : '''<data string>'''<br />
The strings must be standard C-style strings (enclosed with with double-quotes and escaped with backslashes). Newlines (\n) are allowed. For example:<br />
"name" : "BillyBob"<br />
Like C preprocessor definitions, it is possible to break up a string into multiple lines by using a backslash. This is mostly useful for multi-line paragraphs.<br />
"quote" : "To be or not to be,\n" \<br />
"that is the question.\n" \<br />
"\n -Hamlet\n"<br />
For convenience and ease of reading, another syntax has been added to assist with multi-line paragraphs: (this example is semantically identical to the one above)<br />
"quote" : { "To be or not to be,"<br />
"that is the question."<br />
""<br />
" -Hamlet" }<br />
When values are stored using this format, there is an implicit newline at the end of each string.<br />
<br />
=== Inheritance ===<br />
<br />
It's possible to inherit key/value pairs from other xdata declarations. This is acheived with the import keyword. The simplest syntax is:<br />
import '''<asset name string>'''<br />
The '''<asset name string>''' should be a C-style string. All key/value pairs in the referenced xdata declaration will be copied to the current xdata declaration. In this example, the '''people/bill''' xdata declaration will end up with a name of "Bill" and an occupation of "guard":<br />
people/bill<br />
{<br />
import "people/bob"<br />
"name" : "Bill"<br />
}<br />
<br />
people/bob<br />
{<br />
"name" : "Bob"<br />
"occupation" : "guard"<br />
}<br />
You may only want to load specific keys from another xdata declaration. This is done with the following format:<br />
import { '''<key string 1> <key string 2> ... <key string N>''' } from '''<asset name string>'''<br />
For example, this will only import the key "jabberwocky" from the "entire_encyclopedia" xdata declaration:<br />
import {<br />
"jabberwocky"<br />
} from "entire_encyclopedia"<br />
You can also rename an imported key with this syntax:<br />
import { '''<old key string>''' -> '''<new key string>''' } from '''<asset name string>'''<br />
For example:<br />
import {<br />
"description" -> "desc"<br />
} from "somedecl"<br />
These last two methods of importing things can be combined:<br />
import {<br />
"name"<br />
"occupation" -> "job"<br />
"birthplace" -> "origin"<br />
"hobby"<br />
} from "people/bill"<br />
<br />
=== Precaching ===<br />
<br />
If you use a sound or some other asset in a script, you need to tell Doom 3 to preload the sound by refering to it in an entity's spawn-arguments (such as "snd_turn_on" - note that the prefix '''snd_''' is important), or the game will temporarily hang when the sound is first used. The same applies to xdata declarations; any xdata declarations used by a script need to be referenced in an entity's spawn-arguments or the game may temporarily hang when the xdata declaration is first used. The spawn-argument prefix for xdata declarations is '''xdata_'''.<br />
<br />
Sometimes you'll want to use an xdata declaration to define what assets (such as models or sounds) something should use. However, assets referenced in an xdata declaration aren't preloaded by default. If the '''precache''' keyword occurs anywhere in an xdata declaration, then upon being loaded its contents will be preloaded as though they were an entity definition. It doesn't matter where the precache keyword is placed; the precaching occurs AFTER the entire xdata declaration has been constructed.<br />
letter<br />
{<br />
precache // necessary because Bob's signature is an image<br />
"note" : "Dear Bill, HELLO!"<br />
"signature" : "guis/assets/bobs_signature.tga"<br />
}<br />
<br />
== Loading Xdata Files ==<br />
<br />
A script may copy the contents of an xdata declaration into the spawn-arguments of an entity via the '''loadExternalData()''' script event. Its synopsis is as follows:<br />
'''ent'''.loadExternalData( string '''declaration''', string '''prefix''' );<br />
'''ent''' is the entity to copy the key/value pairs to.<br />
<br />
'''declaration''' is the name of the xdata declaration to copy the key/value pairs from.<br />
<br />
'''prefix''' is prepended to the key names as they're being copied to '''ent'''. It's used to sandbox an xdata declaration and prevent its keys from overriding '''ent'''<nowiki>'s</nowiki> keys.<br />
<br />
This is effectively what occurs:<br />
foreach key in declaration<br />
ent[ prefix + key ] = declaration[ key ];<br />
<br />
For example,<br />
$bill.loadExternalData( "people/bill", "personal_info_" );<br />
will result in "personal_info_name" being set to "Bill" and "personal_info_occupation" being set to "guard".</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=XData_File_Creation&diff=2091XData File Creation2006-12-02T17:43:56Z<p>Gildoran: </p>
<hr />
<div>In order to get custom text for readables into your map, you will have to define the texts somewhere. This happens in the files within the '''xdata/''' folder.<br />
<br />
I will describe a basic single-page readable here. Hopefully I will be able to add more information on creating books and other multi-page readables. See also [[xdata file format]] for detailed information.<br />
<br />
== Create the .xd File ==<br />
Create a new .xd file named after your map file. If your map file is called "readable_tutorial.map", create the file '''xdata/readable_tutorial.xd'''. <br />
<br />
To save time-consuming syntax typing, I suggest copying the content of another .xd file right into yours. There is are already the file readable_test.xd in the xdata/ folder. Open it and copy all of its content into yours.<br />
<br />
A basic readable text can be defined by these two blocks (it's the same text that is used in the [[Readables|Readables Tutorial]]):<br />
<br />
=== The Main Block ===<br />
readables/readable_tutorial/sample<br />
{<br />
precache<br />
"gui_page1" : "guis/readables/page_test.gui"<br />
import {<br />
"title" -> "page1_title"<br />
"body" -> "page1_body"<br />
} from "readables/readable_tutorial/page1"<br />
}<br />
This block is some kind of "Table of Contents" of your readable. It defines which [[gui]] templates each page of your readable is using and which texts are to be displayed. The important part is the first line<br />
readables/readable_tutorial/sample<br />
which is the name used to access this text in the editor. This value corresponds to the '''xdata_contents''' key of your readable entity.<br />
<br />
Secondly, there is the '''import { ... } from''' command, which tells the readable where to look for the actual text to be display on Page 1. It refers to the data block defined below.<br />
<br />
=== The Data Block ===<br />
readables/readable_tutorial/page1<br />
{<br />
"title" : "W00t!"<br />
"body" : "This is a damn fine readable. Read it at your own risk." \<br />
"Absolutely frobable. Totally customizable. Choose your own " \<br />
"background, your own font, your own text size! Heck, even " \<br />
"custom texts are possible..."<br />
}<br />
<br />
Again, the name of the block is important, as it is referred to in the master block. The syntax is quite straight forward, just be sure to add a backslash at the end of the strings to connect them. The last string does not have a backslash.<br />
<br />
== Custom Fonts and Stuff ==<br />
You can use custom fonts, font sizes and backgrounds in your readables. These are defined in the .gui file which is referred to in the master block:<br />
"gui_page1" : "guis/readables/page_test.gui"<br />
Each page can use its own gui (for example if you plan to display page 1 as the book's cover and the rest as ordinary book pages). The tutorial is still to be written: [[GUI Definitions]]<br />
<br />
[[Category:Tutorial]]<br />
[[Category:Editing]]</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Xdata_file_format&diff=2090Xdata file format2006-12-02T17:42:43Z<p>Gildoran: </p>
<hr />
<div>Xdata (short for eXternal data) files provide a way for scripts to easily load settings that are stored externally. When readables were being coded, people requested that it be possible to load readable settings from an external file instead of being forced to store all readable information in the entity spawn-arguments. Since readables would need to load an arbitrary list of settings from a file, I figured I might as well make them use a general-purpose format. Xdata declarations were created as a result.<br />
<br />
An xdata declaration is pretty much just a dictionary of strings, with a few extra features: precaching of referenced assets may be optionally done, and it's possible to inherit any number of other xdata decls. Xdata declarations are relatively similar to entity definitions (though their syntax is different), but I decided to keep them separate so as not to confuse or fill up the Doom 3 editor's entity list.<br />
<br />
--[[User:Gildoran|Gildoran]] 09:32, 2 December 2006 (CST)<br />
<br />
<br />
<br />
== Creating Xdata Files ==<br />
<br />
Xdata files are stored in '''xdata/''' and end in '''.xd'''. Each xdata file may contain any number of xdata declarations. The basic format of an xdata declaration is as follows:<br />
'''<asset name>'''<br />
{<br />
'''[data goes here]'''<br />
}<br />
<br />
The '''<asset name>''' follows the normal rules for a Doom 3 asset name: It must be a unique identifier which may take the form of a relative path (it may contain slashes, but not as the first or last characters), but spaces are not allowed. For example, the following is a valid xdata declaration:<br />
hello/world/blah<br />
{<br />
}<br />
<br />
Inside the braces, whitespace (including newlines) is ignored, except in string literals. The xdata declaration is evaluated from top to bottom; later statements may override statements that occured earlier.<br />
<br />
=== Key/value pairs ===<br />
<br />
The primary feature of xdata declarations are their key/value pairs. The simplest way to define a key/value pair is:<br />
'''<key string>''' : '''<data string>'''<br />
The strings must be standard C-style strings (enclosed with with double-quotes and escaped with backslashes). Newlines (\n) are allowed. For example:<br />
"name" : "BillyBob"<br />
Like C preprocessor definitions, it is possible to break up a string into multiple lines by using a backslash. This is mostly useful for multi-line paragraphs.<br />
"quote" : "To be or not to be,\n" \<br />
"that is the question.\n" \<br />
"\n -Hamlet\n"<br />
For convenience and ease of reading, another syntax has been added to assist with multi-line paragraphs: (this example is semantically identical to the one above)<br />
"quote" : { "To be or not to be,"<br />
"that is the question."<br />
""<br />
" -Hamlet" }<br />
When values are stored using this format, there is an implicit newline at the end of each string.<br />
<br />
== Inheritance ==<br />
<br />
It's possible to inherit key/value pairs from other xdata declarations. This is acheived with the import keyword. The simplest syntax is:<br />
import '''<asset name string>'''<br />
The '''<asset name string>''' should be a C-style string. All key/value pairs in the referenced xdata declaration will be copied to the current xdata declaration. In this example, the '''people/bill''' xdata declaration will end up with a name of "Bill" and an occupation of "guard":<br />
people/bill<br />
{<br />
import "people/bob"<br />
"name" : "Bill"<br />
}<br />
<br />
people/bob<br />
{<br />
"name" : "Bob"<br />
"occupation" : "guard"<br />
}<br />
You may only want to load specific keys from another xdata declaration. This is done with the following format:<br />
import { '''<key string 1> <key string 2> ... <key string N>''' } from '''<asset name string>'''<br />
For example, this will only import the key "jabberwocky" from the "entire_encyclopedia" xdata declaration:<br />
import {<br />
"jabberwocky"<br />
} from "entire_encyclopedia"<br />
You can also rename an imported key with this syntax:<br />
import { '''<old key string>''' -> '''<new key string>''' } from '''<asset name string>'''<br />
For example:<br />
import {<br />
"description" -> "desc"<br />
} from "somedecl"<br />
These last two methods of importing things can be combined:<br />
import {<br />
"name"<br />
"occupation" -> "job"<br />
"birthplace" -> "origin"<br />
"hobby"<br />
} from "people/bill"<br />
<br />
=== Precaching ===<br />
<br />
If you use a sound or some other asset in a script, you need to tell Doom 3 to preload the sound by refering to it in an entity's spawn-arguments (such as "snd_turn_on" - note that the prefix '''snd_''' is important), or the game will temporarily hang when the sound is first used. The same applies to xdata declarations; any xdata declarations used by a script need to be referenced in an entity's spawn-arguments or the game may temporarily hang when the xdata declaration is first used. The spawn-argument prefix for xdata declarations is '''xdata_'''.<br />
<br />
Sometimes you'll want to use an xdata declaration to define what assets (such as models or sounds) something should use. However, assets referenced in an xdata declaration aren't preloaded by default. If the '''precache''' keyword occurs anywhere in an xdata declaration, then upon being loaded its contents will be preloaded as though they were an entity definition. It doesn't matter where the precache keyword is placed; the precaching occurs AFTER the entire xdata declaration has been constructed.<br />
letter<br />
{<br />
precache // necessary because Bob's signature is an image<br />
"note" : "Dear Bill, HELLO!"<br />
"signature" : "guis/assets/bobs_signature.tga"<br />
}<br />
<br />
== Loading Xdata Files ==<br />
<br />
A script may copy the contents of an xdata declaration into the spawn-arguments of an entity via the '''loadExternalData()''' script event. Its synopsis is as follows:<br />
'''ent'''.loadExternalData( string '''declaration''', string '''prefix''' );<br />
'''ent''' is the entity to copy the key/value pairs to.<br />
<br />
'''declaration''' is the name of the xdata declaration to copy the key/value pairs from.<br />
<br />
'''prefix''' is prepended to the key names as they're being copied to '''ent'''. It's used to sandbox an xdata declaration and prevent its keys from overriding '''ent'''<nowiki>'s</nowiki> keys.<br />
<br />
This is effectively what occurs:<br />
foreach key in declaration<br />
ent[ prefix + key ] = declaration[ key ];<br />
<br />
For example,<br />
$bill.loadExternalData( "people/bill", "personal_info_" );<br />
will result in "personal_info_name" being set to "Bill" and "personal_info_occupation" being set to "guard".</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Xdata_file_format&diff=2089Xdata file format2006-12-02T15:32:29Z<p>Gildoran: </p>
<hr />
<div>Xdata (short for eXternal data) files provide a way for scripts to easily load settings that are stored externally. When readables were being coded, people requested that it be possible to load readable settings from an external file instead of being forced to store all readable information in the entity spawn-arguments. Since readables would need to load an arbitrary list of settings from the file, I figured I might as well make them use a general-purpose format. Xdata files were created as a result.<br />
<br />
--[[User:Gildoran|Gildoran]] 09:32, 2 December 2006 (CST)<br />
<br />
(currently under construction - check back in an hour)</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=XData_File_Creation&diff=2088XData File Creation2006-12-02T15:10:23Z<p>Gildoran: </p>
<hr />
<div>In order to get custom text for readables into your map, you will have to define the texts somewhere. This happens in the files within the '''xdata/''' folder. See also [[xdata file format]].<br />
<br />
I will describe a basic single-page readable here. Hopefully I will be able to add more information on creating books and other multi-page readables.<br />
<br />
== Create the .xd File ==<br />
Create a new .xd file named after your map file. If your map file is called "readable_tutorial.map", create the file '''xdata/readable_tutorial.xd'''. <br />
<br />
To save time-consuming syntax typing, I suggest copying the content of another .xd file right into yours. There is are already the file readable_test.xd in the xdata/ folder. Open it and copy all of its content into yours.<br />
<br />
A basic readable text can be defined by these two blocks (it's the same text that is used in the [[Readables|Readables Tutorial]]):<br />
<br />
=== The Main Block ===<br />
readables/readable_tutorial/sample<br />
{<br />
precache<br />
"gui_page1" : "guis/readables/page_test.gui"<br />
import {<br />
"title" -> "page1_title"<br />
"body" -> "page1_body"<br />
} from "readables/readable_tutorial/page1"<br />
}<br />
This block is some kind of "Table of Contents" of your readable. It defines which [[gui]] templates each page of your readable is using and which texts are to be displayed. The important part is the first line<br />
readables/readable_tutorial/sample<br />
which is the name used to access this text in the editor. This value corresponds to the '''xdata_contents''' key of your readable entity.<br />
<br />
Secondly, there is the '''import { ... } from''' command, which tells the readable where to look for the actual text to be display on Page 1. It refers to the data block defined below.<br />
<br />
=== The Data Block ===<br />
readables/readable_tutorial/page1<br />
{<br />
"title" : "W00t!"<br />
"body" : "This is a damn fine readable. Read it at your own risk." \<br />
"Absolutely frobable. Totally customizable. Choose your own " \<br />
"background, your own font, your own text size! Heck, even " \<br />
"custom texts are possible..."<br />
}<br />
<br />
Again, the name of the block is important, as it is referred to in the master block. The syntax is quite straight forward, just be sure to add a backslash at the end of the strings to connect them. The last string does not have a backslash.<br />
<br />
== Custom Fonts and Stuff ==<br />
You can use custom fonts, font sizes and backgrounds in your readables. These are defined in the .gui file which is referred to in the master block:<br />
"gui_page1" : "guis/readables/page_test.gui"<br />
Each page can use its own gui (for example if you plan to display page 1 as the book's cover and the rest as ordinary book pages). The tutorial is still to be written: [[GUI Definitions]]<br />
<br />
[[Category:Tutorial]]<br />
[[Category:Editing]]</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=XData_File_Creation&diff=2087XData File Creation2006-12-02T15:09:52Z<p>Gildoran: </p>
<hr />
<div>In order to get custom text for readables into your map, you will have to define the texts somewhere. This happens in the files within the '''xdata/''' folder. See also [[xdata_file_format]].<br />
<br />
I will describe a basic single-page readable here. Hopefully I will be able to add more information on creating books and other multi-page readables.<br />
<br />
== Create the .xd File ==<br />
Create a new .xd file named after your map file. If your map file is called "readable_tutorial.map", create the file '''xdata/readable_tutorial.xd'''. <br />
<br />
To save time-consuming syntax typing, I suggest copying the content of another .xd file right into yours. There is are already the file readable_test.xd in the xdata/ folder. Open it and copy all of its content into yours.<br />
<br />
A basic readable text can be defined by these two blocks (it's the same text that is used in the [[Readables|Readables Tutorial]]):<br />
<br />
=== The Main Block ===<br />
readables/readable_tutorial/sample<br />
{<br />
precache<br />
"gui_page1" : "guis/readables/page_test.gui"<br />
import {<br />
"title" -> "page1_title"<br />
"body" -> "page1_body"<br />
} from "readables/readable_tutorial/page1"<br />
}<br />
This block is some kind of "Table of Contents" of your readable. It defines which [[gui]] templates each page of your readable is using and which texts are to be displayed. The important part is the first line<br />
readables/readable_tutorial/sample<br />
which is the name used to access this text in the editor. This value corresponds to the '''xdata_contents''' key of your readable entity.<br />
<br />
Secondly, there is the '''import { ... } from''' command, which tells the readable where to look for the actual text to be display on Page 1. It refers to the data block defined below.<br />
<br />
=== The Data Block ===<br />
readables/readable_tutorial/page1<br />
{<br />
"title" : "W00t!"<br />
"body" : "This is a damn fine readable. Read it at your own risk." \<br />
"Absolutely frobable. Totally customizable. Choose your own " \<br />
"background, your own font, your own text size! Heck, even " \<br />
"custom texts are possible..."<br />
}<br />
<br />
Again, the name of the block is important, as it is referred to in the master block. The syntax is quite straight forward, just be sure to add a backslash at the end of the strings to connect them. The last string does not have a backslash.<br />
<br />
== Custom Fonts and Stuff ==<br />
You can use custom fonts, font sizes and backgrounds in your readables. These are defined in the .gui file which is referred to in the master block:<br />
"gui_page1" : "guis/readables/page_test.gui"<br />
Each page can use its own gui (for example if you plan to display page 1 as the book's cover and the rest as ordinary book pages). The tutorial is still to be written: [[GUI Definitions]]<br />
<br />
[[Category:Tutorial]]<br />
[[Category:Editing]]</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Bindings_and_User_Settings&diff=2006Bindings and User Settings2006-09-21T17:15:20Z<p>Gildoran: /* Commands */</p>
<hr />
<div>This page should contain a list of key bindings and other user-modifiable settings.<br />
<br />
== Movement Related ==<br />
<br />
=== Commands ===<br />
<br />
* '''_button5''': Creep<br />
<br />
* '''_impulse24''': Mantle (without jumping)<br />
<br />
* '''_impulse41''': Frob<br />
<br />
* '''_impulse44''': Lean Forward<br />
* '''_impulse45''': Lean Left<br />
* '''_impulse46''': Lean Right<br />
<br />
=== Cvars ===<br />
<br />
* '''in_toggleCrouch''': If set to '''1''', causes the crouch button to act as a toggle.<br />
* '''in_toggleRun''': If set to '''1''', causes the run button to act as a toggle.<br />
* '''in_alwaysRun''': If set to '''1''', causes the player to always run. (probably not useful in a stealth game)<br />
<br />
== Inventory Related ==<br />
<br />
=== Commands ===<br />
<br />
* '''_impulse47''' : Previous item.<br />
* '''_impulse48''' : Next item.<br />
* '''_impulse49''' : Previous group.<br />
* '''_impulse50''' : Next group.<br />
* '''_impulse51''' : Use item.<br />
* '''_impulse52''' : Drop item.<br />
* '''inventory_hotkey ''[item]''''' : Used for setting up inventory hotkeys.<br />
:* '''inventory_hotkey''' : Used by itself, it returns the hotkey string of the currently selected item, if one exists.<br />
:* '''inventory_hotkey someItem''' : Given a hotkey string, it selects a matching item.<br />
:* '''inventory_hotkey ""''' : The empty string hotkey has a special meaning; it unselects inventory items.<br />
: For example, with the compass selected, '''inventory_hotkey''' would return '''"compass"'''. Then typing '''inventory_hotkey compass''' will select the compass, if you have one.<br />
<br />
=== Cvars ===<br />
<br />
* '''tdm_inv_grouping''' Determines whether or not the user-interface uses inventory grouping. It can be changed on the fly without losing the currently selected item.<br />
:* '''0''' means to use a T1/T2 style interface. '''Previous item''' and '''Next item''' are used to scroll through the entire inventory. An empty slot exists between the last and first items of the inventory. '''Previous group''' and '''Next group''' are not functional.<br />
:* '''1''' means to use inventory groups. '''Previous item''' and '''Next item''' are used to scroll through the items in the current group. An empty slot exists between the last and first items of a group. '''Previous group''' and '''Next group''' are used to scroll through the groups of the current inventory in alphabetical order.<br />
:* '''2''' is default, meaning to use a T1/T2 style interface but sort the inventory by group. Items within a given group retain their position relative to eachother, but all items in the first group exist before all items in the second group, and so on. '''Previous item''' and '''Next item''' are used to scroll through the entire inventory. An empty slot exists between the last and first items of the inventory. '''Previous group''' and '''Next group''' are used to scroll through the groups of the current inventory in alphabetical order.<br />
* '''tdm_inv_opacity''' : Controls the opacity of the inventory GUI. The range is anywhere from '''0''' to '''1''', where '''0''' makes it totally invisible and '''1''' makes it fully opaque.<br />
<br />
== Object Manipulation ==<br />
These are the detailed controls for object manipulation:<br />
* Press '''Frob''' to pick up and drop moveable objects<br />
* Press '''Attack''' to throw an object that you've picked up. The longer you hold attack before releasing, the harder you throw it. Throwing is based on mass so you can throw lighter objects farther. The vanilla D3 mass settings are not realistic so you'll notice some things fly all over. That will be fixed by setting better mass ratios and air friction values in our TDM objects.<br />
* Press and hold '''zoom''' to enter "rotation mode"<br />
:While holding zoom:<br />
::*Move the mouse '''up/down''' to "pitch" an object (if straight ahead of you is X and up is Z, this would rotate around the Y axis)<br />
::*Move the mouse '''left/right''' to "roll" an object. This would be rotating around the X axis that comes out straight ahead of you. (I think we really need some visual illustrations for this... oh well)<br />
::*Move the mouse '''left/right''' while holding '''RUN''' to "yaw" the object around the Z axis (straight up). Image you're holding a coffee can right side up and you want to read the label on the other side by turning it toward you. This is what you're doing. <br />
::*(Note: Holding run and moving the mouse up/down does nothing different)<br />
<br />
= [[Cvars]] =<br />
The List of available Dark Mod Cvars can be found here: [[Cvars]]<br />
The List of available Doom 3 Cvars can be found here: [http://www.iddevnet.com/doom3/cvars.php Doom 3 Cvars]<br />
<br />
= Commands = <br />
The List of available Doom 3 console commands can be found here: [http://www.iddevnet.com/doom3/commands.php Doom 3 Console Commands]<br />
<br />
[[Category:General]]</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Bindings_and_User_Settings&diff=2005Bindings and User Settings2006-09-21T16:48:20Z<p>Gildoran: </p>
<hr />
<div>This page should contain a list of key bindings and other user-modifiable settings.<br />
<br />
== Movement Related ==<br />
<br />
=== Commands ===<br />
<br />
* '''_button5''': Creep<br />
<br />
* '''_impulse24''': Mantle (without jumping)<br />
<br />
* '''_impulse41''': Frob<br />
<br />
* '''_impulse44''': Lean Forward<br />
* '''_impulse45''': Lean Left<br />
* '''_impulse46''': Lean Right<br />
<br />
=== Cvars ===<br />
<br />
* '''in_toggleCrouch''': If set to '''1''', causes the crouch button to act as a toggle.<br />
* '''in_toggleRun''': If set to '''1''', causes the run button to act as a toggle.<br />
* '''in_alwaysRun''': If set to '''1''', causes the player to always run. (probably not useful in a stealth game)<br />
<br />
== Inventory Related ==<br />
<br />
=== Commands ===<br />
<br />
* '''_impulse47''' : Previous item.<br />
* '''_impulse48''' : Next item.<br />
* '''_impulse49''' : Previous group.<br />
* '''_impulse50''' : Next group.<br />
* '''_impulse51''' : Use item.<br />
* '''_impulse52''' : Drop item.<br />
* '''inventory_hotkey ''[item]''''' : Used for setting up inventory hotkeys.<br />
:* '''inventory_hotkey''' : Used by itself, it returns the hotkey string of the currently selected item, if one exists.<br />
:* '''inventory_hotkey someItem''' : Given a hotkey string, it selects a matching item.<br />
:* '''inventory_hotkey ""''' : The empty string hotkey has a special meaning; it unselects everything.<br />
: For example, with the compass selected, '''inventory_hotkey''' would return '''"compass"'''. Then typing '''inventory_hotkey compass''' will select the compass, if you have one.<br />
<br />
=== Cvars ===<br />
<br />
* '''tdm_inv_grouping''' Determines whether or not the user-interface uses inventory grouping. It can be changed on the fly without losing the currently selected item.<br />
:* '''0''' means to use a T1/T2 style interface. '''Previous item''' and '''Next item''' are used to scroll through the entire inventory. An empty slot exists between the last and first items of the inventory. '''Previous group''' and '''Next group''' are not functional.<br />
:* '''1''' means to use inventory groups. '''Previous item''' and '''Next item''' are used to scroll through the items in the current group. An empty slot exists between the last and first items of a group. '''Previous group''' and '''Next group''' are used to scroll through the groups of the current inventory in alphabetical order.<br />
:* '''2''' is default, meaning to use a T1/T2 style interface but sort the inventory by group. Items within a given group retain their position relative to eachother, but all items in the first group exist before all items in the second group, and so on. '''Previous item''' and '''Next item''' are used to scroll through the entire inventory. An empty slot exists between the last and first items of the inventory. '''Previous group''' and '''Next group''' are used to scroll through the groups of the current inventory in alphabetical order.<br />
* '''tdm_inv_opacity''' : Controls the opacity of the inventory GUI. The range is anywhere from '''0''' to '''1''', where '''0''' makes it totally invisible and '''1''' makes it fully opaque.<br />
<br />
== Object Manipulation ==<br />
These are the detailed controls for object manipulation:<br />
* Press '''Frob''' to pick up and drop moveable objects<br />
* Press '''Attack''' to throw an object that you've picked up. The longer you hold attack before releasing, the harder you throw it. Throwing is based on mass so you can throw lighter objects farther. The vanilla D3 mass settings are not realistic so you'll notice some things fly all over. That will be fixed by setting better mass ratios and air friction values in our TDM objects.<br />
* Press and hold '''zoom''' to enter "rotation mode"<br />
:While holding zoom:<br />
::*Move the mouse '''up/down''' to "pitch" an object (if straight ahead of you is X and up is Z, this would rotate around the Y axis)<br />
::*Move the mouse '''left/right''' to "roll" an object. This would be rotating around the X axis that comes out straight ahead of you. (I think we really need some visual illustrations for this... oh well)<br />
::*Move the mouse '''left/right''' while holding '''RUN''' to "yaw" the object around the Z axis (straight up). Image you're holding a coffee can right side up and you want to read the label on the other side by turning it toward you. This is what you're doing. <br />
::*(Note: Holding run and moving the mouse up/down does nothing different)<br />
<br />
= [[Cvars]] =<br />
The List of available Dark Mod Cvars can be found here: [[Cvars]]<br />
The List of available Doom 3 Cvars can be found here: [http://www.iddevnet.com/doom3/cvars.php Doom 3 Cvars]<br />
<br />
= Commands = <br />
The List of available Doom 3 console commands can be found here: [http://www.iddevnet.com/doom3/commands.php Doom 3 Console Commands]<br />
<br />
[[Category:General]]</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Bindings_and_User_Settings&diff=2002Bindings and User Settings2006-09-21T01:34:14Z<p>Gildoran: </p>
<hr />
<div>This page should contain a list of key bindings and other user-modifiable settings.<br />
<br />
== Commands ==<br />
<br />
=== Inventory Related ===<br />
<br />
* '''_impulse47''' : Previous item.<br />
* '''_impulse48''' : Next item.<br />
* '''_impulse49''' : Previous group.<br />
* '''_impulse50''' : Next group.<br />
* '''_impulse51''' : Use item.<br />
* '''_impulse52''' : Drop item.<br />
* '''inventory_hotkey ''[item]''''' : Item hotkey.<br />
<br />
=== Leaning keys ===<br />
* '''_impulse44''': Forward<br />
* '''_impulse45''': Left<br />
* '''_impulse46''': Right<br />
<br />
* '''_impulse24''': Mantle key<br />
* '''_impulse41''': Use key<br />
<br />
* '''_button5''' : Creep key<br />
<br />
== Toggle crouch ==<br />
Make the following change in your DoomConfig.cfg to toggle crouch:<br />
seta in_toggleCrouch "1"<br />
Toggle run:<br />
Make the following change in your doomconfig.cfg to toggle run:<br />
seta in_toggleRun "1"<br />
There's also "in_alwaysRun", although I don't know what kind of person wants "always run" on in a stealth game... <br />
<br />
== Rotation ==<br />
Hold down zoom and move the mouse to rotate objects. <br />
<br />
== Object Manipulation ==<br />
These are the detailed controls for object manipulation:<br />
* Press '''Frob''' to pick up and drop moveable objects<br />
* Press '''Attack''' to throw an object that you've picked up. The longer you hold attack before releasing, the harder you throw it. Throwing is based on mass so you can throw lighter objects farther. The vanilla D3 mass settings are not realistic so you'll notice some things fly all over. That will be fixed by setting better mass ratios and air friction values in our TDM objects.<br />
* Press and hold '''zoom''' to enter "rotation mode"<br />
:While holding zoom:<br />
::*Move the mouse '''up/down''' to "pitch" an object (if straight ahead of you is X and up is Z, this would rotate around the Y axis)<br />
::*Move the mouse '''left/right''' to "roll" an object. This would be rotating around the X axis that comes out straight ahead of you. (I think we really need some visual illustrations for this... oh well)<br />
::*Move the mouse '''left/right''' while holding '''RUN''' to "yaw" the object around the Z axis (straight up). Image you're holding a coffee can right side up and you want to read the label on the other side by turning it toward you. This is what you're doing. <br />
::*(Note: Holding run and moving the mouse up/down does nothing different)<br />
<br />
= [[Cvars]] =<br />
The List of available Dark Mod Cvars can be found here: [[Cvars]]<br />
The List of available Doom 3 Cvars can be found here: [http://www.iddevnet.com/doom3/cvars.php Doom 3 Cvars]<br />
<br />
= Commands = <br />
The List of available Doom 3 console commands can be found here: [http://www.iddevnet.com/doom3/commands.php Doom 3 Console Commands]<br />
<br />
[[Category:General]]</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Bindings_and_User_Settings&diff=1881Bindings and User Settings2006-09-12T20:50:24Z<p>Gildoran: /* Commands */</p>
<hr />
<div>This page should contain a list of key bindings and other user-modifiable settings.<br />
<br />
== Inventory Related ==<br />
<br />
=== Commands ===<br />
* '''_impulse47''' : Previous item.<br />
* '''_impulse48''' : Next item.<br />
* '''_impulse49''' : Previous group.<br />
* '''_impulse50''' : Next group.<br />
* '''_impulse51''' : Use item.<br />
* '''_impulse52''' : Drop item.<br />
* '''_button5''' : Creep key<br />
<br />
== Leaning keys ==<br />
* '''_impulse44''': Forward<br />
* '''_impulse45''': Left<br />
* '''_impulse46''': Right<br />
<br />
* '''_impulse24''': Mantle key<br />
* '''_impulse41''': Use key<br />
<br />
== Toggle crouch ==<br />
Make the following change in your DoomConfig.cfg to toggle crouch:<br />
seta in_toggleCrouch "1"<br />
Toggle run:<br />
Make the following change in your doomconfig.cfg to toggle run:<br />
seta in_toggleRun "1"<br />
There's also "in_alwaysRun", although I don't know what kind of person wants "always run" on in a stealth game... <br />
<br />
== Rotation ==<br />
Hold down zoom and move the mouse to rotate objects. <br />
<br />
== Object Manipulation ==<br />
These are the detailed controls for object manipulation:<br />
* Press '''Frob''' to pick up and drop moveable objects<br />
* Press '''Attack''' to throw an object that you've picked up. The longer you hold attack before releasing, the harder you throw it. Throwing is based on mass so you can throw lighter objects farther. The vanilla D3 mass settings are not realistic so you'll notice some things fly all over. That will be fixed by setting better mass ratios and air friction values in our TDM objects.<br />
* Press and hold '''zoom''' to enter "rotation mode"<br />
:While holding zoom:<br />
::*Move the mouse '''up/down''' to "pitch" an object (if straight ahead of you is X and up is Z, this would rotate around the Y axis)<br />
::*Move the mouse '''left/right''' to "roll" an object. This would be rotating around the X axis that comes out straight ahead of you. (I think we really need some visual illustrations for this... oh well)<br />
::*Move the mouse '''left/right''' while holding '''RUN''' to "yaw" the object around the Z axis (straight up). Image you're holding a coffee can right side up and you want to read the label on the other side by turning it toward you. This is what you're doing. <br />
::*(Note: Holding run and moving the mouse up/down does nothing different)<br />
<br />
= [[Cvars]] =<br />
The List of available Dark Mod Cvars can be found here: [[Cvars]]<br />
The List of available Doom 3 Cvars can be found here: [http://www.iddevnet.com/doom3/cvars.php Doom 3 Cvars]<br />
<br />
= Commands = <br />
The List of available Doom 3 console commands can be found here: [http://www.iddevnet.com/doom3/commands.php Doom 3 Console Commands]</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Texture_Creation_-_Basic_Tutorial&diff=1755Texture Creation - Basic Tutorial2006-09-10T17:08:30Z<p>Gildoran: /* Create your material file */</p>
<hr />
<div>{{Original_Reference|SneaksieDave|3814}}<br />
<br />
For what seems like forever, we've been wanting for textures. The donated DVD, countless free sources on the web, new 'techniques and ideas' on how to make them. That's all great, but for whatever reasons, we still don't have much. A game like this needs a TON of textures, and TDM is lacking them badly. So I wanted to try to learn how to do this mysterious, wonderous, magick...<br />
<br />
Erm, well, it's not magick. Far from it, in fact. This tutorial isn't for those of you who already know how to do this*, and already know it's not magick. This tutorial is for the rest of us, those who have been too scared or lazy to even bother asking "how do I?", like me. (It's the former, honest!)<br />
<br />
One other thing: this is not a Photoshop tutorial. Photoshop does a whole lot of things, and I don't know squat about it yet. Tutorials for it are all over the place, so just Google it.<br />
<br />
= Texture Creation for the Rest of Us =<br />
<br />
== Prerequisits ==<br />
You'll need: (to follow this tutorial, not necessarily for the process)<br />
* Photoshop<br />
* Nvidia normal map plugin - grab it here: http://developer.nvidia.com/object/photoshop_dds_plugins.html<br />
<br />
<br />
= Off we go =<br />
<br />
== Get your source pic ==<br />
This could be anything from a photograph you took, to a free texture download from the internet, to a hand drawn picture, if you're one of those fortunate enough to possess that skill.<br />
<br />
If you do want to take photos, some tips:<br />
* try to shoot on an overcast day; the diffuse light will remove most unwanted shadows<br />
* try to take the photo as perfectly face-on to the surface as you can manage. If your end result isn't perfect, don't worry, there are ways to fix it (transform->skew, to name one)<br />
* try to select an area that will be tile-able (if that's what you want)<br />
* try to capture a large area such that you'll have enough to work with, but not so big that your resolution on the final product will suck<br />
<br />
== Inspect your image ==<br />
In Photoshop, inspect the source image. If you're going to tile it, try to find a regular repeating area. This is only to make your job easier. You can tile anything, really, but it depends on how much work you want to give yourself. If you don't know what I mean here, at the next step you will.<br />
<br />
After you've chosen a rough tile-able area (from here forward I'm going to assume you are doing a tiled texture), crop that area out, and size your image to the desired size ratio. I wouldn't go lower than 1024 resolution at this stage of the work, or you'll start losing picture quality quickly. So set it to 2048X1024, or 1024X1024, etc. The reason we need to fix the size ratio (not the final size) at this stage is for the next step.<br />
<br />
== Set the offset ==<br />
Go to Filter->Other->Offset. You want to set the horizontal and vertical to be exactly half of your cropped picture's width and height. That will make the opposite edges of the texture meet each other in the middle of the view, so you can make it really tile-able.<br />
<br />
== Make the seams disappear ==<br />
See those seams running right down the middle of the pic, vertically and horizontally? You have to make them disappear. Get to know the clone tool. (Google...) There are many other ways to shuffle pixels too, but I'll leave the specifics up to you. This is usually the hardest, most time consuming step.<br />
<br />
Once you've blended the lines away, run the Offset filter again to restore the correct layout of your pic, and save it out in a nice high quality (but not too big to manage) format. This is the "diffuse" image. We're using 24bit TGA for TDM.<br />
<br />
== Create a normal map ==<br />
Now that the diffuse is done, using that same pic, open Filter->Nvidia Tools->NormalMapFilter. You'll probably have to play with the values for a while to get a feel for it, and to get a normal map you are happy with. This is a rough approximation method, by no means as accurate as actually modelling a texture, but it works pretty good in most cases. Basically, it will make light areas "high" and dark areas "low". Learn how to manipulate color levels in Photoshop, and you'll be making good normal maps with the Nvidia filter in no time. If you think about it, there are countless ways to adjust the image (in fact, you're not even restricted to using the diffuse image as the base of the normal map...) to get desired results - inverting colors, brightness and contrast controls, painting over areas, gradients, etc. It's a "feel" thing, so you'll have to develop that for yourself. After creating your desired normal map (try not to make it too blurry, or too sharp, or too bumpy - yuck), save it out as you did with the diffuse image, with "_local" appended.<br />
<br />
== Add a specular map ==<br />
If you want a specular map, the process is even more subjective. There are countless ways in Photoshop to adjust color and light level and even invert everything or parts or mask out areas. Specular maps work as such: Darker is rendered as dull, lighter is rendered as shiny. Get it? Think of the possibilities, and have fun with it. You can get some pretty amazing results with just minutes of work. Save that image out as you did the diffuse, with "_s" appended.<br />
<br />
= Create your material file =<br />
Create a material for the texture. In the materials folder, create a file like mytex.mtr, and add the following:<br />
<br />
textures/your_desired_editor_texture_folder/your_texture_name<br />
{<br />
[TDM has custom surface types here. for example, wood, stone, glass]<br />
<br />
qer_editorimage textures/your_file_folder/your_texture_name<br />
<br />
bumpmap textures/your_file_folder/your_texture_name_local<br />
diffusemap textures/your_file_folder/your_texture_name<br />
specularmap textures/your_file_folder/your_texture_name_s<br />
<br />
// This is the code required for frob highlighting this texture<br />
{<br />
if ( parm11 > 0 )<br />
blend gl_dst_color, gl_one<br />
map _white.tga<br />
rgb 0.40 * parm11<br />
}<br />
{<br />
if ( parm11 > 0 )<br />
blend add<br />
map textures/your_file_folder/your_texture_name<br />
rgb 0.15 * parm11<br />
}<br />
}<br />
<br />
Oh and don't use Notepad, it sucks. That's it. Your new texture should appear in both the editor and in-game.<br />
<br />
= Summary =<br />
So you see, it's really quite simple:<br />
* Crop the desired area<br />
* Make it tileable if necessary<br />
* Generate a normal map<br />
* Create a specular map if you want one<br />
* Include it in a material file<br />
* DONE<br />
<br />
Those who know more about this than me (I've been doing it all of one day so far) are encouraged to contribute tips if you have them.<br />
<br />
= Links =<br />
* [http://developer.nvidia.com/object/photoshop_dds_plugins.html nVidia Normal Map PlugIn]<br />
* [http://www.gimp.org/tutorials/Tileable_Textures/ Quick GIMP tutorial for tileable textures]<br />
* [http://www.stormvision.net/index.cfm/act/tutorials/tutorial_ID/1 Another tileable texture tutorial]<br />
* [http://nifelheim.dyndns.org/~cocidius/normalmap/ GIMP normalmap plugin]<br />
* [http://www.manucornet.net/Informatique/Texturize.php#download GIMP texturize plugin *THIS IS AMAZING*]<br />
* [http://www.doom3world.org/phpbb2/viewtopic.php?t=11893 Doom3World texture tutorials]<br />
* [http://www.quake3bits.com/htm/tutorials/creating_bumpmaps_from_images.htm Kat's normal-map making tutorial]<br />
<br />
[[Category:Textures]]<br />
[[Category:Tutorial]]</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Texture_Creation_-_Basic_Tutorial&diff=1754Texture Creation - Basic Tutorial2006-09-10T17:08:16Z<p>Gildoran: /* Create your material file */</p>
<hr />
<div>{{Original_Reference|SneaksieDave|3814}}<br />
<br />
For what seems like forever, we've been wanting for textures. The donated DVD, countless free sources on the web, new 'techniques and ideas' on how to make them. That's all great, but for whatever reasons, we still don't have much. A game like this needs a TON of textures, and TDM is lacking them badly. So I wanted to try to learn how to do this mysterious, wonderous, magick...<br />
<br />
Erm, well, it's not magick. Far from it, in fact. This tutorial isn't for those of you who already know how to do this*, and already know it's not magick. This tutorial is for the rest of us, those who have been too scared or lazy to even bother asking "how do I?", like me. (It's the former, honest!)<br />
<br />
One other thing: this is not a Photoshop tutorial. Photoshop does a whole lot of things, and I don't know squat about it yet. Tutorials for it are all over the place, so just Google it.<br />
<br />
= Texture Creation for the Rest of Us =<br />
<br />
== Prerequisits ==<br />
You'll need: (to follow this tutorial, not necessarily for the process)<br />
* Photoshop<br />
* Nvidia normal map plugin - grab it here: http://developer.nvidia.com/object/photoshop_dds_plugins.html<br />
<br />
<br />
= Off we go =<br />
<br />
== Get your source pic ==<br />
This could be anything from a photograph you took, to a free texture download from the internet, to a hand drawn picture, if you're one of those fortunate enough to possess that skill.<br />
<br />
If you do want to take photos, some tips:<br />
* try to shoot on an overcast day; the diffuse light will remove most unwanted shadows<br />
* try to take the photo as perfectly face-on to the surface as you can manage. If your end result isn't perfect, don't worry, there are ways to fix it (transform->skew, to name one)<br />
* try to select an area that will be tile-able (if that's what you want)<br />
* try to capture a large area such that you'll have enough to work with, but not so big that your resolution on the final product will suck<br />
<br />
== Inspect your image ==<br />
In Photoshop, inspect the source image. If you're going to tile it, try to find a regular repeating area. This is only to make your job easier. You can tile anything, really, but it depends on how much work you want to give yourself. If you don't know what I mean here, at the next step you will.<br />
<br />
After you've chosen a rough tile-able area (from here forward I'm going to assume you are doing a tiled texture), crop that area out, and size your image to the desired size ratio. I wouldn't go lower than 1024 resolution at this stage of the work, or you'll start losing picture quality quickly. So set it to 2048X1024, or 1024X1024, etc. The reason we need to fix the size ratio (not the final size) at this stage is for the next step.<br />
<br />
== Set the offset ==<br />
Go to Filter->Other->Offset. You want to set the horizontal and vertical to be exactly half of your cropped picture's width and height. That will make the opposite edges of the texture meet each other in the middle of the view, so you can make it really tile-able.<br />
<br />
== Make the seams disappear ==<br />
See those seams running right down the middle of the pic, vertically and horizontally? You have to make them disappear. Get to know the clone tool. (Google...) There are many other ways to shuffle pixels too, but I'll leave the specifics up to you. This is usually the hardest, most time consuming step.<br />
<br />
Once you've blended the lines away, run the Offset filter again to restore the correct layout of your pic, and save it out in a nice high quality (but not too big to manage) format. This is the "diffuse" image. We're using 24bit TGA for TDM.<br />
<br />
== Create a normal map ==<br />
Now that the diffuse is done, using that same pic, open Filter->Nvidia Tools->NormalMapFilter. You'll probably have to play with the values for a while to get a feel for it, and to get a normal map you are happy with. This is a rough approximation method, by no means as accurate as actually modelling a texture, but it works pretty good in most cases. Basically, it will make light areas "high" and dark areas "low". Learn how to manipulate color levels in Photoshop, and you'll be making good normal maps with the Nvidia filter in no time. If you think about it, there are countless ways to adjust the image (in fact, you're not even restricted to using the diffuse image as the base of the normal map...) to get desired results - inverting colors, brightness and contrast controls, painting over areas, gradients, etc. It's a "feel" thing, so you'll have to develop that for yourself. After creating your desired normal map (try not to make it too blurry, or too sharp, or too bumpy - yuck), save it out as you did with the diffuse image, with "_local" appended.<br />
<br />
== Add a specular map ==<br />
If you want a specular map, the process is even more subjective. There are countless ways in Photoshop to adjust color and light level and even invert everything or parts or mask out areas. Specular maps work as such: Darker is rendered as dull, lighter is rendered as shiny. Get it? Think of the possibilities, and have fun with it. You can get some pretty amazing results with just minutes of work. Save that image out as you did the diffuse, with "_s" appended.<br />
<br />
= Create your material file =<br />
Create a material for the texture. In the materials folder, create a file like mytex.mtr, and add the following:<br />
<br />
textures/your_desired_editor_texture_folder/your_texture_name<br />
{<br />
[TDM has custom surface types here. for example, wood, stone, glass]<br />
<br />
qer_editorimage textures/your_file_folder/your_texture_name<br />
<br />
bumpmap textures/your_file_folder/your_texture_name_local<br />
diffusemap textures/your_file_folder/your_texture_name<br />
specularmap textures/your_file_folder/your_texture_name_s<br />
<br />
<br />
// This is the code required for frob highlighting this texture<br />
{<br />
if ( parm11 > 0 )<br />
blend gl_dst_color, gl_one<br />
map _white.tga<br />
rgb 0.40 * parm11<br />
}<br />
{<br />
if ( parm11 > 0 )<br />
blend add<br />
map textures/your_file_folder/your_texture_name<br />
rgb 0.15 * parm11<br />
}<br />
}<br />
<br />
Oh and don't use Notepad, it sucks. That's it. Your new texture should appear in both the editor and in-game.<br />
<br />
= Summary =<br />
So you see, it's really quite simple:<br />
* Crop the desired area<br />
* Make it tileable if necessary<br />
* Generate a normal map<br />
* Create a specular map if you want one<br />
* Include it in a material file<br />
* DONE<br />
<br />
Those who know more about this than me (I've been doing it all of one day so far) are encouraged to contribute tips if you have them.<br />
<br />
= Links =<br />
* [http://developer.nvidia.com/object/photoshop_dds_plugins.html nVidia Normal Map PlugIn]<br />
* [http://www.gimp.org/tutorials/Tileable_Textures/ Quick GIMP tutorial for tileable textures]<br />
* [http://www.stormvision.net/index.cfm/act/tutorials/tutorial_ID/1 Another tileable texture tutorial]<br />
* [http://nifelheim.dyndns.org/~cocidius/normalmap/ GIMP normalmap plugin]<br />
* [http://www.manucornet.net/Informatique/Texturize.php#download GIMP texturize plugin *THIS IS AMAZING*]<br />
* [http://www.doom3world.org/phpbb2/viewtopic.php?t=11893 Doom3World texture tutorials]<br />
* [http://www.quake3bits.com/htm/tutorials/creating_bumpmaps_from_images.htm Kat's normal-map making tutorial]<br />
<br />
[[Category:Textures]]<br />
[[Category:Tutorial]]</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Detail_Textures&diff=1669Detail Textures2006-08-27T22:21:07Z<p>Gildoran: </p>
<hr />
<div>I think I've come up with a good way of blending detail textures. This method is designed to simulate the "soft light" blending of photoshop/GIMP. (it pretty much just modulates then scales by 2) The advantage over regular modulation is that a correctly designed detail texture won't change the average color of the material, whereas modulation will always darken the material. This means that if a player is far from a surface with a detail texture, you can switch the detail pass on/off without the player noticing any changes in brightness.<br />
<br />
--[[User:Gildoran|Gildoran]] 17:00, 27 August 2006 (CDT)<br />
<br />
== Making the Detail Texture: ==<br />
<br />
You need to make a greyscale detail texture. (actually, colored textures work just fine too - they'll tint the material) Middle-grey will leave the material unchanged. Darker colors will darken the material and lighter colors will lighten it. The average color of the detail texture should be middle grey, so that on the lowest mipmap level the detail texture doesn't noticably modify the material.<br />
<br />
== Simple Fixed Blending: ==<br />
<br />
To blend the detail texture, add the following render pass to your material:<br />
<pre>{<br />
blend gl_dst_color, gl_src_color<br />
map yourDetailTexture<br />
}</pre> You'll probably want to scale down the detail pass and maybe even rotate it. You can also apply more than one detail pass.<br />
<br />
== Scaled Intensity Blending: ==<br />
<br />
The previous method has the disadvantage that the only way to control the intensity of the detail texture is to adjust the contrast of the image; it can't be tweaked per-material.<br />
<br />
This method allows you to adjust the intensity of the detail image, at the expense of requiring an extra render pass. Also, the detail texture needs to be inverted. (though most detail textures would probably look fine without being inverted)<br />
<br />
The render passes are as follows:<br />
<pre>{<br />
blend gl_zero, gl_one_minus_src_color<br />
map yourDetailTexture<br />
rgb detailAlpha<br />
scale 2, 2 // or whatever<br />
}<br />
{<br />
blend gl_dst_color, gl_one<br />
map _white<br />
rgb detailAlpha/(2-detailAlpha)<br />
}</pre><br />
In the above code, ''detailAlpha'' would be the intensity of the detail texture, ranging from 0 to 1. You could use something like ''parm3'' if you wanted to scale it on the fly. Again, it's possible to use more than one detail pass.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Detail_Textures&diff=1668Detail Textures2006-08-27T22:20:31Z<p>Gildoran: </p>
<hr />
<div>I think I've come up with a good way of blending detail textures. This method is designed to simulate the "soft light" blending of photoshop/GIMP. (it pretty much just modulates then scales by 2) The advantage over regular modulation is that a correctly designed detail texture won't change the average color of the material, whereas modulation will always darken the material. This means that if a player is far from a surface with a detail texture, you can switch the detail pass on/off without the player noticing any changes in brightness.<br />
<br />
--[[User:Gildoran|Gildoran]] 17:00, 27 August 2006 (CDT)<br />
<br />
== Making the Detail Texture: ==<br />
<br />
You need to make a greyscale detail texture. (actually, colored textures work just fine too - they'll tint the material) Middle-grey will leave the material unchanged. Darker colors will darken the material and lighter colors will lighten it. The average color of the detail texture should be middle grey, so that on the lowest mipmap level the detail texture doesn't noticably modify the material.<br />
<br />
== Simple Fixed Blending: ==<br />
<br />
To blend the detail texture, add the following render pass to your material:<br />
<pre>{<br />
blend gl_dst_color, gl_src_color<br />
map yourDetailTexture<br />
}</pre> You'll probably want to scale down the detail pass and maybe even rotate it. You can also apply more than one detail pass.<br />
<br />
== Scaled Intensity Blending: ==<br />
<br />
The previous method has the disadvantage that the only way to control the intensity of the detail texture is to adjust the contrast of the image; it can't be tweaked per-material.<br />
<br />
This method allows you to adjust the intensity of the detail image, at the expense of requiring an extra render pass. Also, the detail texture needs to be inverted. (though most detail textures would probably look fine without being inverted)<br />
<br />
The render passes are as follows:<br />
<pre>{<br />
blend gl_zero, gl_one_minus_src_color<br />
map yourDetailTexture<br />
rgb detailAlpha<br />
scale 2, 2 // or whatever<br />
}<br />
{<br />
blend gl_one, gl_src_color<br />
map _white<br />
rgb detailAlpha/(2-detailAlpha)<br />
}</pre><br />
In the above code, ''detailAlpha'' would be the intensity of the detail texture, ranging from 0 to 1. You could use something like ''parm3'' if you wanted to scale it on the fly. Again, it's possible to use more than one detail pass.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Detail_Textures&diff=1667Detail Textures2006-08-27T22:12:16Z<p>Gildoran: </p>
<hr />
<div>I think I've come up with a good way of blending detail textures. This method is designed to simulate the "soft light" blending of photoshop/GIMP. (it pretty much just modulates then scales by 2) The advantage over regular modulation is that a correctly designed detail texture won't change the average color of the material, whereas modulation will always darken the material. This means that if a player is far from a surface with a detail texture, you can switch the detail pass on/off without the player noticing any changes in brightness.<br />
<br />
--[[User:Gildoran|Gildoran]] 17:00, 27 August 2006 (CDT)<br />
<br />
== Making the Detail Texture: ==<br />
<br />
You need to make a greyscale detail texture. (actually, colored textures work just fine too - they'll tint the material) Middle-grey will leave the material unchanged. Darker colors will darken the material and lighter colors will lighten it. The average color of the detail texture should be middle grey, so that on the lowest mipmap level the detail texture doesn't noticably modify the material.<br />
<br />
== Simple Fixed Blending: ==<br />
<br />
To blend the detail texture, add the following render pass to your material:<br />
<pre>{<br />
blend gl_dst_color, gl_src_color<br />
map yourDetailTexture<br />
}</pre> You'll probably want to scale down the detail pass and maybe even rotate it. You can also apply more than one detail pass.<br />
<br />
== Scaled Intensity Blending: ==<br />
<br />
The previous method has the disadvantage that the only way to control the intensity of the detail texture is to adjust the contrast of the image; it can't be tweaked per-material.<br />
<br />
This method allows you to adjust the intensity of the detail image, at the expense of requiring an extra render pass. Also, the detail texture needs to be inverted. (though most detail textures would probably look fine without being inverted)<br />
<br />
The render passes are as follows:<br />
<pre>{<br />
blend gl_zero, gl_one_minus_src_color<br />
map yourDetailTexture<br />
rgb detailAlpha<br />
scale 2, 2 // or whatever<br />
}<br />
{<br />
blend gl_dst_color, gl_one<br />
map _white<br />
rgb detailAlpha/(2-detailAlpha)<br />
}</pre><br />
In the above code, ''detailAlpha'' would be the intensity of the detail texture, ranging from 0 to 1. You could use something like ''parm3'' if you wanted to scale it on the fly. Again, it's possible to use more than one detail pass.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Detail_Textures&diff=1666Detail Textures2006-08-27T22:12:01Z<p>Gildoran: </p>
<hr />
<div>I think I've come up with a good way of blending detail textures. This method is designed to simulate the "soft light" blending of photoshop/GIMP. (it pretty much just modulates then scales by 2) The advantage over regular modulation is that a correctly designed detail texture won't change the average color of the material, whereas modulation will always darken the material. This means that if a player is far from a surface with a detail texture, you can switch the detail pass on/off without the player noticing any changes in brightness.<br />
<br />
--[[User:Gildoran|Gildoran]] 17:00, 27 August 2006 (CDT)<br />
<br />
== Making the Detail Texture: ==<br />
<br />
You need to make a greyscale detail texture. (actually, colored textures work just fine too - they'll tint the material) Middle-grey will leave the material unchanged. Darker colors will darken the material and lighter colors will lighten it. The average color of the detail texture should be middle grey, so that on the lowest mipmap level the detail texture doesn't noticably modify the material.<br />
<br />
== Simple Fixed Blending: ==<br />
<br />
To blend the detail texture, add the following render pass to your material:<br />
<pre>{<br />
blend gl_dst_color, gl_src_color<br />
map yourDetailTexture<br />
}</pre> You'll probably want to scale down the detail pass and maybe even rotate it. You can also apply more than one detail pass.<br />
<br />
== Scaled Intensity Blending: ==<br />
<br />
The previous method has the disadvantage that the only way to control the intensity of the detail texture is to adjust the contrast of the image; it can't be tweaked per-material.<br />
<br />
This method allows you to adjust the intensity of the detail image, at the expense of requiring an extra render pass. Also, the detail texture needs to be inverted. (though most detail textures would probably look fine without being inverted)<br />
<br />
The render passes are as follows:<br />
<pre>{<br />
blend gl_zero, gl_one_minus_src_color<br />
map yourDetailTexture<br />
rgb detailAlpha<br />
scale 2, 2 // or whatever<br />
}<br />
{<br />
blend gl_dst_color, gl_one<br />
map _white<br />
rgb detailAlpha/(2-detailAlpha)<br />
}</pre><br />
In the above code, '''detailAlpha''' would be the intensity of the detail texture, ranging from 0 to 1. You could use something like '''parm3''' if you wanted to scale it on the fly. Again, it's possible to use more than one detail pass.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Detail_Textures&diff=1665Detail Textures2006-08-27T22:11:36Z<p>Gildoran: </p>
<hr />
<div>I think I've come up with a good way of blending detail textures. This method is designed to simulate the "soft light" blending of photoshop/GIMP. (it pretty much just modulates then scales by 2) The advantage over regular modulation is that a correctly designed detail texture won't change the average color of the material, whereas modulation will always darken the material. This means that if a player is far from a surface with a detail texture, you can switch the detail pass on/off without the player noticing any changes in brightness.<br />
<br />
--[[User:Gildoran|Gildoran]] 17:00, 27 August 2006 (CDT)<br />
<br />
== Making the Detail Texture: ==<br />
<br />
You need to make a greyscale detail texture. (actually, colored textures work just fine too - they'll tint the material) Middle-grey will leave the material unchanged. Darker colors will darken the material and lighter colors will lighten it. The average color of the detail texture should be middle grey, so that on the lowest mipmap level the detail texture doesn't noticably modify the material.<br />
<br />
== Simple Fixed Blending: ==<br />
<br />
To blend the detail texture, add the following render pass to your material:<br />
<pre>{<br />
blend gl_dst_color, gl_src_color<br />
map yourDetailTexture<br />
}</pre> You'll probably want to scale down the detail pass and maybe even rotate it. You can also apply more than one detail pass.<br />
<br />
== Scaled Intensity Blending: ==<br />
<br />
The previous method has the disadvantage that the only way to control the intensity of the detail texture is to adjust the contrast of the image; it can't be tweaked per-material.<br />
<br />
This method allows you to adjust the intensity of the detail image, at the expense of requiring an extra render pass. Also, the detail texture needs to be inverted. (though most detail textures would probably look fine without being inverted)<br />
<br />
The render passes are as follows:<br />
<pre>{<br />
blend gl_zero, gl_one_minus_src_color<br />
map yourDetailTexture<br />
rgb detailAlpha<br />
scale 2, 2 // or whatever<br />
}<br />
{<br />
blend gl_dst_color, gl_one<br />
map _white<br />
rgb detailAlpha/(2-detailAlpha)<br />
}</pre><br />
In the above code, [i]detailAlpha[/i] would be the intensity of the detail texture, ranging from 0 to 1. You could use something like [i]parm3[/i] if you wanted to scale it on the fly. Again, it's possible to use more than one detail pass.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Detail_Textures&diff=1664Detail Textures2006-08-27T22:04:21Z<p>Gildoran: </p>
<hr />
<div>I think I've come up with a good way of blending detail textures. This method is designed to simulate the "soft light" blending of photoshop/GIMP. (it pretty much just modulates then scales by 2) The advantage over regular modulation is that a correctly designed detail texture won't change the average color of the material, whereas modulation will always darken the material. This means that if a player is far from a surface with a detail texture, you can switch the detail pass on/off without the player noticing any changes in brightness.<br />
<br />
--[[User:Gildoran|Gildoran]] 17:00, 27 August 2006 (CDT)<br />
<br />
== Making the Detail Texture: ==<br />
<br />
You need to make a greyscale detail texture. (actually, colored textures work just fine too - they'll tint the material) Middle-grey will leave the material unchanged. Darker colors will darken the material and lighter colors will lighten it. The average color of the detail texture should be middle grey, so that on the lowest mipmap level the detail texture doesn't noticably modify the material.<br />
<br />
== Simple Fixed Blending: ==<br />
<br />
To blend the detail texture, add the following render pass to your material:<br />
<pre>{<br />
blend gl_dst_color, gl_src_color<br />
map yourDetailTexture<br />
}</pre> You'll probably want to scale down the detail pass and maybe even rotate it. You can also apply more than one detail pass.<br />
<br />
== Scaled Intensity Blending: ==<br />
<br />
The previous method has the disadvantage that the only way to control the intensity of the detail texture is to adjust the contrast of the image; it can't be tweaked per-material.<br />
<br />
This method allows you to adjust the intensity of the detail image, at the expense of requiring an extra render pass. Also, the detail texture needs to be inverted. (though most detail textures would probably look fine without being inverted)<br />
<br />
The render passes are as follows:<br />
<pre>{<br />
blend gl_zero, gl_one_minus_src_color<br />
map yourDetailTexture<br />
rgb detailAlpha<br />
scale 2, 2 // or whatever<br />
}<br />
{<br />
blend gl_dst_color, gl_one<br />
map _white<br />
rgb detailAlpha/(2-detailAlpha)<br />
}</pre><br />
In the above code, [i]detailAlpha[/i] would be the intensity of the detail texture, ranging from 0 to 1. You could use something like [i]parm3[/i] if you wanted to scale it on the fly. Again, it's possible to use more than one detail pass.<br />
<br />
I hope this tutorial helps anybody interested in doing detail textures!</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Detail_Textures&diff=1663Detail Textures2006-08-27T22:03:37Z<p>Gildoran: </p>
<hr />
<div>I think I've come up with a good way of blending detail textures. This method is designed to simulate the "soft light" blending of photoshop/GIMP. (it pretty much just modulates then scales by 2) The advantage over regular modulation is that a correctly designed detail texture won't change the average color of the material, whereas modulation will always darken the material. This means that if a player is far from a surface with a detail texture, you can switch the detail pass on/off without the player noticing any changes in brightness.<br />
<br />
--[[User:Gildoran|Gildoran]] 17:00, 27 August 2006 (CDT)<br />
<br />
== Making the Detail Texture: ==<br />
<br />
You need to make a greyscale detail texture. (actually, colored textures work just fine too - they'll tint the material) Middle-grey will leave the material unchanged. Darker colors will darken the material and lighter colors will lighten it. The average color of the detail texture should be middle grey, so that on the lowest mipmap level the detail texture doesn't noticably modify the material.<br />
<br />
== Simple Fixed Blending: ==<br />
<br />
To blend the detail texture, add the following render pass to your material:<br />
<pre>{<br />
blend gl_dst_color, gl_src_color<br />
map yourDetailTexture<br />
}</pre> You'll probably want to scale down the detail pass and maybe even rotate it. You can also apply more than one detail pass.<br />
<br />
== Scaled Intensity Blending: ==<br />
<br />
The previous method has the disadvantage that the only way to control the intensity of the detail texture is to adjust the contrast of the image; it can't be tweaked per-material.<br />
<br />
This method allows you to adjust the intensity of the detail image, at the expense of requiring an extra render pass. Also, the detail texture needs to be inverted. (though most detail textures would probably look fine without being inverted)<br />
<br />
The render passes are as follows:<br />
<pre>{<br />
blend gl_zero, gl_one_minus_src_color<br />
map yourDetailTexture<br />
rgb detailAlpha<br />
scale 2, 2 // or whatever<br />
}<br />
{<br />
blend gl_dst_color, gl_one<br />
map _white<br />
rgb detailAlpha/(2-detailAlpha)<br />
}</pre><br />
In the above code, [i]detailAlpha[/i] would be the intensity of the detail texture, ranging from 0 to 1. You could use something like [i]parm3[/i] if you wanted to scale it on the fly. Again, it's possible to use more than one detail pass.<br />
<br />
I hope this tutorial helps anybody interested in doing detail textures!</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Detail_Textures&diff=1662Detail Textures2006-08-27T22:00:02Z<p>Gildoran: </p>
<hr />
<div>I think I've come up with a good way of blending detail textures. This method is designed to simulate the "soft light" blending of photoshop/GIMP. (it pretty much just modulates then scales by 2) The advantage over regular modulation is that a correctly designed detail texture won't change the average color of the material, whereas modulation will always darken the material. This means that if a player is far from a surface with a detail texture, you can switch the detail pass on/off without the player noticing any changes in brightness.<br />
<br />
--[[User:Gildoran|Gildoran]] 17:00, 27 August 2006 (CDT)<br />
<br />
== Making the Detail Texture: ==<br />
<br />
You need to make a greyscale detail texture. (actually, colored textures work just fine too - they'll tint the material) Middle-grey will leave the material unchanged. Darker colors will darken the material and lighter colors will lighten it. The average color of the detail texture should be middle grey, so that on the lowest mipmap level the detail texture doesn't noticably modify the material.<br />
<br />
== Simple Fixed Blending: ==<br />
<br />
To blend the detail texture, add the following render pass to your material:<br />
[code]{<br />
blend gl_dst_color, gl_src_color<br />
map yourDetailTexture<br />
}[/code] You'll probably want to scale down the detail pass and maybe even rotate it. You can also apply more than one detail pass.<br />
<br />
== Scaled Intensity Blending: ==<br />
<br />
The previous method has the disadvantage that the only way to control the intensity of the detail texture is to adjust the contrast of the image; it can't be tweaked per-material.<br />
<br />
This method allows you to adjust the intensity of the detail image, at the expense of requiring an extra render pass. Also, the detail texture needs to be inverted. (though most detail textures would probably look fine without being inverted)<br />
<br />
The render passes are as follows:<br />
[code]{<br />
blend gl_zero, gl_one_minus_src_color<br />
map yourDetailTexture<br />
rgb detailAlpha<br />
scale 2, 2 // or whatever<br />
}<br />
{<br />
blend gl_dst_color, gl_one<br />
map _white<br />
rgb detailAlpha/(2-detailAlpha)<br />
}[/code]<br />
In the above code, [i]detailAlpha[/i] would be the intensity of the detail texture, ranging from 0 to 1. You could use something like [i]parm3[/i] if you wanted to scale it on the fly. Again, it's possible to use more than one detail pass.<br />
<br />
I hope this tutorial helps anybody interested in doing detail textures!</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Textures&diff=1661Textures2006-08-27T21:58:11Z<p>Gildoran: </p>
<hr />
<div>This page contains articles and links related to making/importing textures, editing .mtr files and others related to the mod.<br />
<br />
[[Texture Guidelines]]<br />
<br />
[[Common Texture Mistakes]]<br />
<br />
[[Detail Textures]]</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Common_Texture_Mistakes&diff=1660Common Texture Mistakes2006-08-25T05:43:05Z<p>Gildoran: </p>
<hr />
<div>I've noticed certain mistakes are made by a lot of new or even experienced texture artists, so I thought I'd list them here in the hopes that it might prove helpful.<br />
<br />
--[[User:Gildoran|Gildoran]] 22:18, 24 August 2006 (CDT)<br />
<br />
; Not using exponent-of-2 image dimensions : Any images used by your textures need to have dimensions that are of the form ''2^x'' since those are the only sizes that graphics cards can accept.<br />
: Such sizes include: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, etc<br />
: If an image has a weird size like 300x100, D3 will resize it down to the nearest exponent of 2 (300x100 would become 256x64) resulting in lost image quality.<br />
; Lighting baked into the diffusemap : One of D3's big advantages is its fully-dynamic lighting with bumpmapping and specular highlights... a texture that properly uses these features can look very realistic, especially since its lighting always matches the situation it is used in. Unfortunately, gone are the days of just taking a photo and making it tilable; care must be taken to ensure that the lighting information comes from the normalmap rather than the diffusemap. The diffusemap must not be lit from any one direction, or it interferes with the normalmapping, causing the texture to look ugly when lit from new directions. Taking photos on cloudy days helps. Photos of walls are particularly problematic, since they're often lit from above by the sky. If you can flip your photo in any direction without the direction of the light appearing to change, it probably has good lighting.<br />
; Having apparent repetitions : The human brain is very good at finding patterns. Unfortunately, this makes it very easy to notice a tiled texture, ruining suspension of disbelief for things like cobble floors, irregular stone walls and dirt. Often the difference between a mediocre texture and a great one is how well it tiles without being noticed. Special/interesting features that stand out tend to draw a player's attention towards the fact that the texture is repeating. Slightly monotonous textures, on the other hand, often have their repetition go unnoticed. It may be a good idea to leave features to things like decals and models.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Common_Texture_Mistakes&diff=1659Common Texture Mistakes2006-08-25T05:41:25Z<p>Gildoran: </p>
<hr />
<div>I've noticed certain mistakes are made by a lot of new or even experienced texture artists, so I thought I'd list them here in the hopes that it might prove helpful.<br />
<br />
--[[User:Gildoran|Gildoran]] 22:18, 24 August 2006 (CDT)<br />
<br />
; Not using exponent-of-2 image dimensions : Any images used by your textures need to have dimensions that are of the form ''2^x'' since those are the only sizes that graphics cards can accept.<br />
: Such sizes include: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, etc<br />
: If an image has a weird size like 300x100, D3 will resize it down to the nearest exponent of 2 (300x100 would become 256x64) resulting in lost image quality.<br />
; Lighting baked into the diffusemap : One of D3's big advantages is its fully-dynamic lighting with bumpmapping and specular highlights... a texture that properly uses these features can look very realistic, especially since its lighting always matches the situation it is used in. Unfortunately, gone are the days of just taking a photo and making it tilable; care must be taken to ensure that the lighting information comes from the normalmap rather than the diffusemap. The diffusemap must not be lit from any one direction, or it interferes with the normalmapping, causing the texture to look ugly when lit from new directions. Taking photos on cloudy days helps. Photos of walls are particularly problematic, since they're often lit from above by the sky. If you can flip your photo in any direction without the direction of the light appearing to change, it probably has good lighting.<br />
; Having apparent repetitions : The human brain is very good at finding patterns. Unfortunately, this makes it very easy to notice a tiled texture, ruining suspension of disbelief for things like cobble floors, irregular stone walls and dirt. Often the differene between a mediocre texture and a great one is how well it tiles without being noticed. Special/interesting features that stand out tend to draw a player's attention towards the fact that the texture is repeating. Slightly monotonous textures, on the other hand, often have their repetition go unnoticed. It may be a good idea to leave features to things like decals and models.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Common_Texture_Mistakes&diff=1658Common Texture Mistakes2006-08-25T03:22:10Z<p>Gildoran: </p>
<hr />
<div>I've noticed certain mistakes are made by a lot of new or even experienced texture artists, so I thought I'd list them here in the hopes that it might prove helpful.<br />
<br />
--[[User:Gildoran|Gildoran]] 22:18, 24 August 2006 (CDT)<br />
<br />
; Not using exponent-of-2 image dimensions : Any images used by your textures need to have dimensions that are of the form ''2^x'' since those are the only sizes that graphics cards can accept.<br />
: Such sizes include: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, etc<br />
: If an image has a weird size like 300x100, D3 will resize it down to the nearest exponent of 2 (300x100 would become 256x64) resulting is lost image quality.<br />
; Lighting baked into the diffusemap : One of D3's big advantages is its fully-dynamic lighting with bumpmapping and specular highlights... a texture that properly uses these features can look very realistic, especially since its lighting always matches the situation it is used in. Unfortunately, gone are the days of just taking a photo and making it tilable; care must be taken to ensure that the lighting information comes from the normalmap rather than the diffusemap. The diffusemap must not be lit from any one direction, or it interferes with the normalmapping, causing the texture to look ugly when lit from new directions. Taking photos on cloudy days helps. Photos of walls are particularly problematic, since they're often lit from above by the sky. If you can flip your photo in any direction without the direction of the light appearing to change, it probably has good lighting.<br />
; Having apparent repetitions : The human brain is very good at finding patterns. Unfortunately, this makes it very easy to notice a tiled texture, ruining suspension of disbelief for things like cobble floors, irregular stone walls and dirt. Often the differene between a mediocre texture and a great one is how well it tiles without being noticed. Special/interesting features that stand out tend to draw a player's attention towards the fact that the texture is repeating. Slightly monotonous textures, on the other hand, often have their repetition go unnoticed. It may be a good idea to leave features to things like decals and models.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Common_Texture_Mistakes&diff=1657Common Texture Mistakes2006-08-25T03:21:22Z<p>Gildoran: </p>
<hr />
<div>I've noticed certain mistakes are made by a lot of new or even experienced texture artists, so I thought I'd list them here in the hopes that it might prove helpful.<br />
<br />
--[[User:Gildoran|Gildoran]] 22:18, 24 August 2006 (CDT)<br />
<br />
; Not using exponent-of-2 image dimensions : Any images used by your textures need to have dimensions that are of the form ''2^x'' since those are the only sizes that graphics cards can accept.<br />
: Such sizes include: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, etc<br />
: If an image has a weird size like 300x100, D3 will resize it down to the nearest exponent of 2 (300x100 would become 256x64) resulting is lost image quality.<br />
; Lighting baked into the diffusemap : One of D3's big advantages is its fully-dynamic lighting with bumpmapping and specular highlights... a texture that properly uses these features can look very realistic, especially since its lighting always matches the situation it is used in. Unfortunately, gone are the days of just taking a photo and making it tilable; care must be taken to ensure that the lighting information comes from the normalmap rather than the diffusemap. The diffusemap must not be lit from any one direction, or it interferes with the normalmapping, causing the texture to look ugly when lit from new directions. Taking photos on cloudy days helps. Photos of walls are particularly problematic, since they're often lit from above by the sky. If you can flip your photo in any direction without the direction of the light appearing to change, it probably has good lighting.<br />
; Having apparent repetitions : The human brain is designed to be good at finding patterns. Unfortunately, this makes it very easy to notice a tiled texture, ruining suspension of disbelief for things like cobble floors, irregular stone walls and dirt. Often the differene between a mediocre texture and a great one is how well it tiles without being noticed. Special/interesting features that stand out tend to draw a player's attention towards the fact that the texture is repeating. Slightly monotonous textures, on the other hand, often have their repetition go unnoticed. It may be a good idea to leave features to things like decals and models.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Common_Texture_Mistakes&diff=1656Common Texture Mistakes2006-08-25T03:19:31Z<p>Gildoran: </p>
<hr />
<div>I've noticed certain mistakes are made by a lot of new or even experienced texture artists, so I thought I'd list them here in the hopes that it might prove helpful.<br />
<br />
--[[User:Gildoran|Gildoran]] 22:18, 24 August 2006 (CDT)<br />
<br />
; Not using exponent-of-2 image dimensions : Any images used by your textures need to have dimensions that are of the form ''2^x'' since those are the only sizes that graphics cards can accept.<br />
Such sizes include: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, etc<br />
If an image has a weird size like 300x100, D3 will resize it down to the nearest exponent of 2 (300x100 would become 256x64) resulting is lost image quality.<br />
; Lighting baked into the diffusemap : One of D3's big advantages is its fully-dynamic lighting with bumpmapping and specular highlights... a texture that properly uses these features can look very realistic, especially since its lighting always matches the situation it is used in. Unfortunately, gone are the days of just taking a photo and making it tilable; care must be taken to ensure that the lighting information comes from the normalmap rather than the diffusemap. The diffusemap must not be lit from any one direction, or it interferes with the normalmapping, causing the texture to look ugly when lit from new directions. Taking photos on cloudy days helps. Photos of walls are particularly prone to problems, since they're often lit from above by the sky. If you can flip your photo in any direction without the direction of the light appearing to change, it probably has good lighting.<br />
; Having apparent repetitions : The human brain is designed to be good at finding patterns. Unfortunately, this makes it very easy to notice a tiled texture, ruining suspension of disbelief for things like cobble floors, irregular stone walls and dirt. Often the differene between a mediocre texture and a great one is how well it tiles without being noticed. Special/interesting features that stand out tend to draw a player's attention towards the fact that the texture is repeating. Slightly monotonous textures, on the other hand, often have their repetition go unnoticed. It may be a good idea to leave features to things like decals and models.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Common_Texture_Mistakes&diff=1655Common Texture Mistakes2006-08-25T03:19:21Z<p>Gildoran: </p>
<hr />
<div>I've noticed certain mistakes are made by a lot of new or even experienced texture artists, so I thought I'd list them here in the hopes that it might prove helpful.<br />
<br />
--[[User:Gildoran|Gildoran]] 22:18, 24 August 2006 (CDT)<br />
<br />
<br />
; Not using exponent-of-2 image dimensions : Any images used by your textures need to have dimensions that are of the form ''2^x'' since those are the only sizes that graphics cards can accept.<br />
Such sizes include: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, etc<br />
If an image has a weird size like 300x100, D3 will resize it down to the nearest exponent of 2 (300x100 would become 256x64) resulting is lost image quality.<br />
; Lighting baked into the diffusemap : One of D3's big advantages is its fully-dynamic lighting with bumpmapping and specular highlights... a texture that properly uses these features can look very realistic, especially since its lighting always matches the situation it is used in. Unfortunately, gone are the days of just taking a photo and making it tilable; care must be taken to ensure that the lighting information comes from the normalmap rather than the diffusemap. The diffusemap must not be lit from any one direction, or it interferes with the normalmapping, causing the texture to look ugly when lit from new directions. Taking photos on cloudy days helps. Photos of walls are particularly prone to problems, since they're often lit from above by the sky. If you can flip your photo in any direction without the direction of the light appearing to change, it probably has good lighting.<br />
; Having apparent repetitions : The human brain is designed to be good at finding patterns. Unfortunately, this makes it very easy to notice a tiled texture, ruining suspension of disbelief for things like cobble floors, irregular stone walls and dirt. Often the differene between a mediocre texture and a great one is how well it tiles without being noticed. Special/interesting features that stand out tend to draw a player's attention towards the fact that the texture is repeating. Slightly monotonous textures, on the other hand, often have their repetition go unnoticed. It may be a good idea to leave features to things like decals and models.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Common_Texture_Mistakes&diff=1654Common Texture Mistakes2006-08-25T03:19:06Z<p>Gildoran: </p>
<hr />
<div>I've noticed certain mistakes are made by a lot of new or even experienced texture artists, so I thought I'd list them here in the hopes that it might prove helpful.<br />
--[[User:Gildoran|Gildoran]] 22:18, 24 August 2006 (CDT)<br />
<br />
<br />
; Not using exponent-of-2 image dimensions : Any images used by your textures need to have dimensions that are of the form ''2^x'' since those are the only sizes that graphics cards can accept.<br />
Such sizes include: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, etc<br />
If an image has a weird size like 300x100, D3 will resize it down to the nearest exponent of 2 (300x100 would become 256x64) resulting is lost image quality.<br />
; Lighting baked into the diffusemap : One of D3's big advantages is its fully-dynamic lighting with bumpmapping and specular highlights... a texture that properly uses these features can look very realistic, especially since its lighting always matches the situation it is used in. Unfortunately, gone are the days of just taking a photo and making it tilable; care must be taken to ensure that the lighting information comes from the normalmap rather than the diffusemap. The diffusemap must not be lit from any one direction, or it interferes with the normalmapping, causing the texture to look ugly when lit from new directions. Taking photos on cloudy days helps. Photos of walls are particularly prone to problems, since they're often lit from above by the sky. If you can flip your photo in any direction without the direction of the light appearing to change, it probably has good lighting.<br />
; Having apparent repetitions : The human brain is designed to be good at finding patterns. Unfortunately, this makes it very easy to notice a tiled texture, ruining suspension of disbelief for things like cobble floors, irregular stone walls and dirt. Often the differene between a mediocre texture and a great one is how well it tiles without being noticed. Special/interesting features that stand out tend to draw a player's attention towards the fact that the texture is repeating. Slightly monotonous textures, on the other hand, often have their repetition go unnoticed. It may be a good idea to leave features to things like decals and models.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Common_Texture_Mistakes&diff=1653Common Texture Mistakes2006-08-25T03:18:46Z<p>Gildoran: </p>
<hr />
<div>I've noticed certain mistakes are made by a lot of new or even experienced texture artists, so I thought I'd list them here in the hopes that it might prove helpful.<br />
--[[User:Gildoran|Gildoran]] 22:18, 24 August 2006 (CDT)<br />
<br />
<br />
; Not using exponent-of-2 image dimensions: : Any images used by your textures need to have dimensions that are of the form ''2^x'' since those are the only sizes that graphics cards can accept.<br />
Such sizes include: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, etc<br />
If an image has a weird size like 300x100, D3 will resize it down to the nearest exponent of 2 (300x100 would become 256x64) resulting is lost image quality.<br />
; Lighting baked into the diffusemap: : One of D3's big advantages is its fully-dynamic lighting with bumpmapping and specular highlights... a texture that properly uses these features can look very realistic, especially since its lighting always matches the situation it is used in. Unfortunately, gone are the days of just taking a photo and making it tilable; care must be taken to ensure that the lighting information comes from the normalmap rather than the diffusemap. The diffusemap must not be lit from any one direction, or it interferes with the normalmapping, causing the texture to look ugly when lit from new directions. Taking photos on cloudy days helps. Photos of walls are particularly prone to problems, since they're often lit from above by the sky. If you can flip your photo in any direction without the direction of the light appearing to change, it probably has good lighting.<br />
; Having apparent repetitions: : The human brain is designed to be good at finding patterns. Unfortunately, this makes it very easy to notice a tiled texture, ruining suspension of disbelief for things like cobble floors, irregular stone walls and dirt. Often the differene between a mediocre texture and a great one is how well it tiles without being noticed. Special/interesting features that stand out tend to draw a player's attention towards the fact that the texture is repeating. Slightly monotonous textures, on the other hand, often have their repetition go unnoticed. It may be a good idea to leave features to things like decals and models.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Textures&diff=1652Textures2006-08-25T03:16:46Z<p>Gildoran: </p>
<hr />
<div>This page contains articles and links related to making/importing textures, editing .mtr files and others related to the mod.<br />
<br />
[[Texture Guidelines]]<br />
<br />
[[Common Texture Mistakes]]</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Textures&diff=1651Textures2006-08-25T03:16:38Z<p>Gildoran: </p>
<hr />
<div>This page contains articles and links related to making/importing textures, editing .mtr files and others related to the mod.<br />
<br />
[[Texture Guidelines]]<br />
[[Common Texture Mistakes]]</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Bindings_and_User_Settings&diff=1650Bindings and User Settings2006-08-15T16:33:37Z<p>Gildoran: /* Inventory Related */</p>
<hr />
<div>This page should contain a list of key bindings and other user-modifiable settings.<br />
<br />
== Inventory Related ==<br />
<br />
=== Commands ===<br />
<br />
; '''_impulse47''' : Previous item.<br />
; '''_impulse48''' : Next item.<br />
; '''_impulse49''' : Previous group.<br />
; '''_impulse50''' : Next group.<br />
; '''_impulse51''' : Drop.<br />
<br />
=== Cvars ===<br />
<br />
; tdm_inv_grouping : Determines whether or not the user-interface uses inventory grouping. It can be changed on the fly without losing the currently selected item.<br />
:* '''0''' means to use a T1/T2 style interface. '''Previous item''' and '''Next item''' are used to scroll through the entire inventory. An empty slot exists between the last and first items of the inventory. '''Previous group''' and '''Next group''' are not functional.<br />
:* '''1''' means to use inventory groups. '''Previous item''' and '''Next item''' are used to scroll through the items in the current group. An empty slot exists between the last and first items of a group. '''Previous group''' and '''Next group''' are used to scroll through the groups of the current inventory in alphabetical order.<br />
:* '''2''' is default, meaning to use a T1/T2 style interface but sort the inventory by group. Items within a given group retain their position relative to eachother, but all items in the first group exist before all items in the second group, and so on. '''Previous item''' and '''Next item''' are used to scroll through the entire inventory. An empty slot exists between the last and first items of the inventory. '''Previous group''' and '''Next group''' are used to scroll through the groups of the current inventory in alphabetical order.<br />
; tdm_inv_opacity : Controls the opacity of the inventory GUI. The range is anywhere from '''0''' to '''1''', where '''0''' makes it totally invisible and '''1''' makes it fully opaque.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Bindings_and_User_Settings&diff=1649Bindings and User Settings2006-08-14T02:54:42Z<p>Gildoran: /* Inventory Related */</p>
<hr />
<div>This page should contain a list of key bindings and other user-modifiable settings.<br />
<br />
== Inventory Related ==<br />
<br />
=== Commands ===<br />
<br />
; '''_impulse47''' : Previous item.<br />
; '''_impulse48''' : Next item.<br />
; '''_impulse49''' : Previous group.<br />
; '''_impulse50''' : Next group.<br />
; '''_impulse51''' : Drop.<br />
<br />
=== Cvars ===<br />
<br />
; tdm_inv_grouping : Determines whether or not the user-interface uses inventory grouping. It can be changed on the fly without losing the currently selected item.<br />
:* '''0''' is default, meaning to use a T1/T2 style interface. '''Previous item''' and '''Next item''' are used to scroll through the entire inventory. An empty slot exists between the last and first items of the inventory. '''Previous group''' and '''Next group''' are not functional.<br />
:* '''1''' means to use inventory groups. '''Previous item''' and '''Next item''' are used to scroll through the items in the current group. An empty slot exists between the last and first items of a group. '''Previous group''' and '''Next group''' are used to scroll through the groups of the current inventory in alphabetical order.<br />
:* '''2''' means to use a T1/T2 style interface but sort the inventory by group. Items within a given group retain their position relative to eachother, but all items in the first group exist before all items in the second group, and so on. '''Previous item''' and '''Next item''' are used to scroll through the entire inventory. An empty slot exists between the last and first items of the inventory. '''Previous group''' and '''Next group''' are used to scroll through the groups of the current inventory in alphabetical order.<br />
; tdm_inv_opacity : Controls the opacity of the inventory GUI. The range is anywhere from '''0''' to '''1''', where '''0''' makes it totally invisible and '''1''' makes it fully opaque.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Bindings_and_User_Settings&diff=1648Bindings and User Settings2006-08-14T02:54:08Z<p>Gildoran: /* Inventory Related */</p>
<hr />
<div>This page should contain a list of key bindings and other user-modifiable settings.<br />
<br />
== Inventory Related ==<br />
<br />
=== Commands ===<br />
<br />
; '''_impulse47''' : Previous item.<br />
; '''_impulse48''' : Next item.<br />
; '''_impulse49''' : Previous group.<br />
; '''_impulse50''' : Next group.<br />
; '''_impulse51''' : Drop.<br />
<br />
=== Cvars ===<br />
<br />
; tdm_inv_grouping : Determines whether or not the user-interface uses inventory grouping. It can be changed on the fly without losing the currently selected item.<br />
:* '''0''' is default, meaning to use a T1/T2 style interface. '''Previous item''' and '''Next item''' are used to scroll through the entire inventory. An empty slot exists between the last and first items of the inventory. '''Previous group''' and '''Next group''' are not functional.<br />
:* '''1''' means to use inventory groups. '''Previous item''' and '''Next item''' are used to scroll through the items in the current group. An empty slot exists between the last and first items of a group. '''Previous group''' and '''Next group''' are used to scroll through the groups of the current inventory in alphabetical order.<br />
:* '''2''' means to use a T1/T2 style interface but sort the inventory by group. Items within a given group retain their position relative to eachother, but all items in the first group exist before all items in the second group, and so on. '''Previous item''' and '''Next item''' are used to scroll through the entire inventory. An empty slot exists between the last and first items of the inventory.<br />
; tdm_inv_opacity : Controls the opacity of the inventory GUI. The range is anywhere from '''0''' to '''1''', where '''0''' makes it totally invisible and '''1''' makes it fully opaque.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Bindings_and_User_Settings&diff=1647Bindings and User Settings2006-08-14T02:37:53Z<p>Gildoran: </p>
<hr />
<div>This page should contain a list of key bindings and other user-modifiable settings.<br />
<br />
== Inventory Related ==<br />
<br />
=== Commands ===<br />
<br />
; '''_impulse47''' : Previous item.<br />
; '''_impulse48''' : Next item.<br />
; '''_impulse49''' : Previous group. (only functional if '''tdm_inv_grouping''' is '''1''')<br />
; '''_impulse50''' : Next group. (only functional if '''tdm_inv_grouping''' is '''1''')<br />
; '''_impulse51''' : Drop.<br />
<br />
=== Cvars ===<br />
<br />
; tdm_inv_grouping : Determines whether or not the user-interface uses inventory grouping. It can be changed on the fly without losing the currently selected item.<br />
:* '''0''' is default, meaning to use a T1/T2 style interface. '''Previous item''' and '''Next item''' are used to scroll through the entire inventory. An empty slot exists between the last and first items of the inventory.<br />
:* '''1''' means to use inventory groups. '''Previous item''' and '''Next item''' are used to scroll through the items in the current group. An empty slot exists between the last and first items of a group. '''Previous group''' and '''Next group''' are used to scroll through the groups of the current inventory in alphabetical order.<br />
:* '''2''' means to use a T1/T2 style interface but sort the inventory by group. Items within a given group retain their position relative to eachother, but all items in the first group exist before all items in the second group, and so on. '''Previous item''' and '''Next item''' are used to scroll through the entire inventory. An empty slot exists between the last and first items of the inventory.<br />
; tdm_inv_opacity : Controls the opacity of the inventory GUI. The range is anywhere from '''0''' to '''1''', where '''0''' makes it totally invisible and '''1''' makes it fully opaque.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Bindings_and_User_Settings&diff=1646Bindings and User Settings2006-08-12T21:38:46Z<p>Gildoran: /* Cvars */</p>
<hr />
<div>This page should contain a list of key bindings and other user-modifiable settings.<br />
<br />
== Inventory Related ==<br />
<br />
=== Commands ===<br />
<br />
; '''_impulse47''' : Previous item.<br />
; '''_impulse48''' : Next item.<br />
; '''_impulse49''' : Previous group. (only functional if '''tdm_inv_grouping''' is '''1''')<br />
; '''_impulse50''' : Next group. (only functional if '''tdm_inv_grouping''' is '''1''')<br />
<br />
=== Cvars ===<br />
<br />
; tdm_inv_grouping : Determines whether or not the user-interface uses inventory grouping. It can be changed on the fly without losing the currently selected item.<br />
:* '''0''' is default, meaning to use a T1/T2 style interface. '''Previous item''' and '''Next item''' are used to scroll through the entire inventory. An empty slot exists between the last and first items of the inventory.<br />
:* '''1''' means to use inventory groups. '''Previous item''' and '''Next item''' are used to scroll through the items in the current group. An empty slot exists between the last and first items of a group. '''Previous group''' and '''Next group''' are used to scroll through the groups of the current inventory in alphabetical order.<br />
:* '''2''' means to use a T1/T2 style interface but sort the inventory by group. Items within a given group retain their position relative to eachother, but all items in the first group exist before all items in the second group, and so on. '''Previous item''' and '''Next item''' are used to scroll through the entire inventory. An empty slot exists between the last and first items of the inventory.<br />
; tdm_inv_opacity : Controls the opacity of the inventory GUI. The range is anywhere from '''0''' to '''1''', where '''0''' makes it totally invisible and '''1''' makes it fully opaque.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Bindings_and_User_Settings&diff=1645Bindings and User Settings2006-08-12T21:32:56Z<p>Gildoran: </p>
<hr />
<div>This page should contain a list of key bindings and other user-modifiable settings.<br />
<br />
== Inventory Related ==<br />
<br />
=== Commands ===<br />
<br />
; '''_impulse47''' : Previous item.<br />
; '''_impulse48''' : Next item.<br />
; '''_impulse49''' : Previous group. (only functional if '''tdm_inv_grouping''' is '''1''')<br />
; '''_impulse50''' : Next group. (only functional if '''tdm_inv_grouping''' is '''1''')<br />
<br />
=== Cvars ===<br />
<br />
; tdm_inv_grouping : Determines whether or not the user-interface uses inventory grouping. It can be changed on the fly without losing the currently selected item.<br />
:* '''0''' is default, meaning to use a T1/T2 style inventory. '''Previous item''' and '''Next item''' are used to scroll through the entire inventory. An empty slot exists between the last and first items of the inventory.<br />
:* '''1''' means to use inventory groups. '''Previous item''' and '''Next item''' are used to scroll through the items in the current group. An empty slot exists between the last and first items of a group. '''Previous group''' and '''Next group''' are used to scroll through the groups of the current inventory in alphabetical order.<br />
:* '''2''' means to use a T1/T2 style interface but sort the inventory by group. Items within a given group retain their position relative to eachother, but all items in the first group exist before all items in the second group, and so on. '''Previous item''' and '''Next item''' are used to scroll through the entire inventory. An empty slot exists between the last and first items of the inventory.<br />
; tdm_inv_opacity : Controls the opacity of the inventory GUI. The range is anywhere from '''0''' to '''1''', where '''0''' makes it totally invisible and '''1''' makes it fully opaque.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Bindings_and_User_Settings&diff=1644Bindings and User Settings2006-08-12T21:01:33Z<p>Gildoran: </p>
<hr />
<div>This page should contain a list of key bindings and other user-modifiable settings.<br />
<br />
== Inventory Related ==<br />
<br />
=== Commands ===<br />
<br />
; '''_impulse47''' : Previous item.<br />
; '''_impulse48''' : Next item.<br />
; '''_impulse49''' : Previous group. (only functional if ''tdm_inv_grouping'' is 1)<br />
; '''_impulse50''' : Next group. (only functional if ''tdm_inv_grouping'' is 1)<br />
<br />
=== Cvars ===<br />
<br />
; tdm_inv_grouping : Determines whether or not the user-interface uses inventory grouping. 0 is default, meaning to use a T1/T2 style inventory. 1 means to use inventory groups. 2 means to use a T1/T2 style interface but sort the inventory by group.<br />
; tdm_inv_opacity : Controls the opacity of the inventory GUI. The range is anywhere from 0 to 1, where 0 makes it totally invisible and 1 makes it fully opaque.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Bindings_and_User_Settings&diff=1643Bindings and User Settings2006-08-12T20:55:49Z<p>Gildoran: /* Inventory Related */</p>
<hr />
<div>This page should contain a list of key bindings and other user-modifiable settings.<br />
<br />
== Inventory Related ==<br />
<br />
=== Commands ===<br />
<br />
; '''_impulse47''' : Previous item.<br />
; '''_impulse48''' : Next item.<br />
; '''_impulse49''' : Previous group.<br />
; '''_impulse50''' : Next group.<br />
<br />
=== Cvars ===<br />
<br />
; tdm_inv_grouping : Controls inventory grouping. (details soon)<br />
; tdm_inv_opacity : Controls the opacity of the inventory GUI.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Bindings_and_User_Settings&diff=1642Bindings and User Settings2006-08-12T20:53:30Z<p>Gildoran: /* Inventory Related */</p>
<hr />
<div>This page should contain a list of key bindings and other user-modifiable settings.<br />
<br />
== Inventory Related ==<br />
<br />
; '''_impulse47''' : Previous item.<br />
; '''_impulse48''' : Next item.<br />
; '''_impulse49''' : Previous group.<br />
; '''_impulse50''' : Next group.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Bindings_and_User_Settings&diff=1641Bindings and User Settings2006-08-12T20:52:46Z<p>Gildoran: /* Inventory Related */</p>
<hr />
<div>This page should contain a list of key bindings and other user-modifiable settings.<br />
<br />
== Inventory Related ==<br />
<br />
'''_impulse47''' Previous item. ;<br />
'''_impulse48''' Next item. ;<br />
'''_impulse49''' Previous group. ;<br />
'''_impulse50''' Next group. ;</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Bindings_and_User_Settings&diff=1640Bindings and User Settings2006-08-12T20:52:32Z<p>Gildoran: </p>
<hr />
<div>This page should contain a list of key bindings and other user-modifiable settings.<br />
<br />
== Inventory Related ==<br />
<br />
'''_impulse47''' Previous item.<br />
'''_impulse48''' Next item.<br />
'''_impulse49''' Previous group.<br />
'''_impulse50''' Next group.</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Main_Page&diff=1639Main Page2006-08-12T20:45:11Z<p>Gildoran: </p>
<hr />
<div><p style="margin:2em 0 0 0; text-align:center; font-size:200%;">Welcome to the Dark Wiki</p><br />
<p style="margin:0 0 3em 0; text-align:center; font-size:94%">A wiki documenting the Dark Mod for Doom 3</p><br />
<br />
<table align="center" width="90%" cellspacing="10"><tr><br />
<td style="width:50%; vertical-align:top; padding:2em; border:1px solid #e1e1e1; background-color:#f9f9f9"><br />
<br />
<p style="font-size:130%">'''New to the site?'''</p><br />
<br />
This wiki is focused on documenting the various aspects involved with developing, and mapping, for The Dark Mod. Please visit the about page or talk to some of our editors in #darkmod on irc.starchat.net if you want to learn more about this project.<br />
<br />
<p style="font-size:130%">'''Want to help?'''</p><br />
<br />
As the modwiki is a community project, feel free to register and join us on this great endeavour! Please check out the style guide first and follow these guidelines. Visit open tasks to find out which pages need help. You can also visit the sandbox to experiment with the wiki markup language.<br />
<br />
<p style="font-size:130%">'''High quality links:'''</p><br />
<br />
Other interesting Dark Mod related links:<br />
<br />
; [http://www.thedarkmod.com www.thedarkmod.com] : The project website<br />
; [http://www.modetwo.net/darkmod www.modetwo.net/darkmod] : The project forum<br />
<br />
[[TheDarkWiki:Policy|The Dark Wiki Editing Policy]]<br />
<br />
</td><td style="vertical-align:top; padding:2em; border:1px solid #e1e1e1; background-color:#f9f9f9"><br />
<br />
<p style="font-size:130%">'''Editing Categories:'''</p><br />
<br />
; [[Installation]] : Information how to get The Dark Mod running<br />
; [[Bindings and User Settings]] : Key binding and interface documentation.<br />
; [[Universe]] : Information about The Dark Mod universe and setting<br />
; [[Tutorials]] : Complete tutorials about setting up certain characteristics<br />
; [[Editing]] : Information about level design and the tools<br />
; [[Textures]] : Explanation of material shaders and image files<br />
; [[Modeling]] : Modeling and file format information<br />
; [[Sound]] : Soundeffects, ambients and how to get them ingame<br />
; [[Coding]] : Source code modification, level and GUI scripting<br />
; [[Release]] : How to pack a mission, and get it tested and released!<br />
; [[Developer Info]] : Internal informations for developers of the core team<br />
<br />
</td></tr></table><br />
<p style="margin:2em 0 2em 0; text-align:center; font-size:94%">(Create a new page by making a link to it, then click it. Or you can just go to www.thirdfilms.com/darkwiki/yourpagename)</p></div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Bindings&diff=1638Bindings2006-08-12T20:43:56Z<p>Gildoran: Bindings moved to Bindings and User Settings</p>
<hr />
<div>#redirect [[Bindings and User Settings]]</div>Gildoranhttps://wiki.thedarkmod.com/index.php?title=Bindings_and_User_Settings&diff=1637Bindings and User Settings2006-08-12T20:43:56Z<p>Gildoran: Bindings moved to Bindings and User Settings</p>
<hr />
<div>(working on adding binding info... hold on)</div>Gildoran