]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - docs/manual/Q3Rad_Manual/appndx/appn_d.htm
transfer from internal tree r5311 branches/1.4-gpl
[xonotic/netradiant.git] / docs / manual / Q3Rad_Manual / appndx / appn_d.htm
1 <html>\r
2 <head>\r
3 <title>Q3Radiant Editor Manual: Appendix D</title>\r
4 <link rel = "stylesheet" type = "text/css" href = "../styles/q3rad.css">\r
5 </head>\r
6 <body>\r
7 <h1 class = "MsoTitle">Q3Radiant Editor Manual</h1>\r
8 <hr>\r
9 <h1>Appendix D: Tricks, Tips, and Tutorials</h1>\r
10 \r
11 <h2><a name = "deathsnd">Making the death fall sound&hellip;</a></h2>\r
12 \r
13 The death yell that occurs when a player or bot falls into the\r
14 void or fog of death is triggered by the falling character passing\r
15 through a trigger multiple (should be no less than 32 units thick)\r
16 that is targeted on a target_speaker. If you look at q3DM17\r
17 and find a target speaker, you will see that it plays the falling\r
18 to death sound of the player who activates the trigger. Put\r
19 that sound in your own target_speaker.\r
20 \r
21 <h2><a name = "mirror">Making a Mirror &hellip;</a></h2>\r
22 \r
23 Apply a mirror texture to brush (it will only work on brushes,\r
24 not curve patches). Next, place a misc_portal_surface entity within\r
25 64 units of the mirror and at roughly eye level for the character.\r
26 Because a mirror shows all that it can "see" the mapmaker needs to\r
27 take special care that his mirror doesn't see so much of the map\r
28 that it affects game performance.\r
29 \r
30 <ul><b>Rules</b>: A mirror should not be able to see another\r
31 mirror or portal surface. This means no mirror mazes or\r
32 mirror facing each other to produce infinite reflections.</ul>\r
33 \r
34 <h2><a name = "jumppad">Making a Jump Pad</a></h2>\r
35 \r
36 <ol><li>Make the brush that contains your pulsing pad texture. It can be\r
37 set in the floor or raised up on separate brush.\r
38 \r
39 <li>Make a trigger_push brush entity that is smaller than the pad\r
40 (the id triggers are usually octagonal).\r
41 \r
42 <li>Create a target_position entity and move it to the height and\r
43 location you want. The target position is both the aiming point for\r
44 the trigger_push and the highest point (apex) of the assisted\r
45 jump.\r
46 \r
47 <li>Hi-light the trigger first, then the target_position (order is\r
48 important).\r
49 \r
50 <li>Press CTRL + k to connect the two entities (pointing the first\r
51 at the second).\r
52 \r
53 <li>Compile and test it. The first compile needs to be a full or\r
54 fast vis. If you need to make adjustments to the target_position,\r
55 you only need to use an entities compile.</ol>\r
56 \r
57 <p><div class = "subheading">Lining Up the Pad Texture</div>\r
58 \r
59 The combination of shader keys that make the jump pad pulsing\r
60 texture work can be tricky to line up. Try the following methods if\r
61 your own attempts bring no joy.\r
62 \r
63 <ol><li>Make the brush that will be your pad (128x128 units).\r
64 \r
65 <li>Apply the pad texture. If it doesn't line up, turn off the lock\r
66 texture feature and move the pad until it lines up perfectly.\r
67 \r
68 <li>Lock the texture and move the brush into position.</ol>\r
69 \r
70 <p>If that doesn't work:\r
71 \r
72 <ol><li>Build your brush in place.\r
73 \r
74 <li>Apply the pad texture so that several corners of the pad circle\r
75 are visible.\r
76 \r
77 <li>Compile a regioned area with the jump pad in it.\r
78 \r
79 <li>At least one of the pad circles should have a pulsing circle in\r
80 it.\r
81 \r
82 <li>Back in the editor, slide the pad circle with the active pulse\r
83 so it fills the pad.\r
84 \r
85 <li>Recompile. It <i>should</i> work now.</ol>\r
86 \r
87 <h2><a name = "launchpad">Making a Launch Pad</a></h2>\r
88 \r
89 Target the trigger_push that you put above the pad at a\r
90 target_position. The player will accelerate until he reaches the\r
91 target. Physics does the rest.\r
92 \r
93 <p><b>Note:</b> The center point of the target must be <i>\r
94 higher</i> than the center point of the trigger_push.\r
95 \r
96 <h2><a name="RA3">Making a "Rocket Arena" style map</a></h2>\r
97 \r
98 <ol><li>Create all the entities you want the player to spawn with when\r
99 he enters the arena, and make sure they are somewhere within the\r
100 enclosed space of the map.\r
101 \r
102 <li>Add a "target_give" entity somewhere in the world.\r
103 \r
104 <li>Create all the spawn spots you want to be in your map.\r
105 \r
106 <li>Select the "target_give" entity.\r
107 \r
108 <li>Select one of the "give on spawn in" entities.\r
109 \r
110 <li>Hit Ctrl-K in the editor to link the two items together.\r
111 \r
112 <li>Repeat steps 4 through 6 until the target_give is linked to\r
113 all\r
114 the entities you wish the player to spawn into the world with.\r
115 \r
116 <li>Select a spawn spot\r
117 \r
118 <li>Select the target_give entity\r
119 \r
120 <li>Hit Ctrl-K in the editor to link the two entities together.\r
121 \r
122 <li>Repeat steps 8 through 10 until all the spawn spots are linked\r
123 to\r
124 the target_give entity.\r
125 \r
126 <li>Compile the map\r
127 \r
128 <li>Set g_gametype to tournament mode and set fraglimit of 1.\r
129 \r
130 <li>Get a bunch of your friends to connect into your server and\r
131 have\r
132 fun playing a "Rocket Arena" style game =)</ol>\r
133 \r
134 <p>An alternate use of target_give is how I used it in q3dm10 to\r
135 create the\r
136 "power tube" that gives you health and armour. The tube has a\r
137 trigger_multiple with a wait of 0.5, linked to a target_give which\r
138 is linked\r
139 to a small health and an armour shard.\r
140 \r
141 <h2><a name = "envbox">Making an Environment Box &hellip;</a></h2>\r
142 \r
143 This is the shader script taken from the sky.shader that I used\r
144 to make a test sky box months and months ago.\r
145 \r
146 \r
147 \r
148 <p>In baseq3, make an 'env' folder.\r
149 \r
150 <p>Put your skybox art in here and use this naming\r
151 convention:\r
152 \r
153 <p>[skyname]_lf.tga\r
154 \r
155 <br>[skyname]_rt.tga\r
156 \r
157 <br>[skyname]_ft.tga\r
158 \r
159 <br>[skyname]_bk.tga\r
160 \r
161 <br>[skyname]_up.tga\r
162 \r
163 <br>[skyname]_dn.tga\r
164 \r
165 <ul><li>Make a directory in your quake3 folder with the following path:\r
166 \r
167 <ul><span class = "type">quake3/baseq3/textures/[mymapname]</span></ul>\r
168 \r
169 <li>Make a directory in your quake3 folder with the following path:\r
170 \r
171 <ul><span class = "type">quake3/baseq3/scripts</span></ul>\r
172 \r
173 <li>Make a script document called [mymapname].shader\r
174 \r
175 <li>Make a script document called shaderlist.txt</ul>\r
176 \r
177 <p>In shaderlist.txt put [mymapname] on the first line and close\r
178 the document.\r
179 \r
180 \r
181 \r
182 <p><pre style = "font-size: 10pt">\r
183 //*******************************************************\r
184 //*         Sample environment box shader\r
185 //*******************************************************\r
186 \r
187 textures/[mymapname]/[skyname]01\r
188 \r
189 {\r
190         qer_editorimage textures/[mymapname]/[skyname]\r
191 \r
192         surfaceparm noimpact\r
193         surfaceparm nolightmap\r
194         surfaceparm sky\r
195         q3map_sun 0.933333 0.541176 03.13725 60 160 11\r
196         q3map_surfacelight 100 //lots of diffuse light\r
197         skyparms - 512 -\r
198         sky env/[skyname]\r
199 \r
200 // the following stuff lays clouds over the skybox map which you may not want with a city skyline\r
201         //{\r
202         // map textures/skies/dimclouds.tga\r
203         //\r
204         // tcMod turb 0 0.001 0.5 0.001\r
205         // tcMod scale 3 3\r
206         // tcMod scroll 0.01 0.01\r
207         // blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR\r
208         // depthWrite\r
209         //}\r
210         //{\r
211         // map textures/skies/pjbasesky.tga\r
212         // blendfunc GL_ONE GL_ONE\r
213         // tcMod scroll -0.01 -0.01\r
214         // tcMod scale 5 5\r
215         //}\r
216 //}</pre>\r
217 \r
218 <h2><a name = "shooter">Making a Shooter</a></h2>\r
219 The shooters; shooter_rocket, shooter_grenade, and\r
220 shooter_plasma all fire a single projectile when they are triggered\r
221 by an event.\r
222 \r
223 <ul><li>Make a shooter entity (rocket, grenade or plasma)\r
224 \r
225 <li>Give it a facing (1 to 360 degrees), or,\r
226 \r
227 <li>Target it at a target_position.\r
228 \r
229 <li>Give it a random value (potential degrees off target)\r
230 \r
231 <li>Create an Activator. Make a trigger multiple or target an entity\r
232 at the shooter. When the trigger is entered or the entity is taken,\r
233 the, shooter is activated.\r
234 \r
235 <li>If you want a shooter to fire multiple times, target the\r
236 activator on two or more target_delays. Set the delay time to a\r
237 different value for each (if using a trigger multiple, the WAIT\r
238 value on the trigger should be greater than the longest delay on\r
239 the target_delay). Target each target_delay on the shooter.</ul>\r
240 \r
241 <p align = "center"><a href = "appn_c.htm">Back</a> | <a href = "../index.htm">Home</a> | <a href = "appn_e.htm">Next</a>\r
242 </body>\r
243 </html>