Lots of Quake4 files and images turned up
https://web.archive.org/web/*/http://iddevnet.com/quake4/* had them even though the links in the corresponding archived pages didn't work
24
README.md
|
@ -4,23 +4,25 @@ reconstructed from https://www.moddb.com/downloads/iddevnet-archive, own backups
|
|||
|
||||
# Missing files (not available on archive.org either):
|
||||
- Doom3/downloads/testbox_textures.zip
|
||||
this one might never have been available: https://web.archive.org/web/20060720042901/http://www.iddevnet.com/doom3/downloads/testbox_textures.zip
|
||||
- Doom3/skins_imp.png
|
||||
|
||||
- The Examples and Debug HUD for Quake4 (https://web.archive.org/web/20080720014114/http://www.iddevnet.com/quake4/DownloadableContent)
|
||||
- debug_huds.zip
|
||||
- Quake 4 Animation Examples: animations.zip
|
||||
- Font stuff: q4font.zip (q4font.exe), marine_ANSI.zip (ANSI example font) marine_symbol.zip (Symbol example font)
|
||||
- MakeAMod DMSP (Deathmatch Singleplayer): dmsp_v1.pk4
|
||||
- MakeAMod-InstaGib: q4-instagib.zip
|
||||
- Example Definition Files: monster_strogg_marine_rocket.def monster_slimy_lobber.def
|
||||
- ExampleMaps: programmerexamplemaps.zip map_ai_tetherexamples.zip
|
||||
- Quake 4 Art Examples: Quake_4_Texture_Reference.zip Quake_4_Model_Reference.zip Quake_4_Modeling_Parts_Junkyard.zip
|
||||
- Quake 4 Animation Examples: animations.zip
|
||||
see https://web.archive.org/web/20101007092356/http://iddevnet.com/quake4/AnimationExamples
|
||||
|
||||
- Lots of images for Quake4:
|
||||
- BasicScriptTutorial: basicscripttutorial4.png
|
||||
- DefinitionFileExamples: monster_strogg_marine_rocket.jpg
|
||||
- LevelEditor_BasicRoom: image01.jpg to image12.jpg (all of them)
|
||||
- LevelEditor_BasicRoom: image01.jpg - image12.jpg (all of them)
|
||||
- Effects_Performance: fx_overdraw_bad.jpg fx_overdraw_good.jpg
|
||||
- ArtReference_CreatingTextures: tex_01.jpg - tex_09.jpg (all of them)
|
||||
- Scripting_ScriptsAndEntities: repairbot1.jpg - repairbot8.jpg (all of them)
|
||||
- The_Properties_of_a_segment: fx_lock.jpg
|
||||
- Basic_FX_file_structure: fx_check.jpg fx_sortorder.jpg
|
||||
- ArtReference_CreatingCreatures: image_01.jpg - image_14.jpg (all of them, though I'm not sure they were ever really uploaded)
|
||||
- Notes_about_Origins: fx_origins.jpg
|
||||
- ArtReference_Q4Shaders_AnimatedStrips: shader_stripimage1.jpg shader_stripimage2.jpg
|
||||
- LevelEditor_Clipping: fx_origins.jpg, airdefense1_editor.jpg, core_shaft.jpg, mp_angleclip.jpg
|
||||
- Entity_MonsterBerserker: monster_berserker.jpg
|
||||
- Adding_Fonts_to_use_in_Quake_4_GUIs: guied_ansi.jpg, guied_symbol.jpg
|
||||
- FX_Entity_Editor: fx_enteditor.jpg
|
||||
- Sounds_SoundPlacement: image1.jpg, image2.jpg
|
||||
|
|
|
@ -190,7 +190,17 @@ actionsMenuInit('More Actions:');
|
|||
<div dir="ltr" id="content" lang="en"><span class="anchor" id="top"></span>
|
||||
<span class="anchor" id="line-1"></span><p class="line867">
|
||||
<h1 id="head-16febfb5cabf567cd57093cb15e46632eebaa589">Quake 4 Art Examples</h1>
|
||||
<span class="anchor" id="line-2"></span><span class="anchor" id="line-3"></span><p class="line874">We've included several files that should illustrate how to implement art content in Quake 4. <span class="anchor" id="line-4"></span><span class="anchor" id="line-5"></span><p class="line867"><hr /><p class="line874"> <span class="anchor" id="line-6"></span>Included in this .zip file are everything you need to see how two textures from Quake 4 were made. For more information on making textures, check out our <a href="./ArtReference_CreatingTextures.html">Creating Textures</a> page. <span class="anchor" id="line-7"></span><span class="anchor" id="line-8"></span><p class="line867"><a class="attachment" href="./ArtExamples?action=AttachFile&do=get&target=Quake_4_Texture_Reference.zip" title="attachment:Quake_4_Texture_Reference.zip">Quake_4_Texture_Reference.zip</a> <span class="anchor" id="line-9"></span><span class="anchor" id="line-10"></span><p class="line867"><hr /><p class="line874"> <span class="anchor" id="line-11"></span>To see one of the pillar models created for Quake 4, grab this file. For more information on making models, check out our <a href="./ArtReference_CreatingModels.html">Creating Models</a> page. <span class="anchor" id="line-12"></span><span class="anchor" id="line-13"></span><p class="line867"><a class="attachment" href="./ArtExamples?action=AttachFile&do=get&target=Quake_4_Model_Reference.zip" title="attachment:Quake_4_Model_Reference.zip">Quake_4_Model_Reference.zip</a> <span class="anchor" id="line-14"></span><span class="anchor" id="line-15"></span><p class="line867"><hr /><p class="line874"> <span class="anchor" id="line-16"></span>This handy reference file has all of the little bits used to add details to textures, models and creatures. They really help to speed the process up and to unify the look of the game. Use these when you are <a href="./ArtReference_CreatingModels.html">Creating Models</a> <span class="anchor" id="line-17"></span><span class="anchor" id="line-18"></span><p class="line867"><a class="attachment" href="./ArtExamples?action=AttachFile&do=get&target=Quake_4_Modeling_Parts_Junkyard.zip" title="attachment:Quake_4_Modeling_Parts_Junkyard.zip">Quake_4_Modeling_Parts_Junkyard.zip</a> <span class="anchor" id="line-19"></span><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">ArtExamples (last edited 2005-11-04 22:51:00 by <span title="EricBiessman @ 67.129.250.254[67.129.250.254]"><a class="nonexistent" href="./EricBiessman.html" title="EricBiessman @ 67.129.250.254[67.129.250.254]">EricBiessman</a></span>)</p>
|
||||
<span class="anchor" id="line-2"></span><span class="anchor" id="line-3"></span><p class="line874">We've included several files that should illustrate how to implement art content in Quake 4. <span class="anchor" id="line-4"></span><span class="anchor" id="line-5"></span><p class="line867"><hr /><p class="line874"> <span class="anchor" id="line-6"></span>Included in this .zip file are everything you need to see how two textures from Quake 4 were made. For more information on making textures, check out our <a href="./ArtReference_CreatingTextures.html">Creating Textures</a> page. <span class="anchor" id="line-7"></span><span class="anchor" id="line-8"></span>
|
||||
<p class="line867"><a class="attachment" href="./Quake_4_Texture_Reference.zip" title="attachment:Quake_4_Texture_Reference.zip">Quake_4_Texture_Reference.zip</a>
|
||||
<span class="anchor" id="line-9"></span><span class="anchor" id="line-10"></span><p class="line867"><hr /><p class="line874">
|
||||
<span class="anchor" id="line-11"></span>To see one of the pillar models created for Quake 4, grab this file. For more information on making models, check out our
|
||||
<a href="./ArtReference_CreatingModels.html">Creating Models</a> page. <span class="anchor" id="line-12"></span><span class="anchor" id="line-13"></span>
|
||||
<p class="line867"><a class="attachment" href="./Quake_4_Model_Reference.zip" title="attachment:Quake_4_Model_Reference.zip">Quake_4_Model_Reference.zip</a> <span class="anchor" id="line-14"></span>
|
||||
<span class="anchor" id="line-15"></span><p class="line867"><hr /><p class="line874"> <span class="anchor" id="line-16"></span>
|
||||
This handy reference file has all of the little bits used to add details to textures, models and creatures. They really help to speed the process up and to unify the look of the game. Use these when you are
|
||||
<a href="./ArtReference_CreatingModels.html">Creating Models</a> <span class="anchor" id="line-17"></span><span class="anchor" id="line-18"></span><p class="line867">
|
||||
<a class="attachment" href="./Quake_4_Modeling_Parts_Junkyard.zip" title="attachment:Quake_4_Modeling_Parts_Junkyard.zip">Quake_4_Modeling_Parts_Junkyard.zip</a> <span class="anchor" id="line-19"></span>
|
||||
<span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">ArtExamples (last edited 2005-11-04 22:51:00 by <span title="EricBiessman @ 67.129.250.254[67.129.250.254]"><a class="nonexistent" href="./EricBiessman.html" title="EricBiessman @ 67.129.250.254[67.129.250.254]">EricBiessman</a></span>)</p>
|
||||
|
||||
<div id="pagebottom"></div>
|
||||
</div>
|
||||
|
|
|
@ -196,7 +196,7 @@ actionsMenuInit('More Actions:');
|
|||
<h1 id="head-7b46b3928c84f10d349092242d1dcd5a6ecc54c9">What You’ll Need</h1>
|
||||
<span class="anchor" id="line-10"></span><span class="anchor" id="line-11"></span><p class="line874">You will need a licensed copy of Quake 4 and the SDK. You will be using both the map editor, and a script editing tool of your choice. <span class="anchor" id="line-12"></span><span class="anchor" id="line-13"></span><p class="line874">Script editing can be done in any text editing program. However, since the script system closely resembles C style code, an editor that uses syntax highlighting would be best. Our developers here used both Visual Studio and Ultra Edit 32, but in a pinch you can use notepad.exe. <span class="anchor" id="line-14"></span><span class="anchor" id="line-15"></span><p class="line867"><span class="anchor" id="savemap"></span> <span class="anchor" id="line-16"></span>
|
||||
<h1 id="head-5337f61f6ae189ba2205c9d73ef4b7cb773d1169">Setting up your first script file</h1>
|
||||
<span class="anchor" id="line-17"></span><span class="anchor" id="line-18"></span><p class="line874">Script files can be set up two ways. One method is for quick practice and “scratchpad” style development, the other is for distribution. To get started, we’ll use the first method because it’s much simpler. Create a new text file in the directory that has the .map file you want to use the script on. For example, if you’re working out of C:\Program Files\Quake4\q4base\maps\, you’d place the file there. <span class="anchor" id="line-19"></span><span class="anchor" id="line-20"></span><p class="line867"><img class="attachment" src="./BasicScriptTutorial?action=AttachFile&do=get&target=basicscripttutorial1.png" title="attachment:basicscripttutorial1.png" /> <span class="anchor" id="line-21"></span><span class="anchor" id="line-22"></span><p class="line874">Name the file [mapname].script. So if your map is called “awesome.map” you’d name the file “awesome.script” <span class="anchor" id="line-23"></span><span class="anchor" id="line-24"></span><p class="line867"><img class="attachment" src="./BasicScriptTutorial?action=AttachFile&do=get&target=basicscripttutorial2.png" title="attachment:basicscripttutorial2.png" /> <span class="anchor" id="line-25"></span><span class="anchor" id="line-26"></span><p class="line867">
|
||||
<span class="anchor" id="line-17"></span><span class="anchor" id="line-18"></span><p class="line874">Script files can be set up two ways. One method is for quick practice and “scratchpad” style development, the other is for distribution. To get started, we’ll use the first method because it’s much simpler. Create a new text file in the directory that has the .map file you want to use the script on. For example, if you’re working out of C:\Program Files\Quake4\q4base\maps\, you’d place the file there. <span class="anchor" id="line-19"></span><span class="anchor" id="line-20"></span><p class="line867"><img class="attachment" src="basicscripttutorial1.png" title="attachment:basicscripttutorial1.png" /> <span class="anchor" id="line-21"></span><span class="anchor" id="line-22"></span><p class="line874">Name the file [mapname].script. So if your map is called “awesome.map” you’d name the file “awesome.script” <span class="anchor" id="line-23"></span><span class="anchor" id="line-24"></span><p class="line867"><img class="attachment" src="basicscripttutorial2.png" title="attachment:basicscripttutorial2.png" /> <span class="anchor" id="line-25"></span><span class="anchor" id="line-26"></span><p class="line867">
|
||||
<h1 id="head-570f051b69d313da23334cefad6e29530ae2ae75">Your first script function, “Hello Stroggos”</h1>
|
||||
<span class="anchor" id="line-27"></span><span class="anchor" id="line-28"></span><p class="line874">Open up the script file you just created with your editor. Enter the following into the file and save the file. <span class="anchor" id="line-29"></span><span class="anchor" id="line-30"></span><p class="line867"><span class="anchor" id="line-31"></span><span class="anchor" id="line-32"></span><span class="anchor" id="line-33"></span><span class="anchor" id="line-34"></span><span class="anchor" id="line-35"></span><span class="anchor" id="line-36"></span><span class="anchor" id="line-37"></span><div class="codearea" dir="ltr" lang="en">
|
||||
<script type="text/javascript">
|
||||
|
@ -261,9 +261,9 @@ document.write('<a href="#" onclick="return togglenumber(\'CA-76aa8bb98bcc8c40c1
|
|||
<span class="line"><span class="LineNumber"> 6 </span><span class="SPChar">}</span></span>
|
||||
</pre></div><span class="anchor" id="line-38"></span><p class="line874">If you’re not familiar with C-style programming, that all looks like a lot of jive. If you are familiar, go ahead and skip to the next header because this is probably old hat to you. <span class="anchor" id="line-39"></span><span class="anchor" id="line-40"></span><p class="line874">What you just wrote is called a function. Functions are called from the map by triggers—something we’ll get into later. Functions can also be called by other functions, but that’s getting way ahead. Let’s break it down. <span class="anchor" id="line-41"></span><span class="anchor" id="line-42"></span><p class="line862">The <strong>void</strong> is the <em>return type</em>, this is what a function gives back to you when it’s done. This function doesn’t give anything back, so we use the word “void” to represent that. <span class="anchor" id="line-43"></span><span class="anchor" id="line-44"></span><p class="line862">The next part is the <em>function name</em>. The <strong>()</strong> at the end are where 'parameters' go. If we need to send data to a function, we do it with parameters. Right now, we don’t need any, so the parentheses are empty. <span class="anchor" id="line-45"></span><span class="anchor" id="line-46"></span><p class="line862">You’ll notice the entire function is wrapped in squirrely braces, these right here: <strong>{ }</strong> This is a must. If you forget them, even one of them, your stuff won’t work. <span class="anchor" id="line-47"></span><span class="anchor" id="line-48"></span><p class="line862">The next line, the one with the <strong>//</strong> slashes, is a <em>comment</em>. Comments are just for us, the compiler never sees them. You can write whatever you’d like in a comment. They are not mandatory, but good comments help you remember just what you were doing in a function. <span class="anchor" id="line-49"></span><span class="anchor" id="line-50"></span><p class="line862">Finally we get to the meat. This line calls a function from the <a href="./SystemObject.html">SystemObject</a>, called "<a href="./SystemObject.html">sys</a>.” <a href="./SystemObject.html">Sys</a> represents the game system, and can do quite a lot for us, which you’ll see later. Right now, <a href="./SystemObject.html">sys</a> is using the Print Line function, <a href="./ScriptFunction_println.html">println</a>. <a href="./ScriptFunction_println.html">println</a> takes in one parameter, which is a line of text that you wanted printed to the console. It’s very simple. <span class="anchor" id="line-51"></span><span class="anchor" id="line-52"></span><p class="line874">Notice that the line ends with a semicolon! Semicolons are the only way the compiler knows to stop reading commands from that line. You must include them at the end of your lines, or your stuff won’t run. Especially during these early steps of learning scripting, nine times out of ten when your scripts don’t compile, you forgot a semicolon. <span class="anchor" id="line-53"></span><span class="anchor" id="line-54"></span><p class="line867">
|
||||
<h1 id="head-3fedf63c9d65f948bcaf6720bfabdc12d395d061">Calling your script from game with triggers</h1>
|
||||
<span class="anchor" id="line-55"></span><span class="anchor" id="line-56"></span><p class="line862">At this point, you should save and close the script file. Now it’s time to open up the editor. Open up an empty map suitable for gameplay, a room with a light and an <a class="nonexistent" href="./InfoPlayerStart.html">InfoPlayerStart</a>. Create a new brush, right click it and change it to a trigger_once. <span class="anchor" id="line-57"></span><span class="anchor" id="line-58"></span><p class="line867"><img class="attachment" src="./BasicScriptTutorial?action=AttachFile&do=get&target=basicscripttutorial3.png" title="attachment:basicscripttutorial3.png" /> <span class="anchor" id="line-59"></span><span class="anchor" id="line-60"></span><p class="line874">A trigger is an invisible brush that is activated by certain conditions. Usually this boils down to the player touching it and something happening. In our case, we want the trigger to call a function for us. So let’s set that key value on the entity. <span class="anchor" id="line-61"></span><span class="anchor" id="line-62"></span><p class="line867"><img class="attachment" src="./BasicScriptTutorial?action=AttachFile&do=get&target=basicscripttutorial4.png" title="attachment:basicscripttutorial4.png" /> <span class="anchor" id="line-63"></span><span class="anchor" id="line-64"></span><p class="line874">Very straightforward. Notice here we don’t have to include the void or parentheses from the script file. Just the name of the function will do for now. <span class="anchor" id="line-65"></span><span class="anchor" id="line-66"></span><p class="line874">That should do it! Save and BSP your map, then run that level in game. If all went well, you should see “Hello Stroggos!” on screen. If you aren’t running in developer mode, or if con_showPrint is set to 0, you’ll have to open the console to see the message. <span class="anchor" id="line-67"></span><span class="anchor" id="line-68"></span><p class="line867"><a href="#compileerror">Did it not work for you?</a> <span class="anchor" id="line-69"></span><span class="anchor" id="line-70"></span><p class="line867">
|
||||
<span class="anchor" id="line-55"></span><span class="anchor" id="line-56"></span><p class="line862">At this point, you should save and close the script file. Now it’s time to open up the editor. Open up an empty map suitable for gameplay, a room with a light and an <a class="nonexistent" href="./InfoPlayerStart.html">InfoPlayerStart</a>. Create a new brush, right click it and change it to a trigger_once. <span class="anchor" id="line-57"></span><span class="anchor" id="line-58"></span><p class="line867"><img class="attachment" src="basicscripttutorial3.png" title="attachment:basicscripttutorial3.png" /> <span class="anchor" id="line-59"></span><span class="anchor" id="line-60"></span><p class="line874">A trigger is an invisible brush that is activated by certain conditions. Usually this boils down to the player touching it and something happening. In our case, we want the trigger to call a function for us. So let’s set that key value on the entity. <span class="anchor" id="line-61"></span><span class="anchor" id="line-62"></span><p class="line867"><img class="attachment" src="basicscripttutorial4.png" title="attachment:basicscripttutorial4.png" /> <span class="anchor" id="line-63"></span><span class="anchor" id="line-64"></span><p class="line874">Very straightforward. Notice here we don’t have to include the void or parentheses from the script file. Just the name of the function will do for now. <span class="anchor" id="line-65"></span><span class="anchor" id="line-66"></span><p class="line874">That should do it! Save and BSP your map, then run that level in game. If all went well, you should see “Hello Stroggos!” on screen. If you aren’t running in developer mode, or if con_showPrint is set to 0, you’ll have to open the console to see the message. <span class="anchor" id="line-67"></span><span class="anchor" id="line-68"></span><p class="line867"><a href="#compileerror">Did it not work for you?</a> <span class="anchor" id="line-69"></span><span class="anchor" id="line-70"></span><p class="line867">
|
||||
<h1 id="head-43415c887998cc4ccee3925483c86646b99e7640">Further Changes to the Script and the Map</h1>
|
||||
<span class="anchor" id="line-71"></span><span class="anchor" id="line-72"></span><p class="line874">Now that you've got your script running, let's work a little further. We will modify our script and our map to change things up and spawn in a monster. <span class="anchor" id="line-73"></span><span class="anchor" id="line-74"></span><p class="line862">First, open the editor and add a <a href="./Entity_TargetNull.html">target_null</a> to the map. Place the <a href="./Entity_TargetNull.html">target_null</a> on the map in a place where you'd like the monster to spawn. Remember that monster origins are at the centered at the feet of the monster so place the origin <a href="./Entity_TargetNull.html">target_null</a> even with the ground unless you want the monster to fall out of the sky. <span class="anchor" id="line-75"></span><span class="anchor" id="line-76"></span><p class="line867"><img class="attachment" src="./BasicScriptTutorial?action=AttachFile&do=get&target=basicscripttutorial5.png" title="attachment:basicscripttutorial5.png" /> <img class="attachment" src="./BasicScriptTutorial?action=AttachFile&do=get&target=basicscripttutorial6.png" title="attachment:basicscripttutorial6.png" /> <span class="anchor" id="line-77"></span><span class="anchor" id="line-78"></span><p class="line862">Give that <a href="./Entity_TargetNull.html">target_null</a> a name you'll remember. For our example we'll use targetMonster. <span class="anchor" id="line-79"></span><span class="anchor" id="line-80"></span><p class="line874">Go back to your script and add a few lines to the function we wrote earlier. <span class="anchor" id="line-81"></span><span class="anchor" id="line-82"></span><p class="line867"><span class="anchor" id="line-83"></span><span class="anchor" id="line-84"></span><span class="anchor" id="line-85"></span><span class="anchor" id="line-86"></span><span class="anchor" id="line-87"></span><span class="anchor" id="line-88"></span><span class="anchor" id="line-89"></span><span class="anchor" id="line-90"></span><span class="anchor" id="line-91"></span><span class="anchor" id="line-92"></span><span class="anchor" id="line-93"></span><span class="anchor" id="line-94"></span><span class="anchor" id="line-95"></span><span class="anchor" id="line-96"></span><span class="anchor" id="line-97"></span><span class="anchor" id="line-98"></span><span class="anchor" id="line-99"></span><div class="codearea" dir="ltr" lang="en">
|
||||
<span class="anchor" id="line-71"></span><span class="anchor" id="line-72"></span><p class="line874">Now that you've got your script running, let's work a little further. We will modify our script and our map to change things up and spawn in a monster. <span class="anchor" id="line-73"></span><span class="anchor" id="line-74"></span><p class="line862">First, open the editor and add a <a href="./Entity_TargetNull.html">target_null</a> to the map. Place the <a href="./Entity_TargetNull.html">target_null</a> on the map in a place where you'd like the monster to spawn. Remember that monster origins are at the centered at the feet of the monster so place the origin <a href="./Entity_TargetNull.html">target_null</a> even with the ground unless you want the monster to fall out of the sky. <span class="anchor" id="line-75"></span><span class="anchor" id="line-76"></span><p class="line867"><img class="attachment" src="basicscripttutorial5.png" title="attachment:basicscripttutorial5.png" /> <img class="attachment" src="basicscripttutorial6.png" title="attachment:basicscripttutorial6.png" /> <span class="anchor" id="line-77"></span><span class="anchor" id="line-78"></span><p class="line862">Give that <a href="./Entity_TargetNull.html">target_null</a> a name you'll remember. For our example we'll use targetMonster. <span class="anchor" id="line-79"></span><span class="anchor" id="line-80"></span><p class="line874">Go back to your script and add a few lines to the function we wrote earlier. <span class="anchor" id="line-81"></span><span class="anchor" id="line-82"></span><p class="line867"><span class="anchor" id="line-83"></span><span class="anchor" id="line-84"></span><span class="anchor" id="line-85"></span><span class="anchor" id="line-86"></span><span class="anchor" id="line-87"></span><span class="anchor" id="line-88"></span><span class="anchor" id="line-89"></span><span class="anchor" id="line-90"></span><span class="anchor" id="line-91"></span><span class="anchor" id="line-92"></span><span class="anchor" id="line-93"></span><span class="anchor" id="line-94"></span><span class="anchor" id="line-95"></span><span class="anchor" id="line-96"></span><span class="anchor" id="line-97"></span><span class="anchor" id="line-98"></span><span class="anchor" id="line-99"></span><div class="codearea" dir="ltr" lang="en">
|
||||
<script type="text/javascript">
|
||||
document.write('<a href="#" onclick="return togglenumber(\'CA-de4a9c423b2145d71f13d813d93e3b61349ef9bb_001\', 1, 1);" \
|
||||
class="codenumbers">Toggle line numbers<\/a>');
|
||||
|
@ -289,7 +289,7 @@ document.write('<a href="#" onclick="return togglenumber(\'CA-de4a9c423b2145d71f
|
|||
<span class="anchor" id="line-131"></span><span class="anchor" id="line-132"></span><p class="line862">Now, if you've closed the game since you've run the Hello Stroggos example, just load it again and this script should work out fine. However, if you've still got the game running from before, you'll need to execute a <a href="./ConsoleCommand_ReloadScript.html">Reload Script</a> command in the console. <span class="anchor" id="line-133"></span><span class="anchor" id="line-134"></span><p class="line862">Once you've saved your script, drop the console in game and enter the command <a href="./ConsoleCommand_ReloadScript.html">reloadScript</a>. The game should pause for a few seconds, then show you this: <span class="anchor" id="line-135"></span><span class="anchor" id="line-136"></span><p class="line867"><span class="anchor" id="line-137"></span><pre>******************************
|
||||
<span class="anchor" id="line-138"></span>ERROR: Exiting map to reload scripts
|
||||
<span class="anchor" id="line-139"></span>******************************
|
||||
<span class="anchor" id="line-140"></span></pre><span class="anchor" id="line-141"></span><span class="anchor" id="line-142"></span><p class="line862">This is perfectly normal, and it means your script compiled fine. But if you see any other errors, head to the <a href="#compileerror">troubleshooting section</a> before moving on. <span class="anchor" id="line-143"></span><span class="anchor" id="line-144"></span><p class="line874">At this point, run your map again, and you should be able to walk over the trigger and spawn a Strogg Marine into the map without a problem. <span class="anchor" id="line-145"></span><span class="anchor" id="line-146"></span><p class="line867"><img class="attachment" src="./BasicScriptTutorial?action=AttachFile&do=get&target=basicscripttutorial7.png" title="attachment:basicscripttutorial7.png" /> <span class="anchor" id="line-147"></span><span class="anchor" id="line-148"></span><p class="line867">
|
||||
<span class="anchor" id="line-140"></span></pre><span class="anchor" id="line-141"></span><span class="anchor" id="line-142"></span><p class="line862">This is perfectly normal, and it means your script compiled fine. But if you see any other errors, head to the <a href="#compileerror">troubleshooting section</a> before moving on. <span class="anchor" id="line-143"></span><span class="anchor" id="line-144"></span><p class="line874">At this point, run your map again, and you should be able to walk over the trigger and spawn a Strogg Marine into the map without a problem. <span class="anchor" id="line-145"></span><span class="anchor" id="line-146"></span><p class="line867"><img class="attachment" src="basicscripttutorial7.png" title="attachment:basicscripttutorial7.png" /> <span class="anchor" id="line-147"></span><span class="anchor" id="line-148"></span><p class="line867">
|
||||
<h2 id="head-af9820085e98dbbbe969f3ffe77a211aecbfede4">What's Next?</h2>
|
||||
<span class="anchor" id="line-149"></span><span class="anchor" id="line-150"></span><p class="line862">From here, you could move on to the <a href="./AdvancedScriptTutorial.html">AdvancedScriptTutorial</a>, which will show you a little more about the techniques available to you in script. You could also take a deeper look at the <a href="./ScriptVariable.html">ScriptVariable</a> page to learn more about variables and how they are used in scripting. <span class="anchor" id="line-151"></span><span class="anchor" id="line-152"></span><p class="line874">If something here didn't work out for you, check out the troubleshooting section below. <span class="anchor" id="line-153"></span><span class="anchor" id="line-154"></span><p class="line867"><a href="./ScriptFile.html">Back to the Script Shop</a> <span class="anchor" id="line-155"></span><span class="anchor" id="line-156"></span><span class="anchor" id="line-157"></span><p class="line867">
|
||||
<h1 id="head-15637fe897e711af3ace5237a030b76b30b7a6a7">Tutorial Troubleshooting</h1>
|
||||
|
|
|
@ -190,7 +190,7 @@ actionsMenuInit('More Actions:');
|
|||
<span class="anchor" id="line-1"></span><p class="line867">
|
||||
<h1 id="head-22c118f2c50fb53c40b49f0b989408606a553acc">Quake 4 Debug Hud</h1>
|
||||
<span class="anchor" id="line-2"></span><span class="anchor" id="line-3"></span><p class="line867">
|
||||
<img class="attachment" src="DebugHud.jpg" title="attachment:debughud.jpg" /> <span class="anchor" id="line-4"></span><span class="anchor" id="line-5"></span><p class="line874">The debug hud is a series of 11 guis used to monitor various aspects of development. These files were not included with the retail install and may be downloaded for your convenience here: <span class="anchor" id="line-6"></span><span class="anchor" id="line-7"></span><p class="line867"><strong>Download:</strong> <a class="attachment" href="./DebugHud?action=AttachFile&do=get&target=debug_huds.zip" title="attachment:debug_huds.zip">debug_huds.zip</a> <span class="anchor" id="line-8"></span><hr /><p class="line874"> <span class="anchor" id="line-9"></span><strong><span class="u">Using the Debug HUD</span></strong> <span class="anchor" id="line-10"></span><span class="anchor" id="line-11"></span><p class="line874">Extract debug_huds.zip to your q4base/ folder (the files will automatically place themselves in GUIs/debug/). <span class="anchor" id="line-12"></span><span class="anchor" id="line-13"></span><p class="line874">To use the Debug HUD, use the g_showDebugHud console command followed by a number 1-11 to select the desired HUD (listed below). All versions of the Debug HUD include the map path, world location, and current build revision in the lower right corner. <span class="anchor" id="line-14"></span><hr /><p class="line874"> <span class="anchor" id="line-15"></span><strong><span class="u">Debug HUDs</span></strong> <span class="anchor" id="line-16"></span><span class="anchor" id="line-17"></span><ul><li><p class="line891"><strong>g_showDebugHud 1:</strong> Player Debug HUD <span class="anchor" id="line-18"></span></li><li><p class="line891"><strong>g_showDebugHud 2:</strong> Physics Debug HUD <span class="anchor" id="line-19"></span></li><li><p class="line891"><strong>g_showDebugHud 3:</strong> AI Debug HUD <span class="anchor" id="line-20"></span></li><li><p class="line891"><strong>g_showDebugHud 4:</strong> Vehicle Debug HUD <span class="anchor" id="line-21"></span></li><li><p class="line891"><strong>g_showDebugHud 5:</strong> Performance HUD <span class="anchor" id="line-22"></span></li><li><p class="line891"><strong>g_showDebugHud 6:</strong> FX Debug HUD <span class="anchor" id="line-23"></span></li><li><p class="line891"><strong>g_showDebugHud 7:</strong> Map Info <span class="anchor" id="line-24"></span></li><li><p class="line891"><strong>g_showDebugHud 8:</strong> AI Performance HUD <span class="anchor" id="line-25"></span></li><li><p class="line891"><strong>g_showDebugHud 9:</strong> MP Info HUD <span class="anchor" id="line-26"></span></li><li><p class="line891"><strong>g_showDebugHud 10:</strong> Sound HUD <span class="anchor" id="line-27"></span></li><li><p class="line891"><strong>g_showDebugHud 11:</strong> MP Info HUD #2 <span class="anchor" id="line-28"></span></li></ul><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">DebugHud (last edited 2005-11-16 23:04:58 by <span title="AndrewWeldon @ 67.129.250.254[67.129.250.254]"><a class="nonexistent" href="./AndrewWeldon.html" title="AndrewWeldon @ 67.129.250.254[67.129.250.254]">AndrewWeldon</a></span>)</p>
|
||||
<img class="attachment" src="DebugHud.jpg" title="attachment:debughud.jpg" /> <span class="anchor" id="line-4"></span><span class="anchor" id="line-5"></span><p class="line874">The debug hud is a series of 11 guis used to monitor various aspects of development. These files were not included with the retail install and may be downloaded for your convenience here: <span class="anchor" id="line-6"></span><span class="anchor" id="line-7"></span><p class="line867"><strong>Download:</strong> <a class="attachment" href="debug_huds.zip" title="attachment:debug_huds.zip">debug_huds.zip</a> <span class="anchor" id="line-8"></span><hr /><p class="line874"> <span class="anchor" id="line-9"></span><strong><span class="u">Using the Debug HUD</span></strong> <span class="anchor" id="line-10"></span><span class="anchor" id="line-11"></span><p class="line874">Extract debug_huds.zip to your q4base/ folder (the files will automatically place themselves in GUIs/debug/). <span class="anchor" id="line-12"></span><span class="anchor" id="line-13"></span><p class="line874">To use the Debug HUD, use the g_showDebugHud console command followed by a number 1-11 to select the desired HUD (listed below). All versions of the Debug HUD include the map path, world location, and current build revision in the lower right corner. <span class="anchor" id="line-14"></span><hr /><p class="line874"> <span class="anchor" id="line-15"></span><strong><span class="u">Debug HUDs</span></strong> <span class="anchor" id="line-16"></span><span class="anchor" id="line-17"></span><ul><li><p class="line891"><strong>g_showDebugHud 1:</strong> Player Debug HUD <span class="anchor" id="line-18"></span></li><li><p class="line891"><strong>g_showDebugHud 2:</strong> Physics Debug HUD <span class="anchor" id="line-19"></span></li><li><p class="line891"><strong>g_showDebugHud 3:</strong> AI Debug HUD <span class="anchor" id="line-20"></span></li><li><p class="line891"><strong>g_showDebugHud 4:</strong> Vehicle Debug HUD <span class="anchor" id="line-21"></span></li><li><p class="line891"><strong>g_showDebugHud 5:</strong> Performance HUD <span class="anchor" id="line-22"></span></li><li><p class="line891"><strong>g_showDebugHud 6:</strong> FX Debug HUD <span class="anchor" id="line-23"></span></li><li><p class="line891"><strong>g_showDebugHud 7:</strong> Map Info <span class="anchor" id="line-24"></span></li><li><p class="line891"><strong>g_showDebugHud 8:</strong> AI Performance HUD <span class="anchor" id="line-25"></span></li><li><p class="line891"><strong>g_showDebugHud 9:</strong> MP Info HUD <span class="anchor" id="line-26"></span></li><li><p class="line891"><strong>g_showDebugHud 10:</strong> Sound HUD <span class="anchor" id="line-27"></span></li><li><p class="line891"><strong>g_showDebugHud 11:</strong> MP Info HUD #2 <span class="anchor" id="line-28"></span></li></ul><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">DebugHud (last edited 2005-11-16 23:04:58 by <span title="AndrewWeldon @ 67.129.250.254[67.129.250.254]"><a class="nonexistent" href="./AndrewWeldon.html" title="AndrewWeldon @ 67.129.250.254[67.129.250.254]">AndrewWeldon</a></span>)</p>
|
||||
|
||||
<div id="pagebottom"></div>
|
||||
</div>
|
||||
|
|
|
@ -191,10 +191,19 @@ actionsMenuInit('More Actions:');
|
|||
<span class="anchor" id="line-1"></span><p class="line867">
|
||||
<h1 id="head-9e8e84c85b131c25a882b52c1e94f9ef0c9b74ea">Example Definition Files</h1>
|
||||
<span class="anchor" id="line-2"></span><span class="anchor" id="line-3"></span><p class="line867"><br />
|
||||
<img class="attachment" src="./DefinitionFileExamples?action=AttachFile&do=get&target=monster_strogg_marine_rocket.jpg" title="attachment:monster_strogg_marine_rocket.jpg" /> <span class="anchor" id="line-4"></span><span class="anchor" id="line-5"></span><p class="line867"><br />
|
||||
The following two files are examples of how to bring 'new' monsters into the game using only <a href="./DefinitionFile.html">def</a> files. Each displays how to incorporate a new attack behavior to an existing monster using their existing AI and just a few numerical and path tweaks on the entityDef itself. <span class="anchor" id="line-6"></span><span class="anchor" id="line-7"></span><p class="line867"><br />
|
||||
While only examples, feel free to use (and improve!) these in your own mods - just be sure to include the def files (particularly if you do modify them) in your mod directory, as not all users will have SDK content installed. <span class="anchor" id="line-8"></span><span class="anchor" id="line-9"></span><p class="line867"><br />
|
||||
We've tried to comment each file to give a better understanding of what is going on and what changes we made. <span class="anchor" id="line-10"></span><span class="anchor" id="line-11"></span><p class="line867"><hr /><p class="line874"> <span class="anchor" id="line-12"></span><span class="anchor" id="line-13"></span><p class="line867"><a class="attachment" href="./DefinitionFileExamples?action=AttachFile&do=get&target=monster_strogg_marine_rocket.def" title="attachment:monster_strogg_marine_rocket.def">monster_strogg_marine_rocket.def</a> <span class="anchor" id="line-14"></span><span class="anchor" id="line-15"></span><p class="line867"><a class="attachment" href="./DefinitionFileExamples?action=AttachFile&do=get&target=monster_slimy_lobber.def" title="attachment:monster_slimy_lobber.def">monster_slimy_lobber.def</a> <span class="anchor" id="line-16"></span><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">DefinitionFileExamples (last edited 2005-11-09 14:36:17 by <span title="AndrewWeldon @ 67.129.250.254[67.129.250.254]"><a class="nonexistent" href="./AndrewWeldon.html" title="AndrewWeldon @ 67.129.250.254[67.129.250.254]">AndrewWeldon</a></span>)</p>
|
||||
<img class="attachment" src="./DefinitionFileExamples?action=AttachFile&do=get&target=monster_strogg_marine_rocket.jpg" title="attachment:monster_strogg_marine_rocket.jpg" />
|
||||
<span class="anchor" id="line-4"></span><span class="anchor" id="line-5"></span><p class="line867"><br />
|
||||
The following two files are examples of how to bring 'new' monsters into the game using only <a href="./DefinitionFile.html">def</a> files.
|
||||
Each displays how to incorporate a new attack behavior to an existing monster using their existing AI and just a few numerical and path tweaks on the entityDef itself.
|
||||
<span class="anchor" id="line-6"></span><span class="anchor" id="line-7"></span><p class="line867"><br />
|
||||
While only examples, feel free to use (and improve!) these in your own mods - just be sure to include the def files
|
||||
(particularly if you do modify them) in your mod directory, as not all users will have SDK content installed.
|
||||
<span class="anchor" id="line-8"></span><span class="anchor" id="line-9"></span><p class="line867"><br />
|
||||
We've tried to comment each file to give a better understanding of what is going on and what changes we made. <span class="anchor" id="line-10">
|
||||
</span><span class="anchor" id="line-11"></span><p class="line867"><hr /><p class="line874"> <span class="anchor" id="line-12"></span><span class="anchor" id="line-13"></span><p class="line867">
|
||||
<a class="attachment" href="./monster_strogg_marine_rocket.def" title="attachment:monster_strogg_marine_rocket.def">monster_strogg_marine_rocket.def</a>
|
||||
<span class="anchor" id="line-14"></span><span class="anchor" id="line-15"></span><p class="line867">
|
||||
<a class="attachment" href="./monster_slimy_lobber.def" title="attachment:monster_slimy_lobber.def">monster_slimy_lobber.def</a> <span class="anchor" id="line-16"></span><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">DefinitionFileExamples (last edited 2005-11-09 14:36:17 by <span title="AndrewWeldon @ 67.129.250.254[67.129.250.254]"><a class="nonexistent" href="./AndrewWeldon.html" title="AndrewWeldon @ 67.129.250.254[67.129.250.254]">AndrewWeldon</a></span>)</p>
|
||||
|
||||
<div id="pagebottom"></div>
|
||||
</div>
|
||||
|
|
|
@ -187,7 +187,9 @@ actionsMenuInit('More Actions:');
|
|||
|
||||
<div id="page" lang="en" dir="ltr">
|
||||
<div dir="ltr" id="content" lang="en"><span class="anchor" id="top"></span>
|
||||
<span class="anchor" id="line-1"></span><ul><li><p class="line891"><strong><a class="attachment" href="./ExampleMaps?action=AttachFile&do=get&target=programmerexamplemaps.zip" title="attachment:programmerexamplemaps.zip">Programmer Example Maps</a></strong> This is a set of 4 simple maps useful for programmers working on various parts of the <a href="./GameCode.html">GameCode</a>. <span class="anchor" id="line-2"></span><ol type="i"><li>empty.map, consisting of an empty room. <span class="anchor" id="line-3"></span></li><li>pvs.map, consisting of 2 CTF flags seperated by geometry that will be in seperate PVS zones. Useful for testing PVS-dependant client issues. <span class="anchor" id="line-4"></span></li><li>pickup.map, consisting of all the MP pickups, useful as a baseline test map. <span class="anchor" id="line-5"></span></li><li>ctf.map, a simple CTF map, useful for testing CTF. <span class="anchor" id="line-6"></span><span class="anchor" id="line-7"></span></li></ol></li><li class="gap"><p class="line891"><strong><a class="attachment" href="./ExampleMaps?action=AttachFile&do=get&target=map_ai_tetherexamples.zip" title="attachment:map_ai_tetherexamples.zip">Example AI Control Map</a></strong> This is a single map that has several examples of the <a href="./LevelEditor_AITethers.html">AI Tether Control System</a> in action. <span class="anchor" id="line-8"></span></li></ul><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">ExampleMaps (last edited 2005-11-09 17:51:43 by <span title="AndrewWeldon @ 67.129.250.254[67.129.250.254]"><a class="nonexistent" href="./AndrewWeldon.html" title="AndrewWeldon @ 67.129.250.254[67.129.250.254]">AndrewWeldon</a></span>)</p>
|
||||
<span class="anchor" id="line-1"></span><ul><li><p class="line891"><strong><a class="attachment" href="./programmerexamplemaps.zip" title="attachment:programmerexamplemaps.zip">Programmer Example Maps</a></strong>
|
||||
This is a set of 4 simple maps useful for programmers working on various parts of the <a href="./GameCode.html">GameCode</a>. <span class="anchor" id="line-2"></span><ol type="i"><li>empty.map, consisting of an empty room. <span class="anchor" id="line-3"></span></li><li>pvs.map, consisting of 2 CTF flags seperated by geometry that will be in seperate PVS zones. Useful for testing PVS-dependant client issues. <span class="anchor" id="line-4"></span></li><li>pickup.map, consisting of all the MP pickups, useful as a baseline test map. <span class="anchor" id="line-5"></span></li><li>ctf.map, a simple CTF map, useful for testing CTF. <span class="anchor" id="line-6"></span><span class="anchor" id="line-7"></span></li></ol></li><li class="gap">
|
||||
<p class="line891"><strong><a class="attachment" href="./map_ai_tetherexamples.zip" title="attachment:map_ai_tetherexamples.zip">Example AI Control Map</a></strong> This is a single map that has several examples of the <a href="./LevelEditor_AITethers.html">AI Tether Control System</a> in action. <span class="anchor" id="line-8"></span></li></ul><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">ExampleMaps (last edited 2005-11-09 17:51:43 by <span title="AndrewWeldon @ 67.129.250.254[67.129.250.254]"><a class="nonexistent" href="./AndrewWeldon.html" title="AndrewWeldon @ 67.129.250.254[67.129.250.254]">AndrewWeldon</a></span>)</p>
|
||||
|
||||
<div id="pagebottom"></div>
|
||||
</div>
|
||||
|
|
|
@ -190,7 +190,7 @@ actionsMenuInit('More Actions:');
|
|||
<div dir="ltr" id="content" lang="en"><span class="anchor" id="top"></span>
|
||||
<span class="anchor" id="line-1"></span><p class="line867">
|
||||
<h1 id="head-55b9695679dc5c7002a9cedbfaeacd77651635a1">Downloadable Font Files</h1>
|
||||
<span class="anchor" id="line-2"></span><span class="anchor" id="line-3"></span><p class="line862">These files can be used to add your own fonts to the game. To learn more, check out the information here: <a href="./Adding_Fonts_to_use_in_Quake_4_GUIs.html">Q4Font</a> <span class="anchor" id="line-4"></span><span class="anchor" id="line-5"></span><p class="line867"><hr /><p class="line874"> <span class="anchor" id="line-6"></span><span class="anchor" id="line-7"></span><p class="line867"><a class="attachment" href="./FontExamples?action=AttachFile&do=get&target=q4font.zip" title="attachment:q4font.zip">q4font.zip</a> <span class="anchor" id="line-8"></span><span class="anchor" id="line-9"></span><p class="line874">Contains the q4font.exe program used to import fonts into Quake 4 <span class="anchor" id="line-10"></span><span class="anchor" id="line-11"></span><p class="line867"><hr /><p class="line874"> <span class="anchor" id="line-12"></span><span class="anchor" id="line-13"></span><p class="line867"><a class="attachment" href="./FontExamples?action=AttachFile&do=get&target=marine_ANSI.zip" title="attachment:marine_ANSI.zip">marine_ANSI.zip</a> <span class="anchor" id="line-14"></span><span class="anchor" id="line-15"></span><p class="line874">An example font in standard ANSI Windows codepage. <span class="anchor" id="line-16"></span><span class="anchor" id="line-17"></span><p class="line867"><hr /><p class="line874"> <span class="anchor" id="line-18"></span><span class="anchor" id="line-19"></span><p class="line867"><a class="attachment" href="./FontExamples?action=AttachFile&do=get&target=marine_symbol.zip" title="attachment:marine_symbol.zip">marine_symbol.zip</a> <span class="anchor" id="line-20"></span><span class="anchor" id="line-21"></span><p class="line874">An example font in Symbol codepage. <span class="anchor" id="line-22"></span><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">FontExamples (last edited 2006-04-27 21:25:56 by <span title="MattVainio @ 67.129.250.254[67.129.250.254]"><a class="nonexistent" href="./MattVainio.html" title="MattVainio @ 67.129.250.254[67.129.250.254]">MattVainio</a></span>)</p>
|
||||
<span class="anchor" id="line-2"></span><span class="anchor" id="line-3"></span><p class="line862">These files can be used to add your own fonts to the game. To learn more, check out the information here: <a href="./Adding_Fonts_to_use_in_Quake_4_GUIs.html">Q4Font</a> <span class="anchor" id="line-4"></span><span class="anchor" id="line-5"></span><p class="line867"><hr /><p class="line874"> <span class="anchor" id="line-6"></span><span class="anchor" id="line-7"></span><p class="line867"><a class="attachment" href="./q4font.zip" title="attachment:q4font.zip">q4font.zip</a> <span class="anchor" id="line-8"></span><span class="anchor" id="line-9"></span><p class="line874">Contains the q4font.exe program used to import fonts into Quake 4 <span class="anchor" id="line-10"></span><span class="anchor" id="line-11"></span><p class="line867"><hr /><p class="line874"> <span class="anchor" id="line-12"></span><span class="anchor" id="line-13"></span><p class="line867"><a class="attachment" href="./marine_ANSI.zip" title="attachment:marine_ANSI.zip">marine_ANSI.zip</a> <span class="anchor" id="line-14"></span><span class="anchor" id="line-15"></span><p class="line874">An example font in standard ANSI Windows codepage. <span class="anchor" id="line-16"></span><span class="anchor" id="line-17"></span><p class="line867"><hr /><p class="line874"> <span class="anchor" id="line-18"></span><span class="anchor" id="line-19"></span><p class="line867"><a class="attachment" href="./marine_symbol.zip" title="attachment:marine_symbol.zip">marine_symbol.zip</a> <span class="anchor" id="line-20"></span><span class="anchor" id="line-21"></span><p class="line874">An example font in Symbol codepage. <span class="anchor" id="line-22"></span><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">FontExamples (last edited 2006-04-27 21:25:56 by <span title="MattVainio @ 67.129.250.254[67.129.250.254]"><a class="nonexistent" href="./MattVainio.html" title="MattVainio @ 67.129.250.254[67.129.250.254]">MattVainio</a></span>)</p>
|
||||
|
||||
<div id="pagebottom"></div>
|
||||
</div>
|
||||
|
|
|
@ -91,14 +91,6 @@ function actionsMenuInit(title) {
|
|||
<link rel="Start" href="./Quake4SDK.html">
|
||||
<link rel="Alternate" title="Wiki Markup" href="./Hub_-_Repairbot_Ambience_and_the_Tetranode?action=raw">
|
||||
<link rel="Alternate" media="print" title="Print View" href="./Hub_-_Repairbot_Ambience_and_the_Tetranode?action=print">
|
||||
<link rel="Appendix" title="repairbot1.jpg" href="./Hub_-_Repairbot_Ambience_and_the_Tetranode?action=AttachFile&do=view&target=repairbot1.jpg">
|
||||
<link rel="Appendix" title="repairbot2.jpg" href="./Hub_-_Repairbot_Ambience_and_the_Tetranode?action=AttachFile&do=view&target=repairbot2.jpg">
|
||||
<link rel="Appendix" title="repairbot3.jpg" href="./Hub_-_Repairbot_Ambience_and_the_Tetranode?action=AttachFile&do=view&target=repairbot3.jpg">
|
||||
<link rel="Appendix" title="repairbot4.jpg" href="./Hub_-_Repairbot_Ambience_and_the_Tetranode?action=AttachFile&do=view&target=repairbot4.jpg">
|
||||
<link rel="Appendix" title="repairbot5.jpg" href="./Hub_-_Repairbot_Ambience_and_the_Tetranode?action=AttachFile&do=view&target=repairbot5.jpg">
|
||||
<link rel="Appendix" title="repairbot6.jpg" href="./Hub_-_Repairbot_Ambience_and_the_Tetranode?action=AttachFile&do=view&target=repairbot6.jpg">
|
||||
<link rel="Appendix" title="repairbot7.jpg" href="./Hub_-_Repairbot_Ambience_and_the_Tetranode?action=AttachFile&do=view&target=repairbot7.jpg">
|
||||
<link rel="Appendix" title="repairbot8.jpg" href="./Hub_-_Repairbot_Ambience_and_the_Tetranode?action=AttachFile&do=view&target=repairbot8.jpg">
|
||||
<link rel="Search" href="./FindPage.html">
|
||||
<link rel="Index" href="./TitleIndex.html">
|
||||
<link rel="Glossary" href="./WordIndex.html">
|
||||
|
@ -195,7 +187,7 @@ actionsMenuInit('More Actions:');
|
|||
<div dir="ltr" id="content" lang="en"><span class="anchor" id="top"></span>
|
||||
<span class="anchor" id="line-1"></span><p class="line867">
|
||||
<h1 id="head-163f4a7a25e679849da30510f160855458275765">Entity-Based Scripting: The Repair Bots</h1>
|
||||
<span class="anchor" id="line-2"></span><span class="anchor" id="line-3"></span><p class="line867"><img class="attachment" src="./Hub_-_Repairbot_Ambience_and_the_Tetranode?action=AttachFile&do=get&target=repairbot1.jpg" title="attachment:repairbot1.jpg" /> <span class="anchor" id="line-4"></span><span class="anchor" id="line-5"></span><p class="line867"><br />
|
||||
<span class="anchor" id="line-2"></span><span class="anchor" id="line-3"></span><p class="line867"><img class="attachment" src="repairbot1.jpg" title="attachment:repairbot1.jpg" /> <span class="anchor" id="line-4"></span><span class="anchor" id="line-5"></span><p class="line867"><br />
|
||||
<strong>Introduction</strong> <span class="anchor" id="line-6"></span><span class="anchor" id="line-7"></span><p class="line867"><br />
|
||||
<a class="nonexistent" href="./Entity_MonsterRepairBot.html">Repair Bots</a> opened up some fun options for scripted behavior in Quake 4. They serve more as an ambient set piece than an actual enemy and can add a lot of life to a scene. Rather than scripting this ambience for each scene, we created a common entity-based script function that we can call on any <a class="nonexistent" href="./Entity_MonsterRepairBot.html">Repair Bot</a>, allowing it to randomly move from one point to the next, ‘repairing’ all the way. <span class="anchor" id="line-8"></span><span class="anchor" id="line-9"></span><p class="line867"><br />
|
||||
In this guide we won’t cover the use of the <a class="nonexistent" href="./Entity_MonsterRepairBot.html">Repair Bot</a> script (though you can find implementation info in the .script file comments and some game levels and probably will still know how to use it by the time we’re done), but rather use it as a detailed example of how we used a common script to create a flexible system that can be added to a map with no (additional) scripting required. <span class="anchor" id="line-10"></span><span class="anchor" id="line-11"></span><p class="line867"><br />
|
||||
|
@ -205,26 +197,26 @@ Before we cover anything, let’s touch on the order of events within the <a cla
|
|||
Through the next two sections (Entities and Script), we’ll look at how we achieve each of these events and how the function was designed with a drop-anywhere mentality. <span class="anchor" id="line-32"></span><span class="anchor" id="line-33"></span><p class="line867"><br />
|
||||
<strong>The Entities</strong> <span class="anchor" id="line-34"></span><span class="anchor" id="line-35"></span><p class="line867"><br />
|
||||
Let’s start by examining the Entities used in one use of this system: the Tetranode in the Nexus Hub. I’ve moved some points around to get some clearer lines, but otherwise this is an accurate top-down view of all the available points in that scene. We can actually use this as a great outline of what will occur in our function. <span class="anchor" id="line-36"></span><span class="anchor" id="line-37"></span><p class="line867"><br />
|
||||
<img class="attachment" src="./Hub_-_Repairbot_Ambience_and_the_Tetranode?action=AttachFile&do=get&target=repairbot2.jpg" title="attachment:repairbot2.jpg" /> <span class="anchor" id="line-38"></span><span class="anchor" id="line-39"></span><p class="line867"><br />
|
||||
<img class="attachment" src="repairbot2.jpg" title="attachment:repairbot2.jpg" /> <span class="anchor" id="line-38"></span><span class="anchor" id="line-39"></span><p class="line867"><br />
|
||||
All of these points are <a href="./Entity_TargetNull.html">target_nulls</a> used to control the <a class="nonexistent" href="./Entity_MonsterRepairBot.html">Repair Bot</a> positions during the sequence. If you recall, <a href="./Entity_TargetNull.html">target_nulls</a> don’t technically do anything. But in scripting systems such as this, they’ll be your best friend. <span class="anchor" id="line-40"></span><span class="anchor" id="line-41"></span><p class="line867"><br />
|
||||
You’ll notice I highlighted a specific target null that targets about half of the remaining points. This serves as a “list” from which the <a class="nonexistent" href="./Entity_MonsterRepairBot.html">Repair Bots</a> will select their points. Let’s take a look at the entity info box: <span class="anchor" id="line-42"></span><span class="anchor" id="line-43"></span><p class="line867"><br />
|
||||
<img class="attachment" src="./Hub_-_Repairbot_Ambience_and_the_Tetranode?action=AttachFile&do=get&target=repairbot3.jpg" title="attachment:repairbot3.jpg" /> <span class="anchor" id="line-44"></span><span class="anchor" id="line-45"></span><p class="line867"><br />
|
||||
<img class="attachment" src="repairbot3.jpg" title="attachment:repairbot3.jpg" /> <span class="anchor" id="line-44"></span><span class="anchor" id="line-45"></span><p class="line867"><br />
|
||||
Each target shown here is a valid target the <a class="nonexistent" href="./Entity_MonsterRepairBot.html">Repair Bot</a> may choose. We’ll examine how to pull values from this list in the Script section. <span class="anchor" id="line-46"></span><span class="anchor" id="line-47"></span><p class="line867"><br />
|
||||
Now, our available positions: <span class="anchor" id="line-48"></span><span class="anchor" id="line-49"></span><p class="line867"><br />
|
||||
<img class="attachment" src="./Hub_-_Repairbot_Ambience_and_the_Tetranode?action=AttachFile&do=get&target=repairbot4.jpg" title="attachment:repairbot4.jpg" /> <span class="anchor" id="line-50"></span><span class="anchor" id="line-51"></span><p class="line867"><br />
|
||||
<img class="attachment" src="repairbot4.jpg" title="attachment:repairbot4.jpg" /> <span class="anchor" id="line-50"></span><span class="anchor" id="line-51"></span><p class="line867"><br />
|
||||
Each highlighted entity is another <a href="./Entity_TargetNull.html">target_null</a>, this time representing one of the points that the <a class="nonexistent" href="./Entity_MonsterRepairBot.html">Repair Bot</a> may select during the function. We’ll refer to these as ‘repairTargets.’ In looking at the entity info, we find a few differences. <span class="anchor" id="line-52"></span><span class="anchor" id="line-53"></span><p class="line867"><br />
|
||||
<img class="attachment" src="./Hub_-_Repairbot_Ambience_and_the_Tetranode?action=AttachFile&do=get&target=repairbot5.jpg" title="attachment:repairbot5.jpg" /> <span class="anchor" id="line-54"></span><span class="anchor" id="line-55"></span><p class="line867"><br />
|
||||
<img class="attachment" src="repairbot5.jpg" title="attachment:repairbot5.jpg" /> <span class="anchor" id="line-54"></span><span class="anchor" id="line-55"></span><p class="line867"><br />
|
||||
You’ll notice we’ve added some keys. “action” and “duration” are used by special scriptedAction behavior that supports the <a class="nonexistent" href="./Entity_MonsterRepairBot.html">Repair Bot</a>. We’ve also added a completely made up key, “occupied.” <span class="anchor" id="line-56"></span><span class="anchor" id="line-57"></span><p class="line867"><br />
|
||||
Even though the <a href="./Entity_TargetNull.html">target_null</a> doesn’t officially support keyvalues, we’re able to use them to store information. By using this, we know that when the <a class="nonexistent" href="./Entity_MonsterRepairBot.html">Repair Bot</a> spawns, this point will be available (as it starts unoccupied) and that if selected, the <a class="nonexistent" href="./Entity_MonsterRepairBot.html">Repair Bot</a> will move here and perform the “repair” action for 3 seconds. <span class="anchor" id="line-58"></span><span class="anchor" id="line-59"></span><p class="line867"><br />
|
||||
The target key then tells us where this <a class="nonexistent" href="./Entity_MonsterRepairBot.html">Repair Bot</a> is going to look when it arrives (remember, that’s a key step we want it to perform). <span class="anchor" id="line-60"></span><span class="anchor" id="line-61"></span><p class="line867"><br />
|
||||
Now to our targets: <span class="anchor" id="line-62"></span><span class="anchor" id="line-63"></span><p class="line867"><br />
|
||||
<img class="attachment" src="./Hub_-_Repairbot_Ambience_and_the_Tetranode?action=AttachFile&do=get&target=repairbot6.jpg" title="attachment:repairbot6.jpg" /> <span class="anchor" id="line-64"></span><span class="anchor" id="line-65"></span><p class="line867"><br />
|
||||
<img class="attachment" src="repairbot6.jpg" title="attachment:repairbot6.jpg" /> <span class="anchor" id="line-64"></span><span class="anchor" id="line-65"></span><p class="line867"><br />
|
||||
These will be our ‘repairAction’ entities. You’ll notice not all the repairTargets have repairActions – we’ll cover this when we step through the script. <span class="anchor" id="line-66"></span><span class="anchor" id="line-67"></span><p class="line867"><br />
|
||||
As you can see, these entities have no special settings on them – we just need their positions. <span class="anchor" id="line-68"></span><span class="anchor" id="line-69"></span><p class="line867"><br />
|
||||
<img class="attachment" src="./Hub_-_Repairbot_Ambience_and_the_Tetranode?action=AttachFile&do=get&target=repairbot7.jpg" title="attachment:repairbot7.jpg" /> <span class="anchor" id="line-70"></span><span class="anchor" id="line-71"></span><p class="line867"><br />
|
||||
<img class="attachment" src="repairbot7.jpg" title="attachment:repairbot7.jpg" /> <span class="anchor" id="line-70"></span><span class="anchor" id="line-71"></span><p class="line867"><br />
|
||||
This entity layout ends up giving us a nice visual representation of how our function will flow. We see our list targeting each repairTarget, which in turn targets the repairAction point at which the Repair Bot will look during the operation. <span class="anchor" id="line-72"></span><span class="anchor" id="line-73"></span><p class="line867"><br />
|
||||
There’s one final entity in the mix, a <a href="./Entity_FuncSpawner.html">func_spawner</a> to feed <a class="nonexistent" href="./Entity_MonsterRepairBot.html">Repair Bots</a> for an endless supply: <span class="anchor" id="line-74"></span><span class="anchor" id="line-75"></span><p class="line867"><br />
|
||||
<img class="attachment" src="./Hub_-_Repairbot_Ambience_and_the_Tetranode?action=AttachFile&do=get&target=repairbot8.jpg" title="attachment:repairbot8.jpg" /> <span class="anchor" id="line-76"></span><span class="anchor" id="line-77"></span><p class="line867"><br />
|
||||
<img class="attachment" src="repairbot8.jpg" title="attachment:repairbot8.jpg" /> <span class="anchor" id="line-76"></span><span class="anchor" id="line-77"></span><p class="line867"><br />
|
||||
The two important keys to note are: <span class="anchor" id="line-78"></span><span class="anchor" id="line-79"></span><ul><li><p class="line862">call_spawned: Whenever a <a class="nonexistent" href="./Entity_MonsterRepairBot.html">Repair Bot</a> spawns, this function will be called, passing in the Repair Bot into the script. <span class="anchor" id="line-80"></span></li><li><p class="line862">spawn_list: This sets the “list” key on any <a class="nonexistent" href="./Entity_MonsterRepairBot.html">Repair Bot</a> spawned from this spawner to “tetraList,” which in this case is the list of available positions we examined above. <span class="anchor" id="line-81"></span><span class="anchor" id="line-82"></span></li></ul><p class="line867"><br />
|
||||
These transition us nicely into the fun part: the script! <span class="anchor" id="line-83"></span><span class="anchor" id="line-84"></span><p class="line867"><br />
|
||||
<strong>The Script</strong> <span class="anchor" id="line-85"></span><span class="anchor" id="line-86"></span><p class="line867"><br />
|
||||
|
|
|
@ -249,7 +249,7 @@ actionsMenuInit('More Actions:');
|
|||
<span class="anchor" id="line-102"></span> // Checksums for pk4 dependency.
|
||||
<span class="anchor" id="line-103"></span> "[CHECKSUM]" //[YOUR_DEPENDENCY_FILE].pk4
|
||||
<span class="anchor" id="line-104"></span>}
|
||||
<span class="anchor" id="line-105"></span></pre><span class="anchor" id="line-106"></span><span class="anchor" id="line-107"></span><p class="line874">To find the checksum, set "developer 1" in the Quake 4 console and type "path" - this will give you a list of all pk4s and checksums (the crazy numbers/letters by the end) in the game directory, including all addonPaks: <span class="anchor" id="line-108"></span><span class="anchor" id="line-109"></span><p class="line862">:<img class="attachment" src="./LevelEditor_MPMapDefs?action=AttachFile&do=get&target=path.jpg" title="attachment:path.jpg" /> <span class="anchor" id="line-110"></span><span class="anchor" id="line-111"></span><p class="line874">In my example case, I have addon_test.pk4, and addon_test_assets.pk4 on which it depends. My addonDef in addon_test.pk4 would then look like this: <span class="anchor" id="line-112"></span><span class="anchor" id="line-113"></span><p class="line867"><span class="anchor" id="line-114"></span><pre>addonDef {
|
||||
<span class="anchor" id="line-105"></span></pre><span class="anchor" id="line-106"></span><span class="anchor" id="line-107"></span><p class="line874">To find the checksum, set "developer 1" in the Quake 4 console and type "path" - this will give you a list of all pk4s and checksums (the crazy numbers/letters by the end) in the game directory, including all addonPaks: <span class="anchor" id="line-108"></span><span class="anchor" id="line-109"></span><p class="line862">:<img class="attachment" src="./LevelEditor_MPMapDefs.jpg" title="attachment:path.jpg" /> <span class="anchor" id="line-110"></span><span class="anchor" id="line-111"></span><p class="line874">In my example case, I have addon_test.pk4, and addon_test_assets.pk4 on which it depends. My addonDef in addon_test.pk4 would then look like this: <span class="anchor" id="line-112"></span><span class="anchor" id="line-113"></span><p class="line867"><span class="anchor" id="line-114"></span><pre>addonDef {
|
||||
<span class="anchor" id="line-115"></span> // Checksums for pk4 dependency.
|
||||
<span class="anchor" id="line-116"></span> "0xb149cb12" //addon_test_assets.pk4
|
||||
<span class="anchor" id="line-117"></span>}
|
||||
|
|
BIN
quake4/LevelEditor_MPMapDefs.jpg
Normal file
After Width: | Height: | Size: 87 KiB |
|
@ -91,9 +91,6 @@ function actionsMenuInit(title) {
|
|||
<link rel="Start" href="./Quake4SDK.html">
|
||||
<link rel="Alternate" title="Wiki Markup" href="./LevelEditor_Performance?action=raw">
|
||||
<link rel="Alternate" media="print" title="Print View" href="./LevelEditor_Performance?action=print">
|
||||
<link rel="Appendix" title="sdk_batchsize.jpg" href="./LevelEditor_Performance?action=AttachFile&do=view&target=sdk_batchsize.jpg">
|
||||
<link rel="Appendix" title="sdk_debughud.jpg" href="./LevelEditor_Performance?action=AttachFile&do=view&target=sdk_debughud.jpg">
|
||||
<link rel="Appendix" title="sdk_lightcount.jpg" href="./LevelEditor_Performance?action=AttachFile&do=view&target=sdk_lightcount.jpg">
|
||||
<link rel="Search" href="./FindPage.html">
|
||||
<link rel="Index" href="./TitleIndex.html">
|
||||
<link rel="Glossary" href="./WordIndex.html">
|
||||
|
@ -200,7 +197,7 @@ actionsMenuInit('More Actions:');
|
|||
<br />
|
||||
<span class="anchor" id="line-20"></span><strong>g_showdebughud</strong> – values range from 1 to 11 <span class="anchor" id="line-21"></span>This will replace the HUD with specific readouts about sound, networking, physics, and so on, depending on the value you set. (Note: You will need to download the <a href="./DebugHud.html">DebugHud</a> available on this site, since the debug guis weren’t included with the shipped game.) The value we’re concerned with is 5. <span class="anchor" id="line-22"></span><br />
|
||||
<br />
|
||||
<span class="anchor" id="line-23"></span><img class="attachment" src="./LevelEditor_Performance?action=AttachFile&do=get&target=sdk_debughud.jpg" title="attachment:sdk_debughud.jpg" /> <span class="anchor" id="line-24"></span><br />
|
||||
<span class="anchor" id="line-23"></span><img class="attachment" src="sdk_debughud.jpg" title="attachment:sdk_debughud.jpg" /> <span class="anchor" id="line-24"></span><br />
|
||||
<br />
|
||||
<span class="anchor" id="line-25"></span>On the left is a readout of timing information in milliseconds. <span class="anchor" id="line-26"></span><br />
|
||||
<br />
|
||||
|
@ -215,7 +212,7 @@ actionsMenuInit('More Actions:');
|
|||
<br />
|
||||
<span class="anchor" id="line-49"></span>To see how many passes are being made and where, set <strong>r_showlightcount</strong> to 1. <span class="anchor" id="line-50"></span><br />
|
||||
<br />
|
||||
<span class="anchor" id="line-51"></span><img class="attachment" src="./LevelEditor_Performance?action=AttachFile&do=get&target=sdk_lightcount.jpg" title="attachment:sdk_lightcount.jpg" /> <span class="anchor" id="line-52"></span><br />
|
||||
<span class="anchor" id="line-51"></span><img class="attachment" src="sdk_lightcount.jpg" title="attachment:sdk_lightcount.jpg" /> <span class="anchor" id="line-52"></span><br />
|
||||
<br />
|
||||
<span class="anchor" id="line-53"></span>Colored regions indicate the number of passes. Red is 1, green is 2, blue is 3, cyan is 4, magenta is 5, and white is 6+. If you’re seeing a lot of white, you need to relight that area. <span class="anchor" id="line-54"></span><br />
|
||||
<br />
|
||||
|
@ -275,7 +272,7 @@ actionsMenuInit('More Actions:');
|
|||
<br />
|
||||
<span class="anchor" id="line-120"></span>Spotting areas with too many draws is simple enough, but to identify where in that scene all the draws are coming from we added <strong>r_showBatchSize</strong>. It works just like r_showtris, with the same effects for values of 1, 2, and 3, but the outlines will be colored based on the size of the smallest batch they’re in. It scales from pink (batch size less than ten, meaning bad) through red, orange, yellow, and stops at green (batch size greater than 500, meaning good). <span class="anchor" id="line-121"></span><br />
|
||||
<br />
|
||||
<span class="anchor" id="line-122"></span><img class="attachment" src="./LevelEditor_Performance?action=AttachFile&do=get&target=sdk_batchsize.jpg" title="attachment:sdk_batchsize.jpg" /> <span class="anchor" id="line-123"></span><br />
|
||||
<span class="anchor" id="line-122"></span><img class="attachment" src="sdk_batchsize.jpg" title="attachment:sdk_batchsize.jpg" /> <span class="anchor" id="line-123"></span><br />
|
||||
<br />
|
||||
<span class="anchor" id="line-124"></span>This can be a hard display to read, the main problem being that lots of pink isn’t always bad and green isn’t always good. You can have a scene with a lot of pink and red batching, but if your draws are only in the 400 range you won’t really suffer for it. On the other hand, if your scene is full of decals they’ll batch individually (one for each blood splat, say), but if you crank up the subdivisions on each decal they’ll jump up to a few hundred triangles each and voila, they’re green, which doesn’t actually solve the problem. <span class="anchor" id="line-125"></span><br />
|
||||
<br />
|
||||
|
|
|
@ -91,7 +91,6 @@ function actionsMenuInit(title) {
|
|||
<link rel="Start" href="./Quake4SDK.html">
|
||||
<link rel="Alternate" title="Wiki Markup" href="./MakeAMod-DMSP?action=raw">
|
||||
<link rel="Alternate" media="print" title="Print View" href="./MakeAMod-DMSP?action=print">
|
||||
<link rel="Appendix" title="dmsp_v1.pk4" href="./MakeAMod-DMSP?action=AttachFile&do=view&target=dmsp_v1.pk4">
|
||||
<link rel="Search" href="./FindPage.html">
|
||||
<link rel="Index" href="./TitleIndex.html">
|
||||
<link rel="Glossary" href="./WordIndex.html">
|
||||
|
@ -192,7 +191,7 @@ actionsMenuInit('More Actions:');
|
|||
<br />
|
||||
<span class="anchor" id="line-6"></span><span class="anchor" id="line-7"></span><p class="line874">Before we begin, if you haven't downloaded it already you'll need this file: <span class="anchor" id="line-8"></span><br />
|
||||
<br />
|
||||
<span class="anchor" id="line-9"></span><a class="attachment" href="./MakeAMod-DMSP?action=AttachFile&do=get&target=dmsp_v1.pk4" title="attachment:dmsp_v1.pk4">dmsp_v1.pk4</a> <span class="anchor" id="line-10"></span><span class="anchor" id="line-11"></span><p class="line867"><br />
|
||||
<span class="anchor" id="line-9"></span><a class="attachment" href="./dmsp_v1.pk4" title="attachment:dmsp_v1.pk4">dmsp_v1.pk4</a> <span class="anchor" id="line-10"></span><span class="anchor" id="line-11"></span><p class="line867"><br />
|
||||
<br />
|
||||
<span class="anchor" id="line-12"></span><span class="anchor" id="line-13"></span><p class="line874">DMSP for Q4 was originally an internal experiment to see if a new gametype was possible entirely within script. The basic premise is to provide the player an arcade-style limitless supply of monsters and pickups. A deathmatch map is the perfect place for it, because it has a closed connected layout the player can run around in as long as he can stay alive, henceforth the term "deathmatch single player." <span class="anchor" id="line-14"></span><br />
|
||||
<br />
|
||||
|
|
|
@ -190,7 +190,7 @@ actionsMenuInit('More Actions:');
|
|||
<h1 id="head-f6912df1b6cb2c105c12506d34cd17790e9027b1">1. Quake 4 InstaGib</h1>
|
||||
<span class="anchor" id="line-4"></span><p class="line874">In this mod we will replace all weapons with the railgun, and additionally have the railgun do 1000 damage. <span class="anchor" id="line-5"></span><span class="anchor" id="line-6"></span><p class="line867"><strong>Areas Modified:</strong> <a href="./DefinitionFiles.html">DefinitionFiles</a> <span class="anchor" id="line-7"></span><br />
|
||||
<span class="anchor" id="line-8"></span><strong>Difficulty:</strong> Beginner <span class="anchor" id="line-9"></span><br />
|
||||
<span class="anchor" id="line-10"></span><a class="attachment" href="./MakeAMod-InstaGib?action=AttachFile&do=get&target=q4-instagib.zip" title="attachment:q4-instagib.zip">Download the mod</a> <span class="anchor" id="line-11"></span><span class="anchor" id="line-12"></span><p class="line867">
|
||||
<span class="anchor" id="line-10"></span><a class="attachment" href="./q4-instagib.zip" title="attachment:q4-instagib.zip">Download the mod</a> <span class="anchor" id="line-11"></span><span class="anchor" id="line-12"></span><p class="line867">
|
||||
<h2 id="head-7a9869038f17cfa2ff7a605551de86eb16f59c7d">1.1. Overview</h2>
|
||||
<span class="anchor" id="line-13"></span><p class="line862">To implement something like Insta<tt class="backtick"></tt>Gib, modifying <a href="./DefinitionFile.html">def files</a> is the easiest approach. <a href="./DefinitionFile.html">Def files</a> specify the properties of almost every gameplay element in the game. Specifically, by editing the appropriate <a href="./DefinitionFile.html">def file</a> we'll be able to change the railgun damage, etc. <span class="anchor" id="line-14"></span><span class="anchor" id="line-15"></span><p class="line867">
|
||||
<h2 id="head-79e66621e02742f410d106aaf25be9272778719e">1.2. Getting Started</h2>
|
||||
|
@ -396,7 +396,7 @@ actionsMenuInit('More Actions:');
|
|||
<span class="anchor" id="line-353"></span>
|
||||
<span class="anchor" id="line-354"></span>Instagib should be in: C:\Program Files\id Software\Quake 4\instagib
|
||||
<span class="anchor" id="line-355"></span></pre><span class="anchor" id="line-356"></span><span class="anchor" id="line-357"></span><p class="line862">Navigate to C:\Program Files\id Software\Quake 4 and make a shortcut to Quake4.exe and re-name it <em>Insta<tt class="backtick"></tt>Gib</em>. Edit the properties of the shortcut and add the following command line arguments to the shortcut. <span class="anchor" id="line-358"></span><span class="anchor" id="line-359"></span><p class="line867"><span class="anchor" id="line-360"></span><pre>+set fs_game instagib +set developer 1
|
||||
<span class="anchor" id="line-361"></span></pre><span class="anchor" id="line-362"></span><span class="anchor" id="line-363"></span><p class="line862">You're done! Double click the shortcut to play your mod. See <a href="./PackagingMods.html">PackagingMods</a> for how to distribute instagib to your friends. <span class="anchor" id="line-364"></span><span class="anchor" id="line-365"></span><p class="line867"><a class="attachment" href="./MakeAMod-InstaGib?action=AttachFile&do=get&target=q4-instagib.zip" title="attachment:q4-instagib.zip">Download the mod (Unzip to Quake 4\ directory)</a> <span class="anchor" id="line-366"></span><hr class="hr1" /><p class="line874"> <span class="anchor" id="line-367"></span>Questions? E-mail David <a class="mailto" href="mailto:ddynerman@ravensoft.com">ddynerman@ravensoft.com</a> <span class="anchor" id="line-368"></span><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">MakeAMod-InstaGib (last edited 2005-11-09 17:26:33 by <span title="DavidDynerman @ 67.129.250.254[67.129.250.254]"><a class="nonexistent" href="./DavidDynerman.html" title="DavidDynerman @ 67.129.250.254[67.129.250.254]">DavidDynerman</a></span>)</p>
|
||||
<span class="anchor" id="line-361"></span></pre><span class="anchor" id="line-362"></span><span class="anchor" id="line-363"></span><p class="line862">You're done! Double click the shortcut to play your mod. See <a href="./PackagingMods.html">PackagingMods</a> for how to distribute instagib to your friends. <span class="anchor" id="line-364"></span><span class="anchor" id="line-365"></span><p class="line867"><a class="attachment" href="./q4-instagib.zip" title="attachment:q4-instagib.zip">Download the mod (Unzip to Quake 4\ directory)</a> <span class="anchor" id="line-366"></span><hr class="hr1" /><p class="line874"> <span class="anchor" id="line-367"></span>Questions? E-mail David <a class="mailto" href="mailto:ddynerman@ravensoft.com">ddynerman@ravensoft.com</a> <span class="anchor" id="line-368"></span><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">MakeAMod-InstaGib (last edited 2005-11-09 17:26:33 by <span title="DavidDynerman @ 67.129.250.254[67.129.250.254]"><a class="nonexistent" href="./DavidDynerman.html" title="DavidDynerman @ 67.129.250.254[67.129.250.254]">DavidDynerman</a></span>)</p>
|
||||
|
||||
<div id="pagebottom"></div>
|
||||
</div>
|
||||
|
|
BIN
quake4/Quake_4_Model_Reference.zip
Normal file
BIN
quake4/Quake_4_Modeling_Parts_Junkyard.zip
Normal file
BIN
quake4/Quake_4_Texture_Reference.zip
Normal file
|
@ -186,7 +186,7 @@ actionsMenuInit('More Actions:');
|
|||
|
||||
<div id="page" lang="en" dir="ltr">
|
||||
<div dir="ltr" id="content" lang="en"><span class="anchor" id="top"></span>
|
||||
<span class="anchor" id="line-1"></span><p class="line862">The <a href="./FXEditor.html">FXEditor</a> can be started from the console with the <strong>editfx</strong> command. You can also start it via the command line by adding the <strong>+editfx</strong> parameter. Be aware that you must be in windowed mode to run the <a href="./FXEditor.html">FXEditor</a>. <span class="anchor" id="line-2"></span><span class="anchor" id="line-3"></span><p class="line862">The <a href="./FXEditor.html">FXEditor</a> contains 3 main areas: <span class="anchor" id="line-4"></span><ul><li><p class="line891"><strong><a href="./Basic_FX_file_structure.html">Segments:</a></strong> When an effect is loaded the segments section will show you all of the segments in the current effect. <span class="anchor" id="line-5"></span><span class="anchor" id="line-6"></span></li><li class="gap"><p class="line891"><strong><a href="./The_Properties_of_a_segment.html">Properties:</a></strong> Contains many sub-tabs that control the properties of a segment. <span class="anchor" id="line-7"></span><span class="anchor" id="line-8"></span></li><li class="gap"><p class="line891"><strong><a href="./Notes_about_Envelopes/Tables.html">Graph:</a></strong> Displays visually any table envelopes applied to things such as color, alpha, etc over the lifetime of the segment. <span class="anchor" id="line-9"></span><span class="anchor" id="line-10"></span></li></ul><p class="line867"><img class="attachment" src="./Using_the_FX_Editor?action=AttachFile&do=get&target=fx_overview.jpg" title="attachment:fx_overview.jpg" /> <span class="anchor" id="line-11"></span><span class="anchor" id="line-12"></span><span class="anchor" id="line-13"></span><p class="line862">Within the <a href="./Basic_FX_file_structure.html">Segments</a> window is where new segments are created,removed and ordered. By right clicking inside this region and clicking Insert, new FX segments can be added. <span class="anchor" id="line-14"></span><span class="anchor" id="line-15"></span><p class="line862">Information on the <strong>Properties</strong> window can be found in the <a href="./The_Properties_of_a_segment.html">The Properties of a segment</a>, while information on the <strong>Graph</strong> window can be found in the <a href="./Notes_about_Envelopes/Tables.html">Notes about Envelopes/Tables</a>. <span class="anchor" id="line-16"></span><span class="anchor" id="line-17"></span><p class="line867"><strong>Edit</strong> allows adjustment of Segments, while <strong>View</strong> adjusts what windows within the <a href="./FXEditor.html">FXEditor</a> are visible. There are also Tools usefull for reloading materials, playing and placing effects. The upper right section of the FX Editor is the <strong>Scale</strong> viewer. This is to temporarily set your system quality to Ultra, High, Medium or Low. This is to preview effects using segment <a href="./FXEditor_Tab_-_Emitter.html#detailfactor">Scalability, Detail Factor</a>. <span class="anchor" id="line-18"></span><span class="anchor" id="line-19"></span><p class="line862">It is usefull to bind keys to play effects one time and looping. These keys will play the currently selected effect file in the <a href="./FXEditor.html">FXEditor</a>. The binds are as follows: <span class="anchor" id="line-20"></span><pre>Bind <key> editfx_play
|
||||
<span class="anchor" id="line-1"></span><p class="line862">The <a href="./FXEditor.html">FXEditor</a> can be started from the console with the <strong>editfx</strong> command. You can also start it via the command line by adding the <strong>+editfx</strong> parameter. Be aware that you must be in windowed mode to run the <a href="./FXEditor.html">FXEditor</a>. <span class="anchor" id="line-2"></span><span class="anchor" id="line-3"></span><p class="line862">The <a href="./FXEditor.html">FXEditor</a> contains 3 main areas: <span class="anchor" id="line-4"></span><ul><li><p class="line891"><strong><a href="./Basic_FX_file_structure.html">Segments:</a></strong> When an effect is loaded the segments section will show you all of the segments in the current effect. <span class="anchor" id="line-5"></span><span class="anchor" id="line-6"></span></li><li class="gap"><p class="line891"><strong><a href="./The_Properties_of_a_segment.html">Properties:</a></strong> Contains many sub-tabs that control the properties of a segment. <span class="anchor" id="line-7"></span><span class="anchor" id="line-8"></span></li><li class="gap"><p class="line891"><strong><a href="./Notes_about_Envelopes/Tables.html">Graph:</a></strong> Displays visually any table envelopes applied to things such as color, alpha, etc over the lifetime of the segment. <span class="anchor" id="line-9"></span><span class="anchor" id="line-10"></span></li></ul><p class="line867"><img class="attachment" src="fx_overview.jpg" title="attachment:fx_overview.jpg" /> <span class="anchor" id="line-11"></span><span class="anchor" id="line-12"></span><span class="anchor" id="line-13"></span><p class="line862">Within the <a href="./Basic_FX_file_structure.html">Segments</a> window is where new segments are created,removed and ordered. By right clicking inside this region and clicking Insert, new FX segments can be added. <span class="anchor" id="line-14"></span><span class="anchor" id="line-15"></span><p class="line862">Information on the <strong>Properties</strong> window can be found in the <a href="./The_Properties_of_a_segment.html">The Properties of a segment</a>, while information on the <strong>Graph</strong> window can be found in the <a href="./Notes_about_Envelopes/Tables.html">Notes about Envelopes/Tables</a>. <span class="anchor" id="line-16"></span><span class="anchor" id="line-17"></span><p class="line867"><strong>Edit</strong> allows adjustment of Segments, while <strong>View</strong> adjusts what windows within the <a href="./FXEditor.html">FXEditor</a> are visible. There are also Tools usefull for reloading materials, playing and placing effects. The upper right section of the FX Editor is the <strong>Scale</strong> viewer. This is to temporarily set your system quality to Ultra, High, Medium or Low. This is to preview effects using segment <a href="./FXEditor_Tab_-_Emitter.html#detailfactor">Scalability, Detail Factor</a>. <span class="anchor" id="line-18"></span><span class="anchor" id="line-19"></span><p class="line862">It is usefull to bind keys to play effects one time and looping. These keys will play the currently selected effect file in the <a href="./FXEditor.html">FXEditor</a>. The binds are as follows: <span class="anchor" id="line-20"></span><pre>Bind <key> editfx_play
|
||||
<span class="anchor" id="line-21"></span>Bind <key> editfx_playlooping</pre><span class="anchor" id="line-22"></span><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">Using the FX Editor (last edited 2005-11-09 00:25:23 by <span title="MattVainio @ 67.129.250.254[67.129.250.254]"><a class="nonexistent" href="./MattVainio.html" title="MattVainio @ 67.129.250.254[67.129.250.254]">MattVainio</a></span>)</p>
|
||||
|
||||
<div id="pagebottom"></div>
|
||||
|
|
243
quake4/WantedPages.html
Normal file
BIN
quake4/basicscripttutorial1.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
quake4/basicscripttutorial2.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
quake4/basicscripttutorial3.png
Normal file
After Width: | Height: | Size: 6.6 KiB |
BIN
quake4/basicscripttutorial5.png
Normal file
After Width: | Height: | Size: 8.3 KiB |
BIN
quake4/basicscripttutorial6.png
Normal file
After Width: | Height: | Size: 236 KiB |
BIN
quake4/basicscripttutorial7.png
Normal file
After Width: | Height: | Size: 210 KiB |
BIN
quake4/debug_huds.zip
Normal file
BIN
quake4/dmsp_v1.pk4
Normal file
BIN
quake4/fx_overview.jpg
Normal file
After Width: | Height: | Size: 70 KiB |
BIN
quake4/map_ai_tetherexamples.zip
Normal file
BIN
quake4/marine_ANSI.zip
Normal file
BIN
quake4/marine_symbol.zip
Normal file
111
quake4/monster_slimy_lobber.def
Normal file
|
@ -0,0 +1,111 @@
|
|||
//------------------------------------------------
|
||||
// SDK Example Content
|
||||
// Slimy Lobber
|
||||
//
|
||||
// Compare the entries in this def file to those of the monster_slimy_transfer
|
||||
// (def/ai/monster_slimy_transfer.def) as an example of how to implement new
|
||||
// monsters and monster attacks using only existing AI code.
|
||||
//
|
||||
// aweldon Nov 05
|
||||
//------------------------------------------------
|
||||
|
||||
|
||||
|
||||
model model_monster_slimy_lobber
|
||||
{
|
||||
inherit model_monster_slimy_transfer // Use Slimy Transfer mesh and anims as base.
|
||||
|
||||
// Lobbing anim -----------------------------------------------------------------------------------------
|
||||
anim lob models/monsters/slimy_transfer/attack01.md5anim // Use existing melee anim
|
||||
{
|
||||
frame 1,13,27,36,57 sound snd_flesh // Use pre-existing sounds
|
||||
frame 19 ai_attack melee r_wrist // Throw at appropriate frame
|
||||
frame 19 fx fx_lob r_wrist
|
||||
}
|
||||
}
|
||||
|
||||
entityDef damage_lobber_grenade
|
||||
{
|
||||
// These values are copied from the monster_gunner .def file and seem to work ok.
|
||||
"inherit" "damage_monster_base"
|
||||
"knockback" "0"
|
||||
"damage" "60"
|
||||
"push" "10000"
|
||||
|
||||
"tv_scale" "0.7"
|
||||
"tv_time" "4200"
|
||||
}
|
||||
|
||||
entityDef damage_lobber_grenade_splash
|
||||
{
|
||||
// These values are copied from the monster_gunner .def file and seem to work ok.
|
||||
"inherit" "damage_monster_base"
|
||||
"knockback" "0"
|
||||
"damage" "80"
|
||||
"radius" "200"
|
||||
"push" "10000"
|
||||
|
||||
"tv_scale" "0.7"
|
||||
"tv_time" "4200"
|
||||
}
|
||||
|
||||
|
||||
entityDef projectile_lobber_bit
|
||||
{
|
||||
"inherit" "projectile_gunner_grenade" // inherit defaults from the Gunner grenade
|
||||
|
||||
"fuse" "3" //shorten the fuse
|
||||
|
||||
"detonate_on_actor" "1" // Explode when hitting directly
|
||||
|
||||
"model" "models/gibs/head_pork.lwo" // New 'grenade' model (brraaaaaaainnnnns...)
|
||||
"fx_fly" "effects/impact/impact_flesh.fx" // When flying, play the impact effect. Admittedly not the best effect for this purpose.
|
||||
"fx_detonate" "effects/monsters/gib.fx" // Use the splatty gib effect for 'explosions'
|
||||
"fx_impact" "effects/monsters/gib.fx" // Use the splatty gib effect for 'explosions'
|
||||
|
||||
"def_splash_damage" "damage_lobber_grenade_splash" // Use damage def specified above
|
||||
"def_damage" "damage_lobber_grenade" // Use damage def specified above
|
||||
|
||||
"speed" "500" // Adjust speed
|
||||
"angular_velocity" "0 -900 200" // Give a nudge up and towards center.
|
||||
|
||||
"bounce" "15" // Make with the bouncing
|
||||
|
||||
"contact_friction" "1" // Reduced friction for better bounce behavior
|
||||
|
||||
"delay_splash" "0" // Splash damage effects are instantaneous
|
||||
|
||||
"snd_ricochet" "failedtransfer_flesh" // Fleshy sound on bounce
|
||||
}
|
||||
|
||||
// New EntityDef
|
||||
entityDef monster_slimy_lobber
|
||||
{
|
||||
"inherit" "monster_slimy_transfer" // Inherit from the Slimy Transfer
|
||||
|
||||
// --------------------------------- Actions ------------------------------------
|
||||
"action_meleeAttack" "1" // Leave this enabled, we'll replace it with our lobbing attack
|
||||
"action_meleeAttack_anim" "lob" // 'New' anim on melee attack
|
||||
|
||||
"action_meleeAttack_minrange" "80" // Minimum distance (in units) for attack.
|
||||
"action_meleeAttack_maxrange" "512" // Maximum distance (in units) for attack.
|
||||
"action_meleeAttack_blendFrames" "6" // Blend frames on attack
|
||||
"action_meleeAttack_rate" ".5" // Rate of attack
|
||||
|
||||
"action_vomitAttack" "1" // Keep the vomit attack enabled
|
||||
"action_vomitAttack_minrange" "0" // Minimum distance (in units) for attack.
|
||||
"action_vomitAttack_maxrange" "128" // Maximum distance (in units) for attack.
|
||||
|
||||
|
||||
// --------------------------------- Body ------------------------------------
|
||||
"model" "model_monster_slimy_lobber" // Use our new ModelDef from above
|
||||
|
||||
|
||||
// --------------------------------- Combat ----------------------------------
|
||||
"health" "75" // Beef these guys up a bit
|
||||
"painThreshold" "40" // Can take more damage before playing pain anims
|
||||
|
||||
"def_attack_melee" "projectile_lobber_bit" // Change melee attack to our new projectile
|
||||
|
||||
"fx_lob" "effects/impact/impact_flesh.fx" // Effect to play when lobbing (added on frame commands above)
|
||||
}
|
84
quake4/monster_strogg_marine_rocket.def
Normal file
|
@ -0,0 +1,84 @@
|
|||
//------------------------------------------------
|
||||
// SDK Example Content
|
||||
// Rocket Launcher Strogg Marine
|
||||
//
|
||||
// Compare the entries in this def file to those of the monster_strogg_marine_sgun
|
||||
// (monster_strogg_marine.def) as an example of how to implement new monsters
|
||||
// and monster attacks using only existing AI code.
|
||||
//
|
||||
// aweldon Nov 05
|
||||
//------------------------------------------------
|
||||
|
||||
entityDef projectile_strogg_marine_rocket
|
||||
{
|
||||
// We'll just steal the standard single player rocket.
|
||||
"inherit" "projectile_rocket"
|
||||
|
||||
// ...but that does a little too much damage!
|
||||
"def_damage" "damage_strogg_marine_rocket"
|
||||
"def_splash_damage" "damage_strogg_marine_rocket_splash"
|
||||
}
|
||||
|
||||
entityDef damage_strogg_marine_rocket
|
||||
{
|
||||
// Inherit the standard single player rocket damage
|
||||
"inherit" "damage_rocketDirect"
|
||||
|
||||
// Lower damage from 150 to something more reasonable.
|
||||
"damage" "65"
|
||||
}
|
||||
|
||||
entityDef damage_strogg_marine_rocket_splash
|
||||
{
|
||||
// Inherit the standard single player rocket splash damage
|
||||
|
||||
// Lower damage from 150 to something more reasonable.
|
||||
"damage" "45"
|
||||
|
||||
// This might also get a little messy...
|
||||
"gib" "1"
|
||||
}
|
||||
|
||||
entityDef monster_strogg_marine_rocket
|
||||
{
|
||||
"inherit" "monster_strogg_marine_sgun" // Use the shotgun guy as a base
|
||||
"editor_usage" "Rocket Strogg Marine" // What will display in the editor
|
||||
"editor_ignore" "0" // Show the entity in the right click menu
|
||||
"model" "monster_strogg_marine_sgun" // Use the mesh and anims from the shotgun guy
|
||||
"skin" "skins/monsters/strogg_marine/smv_shotgun" // Leave the skin as the shotgun guy
|
||||
|
||||
// --------------------------------- Defs ----------------------------------
|
||||
"minShots" "1" // Will fire at least once.
|
||||
"maxShots" "3" // ...and up to 3 times in sequence.
|
||||
// These refer only to the number of times the fire animation will play, and not how many physical shots are fired
|
||||
// That can be modified by including multiple shots on frame commands or by upping the count per attack.
|
||||
|
||||
"actionTimer_rangedAttack_rate" ".5" // Was .25. Time between attacks
|
||||
|
||||
"action_rangedAttack" "1"
|
||||
"action_rangedAttack_anim" "shotgun_range_attack" // Anim to play when attacking
|
||||
"action_rangedAttack_minRange" "128" // Minimum attack range in units. Was 0 on shotgun.
|
||||
"action_rangedAttack_maxRange" "640" // Maximum attack range in units. Was 400 on shotgun.
|
||||
"action_rangedAttack_failrate" "0" // Attack will never fail.
|
||||
|
||||
"action_rollAttack_rate" "2" // Was .25. Time between attacks.
|
||||
|
||||
"action_strafe" "0" // Disable Strafing
|
||||
|
||||
"def_attack_base" "projectile_strogg_marine_rocket" // Use our new projectile for base attacks.
|
||||
"attack_base_count" "1" // One projectile
|
||||
"attack_base_spread" "0" // no spread
|
||||
"attack_base_hitscan" "0" // Does not hit instantly
|
||||
"attack_base_accuracy" "1" // increased accuracy
|
||||
|
||||
"def_attack_jointDir" "projectile_strogg_marine_rocket" // Use our new projectile for joint attacks.
|
||||
"attack_jointDir_locktojoint" "1" // Lock to joint direction
|
||||
"attack_jointDir_count" "1" // One projectile
|
||||
"attack_jointDir_spread" "0" // no spread
|
||||
"attack_jointDir_hitscan" "0" // does not hit instantly
|
||||
"attack_jointDir_accuracy" "0" // no change
|
||||
|
||||
// --------------------------------- Effects ---------------------------------
|
||||
"fx_blaster_muzzleflash" "effects\weapons\rocket\muzzleflash_world.fx" // Rocket launcher muzzle flash
|
||||
"snd_weapon_fire" "weapon_rocket_fire" // Rocket launcher sound shader
|
||||
}
|
BIN
quake4/programmerexamplemaps.zip
Normal file
BIN
quake4/q4-instagib.zip
Normal file
BIN
quake4/q4font.zip
Normal file
BIN
quake4/repairbot1.jpg
Normal file
After Width: | Height: | Size: 92 KiB |
BIN
quake4/repairbot2.jpg
Normal file
After Width: | Height: | Size: 102 KiB |
BIN
quake4/repairbot3.jpg
Normal file
After Width: | Height: | Size: 62 KiB |
BIN
quake4/repairbot4.jpg
Normal file
After Width: | Height: | Size: 105 KiB |
BIN
quake4/repairbot5.jpg
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
quake4/repairbot6.jpg
Normal file
After Width: | Height: | Size: 104 KiB |
BIN
quake4/repairbot7.jpg
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
quake4/repairbot8.jpg
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
quake4/sdk_batchsize.jpg
Normal file
After Width: | Height: | Size: 104 KiB |
BIN
quake4/sdk_debughud.jpg
Normal file
After Width: | Height: | Size: 46 KiB |
BIN
quake4/sdk_lightcount.jpg
Normal file
After Width: | Height: | Size: 32 KiB |