Home

Liquid War 6

image

Contents

1. 137 hud color frame bg value 145 hud color frame fg value 146 hud color text bg value 146 hud color text fg value 146 hud style lt yalue gt uueureurrr rruen 146 io per sec lt value gt eee eee 167 jpeg quality lt value gt 0 167 keep ratio value sess 146 known nodes lt yalue gt euurirrrrrr 96 SDSIYSUSn2iebtieewd en eee he ness eee eed 68 lIist advanced i olelerk eee dudes 69 ist allasesoe seee9eIec ons e name RES 69 lust dOC d iden secesewue bs bscDIi cet bursa 69 E On EE 69 list graphiCs8 si snes sade as ida oy 69 J ist HOOKS 0 63 xke e br eet peri 70 De Ke e EE 70 D e E ei e erefRie eer p gan 70 cIist map hints esei arrene iEn panini 70 Iist map rules io ej ek neshi OE oe 70 Appendix G Indexes dist map style tr ren 70 me D He TEEN 70 Hist netWOrk i i0eeseieee 9b E 70 e DD EE 70 bHist players i iili fee e einig eta val lge e See Kal leben EE enc beside hebes es 71 SS1IStHSOUNG AE EE tae Cid Here AP wh ds 71 LEist team colors i repe Ed CUETSU Weapons 5 e 14b bee ser P 9L ere vs 71 loader sleep value s 167 local bench delta value 168 log files value iiess s ee eee 82 log level value sssssssss 168 log timeout value
2. 151 Appendix G Indexes team color red value s 151 team color yellow value 152 team profile blue aggressive lt value gt 114 team profile blue fast lt value gt 115 team profile blue handicap lt value gt 115 team profile blue mobile lt value gt 115 team profile blue vulnerable lt value gt 115 team profile blue weapon alternate ide val e 2l ls ep p ede eons 116 team profile blue weapon id lt value gt 116 team profile blue weapon mode lt value gt n 116 team profile cyan aggressive value 116 team profile cyan fast lt value gt 116 team profile cyan handicap lt value gt 117 team profile cyan mobile lt value gt 117 team profile cyan vulnerable lt value gt 117 team profile cyan weapon alternate ideXyalue2 iee nce Seda hegrten nep tir team profile cyan weapon id lt value gt 118 team profile cyan weapon mode lt value gt BEE 118 team profile green aggressive value EE 118 team profile green fast lt value gt 118 team profile green handicap lt value gt 118 team profile green mobile lt value gt 119 team profile green vulnerable value EE 119 team profile green weapon alternate Idasvallei norrena e ea penne nea 119 team profile green weapon id value 119 team profile green weapon mode value do
3. s sess 168 magic number value sss 168 PMA EEN 82 map path lt value gt eee eee 82 max cursor pot offset lt value gt 104 max cursor pot value sss 104 max cursor speed value 90 max local bench value value 169 max map height value 137 max map surface value 138 max map width value sess 138 max nb cursors value sss 104 max nb nodes value sss 105 max nb teams value sess 105 max network bench value value 169 max round delta value 105 max zone size value 0 000 105 medicine power value 106 memory bazooka eraser value 169 memory bazooka size value 170 menu color auto value 138 menu color default bg value 147 menu color default fg value 147 menu color disabled bg lt value gt 147 menu color disabled fg lt value gt 147 menu color selected bg lt value gt 148 menu color selected fg lt value gt 148 menu style value s esses 148 min map height lt value gt 138 min map surface value 139 min map width lt value gt
4. 111 start green y lt value gt s s 111 start lightblue x value H start lightblue y lt value gt Tl start magenta x lt value gt 112 start magenta y lt value gt 112 start orange x lt value gt 004 112 start orange y value s sss 112 start pink x 4value sess 112 start pink y value sss 113 start position mode value 113 start purple x value 113 start purple y 2 value 113 start red x lt value gt eee eee 114 start red y lt value gt eee eee 114 start yellow x value 114 start yellow y value 114 system color auto value 140 system color bg value 149 system color fg value sess 149 target fps lt value gt 04 173 team color blue value 150 team color cyan value 150 team color dead value 150 team color green 4value 150 team color lightblue value 150 team color magenta lt value gt 151 team color orange lt value gt 151 team color pink lt value gt 151 team color purple lt value gt
5. sess 139 Se ee e EEN 83 TCUMOdUlesi j ov md vy eee Peete nen dene eee ade 68 mouse sensitivity lt value gt 90 moves per round value 106 music dir value 2 eee 83 music exclude value 148 music file value ssssssn 148 music filter value ss 149 music path lt value gt eee eee eee 83 music volume value sess 94 nb attack tries value 106 nb bots value cee eee eee ee eee 158 nb defense tries value 106 261 nb move tries lt value gt suus 107 net log value cesses eese 170 net per sec value eee eee eee 170 network bench delta lt value gt 170 network reliability lt value gt 171 node description lt value gt 96 node title lt value gt 0 eee eee eee 96 e opet Celagescualuez eee eee 171 Dao a lues 97 cepaedigr6 e ipee beber benenereen eed oe aes 68 pilot lag value cesses val pixelize lt value gt 2 eee eee eee ee 149 playeri color value sss 159 playeri control value 84 playeri name value sss 85 playeri status value ss s 85 player2 color lt value gt
6. 152 LW6_VIEW_COLOR_CURSOR_FG 152 LW6_VIEW_COLOR_MAP_BG 000 152 LW6_VIEW_COLOR_MAP_FG 000 152 LWO V TEW STYLE v irie ra kone ed as ardent debes 153 LWO WALL GREASE e epe ee rE Epa 141 LW6 WATER VOLUME esee 95 LW6 WAVES Rb LEE ERE SEHE TR 153 LW6 WEAPON CHARGE DELAY 133 LNG NEADON CHARGE MAX 134 Liquid War 6 LW6_WEAPON_DURATION 0000 134 LW6_WEAPON_TUNE_BERZERK_POWER 134 LW6_WEAPON_TUNE_TURBO_POWER 134 NG WIDTH joie 2c2 gcc din ER RARE RR RE RB EUR 93 LNG VINDUDNED MODE LIMIT 93 LW6 X POLARITY EEN 134 LW6 X WRAP ose sce nr Rb ARI 153 ENG POLARITIY 2 6 fee RS R3 Rev 135 LWO Y EE 153 LWG Z al e GE 135 L I LEE 154 LWG ZOOM MAK so ict dada bu perpe tien 154 LWG ZOOM MIN enun ERRIY eser DOES 154 LW6 Z00M STEP 2 2 RR RM EPERRIRPPSPRRS 91 LW6_ZOOM_STICK_DELAY onnnsunuasunsusnsno 91 M Mgr HE sisreicrrn sirasi angau drag 168 nap p th osr t 0 Rule tae deeded end takes 82 mnax curSOr pot e e iic e tee Peseta RR 104 max cursor pot offset sse bre 104 paz c rs r spadd se ese 90 max local bench value sss 169 mar map heieht 0 6 e cece eens 137 max map s rfaCce i csl Rie Res 138 nax map widthui C obses erue e NOR uals 138 mNax nb CUfSOfB ix ak uA DARLES REGE 104 max nb nodes sc p e bL Ie e eri IER 105 max nb teamsS i 4 pet er RE ps 1
7. issues 208 c Iw6sys get default prefix 0 cece eee eee 208 c lw6sys get default script file 0 cece eee eee 208 c lw6sys get default user dir 0 0 cee eee 208 c Iw6sys get hostname 0 cece cece eens 208 c lw6sys get log file 0 ccc cece eens 208 C Jofavs get m9ap dr eee eee ees 209 c lw6sys get map path 0 cece eee eee eee 209 C Jofavs get memor bazooka orgaser 209 c Iw6sys get memory bazooka size issues 209 c Iw6sys get mod dir lesse 209 c Iw6sys get music dir eee eee ees 209 c Iw6sys get music path cece eee ee ees 209 c Iw6sys get prefix cece eect ees 209 c lw6sys get run dir ccc cee eee nnes 209 c lw6sys get script file 0 0 eee eee 209 c Iw6sys get timestamp cece cee eee ees 210 c lw6sys get uptime ccc eene 210 c lw6sys get user dir 6 cece cece eens 210 c Iw6sys get username eee ees 210 c lw6sys getenv 66 eee eee eee eee eee 210 Liquid War 6 4 16 364 c Iw6sys getenv prefixed 000 c cece eee eee 210 4 16 365 c lw6sys idle keene eens 210 4 16 366 c lw6sys log 00 eee teens 210 4 16 367 c lw6sys log get backtrace mode nsusnrrsnree 210 4 16 368 c lw6sys log get level 0 00 cece eee eee eee 210 4 16 369 c lw6sys log set backtrace mode ssusnsun unnn 211 4 16 370 c Iw6sys log set dialog timeout 00 eee 211 4 16 371 c
8. ccc cece eee 206 c lw6sys generate id 16 207 c lw6sys generate id 32 207 c lw6sys generate id 64 207 c lw6sys get config file 207 c lw6syS get CWd e 207 c l1w68ys get cycle nebe oe L unde eer rev 207 c lw6sys get data dir sss 207 c lw6sys get default config file 207 c lw6sys get default data dir 207 c lw6sys get default log file 207 c lw6sys get default map dir 208 c lw6sys get default map path 208 c lw6sys get default mod dir 208 c lw6sys get default music dir 208 c lw6sys get default music path 208 c lw6sys get default prefix 208 c lw6sys get default script file 208 c lw6sys get default user dir 208 c lw6sys get hostname sss 208 c lw6sys get log file sss 208 c lw6sys get map dir oaos u010a10s 209 CLv seus get map path 209 c lw6sys get memory bazooka eraser 209 c lw6sys get memory bazooka size 209 c lw6sys get mod dir suus 209 c lw6sys get music dir 209 c lw6sys get music path 209 c lw6sys get prefix s s ns 209 c lw6sys get run dir suus 209 c lw6sys get script file 209 c lw6sys get timestamp 05 210 c 1w6sys get uptim
9. sess 8T B background color auto suse 135 background color root bg sss 142 background color root fg sss 142 background color stuff bg 142 background color stuff fg 143 backeround srvle 6 cece cece eee 143 bench Value ns ehecdoerida eae reU YN D ena 160 Ltb E WEE 160 bind 1p EE 95 bind Ce EE 95 blink CUPSOE ese heen uere ld donee 143 boosSt power cL wp Pienaar 100 bot e c6 pDe6bsbP ia aie bears ied ue dee 154 bot sspeed si e5LLnRPO Pee Ibid p Ra unt 155 boti 8ico esee e kde pr EE 155 Il EE 155 BOC 2 ad cise ide R3 ee be PEPPER C Em R 155 bot2 cOlOP i iota ene EP ER a RE nb ees Pe 155 DOCS Hal is cce e o ead pe eg p UR REP no tentis 156 bot3 cOlOE iacu erp cities Haak eae he veas 156 Lei KEE 156 bot4 cOlOP iis suus e Maitre sees he Anas YE 156 botb a8il s ee or kg epe e dale ame enDi 156 BOth cOlor ic iin uen decid Heed ee Phe v 157 bot6 8i s c indy Rade bebe dada eee 157 bot6 cOlOP i iota wee cea ER a k En Gee ees PES 157 bot 8i s cce etd ew pere Rp dais adem ema s 157 bot COlOE xis Met ee a Enna Rep he vos 157 bot8 8il s EE 158 bot8 cOlOP i ssugs p RES ERR a E RENE Phan Mega 158 botO a8iis e e EG pe e REG RERPSEOUeRDE 158 bot9O cOlOE isa cuneep EEG SE SE Ee 158 broadcaSt oceresc y avida reii eee pared Puce pros 95 C EES veer i e eek REA He mh bd 174 Lt e eye ded oie pm ROPiRESS 174 c lwG get r6 t c seii gcc ee eee hee es 174 c Iw6 releaS6
10. 06 ccc ees 199 c lw6snd get backends 0 0 c cece eee eee ees 199 c Iw6snd is music file 0 cece cece eee 199 c Iw6snd new 6 eect eet ee nee nes 199 c lw6snd play fx 0 eee een eee 199 c lw6snd play music file 0 0 eee 199 c lw6snd play music random 0 00ce cece ee ees 199 c lw6snd poll 2 eee een ees 199 c lw6snd release 6 eee ete eee eens 199 c lw6snd set fx volume 6 cece eee eee 200 c lw6snd set music volume 00 e eee eee eee 200 c lw6snd set water volume 0 00 c eee eee eee 200 c Iw6snd stop music 0 eee 200 c lw6srv get backends 0 200 c Iw6sys build get abs srcdir 000 c cece ee eee 200 c lw6sys build get bin id 00 e cece eee 200 c Jofava build eet bugs u 0 00 cece eee ees 200 c Iw6sys build get cflags 0 cece cece eee eee 200 Liquid War 6 4 16 268 4 16 269 4 16 20 4 16 21 4 16 272 4 16 273 4 16 274 4 16 275 4 16 276 4 16 277 4 16 278 4 16 279 4 16 280 4 16 281 4 16 282 4 16 283 4 16 284 4 16 285 4 16 286 4 16 287 4 16 288 4 16 289 4 16 290 4 16 291 4 16 292 4 16 293 4 16 294 4 16 295 4 16 296 4 16 297 4 16 298 4 16 299 4 16 300 4 16 301 4 16 302 4 16 303 4 16 304 4 16 305 4 16 306 4 16 307 4 16 308 4 16 309 4 16 310 4 16 311 4 16 312 4 16 313 4 16 314 4 16 315 c Iw6sys build get codename ssuuueseess 200 c Jwfovs buil
11. 0055 121 team profile lightblue weapon alternate id 121 Leam proble bebtblue weapon 2d 0s 121 team profile lightblue weapon mode asssnesnsea 121 team profile magenta aggressive 0c eee eee eee 122 team profile magenta fast 0 cece eee eee ee eee 122 Leam pDroble magenta handicean eens 122 team profile magenta mobile 0 00 eee aee 122 Leam pDroble magenta vulnerable 122 team profile magenta weapon alternate id 123 team profile magenta weapon id 6 cece ee eee eee 123 team profile magenta weapon mode suus 123 team profile orange agegressive 0 00 eee eee eee 123 team profile orange fast sees eee eee ee 124 team profile orange handicap eee 124 team profile orange mobile 00 eee eens 124 team profile orange vulnerable 200005 124 team profile orange weapon alternate id 124 team profile orange weapon id 0 0 cece eee ees 125 team profile orange weapon mode ssssn 125 team profile pink aggressive uss ssu erruen 125 team profile pink fast 0 000 e cece eee eee 125 team profile pink handicap cece sees 126 team profile pink mobile 0 cece ee eee 126 Liquid War 6 4 11 112 4 11 113 4 11 114 4 11 115 4 11 116 4 11 117 4 11 118 4 11 119 4 11 120 4 11 121 4 11 122 4 11 123 4 11 124 4 11 125 4 11 126 4 11 127
12. 0 eee n 229 B 2 Technologies 229 B 2 1 Script standard C asnembi 229 B 2 2 OpenGL cce e Reed axes daa RUDI dE 230 B23 CSOUBQ reete rr IU RAE siete MAR eae Beats 230 B 3 Functionnalities eese RR 230 B 3 1 Visual enhancements 0 ccc ccc cee e 230 B 3 2 Rules enhancements esse e 230 B 3 3 Hey you forgot my ideal ll 2 0 eee eee ee 232 Liquid War 6 Appendix C Fanfic 0 233 C 1 The Battle of Eamberiicoted nenen 233 Appendix D Links 237 Dal Ofheal fbht ks ege de as irie et a phe eee p o antes aed 237 D 2 Other Sites 9 e pes Re Rx a een ee a N E EE CERE 237 D3 Old Stites sib seit nd Saltese thos sane OU CERE DP Pd 231 Appendix E GNU GENERAL PUBLIC ETC BINS PT 239 Appendix F GNU Free Documentation License rm 251 Appendix G Indexes 259 G 1 Concept mdesx 0 cece cence teen e eee hen 259 G 2 Function and keyword mdes 0c eee e eee eee eee 259 G 3 Data types indek 00 ccc cece erent e Sh 275 xxvii Chapter 1 Introduction 1 1 Introduction Read this chapter to discover Liquid War 6 1 1 In a nutshell Liquid War 6 is a unique multiplayer wargame Your army is a blob of liquid and you have to try and eat your opponents Rules are very simple yet original they have been invented by Thomas Colcombet It is possible to play alone against the computer but the game is really designed t
13. 141 view color cursor bg value 152 view color cursor fg value 152 view color map bg value 152 view color map fg value 152 view style value eessssss 153 wall greasescualuez nn 141 water volume value eee ee 95 eg egen EE 153 weapon charge delay value 133 weapon charge max value 134 weapon duration lt value gt 134 weapon tune berzerk power lt value gt 134 weapon tune turbo power value 134 geg Eh den EE EE 93 windowed mode limit lt value gt 93 x polarity value s esses 134 x wrap lt value gt eee eee eee eee 153 y polarity value esses 135 y wrap value cece eee eee 153 z decode 2i sse I hee seg eer Es 173 SSZHON CODE ssi lreriesree pese need rer uem 174 z polarity lt value gt eee eee eee 135 zoom max lt value gt lesse 154 zoom min lt value gt 0 cee eee eee 154 zoom step lt value gt sess 91 zoom stick delay value 91 z00m value s eme R4 pl4 EET 154 A ambiance ezclude eee 93 Liquid War 6 ambiance Zile eee eee eee ees 94 ambiance filter ss ssssssss 94 animation density sssssssssss 141 animation speed rne 142 auto release delay
14. 0 cece eee ee ee 203 c Jofavs build eet host og 00 c cece cece eee eee 203 c Iw6sys build get hostname 000 eee 203 c Jofavs build eet mmchudedir 000 eae 204 c lw6sys build get ldflags 00 e cece eee eee 204 c lw6sys build get libdir 0 0 eee eee 204 c Iw6sys build get license 0 cece eee eee 204 c Jot avs build eet Jocaledir 000 c cece eee eee 204 c lw6sys build get md5sum cece eee eee eee 204 c lw6sys build get package id cece cece 204 c Iw6sys build get package name Lussss 204 c Iw6sys build get package string 00 cece eee 204 c Iw6sys build get package tarname 204 c lw6sys build get pointer size 6 cece eee 205 c lw6sys build get prefix 0 00 e eee eee eee 205 c lw6sys build get stamp 6 cece cece eee ees 205 c lw6sys build get time 0 0 cece eee eee 205 c Jot avs build get top arcdir e eee 205 c Iw6sys build get version 0 00 cece cece 205 c Iw6sys build get version base 0 cece cece 205 xxi xxii 4 16 316 4 16 317 4 16 318 4 16 319 4 16 320 4 16 321 4 16 322 4 16 323 4 16 324 4 16 325 4 16 326 4 16 327 4 16 328 4 16 329 4 16 330 4 16 331 4 16 332 4 16 333 4 16 334 4 16 335 4 16 336 4 16 337 4 16 338 4 16 339 4 16 340 4 16 341 4 16 342 4 16 343 4 16 344 4 16 345 4 16 346 4 16 347 4 16 348 4 16 349 4 16 350 4 16 351 4 16
15. 187 c lw6ker game struct checksum 187 c lw6ker get cursor esses 187 c lw6ker get moves 0 cece eee eee 187 c lw6ker get nb colors 187 c lw6ker get nb cursors 188 c lw6ker get nb nodes s 188 CLu ker gert rounde esses 188 c lw6ker get spreads lesus 188 c lw6ker iS OVeE illiid wer verre bet 188 c lw6ker node exists sss 188 c lw6ker register node 188 CG Lv ker renoue Cursor 188 c lw6ker set cufSOF oe cece ea ll tri Ys 188 c lw6ker sync game state 188 c lw6ker unregister node 189 GLv ldr chain entrg ee eee eee ee 189 c lw6ldr exp validate 0 189 c lw ldr get entries sss 189 c lw6ldr hints get default 189 c lw6ldr print examples 189 c Iw6ldr read ci i ellen Rb DATES 189 c lw6ldr read relative ess 189 c lw6map exp get unlocked team color 189 c lw6map exp get unlocked weapon 189 c lw6map exp is team color allowed 190 c lw6map exp is weapon allowed 190 CLupmap ger Look oicrocrcritreiiorsieiss 190 c lw6map get max nb colors 190 c lw6map get max nb cursors 190 c lw6map get max nb nodes 190 c lw6map get music dir 190 c lw6map get title ce eg sa
16. i e e nenns men 174 c I1w6 set ret ii ssec s nia db Resp epe RES 174 c lw6bot get backends sss 174 c Iw6bot neW i cae e pe ba ru be REL 174 c lw6bot next move cece eee eee 174 CLu cte defaults cc cece ee eee 175 CLu cte ger option cee 175 c lwGcfg indt iie aha cane ea eee tee 175 c lwGcfg load ccs sen e nue key 175 c lw6cfg option exists suse 175 c lwocfg quit c dua eh ene eee 175 Appendix G Indexes E wg ciis dob Ea ce RE dr ades 175 CLu cte sert option ccc eee 175 c lw6cfg unified get log file 175 c lw6cfg unified get map path 175 c lw6cfg unified get music path 176 c lw6cfg unified get user dir 176 c lw6cli get backends 176 c lw6cns console support sss 176 c lw6cns 3nit 2 el lec eens dade ate 176 c lw6cns poll ii22ebe I vere EP 176 c Iw6cns quit cii beetle ilex re 4 beris 176 c lw6cns term support sss 176 c lw6dsp get average fps 176 c lw6dsp get fullscreen modes 176 c lw6dsp get instant fps 177 c lw6dsp get last frame rendering time 177 c lw6dsp get nb frames 177 c lw6dsp get video mode 177 c lw6dSp new i siansa neadon Enp piia EE ia 177 c lw6dsp release sees ne dee CHlW6dSp Update eege secs 177 c lw6gen create from seed ig c lw6gen seed
17. nnununnnnnnnne 102 LWO FIGHTER SCALE s dsie Se denesied resas itii 136 LWO FORCES cukcetereseb5esshreewiugeerecsme bd 98 LW6 FRAGS FADE UT gege tuce tas une 102 LW6_FRAGS MODE Rr od babe RR nri 102 LW6_FRAGS_TO_DISTRIBUTE 103 LW6_FULLSCREEN eer ne ag ipni Rn 92 LW6 FX V LUME i el n e e eee 94 LW6 GFX BACKEND esee nnne 92 LWO GEX CPU USAGE n I nc e SEA re 166 LWO GFX DEBUG 2 Rel ixR ep Meere x 167 LWO GEX QUALITY etx REUS Rene 92 LWO GLUE P WER lix iziieed d m RR pete 103 LW6 GUESS C ULORS ie em e Ren ms 137 LW6 GUESS MUVES PER SEC 00 137 EWG HEIGHT ipee pricep e PRISE eserstetenei 93 LW6_HIDDEN_LAYER_ALPHA 000 145 LW6 HIGHEST TEAM COLOR ALLOWED 103 LW6_HIGHEST_WEAPON_ALLOWED 104 LW6_HUD COLOR AUTO s sir meRIMeP wena band 137 LW6_HUD_COLOR_FRAME_BG 00 145 LW6 HUD COLOR FRAME FG s sess 146 LW6_HUD_COLOR_TEXT_BG 0 0 146 LW6_HUD_COLOR_TEXT_FG 000 146 LW6 HUD SIYLE e RR em EE eb 146 LW6 IO ERR SEG e R RM n Re iri 167 LW6 JPEG QUALITY eie metere pirak 167 LW6 KBEEP RATIO coulikiie eM lk EA 146 LNG KNUNN NUDES 0 00 eee nA 96 LW6 LO ADER SLEEP nent RR eene 167 LW6_LOCAL_BENCH_DELTA 0005 168 LW6 LUG EILE eLe gram oe debate ae ts 82 LW6 L G LEVEL Ree eee oes ee eee remet 168 EWG LOG TIMEO
18. C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile Chapter 4 Reference 4 16 129 c lw6ker build game struct c lw6ker build game struct Wrapper on lIw6ker build game struct 4 16 130 c lw6ker cursor exists c lw6ker cursor exists Wrapper on lw6ker_cursor_exists 4 16 131 c lw6ker did cursor win c lw6ker did cursor win Wrapper on lIw6ker did cursor win 4 16 132 c lw6ker do round c lw6ker do round Wrapper on lIwOker do round 4 16 133 c lw6ker dup game state c lw6ker dup game state Wrapper on lw6ker dup game state 4 16 134 c lw6ker game state checksum c lw6ker game state checksum Wrapper on lIw6ker game state checksum 4 16 135 c lw6ker game struct checksum c lw6ker game struct checksum Wrapper on lw6ker_game_struct_checksum 4 16 136 c lw6ker get cursor c lw6ker get cursor Wrapper on lIwGker get cursor 4 16 137 c lw6ker get moves c lw6ker get moves Wrapper on lw6ker get moves 4 16 138 c lw6ker get nb colors c lw6ker get nb colors Wrapper on lIw6ker game state get nb colors 187 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function ex
19. C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile 202 Liquid War 6 4 16 279 c lw6sys build get enable gtk c 1w6sys build get enable gtk C function exported to Guile Wrapper on lIw6sys build get enable gtk 4 16 280 c lw6sys build get enable instrument c lw6sys build get enable instrument C function exported to Guile Wrapper on lw6sys build get enable instrument 4 16 281 c lw6sys build get enable mod caca c 1w6sys build get enable mod caca C function exported to Guile Wrapper on lw6sys build get enable mod caca 4 16 282 c lw6sys build get enable mod csound c lw6sys build get enable mod csound C function exported to Guile Wrapper on lIw6sys build get enable mod csound 4 16 283 c Iw6sys build get enable mod gl1 c lw6sys build get enable mod gli C function exported to Guile Wrapper on lIw6sys build get enable mod gl1 4 16 284 c lw6sys build get enable mod gles2 c lw6sys build get enable mod gles2 C function exported to Guile Wrapper on lw6sys build get enable mod gles2 4 16 285 c lw6sys build get enable mod http c lw6sys build get enable mod http C function exported to Guile Wrapper on lIw6sys build get enable mod http 4 16 286 c lw6sys build get enable mod ogg c 1w6sys build get enable
20. The Title Page means for a printed book the title page itself plus such following pages as are needed to hold legibly the material this License requires to appear in the title page For works in formats which do not have any title page as such Title Page means the text near the most prominent appearance of the work s title preceding the beginning of the body of the text The publisher means any person or entity that distributes copies of the Document to the public A section Entitled XYZ means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language Here XYZ stands for a specific section name mentioned below such as Acknowledgements Dedications Endorsements or History To Preserve the Title of such a section when you modify the Document means that it remains a section Entitled XYZ according to this definition The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document These Warranty Disclaimers are considered to be included by reference in this License but only as regards disclaiming warranties any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License VERBATIM COPYING Appendix F GNU Free Documentation License 253 You may copy and distribute the Document
21. custom ctrl value Command line option LW6 CUSTOM CTRL Environment variable custom ctrl XML key Type string Default value c lw6gui keyboard is pressed 98 SDLK_b Guile custom code associated to the CTRL key equivalent 4 6 6 custom down custom down lt value gt Command line option LW6_CUSTOM_DOWN Environment variable custom down XML key Type string Default value c lw6gui keyboard is pressed 100 SDLK_d Guile custom code associated to the DOWN key equivalent 4 6 7 custom enter custom enter value Command line option LW6 CUSTOM ENTER Environment variable custom enter XML key Type string Default value c lw6gui keyboard is pressed 103 SDLK_g Guile custom code associated to the ENTER key equivalent Chapter 4 Reference 89 4 6 8 custom esc custom esc lt value gt Command line option LW6_CUSTOM_ESC Environment variable custom esc XML key Type string Default value c Iw6gui keyboard is pressed 102 SDLK f Guile custom code associated to the ESC key equivalent 4 6 9 custom left custom left value Command line option LW6 CUSTOM LEFT Environment variable custom left XML key Type string Default value c lw6gui keyboard is pressed 99 SDLK_c Guile custom code associated to the LEFT key equivalent 4 6 10 custom pgdown custom pgdown value Command line option LW6 CUSTOM PGDOWN Environment variable custom pgdown XML key
22. downsize using bench value lt value gt Command line option LW6_DOWNSIZE_USING_BENCH_VALUE Environment variable downsize using bench value XML key Type boolean Default value true If set then the game will automatically downsize a map according to the bench value parameter Downsizing means a 1600x1200 maps becomes 200x150 for instance Downsizing causes fighters to be bigger because map resolution is lower This will avoid running the game on a too big map with your computer not being able to handle it at the required speed 4 12 3 downsize using fighter scale downsize using fighter scale value Command line option LW6 DOWNSIZE USING FIGHTER SCALE Environment variable downsize using fighter scale XML key Type boolean Default value false If set then the game will automatically downsize a map according to the fighter scale parameter Downsizing means a 1600x1200 maps becomes 200x150 for instance Downsizing causes fighters to be bigger because map resolution is lower This can be usefull if you don t want fighters to be too small 4 12 4 fighter scale fighter scale value Command line option LNG FIGHTER SCALE Environment variable fighter scale XML key Type float Default value 1 0 Defines how wide in pixels fighters must be This parameter is very important and will largely condition the number of fighters on the map It is used when loading the map If it is for instance
23. Type string Default value c Iw6gui keyboard is pressed 115 SDLK s Guile custom code associated to the P DOWN key equivalent 4 6 11 custom pgup custom pgup value Command line option LW6 CUSTOM PGUP Environment variable custom pgup XML key Type string Default value c lw6gui keyboard is pressed 119 SDLK_w Guile custom code associated to the PGUP key equivalent 4 6 12 custom right custom right value Command line option LW6 CUSTOM RIGHT Environment variable custom right XML key Type string Default value c Iw6gui keyboard is pressed 118 SDLK v Guile custom code associated to the RIGHT key equivalent 90 Liquid War 6 4 6 13 custom up custom up value Command line option LW6 CUSTOM UP Environment variable custom up XML key Type string Default value c Iw6gui keyboard is pressed 101 SDLK_e Custom keycode to be used as the UP key equivalent 4 6 14 double click delay double click delay value Command line option LW6 DOUBLE CLICK DELAY Environment variable double click delay XML key Type integer Default value 333 Time in milliseconds determining wether two consecutive clicks make a double click or not 4 6 15 max cursor speed max cursor speed lt value gt Command line option LW6_MAX_CURSOR_SPEED Environment variable max cursor speed XML key Type float Default value 10 0 Maximum cursor speed when cursor is controlle
24. c lw6gui joystickl pop button c c lw6gui joystickl pop button d c lw6gui joystickl pop button e c lw6gui joystickl pop button f c Iw6gui joystickl pop pad down c Iw6gui joystick1 pop pad left c Iw6gui joystick1 pop pad right c lw6gui joystickl pop pad up c lw6gui joystick2 get move pad c lw6gui joystick2 pop button a c lw6gui joystick2 pop button b c lw6gui joystick2 pop button c c lw6gui joystick2 pop button d c lw6gui joystick2 pop button e c lw6gui joystick2 pop button f c lw6gui joystick2 pop pad down c lw6gui joystick2 pop pad left c lw6gui joystick2 pop pad right c lw6gui joystick2 pop pad up c lw6gui keyboard get move pad c lw6gui keyboard is pressed c Joat eut kesvboard pop arrow down c lw6gui keyboard pop arrow left c lw6gui keyboard pop arrow right 004 c lw6gui keyboard pop arrow up c Iw6gui keyboard pop key alt c lw6gui keyboard pop key ctrl c Iw6gui keyboard pop key enter c Iw6gui keyboard pop key esc c Iw6gui keyboard pop key pgdown c Iw6gui keyboard pop key pgup Liquid War 6 4 16 76 4 16 77 4 16 78 4 16 79 4 16 80 4 16 81 4 16 82 4 16 83 4 16 84 4 16 85 4 16 86 4 16 87 4 16 88 4 16 89 4 16 90 4 16 91 4 16 92 4 16 93 4 16 94 4 16 95 4 16 96 4 16 97 4 16 98 4 16 99 4 16 100 4 16 101 4 16 102 4 16 103 4 16 104 4 16 105 4 16 106 4 16 107 4 16 108 4 16 109 4 16 110 4 16 111 4 16 11
25. s 193 c 1lw6p2p node get seq min 194 c lw6p2p node get seq reference 194 c 1w6p2p node is dump needed 194 c 1w6p2p node is peer connected 194 c 1w6p2p node is peer registered 194 c 1w6p2p node is seed needed 194 c 1w6p2p node new sss 194 C Lv p p node poll e 194 c 1w6p2p node put local msg 194 c 1lw6p2p node refresh peer 194 c 1lw6p2p node server start 195 c 1lw6p2p node update info 195 elen EE 195 c Iw6pil build pilot 2 es 195 c Iw6pil calibrate mee REIS 195 c Iw6pil commit 1 2 b y xe EE 195 c lw6pil did cursor win 195 c lw6pil dump command generate 195 c lw6pil execute command 195 c lw6pil fix coords8 1 o 4 e ird 195 c lw6pil fix coords x10 s s 196 c lw6pil get last commit seq 196 c lw6pil get looser sess 196 c lw6pil get max seq 0 eee eee 196 CLv pil get uert seg cece 196 c lw6pil get reference current seq 196 c lw6pil get reference target seq 196 c lw6pil get round 0 sss 196 c lw6pil get seq 0 sss 196 CLuppil ger vinner 6 00000 196 Ve elek De DEE 197 C LIv pil Local command ss 197 c lw6pil local cursors set main 197 c lw6pil local cursors set mouse controlled HM
26. u anunsssns T2 show build configure args 72 show build copyright 72 show build datadir i 2lor seris roan 12 show build date 1 e lore tietonsa T2 Sbhou build docdir 12 show build enable allinone 12 show build enable console 73 show build enable fullstatic 73 show build enable gcov 73 262 show build enable gprof 73 show build enable gtk 73 show build enable instrument 73 show build enable mod caca 73 show build enable mod csound 73 show build enable mod gli 74 show build enable mod gles2 74 show build enable mod http 74 show build enable mod ogg 74 show build enable mod soft 74 show build enable openmp 74 show build enable optimize 74 show build enable paranoid 75 show build enable profiler 75 show build enable valgrind 75 show build endianness 75 show build gcc version 75 show build gnu sci soaked ieee eae 75 show build gp2x 6 eee een eee 75 show build home url sss 75 Sbhou build hoet cpu 0008 75 show build host os eese 76 show build host
27. C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile 208 4 16 339 c lw6sys get default map dir c lw6sys get default map dir Wrapper on lIw6sys get default map dir 4 16 340 c lw6sys get default map path c lw6sys get default map path Wrapper on lw6sys get default map path 4 16 341 c lw6sys get default mod dir c lw6sys get default mod dir Wrapper on lw6sys get default mod dir 4 16 342 c lw6sys get default music dir c lw6sys get default music dir Wrapper on lIw6sys get default music dir 4 16 343 c lw6sys get default music path c lw6sys get default music path Wrapper on lIw6sys get default music path 4 16 344 c lw6sys get default prefix c lw6sys get default prefix Wrapper on lIw6sys get default prefix 4 16 345 c lw6sys get default script file c lw6sys get default script file Wrapper on lIw6sys get default script file 4 16 346 c Iw6sys get default user dir c lw6sys get default user dir Wrapper on lIw6sys get default user dir 4 16 347 c lw6sys get hostname c lw6sys get hostname Wrapper on lw6sys get hostname 4 16 348 c lw6sys get log file c lw6sys get log file Wrapper on lw6sys get log file Liquid War 6 C function exported to Guile C function expo
28. Wrapper on lw pil suite get node id 4 16 246 c lw6pil suite get seq 0 c lw6pil suite get seq 0 C function exported to Guile Wrapper on lw pil suite get seq 0 4 16 247 c lw6pil suite init c lw6pil suite init C function exported to Guile Wrapper on lIw6pil suite init 4 16 248 c lw6pil sync from backup c lw6pil sync from backup C function exported to Guile Wrapper on lw6pil_sync_from_backup Chapter 4 Reference 4 16 249 c lw6pil sync from draft c lw6pil sync from draft Wrapper on lw pil sync from draft 4 16 250 c lw6pil sync from reference c lw6pil sync from reference Wrapper on lw pil sync from reference 4 16 251 c Iw6snd get backends c lw6snd get backends Wrapper on lw6snd get backends 4 16 252 c Iw6snd is music file c lw6snd is music file Wrapper on lw6snd is music file 4 16 253 c Iw6snd new c lw6snd new Wrapper on lw6snd_new 4 16 254 c lw6snd play fx c lw6snd play fx Wrapper on lw6snd play fx 4 16 255 c Iw6snd play music file c lw6snd play music file Wrapper on lw6snd play music file 4 16 256 c Iw6snd play music random c lw6snd play music random Wrapper on lw6snd play music random 4 16 257 c lw6snd poll c lw6snd poll Wrapper on lw6snd_poll 4 16 258 c lw6snd release c lw6snd release Wrapper on lw6snd release 199 C function exported to Guile C function exported to Guile C function exported to Guile C function
29. menu color selected bg lt value gt Command line option LW6_MENU_COLOR_SELECTED_BG Environment variable menu color selected bg XML key Type color Default value ffffff Defines the background color for a selected menu item Ignored if menu color auto is set Can be RGB RGBA RRGGBB or RRGGBBAA 4 13 28 menu color selected fg menu color selected fg value Command line option LW6 MENU COLOR SELECTED FG Environment variable menu color selected fg XML key Type color Default value 333333 Defines the foreground color for a selected menu item Ignored if menu color auto is set Can be ZRGB RGBA RRGGBB or RRGGBBAA 4 13 29 menu style menu style value Command line option LW6 MENU STYLE Environment variable menu style XML key Type string Default value cylinder The menu style is simply the name of the engine used to power the menu system The only possible value for now is cylinder 4 13 30 music exclude music exclude value Command line option LW6 MUSIC EXCLUDE Environment variable music exclude XML key Type string Default value Chadburn If this string is found in a music file name it will be excluded from the list when playing in random mode 4 13 31 music file music file value Command line option LW6 MUSIC FILE Environment variable music file XML key Type string Default value Chapter 4 Reference 149 Allows you t
30. value Command line option LW6 GUESS MOVES PER SEC Environment variable guess moves per sec XML key Type boolean Default value true If set then loader will use time to cross level to guess the game speed parameters 4 12 7 hud color auto hud color auto value Command line option LW6 HUD COLOR AUTO Environment variable hud color auto XML key Type boolean Default value true Defines wether hud colors will be set automatically from base and alternate colors This is a time saver to keep map designers from requiring to redefined every single color in the game You only need to set color base bg color base fg color alternate bg and color alternate fg Then hud color frame bg hud color frame fg hud color Test bg and hud color text fg will be automatically set 4 12 8 max map height max map height value Command line option LW6 MAX MAP HEIGHT Environment variable max map height XML key Type integer Default value 1000 Allows you to give a maximum map height When designing a map you might wonder this is dumb Im conceiving this map I know its height why should I limit it Now think of the play who plays on a old slowish computer with a tiny screen He might redefine this himself and does not necessarly wishes to fire Gimp to rescale the map 138 Liquid War 6 4 12 9 max map surface max map surface value Command line option LW6 MAX MAP SURFACE Environment v
31. 2 12 2 The future In the long run what is planned is to support Csound which would allow very cool effects such as dynamically changing the music while the game is running typically following the action If there s a lot of fight the music could reflect this For now this is only vaporware just a nice idea among others nothing implmented yet 2 13 Config file The config file is a simple XML file It uses XML only to benefit standard parsing tools but it s not a structured XML file in the sense that the tree is so simple that all items are at the same level It is just a simple key value binding This file is in HOME liquidwar6 config xml on GNU Linux and POSIX systems in C Documents and Settings lt username gt Liquid War 6Nconfig xml on Microsoft Windows and in Users lt username gt Library Application Support Liquid War 6 config xml on Mac OS X You re free to edit it manually but all parameters are changeable with command line options The program will overwrite this file each time it exits so if you put comments in it they will disappear The advantage of this is that if you mispell something or if for some reason the game does not understand a value then when rewriting the file it will show you it just did not get it The file embeds the documentation for all its entries it is therefore rather verbose The documentation is the same you will find online or by quering the game with the about option also the sa
32. 4 Defines the log level that is how verbose the program will be regarding logs and console output 0 ERROR is the minimum only errors are reported 1 WARNING means errors warnings 2 NOTICE displays most important messages 3 INFO is the default the log file will contain all messages but debug stuff 4 DEBUG logs everything including debug informations 4 15 42 log timeout log timeout lt value gt Command line option LW6_LOG_TIMEOUT Environment variable log timeout XML key Type integer Default value 5000 Delay in msec for which a log message will stay displayed on the screen 4 15 43 magic number magic number lt value gt Command line option LW6_MAGIC_NUMBER Environment variable magic number XML key Type integer Default value LW6LDR_DEFAULT_MAGIC_NUMBER This magic number probably requires an explanation It s used to esti mate how big a map can be built The calculus is very approximative basically bench value magic number total fighters om map rounds per sec moves Der round with total fighters on map depending on various parameters such as map size but also how many fighters are on the map The map loader will try and adjust the map size so that it is just big enough not to saturate your CPU while being as high res Chapter 4 Reference 169 as possible The magic number in itself has no real meaning the higher it gets the more optimized it means the game is Normally you
33. 5 10 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html_node mod_002dtcp html 5 11 mod udp 5 11 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib cli mod udp index html 5 11 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html_node mod_002dudp html 218 Liquid War 6 5 12 libcns 5 12 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib cns index html 5 12 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libcns html 5 13 libcnx 5 13 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib cnx index html 5 13 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libcnx html 5 14 libdat 5 14 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib dat index html 5 14 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libdat html 5 15 libdef 5 15 1 Overview 5 15 2 API There are no functions in libdef only a header file with constants 5 16 libdsp 5 16 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib dsp ind
34. COLOR AUTO Environment variable system color auto XML key Type boolean Default value true Defines wether system colors will be set automatically from base and alternate colors This is a time saver to keep map designers from requiring to redefined every single color in the game You only need to set color base bg color base fg color alternate bg and color alternate fg Then system color bg and system color fg will be automatically set 4 12 18 upsize using bench value upsize using bench value lt value gt Command line option LW6_UPSIZE_USING_BENCH_VALUE Environment variable upsize using bench value XML key Type boolean Default value false If set then the game will automatically upsize a map according to the fighter scale parameter Upsizing means a 160x120 maps becomes 400x300 for instance Upsizing causes fighters to be smaller because map resolution is higher This will avoid useless pixelish jumbo fighters look when your computer is powerfull enough to do better 4 12 19 upsize using fighter scale upsize using fighter scale lt value gt Command line option LW6_UPSIZE_USING_FIGHTER_SCALE Environment variable upsize using fighter scale XML key Type boolean Default value true If set then the game will automatically upsize a map according to the fighter scale parameter Upsizing means a 160x120 maps becomes 400x300 for instance Upsizing causes fighters to be smaller because m
35. Default value 20 Min value 1 Max value 1000 Defines the number of calls to input output functions per second This can affect speed of menus but also cursors but won t change the speed of the game itself It s a cosmectic comfort option 4 15 38 jpeg quality jpeg quality lt value gt Command line option LW6_JPEG_QUALITY Environment variable jpeg quality XML key Type integer Default value 85 Min value 0 Max value 85 Quality used by libjpeg when creating screenshot images The same value you would give to Gimp before exporting an image as a JPEG 4 15 39 loader sleep loader sleep lt value gt Command line option LW6_LOADER_SLEEP Environment variable loader sleep XML key Type float Default value 0 5 Defines how long the loader thread should wait between two polls Default value should fit in most cases 168 Liquid War 6 4 15 40 local bench delta local bench delta lt value gt Command line option LW6_LOCAL_BENCH_DELTA Environment variable local bench delta XML key Type integer Default value 0 Min value 70 Max value 20 A value which is added to bench before starting a local game This is typically zero or negative as adding to bench is like pretending your computer is faster than it really is 4 15 41 log level log level value Command line option LNG LOG LEVEL Environment variable log level XML key Type integer Default value 3 Min value 0 Max value
36. Liquid War 6 will be able to handle levels as tar gz or zip files In that case these files will only be a compressed image of the actual level directory See the map directory of the source Liquid War 6 distribution to see example of maps 3 1 3 Resolution map size Liquid War 6 does enforce a limit on map size This is not to frustrate map designers and or players simply it would be a lie to pretend the game can handle arbitrary big maps They might look great on your computer but will become unplayable soon on an older machine And most of the time they don t look that great carefully crafted 1280720 just looks awesome and can represent a great level complexity Here are the technical limits Type Max width Max height Max surface 24 Liquid War 6 Texture 3 000 2 000 6 000 000 Logical map 1 500 1 000 1 000 000 The texture can be somewhat bigger than the logical map this allows for pretty levels while limiting the horsepower needed to move the fighters and animate everything Note that you could technically feed the game with a map png that is bigger than the logical map limit only it will be downscaled when being loaded The texture limits are generous enough to accept a full HD 1920x1080 image or a 4 3 1600x1200 image while the one million pixels logical map limit is enough to store a 16 9 1280x720 map or a 4 3 1024x768 Keep in mind that the logical map map png will probably be scaled whatsoever even if it
37. RGBA RRGGBB or RRGGB BAA 4 13 35 system color fg system color fg lt value gt Command line option LW6_SYSTEM_COLOR_FG Environment variable system color fg XML key Type color Default value ffffff 150 Liquid War 6 Defines the system foreground color used when displaying system info such as the number of frames per second This will typically be text color Can be RGB RGBA RRGGBB or RRGGBBAA 4 13 36 team color blue team color blue value Command line option LNG TEAM COLOR BLUE Environment variable team color blue XML key Type color Default value 0000ff Defines the color for the blue team Syntax is HTML like ZZRGB or ZZRRGGBB 4 13 37 team color cyan team color cyan value Command line option LW6 TEAM COLOR CYAN Environment variable team color cyan XML key Type color Default value 00ffff Defines the color for the cyan team Syntax is HTML like ZZRGB or ZZRRGGBB 4 13 38 team color dead team color dead value Command line option LW6 TEAM COLOR DEAD Environment variable team color dead XML key Type color Default value 72000000 Defines the color for the teams when they are dead By default it is black this means when a team is weak it becomes black Syntax is HTML like RGB or RRGGBB 4 13 39 team color green team color green value Command line option LW6 TEAM COLOR GREEN Environment variable team color gree
38. View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib srv mod udpd index html 5 46 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html_node mod_002dudpd html 5 47 libsys 5 47 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib sys index html 226 Liquid War 6 5 47 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libsys html 5 48 libtsk 5 48 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib tsk index html 5 48 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libtsk html 5 49 libvox 5 49 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib vox index html 5 49 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html_node libvox html Appendix A Authors 227 Appendix A Authors Here s a list of contributors Project maintainer main developper e Christian Mauduit Original idea e Thomas Colcombet Artwork level design e Kasper Hviid Musics e Tim Chadburn menus Robert Radamant Free the sounds LapSuS Heav hypnosis Nighter313 Oriental Travel Libcaca backend e A Frances e R Clavel e K Lemmonnier T
39. and the output is available online on http www ufoot org liquidwar v6 doc global e pmccabe reports cyclomatic complexity It shows where the code is too complex and should probably be rewritten Output is post processed using pmccabe2html from gnulib The output is available online on http www ufoot org liquidwar v6 doc cyclo e Valgrind is run as well it should report absolutely no leak on all the core sub libraries eg running liquidwar6ker test or liquidwar6ker pil Bits of code which depend on other libraries are a different story for some projects on which Liquid War 6 depends might for some reason raise warnings But as far as Liquid War 6 is concerned the goal is simple zero leak e Liquid War 6 is referenced on Open HUB Visit http www openhub net p liquidwar6 to get time based statistics and facts about the source code Those tools certainly don t garantee the code is perfect but they do help improving the quality of the program If you hack it s recommended you give them a try 3 10 Using the console The console can be activated by passing display console when starting the game or by using the system options menu When the console is activated a 1w6 prompt should appear in the terminal which launched the program If you started Liquid War 6 by clicking on an icon console probably won t work at all since stdout and stdin won t be attached to anything The console allows you to type arbitray Scheme Guile
40. c lw6sys build get host os 203 c lw6sys build get hostname 203 c lw6sys build get includedir 204 c lw6sys build get ldflags 204 c lw6sys build get libdir 204 c lw6sys build get license 204 267 c lw6sys build get localedir 204 c lw6sys build get md5sum 204 c lw6sys build get package id 204 c lw6sys build get package name 204 c lw6sys build get package string 204 c lw6sys build get package tarname 204 c lw6sys build get pointer size 205 c lw6sys build get prefix 205 c lw6sys build get stamp 205 c lw6sys build get time 205 c 1w6sys build get top srcdir 205 c lw6sys build get version 205 c lw6sys build get version base 205 c lw6sys build get version major 205 c lw6sys build get version minor 205 c lw6sys build is gnu sess 205 c 1w6sys build is gp2x cecus 206 c lw6sys build is mac oS x 206 c lw6sys build is ms windows 206 c lw6sys build is unix esses 206 c 1w6sys build is x86 esses 206 c lw6sys debug get 0 c cece eee 206 c lw6sys debug set 5 cece eens 206 e l1w6sys delay ex trees 206 c 1w6sys d mp oi seize Reb be Egasi 206 c lw6sys dump clear
41. containing a Liquid War 6 app folder OS X application is available for your convenience It might work or not In doubt compile from source The complicated part about this package a bundle is OS X language is that it needs to embed various libraries which are typically installed in opt by MacPorts on a developper s machine So to build this package a heavy use of the utilility install name tool is re quired normally all libraries needed ship with the binary remaining depedencies concern frameworks which should be present on any working Mac OS X install Still this is only theory Needs to be widely tested The layout of the bundle follows e Contents Info plist metadata bundle description file e Contents MacOS contains the main binary liquidwar6 as well as all specific low level libraries e Contents Resources data general game data does not contain maps e Contents Resources music music for the game e Contents Resources map system maps you can put your own maps or extra maps here if you want all users to share them e Contents Resources script Liquid War 6 specific scripts the scheme scripted part of the program e Contents Resources guile common shared Guile scripts part of Guile distribu tion e Contents Resources doc documentation in HTML and PDF formats Additionnally the Mac OS X port uses Users lt username gt Library Application Support Liquid War 6 to store configuration
42. data dir That s the point 4 3 9 show build date show build date Command line option Shows the date when the binary was compiled 4 3 10 show build docdir show build docdir Command line option Shows the docdir value as passed to the GNU Autoconf configure script when compiling the program Default is usr local share doc liquidwar6 4 3 11 show build enable allinone show build enable allinone Command line option Shows wether the allinone option has been chosen when building the game This depends on parameters passed to configure Chapter 4 Reference 73 4 3 12 show build enable console show build enable console Command line option Shows wether the console has been enabled when building the game This depends on parameters passed to configure and also on the presence of ncurses and readline 4 3 13 show build enable fullstatic show build enable fullstatic Command line option Shows wether the fullstatic option has been chosen when building the game This depends on parameters passed to configure 4 3 14 show build enable gcov show build enable gcov Command line option Shows wether the game was build with suitable informations for gcov This depends on parameters passed to configure 4 3 15 show build enable gprof show build enable gprof Command line option Shows wether the game was build with suitable informations for gprof This depe
43. disable gtk allows you to turn on off gtk support Normally this is detected automatically but in case you really want to disable it on platforms which support it you can This will cause the program not to link against GTK libs e disable cunit allows you to turn on off CUnit support Normally this is detected automatically but in case you really want to disable it on platforms which support it you can This will cause the program not to link against CUnit libs e enable optimize will turn on optimizations This will turn on compiler options such as fomit frame pointer but also disable some code in the program Indeed most of the advanced memory checking in the game which ensures it does not leak will be turned of This will certainly speed up things however it s not recommended to turn this on until program is not stable enough so that memory leaks and other problems can be declared impossible Turn this on if you really have some speed problem otherwise it s safer to use the full featured slow version of the game e enable paranoid will turn on very picky and pedantic checks in the code try this when you suspect a serious memory bug a race condition whatsoever and want to track it down Useless for players Chapter 3 Hacker s guide Al e enable headless will allow compilation without any graphics backend The game is unplayable in that state but one can still wish to compile what is compilable for t
44. false Force the game to fun fullscreen Note that the graphics backend might ignore this hint 4 7 3 gfx backend gfx backend value Command line option LNG GFX BACKEND Environment variable gfx backend XML key Type string Default value gll Sets the graphics backend AKA gfx to use For now the only reasonnable choice is el and will use an OpenGL v1 SDL 3D accelerated driver 4 7 4 gfx quality gfx quality lt value gt Command line option LW6_GFX_QUALITY Environment variable gfx quality XML key Type integer Default value 1 Min value 0 Max value 2 Sets the overall quality of the graphics backend Depending on the backend this can mean different things For instance for the gl backend this can change texture Chapter 4 Reference 93 filtering nearest linear bilinear This is not the same as pixelize which is a per map option and emulates an old school appearance 4 7 5 height height value Command line option LW6 HEIGHT Environment variable height XML key Type integer Default value 1 Run the game with the given screen height Note that the graphics backend might ignore this hint Use with its companion option width A negative value will force the use of a default value 4 7 6 width width value Command line option LW6 WIDTH Environment variable width XML key Type integer Default value 1 Run the game with the given screen w
45. get version major 4 16 317 c lw6sys build get version minor c lw6sys build get version minor Wrapper on lIw6sys build get version minor 4 16 318 c lw6sys build is gnu c lw6sys build is gnu Wrapper on lw6sys build is gnu 205 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile 206 4 16 319 c lw6sys build is gp2x c lw6sys build is gp2x Wrapper on lw6sys_build_is_gp2x 4 16 320 c Iw6sys build is mac os x c lw6sys build is mac os x Wrapper on lw6sys build is mac os x 4 16 321 c Iw6sys build is ms windows c lw6sys build is ms windows Wrapper on lIw6sys build is ms windows 4 16 322 c lw6sys build is unix c lw6sys build is unix Wrapper on lw6sys build is unix 4 16 323 c lw6sys build is x86 c lw6sys build is x86 Wrapper on lw6sys_build_is_x86 4 16 324 c lw6sys debug get c lw6sys debug get Wrapper on lw6sys debug get 4 16 325 c Iw6sys debug set c lw6sys debug set Wrapper on lw6sys debug set 4 16 326 c lw6sys delay c lw6sys delay Wrapper on lw6sys delay 4 16 327 c Iw6sys dump c lw6sys dump Wrapper on lw6sys dump 4 16 328 c Iw6sys dump clear c lw6sys dump clear Wrapper on lw6sys
46. if you have multiple non loopback network interfaces if you use NAT to protect yourself from intruders and or if your context forces you to do so In that case Liquid War won t be able to guess a correct URL automatically So you need to set it up manually either by editing the public url entry in the config file changing environment variable LW6_PUBLIC_URL or passing the public url http lt host gt lt port gt argument when running the game Typically if you are behind a firewall which does NAT use the firewall address The right address is the address which given to remote hosts will allow them to connect on your game instance 18 Liquid War 6 2 10 2 Starting a node A node is started automatically when you run the game Even if you don t start to play node starts in the background and exchanges data with other nodes mostly to discover them and maintain its internal map of existing nodes and games So even without starting a network game you should be able to point a web browser on your node and see a web page describing it Your node address is displayed on stdout console when starting the game If in doubt try http localhost 8056 which should work unless you modified defaults settings When you start a network game the program simply changes your node state from idle to accepting connections 2 10 3 Connecting to a node The interface should show you the list of available nodes just pick one and try
47. in whole or in part as part of another Document An MMC is eligible for relicensing if it is licensed under this License and if all works that were first published under this License somewhere other than this MMC and subsequently incorporated in whole or in part into the MMC 1 had no cover texts or invariant sections and 2 were thus incorporated prior to November 1 2008 The operator of an MMC Site may republish an MMC contained in the site under CC BY SA on the same site at any time before August 1 2009 provided the MMC is eligible for relicensing 258 Liquid War 6 ADDENDUM How to use this License for your documents To use this License in a document you have written include a copy of the License in the document and put the following copyright and license notices just after the title page Copyright C year your name Permission is granted to copy distribute and or modify this document under the terms of the GNU Free Documentation License Version 1 3 or any later version published by the Free Software Foundation with no Invariant Sections no Front Cover Texts and no Back Cover Texts A copy of the license is included in the section entitled GNU Free Documentation License If you have Invariant Sections Front Cover Texts and Back Cover Texts replace the with lexts line with this with the Invariant Sections being list their titles with the Front Cover Texts being list and with the Back Cov
48. individual works permit Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate Conveying Non Source Forms You may convey a covered work in object code form under the terms of sections 4 and 5 provided that you also convey the machine readable Corresponding Source under the terms of this License in one of these ways Appendix E GNU GENERAL PUBLIC LICENSE 243 a Convey the object code in or embodied in a physical product including a phys ical distribution medium accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange b Convey the object code in or embodied in a physical product including a physi cal distribution medium accompanied by a written offer valid for at least three years and valid for as long as you offer spare parts or customer support for that product model to give anyone who possesses the object code either 1 a copy of the Corresponding Source for all the software in the product that is covered by this License on a durable physical medium customarily used for software interchange for a price no more than your reasonable cost of physically performing this con veying of source or 2 access to copy the Corresponding Source from a network server at no charge c Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source This alternat
49. move Chapter 4 Reference 4 16 9 c lw6cfg defaults c lw6cfg defaults Wrapper on lw6cfg_defaults 4 16 10 c lw6cfg get option c lw6cfg get option Wrapper on lw6cfg get option 4 16 11 c lw6cfg init c lw6cfg init Wrapper on lIw cfg init 4 16 12 c lw6cfg load c lw6cfg load Wrapper on lIw6cfg load 4 16 13 c lw6cfg option exists c lw6cfg option exists Wrapper on lw6cfg option exists 4 16 14 c Iw6cfg quit c lw6cfg quit Wrapper on lw6cfg_quit 4 16 15 c lw6cfg save c lw6cfg save Wrapper on lw6cfg_save 4 16 16 c lw6cfg set option c lw6cfg set option Wrapper on lw6cfg_set_option 4 16 17 c lw6cfg unified get log file c lw6cfg unified get log file Wrapper on lw6cfg unified get log file 4 16 18 c lw6cfg unified get map path c lw6cfg unified get map path Wrapper on lw6cfg unified get map path 175 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile 176 4 16 19 c lw6cfg unified get music path c lw6cfg unified get music path Wrapper on lw6cfg unified get music path 4 16 20 c lw6cfg unified get user dir c lw6cfg unified get user dir Wrapper on lw6cfg unified get user dir 4 16 21 c lw6cli
50. s within the absolute limits the game adapts the resolution to your computer speed and your texture will rarely appear in its native resolution will probably be distorted and so on 3 1 4 Metadata Older versions of Liquid War 6 used to load a plain README file and use this as metadata Title was take from map directory name This is still supported but it now also supports the addition of a metadata xml file in which you can describe your map The following files can be defined e title map title what will appear in the menus e author map author e description description of the map to help players when browsing folders e license map license short version just a simple one liner don t use lenghtly copy right notices here the README file would be the file to put long legal sections 3 1 5 map png This is the only required file in a level In fact the existence of map png makes a directory a level When checking wether a directory is a correct level Liquid War 6 simply tests the existence and validity of map png This image is a simple black amp white area where white zones are the background the sea the places where fighters can move and black zones are the foreground the walls the places where fighters can t go This informations can be stored in a 2 color indexed file or in a grayscaled or even truecolor RGB file but color information won t be used Internally Liquid War 6 will read the color of every
51. set to 1 there will be exactly a fighter per pixel on the screen That is if you play 640x480 on an empty map the maximum fighters you could have is about 300000 The idea is that by changing the resolution you also define the density of the map In pratice this is done in the hope that someone with a slow computer will pick up a low resolution and therefore play small levels Conversely someone with a brand new computer with powerfull CPU amp GPU will use great resolutions and be happy with many fighters on the map Still changing the resolution after loading the map will not affet the number of fighters Same for network games the first player who loads the map defines its properties according to its own settings Chapter 4 Reference 137 4 12 5 guess colors guess colors value Command line option LW6 GUESS COLORS Environment variable guess colors XML key Type boolean Default value true Defines wether colors should be set automatically from texture colors If set to true then the program will try to pick up colors automatically from the texture and will override the values of the color base bg color base fg color alternate bg and color alternate fg parameters How these colors are picked up can t be garanteed so if the map does not have strong contrast or if there can be any form of ambiguity it s safe to set this to false and define one s own colors 4 12 6 guess moves per sec guess moves per sec
52. sss 159 player2 control value 85 player2 name value esses 85 player2 status value 0 86 player3 color lt value gt ssss 159 player3 control value 86 player3 name value sss 86 player3 status value sss s 86 player4 color lt value gt sues 159 player4 control value 86 player4 name value s ee eee 87 player4 status lt value gt 0 87 e SCH E EE 84 public url lt value gt 0 eee eee eee 97 e VE E Dui e env era PRO Sane 171 tepeat delagscualuez 90 repeat interval value St resample lt value gt cece eee eee eee 139 SHES SS Wied da eed ni cio acer uals aha een Aare 172 reset config on upgrade lt value gt 172 respawn delay lt value gt s sess 107 respawn position mode value 107 respawn team value sess 107 round delta value ssssss 108 rounds per sec value 108 screenshots per min value 172 e E ET th Ree erbe A 84 EE 172 Sbhou build abe sredir ecr srcscirarisesr ral glhow build bin id c2ie nene ral show build bugs url sss T1 show build cflags ssuss 72 show build codename
53. the idea is to provide a basic yet surprising alternative text based renderer using libcaca 3 6 3 How to write a new backend The starting point for any hack are the files src lib gfx gfx h This is where the API is defined Basically the type 1w6gfx backend t contains all the required callbacks You must provide an implementation for each function Let s take an example taken from mod g11 When calling 1w6gfx get video mode and passing it a first argument which is a valid mod g11 backend the function mod g11 utils get video mode will be called How this is done is a little C casting wizardry To understand how this works read the files e src lib gfx gfx api c contains all the functions which are part of the API and can be called elsewhere in the code e src lib gfx gfx register c contains the code that allows a module to be loaded unloaded at runtime Will act differently if the games is compile with the 38 Liquid War 6 allinone flag but for the caller this is transparent just create and destroy backend period src lib gfx mod gli mod gli backend c this is where the module actually binds its internal functions with the callbacks defined in the lw6gfx_backend_s struct None of these internal functions should be called directly code in 1ibdsp for instance should only refer to the 1w6gfx bindings Reading the code in src lib gfx gfx test c shows how these functions can be called and in which order All the fun
54. 0 means there s no weapon 1 means one weapon per team defined by the weapon id parameter 2 means random weapon 4 11 100 team profile orange aggressive team profile orange aggressive lt value gt Command line option LW6_TEAM_PROFILE_ORANGE_AGGRESSIVE Environment variable team profile orange aggressive XML key Type integer Default value 48 Min value 5 Max value 2000 Defines how aggressive the orange team is This is a percentage if set to 200 then team will attack twice as much as any other team with the default value Setting this to a high value clearly advantages this team 124 Liquid War 6 4 11 101 team profile orange fast team profile orange fast lt value gt Command line option LW6_TEAM_PROFILE_ORANGE_FAST Environment variable team profile orange fast XML key Type integer Default value 160 Min value 5 Max value 2000 Changes the speed of the orange team This is a percentage if set to 50 then team will move twice slower than other teams with the default parameter Setting this high is very likely to advantage the team 4 11 102 team profile orange handicap team profile orange handicap lt value gt Command line option LW6_TEAM_PROFILE_ORANGE_HANDICAP Environment variable team profile orange handicap XML key Type integer Default value 100 Min value 10 Max value 1000 Defines the handicap for the orange team 4 11 103 team profile orange mobile team profile orange mobi
55. 00 eee eee 147 4 13 24 menu color default fg 0 c eee eee eee 147 4 13 25 mem color dsablec be 147 4 13 26 menu color disabled fg 00 c cee eee eee eee 147 4 13 27 menu color selected bg 0 c cece eee eee 148 4 13 28 memt color zelected fe nuunuu e eee eee eee 148 4 13 29 mem stvle 0 cece eee e nee eee 148 4 13 30 music evchude 0 cece ence eee teen eees 148 4 13 31 E EE 148 4 13 32 music filter 00 nes 149 AN13 33 pixeliZe iid ranri s pedem eeu reu a a d dite s 149 Liquid War 6 4 13 34 system color bg 0 cece eee ene eee 149 4 13 35 system color fg 0 0 cee eee eee ees 149 4 13 36 team color blue 0 0 cece eee eens 150 4 13 37 team color cyan 2 0 cee eee eee e 150 4 13 38 Leam color dead 0 00 eects 150 4 13 39 Leam color green 6 06 cece eee eee eens 150 4 13 40 Leam color Jbebtblue 0 cece eee eee 150 4 13 41 team color magenta sees 151 4 13 42 Leam color orange esses e 151 4 13 43 Leam color pmnk nsr 151 4 13 44 team color purple 0 c cece eee eee 151 4 13 45 team color red 0 00 cent neees 151 4 13 46 team color yellow 0 0 c eects 152 4 13 47 view color cursor bg 0000 152 4 13 48 view colorcursor fe eens 152 4 13 49 viegw color map he eee eee eee 152 4 13 50 viegw color map Je cece eens 152 4 13 51 view style 0 ile cece rre 153 4 13 52 WaVeBkleunenesseereneren tee seg qu R
56. 100 X start position for the pink team This is a percentage of map width value between 0 and 100 4 11 52 start pink y start pink y value Command line option LW6 START PINK Y Environment variable start pink y XML key Type integer Default value 50 Min value 0 Max value 100 Y start position for the pink team This is a percentage of map height value between 0 and 100 4 11 53 start position mode start position mode value Command line option LW6 START POSITION MODE Environment variable start position mode XML key Type integer Default value 0 Min value 0 Max value 2 Defines how teams are set up on the map at game startup 0 means teams respect the pre defined start positions 1 means that a random position will be picked among the existing positions T hat is red could take green s place 2 means total randomness teams can appear anywhere 4 11 54 start purple x start purple x value Command line option LW6 START PURPLE X Environment variable start purple x XML key Type integer Default value 90 Min value 0 Max value 100 X start position for the purple team This is a percentage of map width value between 0 and 100 4 11 55 start purple y start purple y value Command line option LW6 START PURPLE Y Environment variable start purple y XML key Type integer Default value 50 Min value 0 Max value 100 Y start position for the purple team This i
57. 11 47 start magenta x start magenta x lt value gt Command line option LW6_START_MAGENTA_X Environment variable start magenta x XML key Type integer Default value 65 Min value 0 Max value 100 X start position for the magenta team This is a percentage of map width value between 0 and 100 4 11 48 start magenta y start magenta y lt value gt Command line option LW6_START_MAGENTA_Y Environment variable start magenta y XML key Type integer Default value 90 Min value 0 Max value 100 Y start position for the magenta team This is a percentage of map height value between 0 and 100 4 11 49 start orange x start orange x value Command line option LW6 START ORANGE X Environment variable start orange x XML key Type integer Default value 65 Min value 0 Max value 100 X start position for the orange team This is a percentage of map width value between 0 and 100 4 11 50 start orange y start orange y value Command line option LW6 START ORANGE Y Environment variable start orange y XML key Type integer Default value 10 Min value 0 Max value 100 Y start position for the orange team This is a percentage of map height value between 0 and 100 4 11 51 start pink x start pink x value Command line option LNG START PINK X Environment variable Chapter 4 Reference 113 start pink x XML key Type integer Default value 10 Min value 0 Max value
58. 151 team color pink sse e e n 151 team color purple sene 151 team color red esssss ee nn 151 team color yellow cece eee eee 152 team profile blue aggressive 114 Leam profile blue fast sess 115 team profile blue handicap 115 team profile blue mobile 115 team profile blue vulnerable 115 team profile blue weapon alternate id 116 team profile blue weapon id 116 team profile blue weapon mode 116 team profile cyan aggressive 116 Leam profile can fast esses 116 team profile cyan handicap Dr team profile cyan mobile 117 274 team profile cyan vulnerable 117 team profile cyan weapon alternate id 117 team profile cyan weapon id 118 team profile cyan weapon mode 118 team profile green aggressive 118 team profile green fast 118 team profile green handicap 118 team profile green mobile 119 team profile green vulnerable 119 team profile green weapon alternate id 119 team profile green weapon id 119 team profile green weapon mode 120 team profile lightblue aggressive 120 team profile lightblue fast 120 team profile lightblue handicap 120 team profile lightblue mobile 120 team p
59. 16 226 c lw6pil get round 0 c lw6pil get round 0 Wrapper on lIw6pil get round 0 4 16 227 c lw6pil get seq 0 c lw6pil get seq 0 Wrapper on lw6pil get seq 0 4 16 228 c lw6pil get winner c lw6pil get winner Wrapper on lw pil get winner Liquid War 6 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile Chapter 4 Reference 197 4 16 229 c lw6pil is over c lw6pil is over C function exported to Guile Wrapper on lw6pil is over 4 16 230 c lw6pil local command c lw6pil local command C function exported to Guile Wrapper on lIw pil local command 4 16 231 c lw6pil local cursors set main c lw6pil local cursors set main C function exported to Guile Wrapper on lw6pil_local_cursors_set_main 4 16 232 c lw6pil local cursors set mouse controlled c lw6pil local cursors set mouse controlled C function exported to Guile Wrapper on lw6pil_local_cursors_set_mouse_controlled 4 16 233 c lw6pil make backup c lw6pil make backup C function exported to Guile Wrapper on lw6pil make backup 4 16 234 c lw6pil poll dump c lw6pil poll dump C function exported to Guile Wrapper on lw6pil_poll_dump 4 16 235 c lw6pil round2seq c
60. 16 84 c Iw6gui menu new c lw6gui menu new Wrapper on lw6gui menu new 4 16 85 c Iw6gui menu remove c lw6gui menu remove Wrapper on lw6gui menu remove 4 16 86 c Iw6gui menu remove all c lw6gui menu remove all Wrapper on lw6gui_menu_remove_all 4 16 87 c lw6gui menu scroll down c lw6gui menu scroll down Wrapper on lw6gui menu scroll down 4 16 88 c Iw6gui menu scroll up c lw6gui menu scroll up Wrapper on lw6gui menu scroll up Liquid War 6 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile Chapter 4 Reference 4 16 89 c lw6gui menu select c lw6gui menu select Wrapper on lw6gui menu select 4 16 90 c Iw6gui menu select esc c lw6gui menu select esc Wrapper on lw6gui menu select esc 4 16 91 c Iw6gui menu set breadcrumbs c lw6gui menu set breadcrumbs Wrapper on lw6gui menu set breadcrumbs 4 16 92 c Iw6gui menu sync c lw6gui menu sync Wrapper on lw6gui menu sync 4 16 93 c Iw6gui mouse get state c lw6gui mouse get state Wrapper on lw6gui mouse get state 4 16 94 c lw6gui mouse poll move c lw6gui mouse poll move Wrapper on lw6gui mouse poll move 4 16 95 c Iw6gui mouse pop button left c l
61. 2 0 0 0 0 e cece 131 Leam pGroble vellow handican 00 0 cece eee ee 131 team profile yellow mobile 0 00 cece 131 team profile yellow vulnerable 0 0 0 0 e eee 131 team profile yellow weapon alternate id 132 Leam pGroble vellouw weapon 3d ccc eee 132 team profile yellow weapon mode ssssn 192 total armies size sess 132 total time lsssssleee e 133 use team profiles 0 0 0 cece cece nee 133 vereal move 133 weapon charge delay 0 c cece eee eee ees 133 weapon charge Max 00 e cece cece nee 134 weapon duration 6 cc cece seen 134 weapon tune berzerk power 00 e eee eee eee 134 weapon tune turbo pOWeT eee 134 X DOlariUy eet estesa da reae ade praet ded ese 134 EE EE 135 Zpolar EE 135 hints xml s E ER EE ees 135 backeround color auto ccc eee ees 135 downsize using bench value 000s 136 downsize using fighter scale 0 00 cee eee eee eee 136 fighter scale iere Sc E dl Fre RP Pee 136 PUESS COlOTS 2 ese enden ee E RR REX ARGUS E 137 guess moves per seC sees nnn 137 h d eolor auto seccion orina PEE 137 xi xii 4 12 8 max map height sssesessseseeseeeeee 137 4 12 9 masmap aurface een 138 4 12 10 mas map aidth eee ee 138 4 12 11 menu color auto 0 00 een eee eens 138 4 12 12 min map height 0 0 e cece eee eee eee 138 4 12 13 min map surface eee ene 1
62. 3 64 show default config file show default config file Command line option Shows the default config file path Default is HOME liquidwar6 config xml 4 3 65 show default data dir show default data dir Command line option Shows the default data directory path This is where the games searches for most of its data the most important exception being maps which are stored elsewhere Default is usr local share liquidwar6 version data 4 3 66 show default log file show default log file Command line option Shows the default log file path Default is SHOME liquidwar6 log csv 4 3 67 show default map dir show default map dir Command line option Shows the default map directory This is where builtin maps are stored Default is usr local share liquidwar6 lt version gt map 4 3 68 show default map path show default map path Command line option Shows the default map search path This is where the game searches for maps It s the combination of command line arguments and builtin paths Might return more directories than the one specified in a single map path dirl dir2 argument 4 3 69 show default mod dir show default mod dir Command line option Shows the default module directory path This is where all dynamically loaded mod ules are stored Default is usr local lib liquidwar6 lt version gt 80 Liquid War 6 4 3 70 show default music dir show default music dir Command
63. 3 8 0 GP2X e EE 48 3 9 Coding guidelines 00 cece eee eee eee eee aes 49 3 9 1 Project goals reminder 020s eee eee eee eens 49 3 9 0 Common senge 50 3 9 3 Unitary tesis sod ke vedio cerned e Reese 50 3 9 4 Memory allocation 0 0 cece eee II 50 3 9 5 Private and public interfaces 0 00 cece eee eee eee 51 3 9 6 Commit police gl 3 9 7 Audit the code 51 3 10 Using the console eee eens 52 3 11 Advanced tweaking ssssssssssssssse see 53 3 11 1 Hacking ressource 53 3 11 2 Optimize for speed 0 6 cece eens 53 3 12 Writing modules 53 3 18 Use as a library eee n esa rnm td nn 53 3 14 Network protocol n 53 3 14 1 No server no client only noden 53 3 14 2 Out of band messages eee eee 54 3 14 3 Regular messages overview sss 55 3 14 4 Regular control messages ssiuru reenn rnnr 56 3 14 5 Regular MISS menage 58 3 14 6 Regular META messages cece cece eee eee 58 3 14 7 Regular DATA messages 58 3 14 8 Other raw technical stuff WI 58 3 15 Technical HOWTOs 000 ccc II 59 3 15 1 Release checkhet eee eee eens 59 3 15 2 Add a new option 60 3 15 3 Add a new internal ban 61 3 15 4 Add anew module 0 cece eee eee eens 62 3 16 Using GNU Arch doter e eave kanea esed perra shade tad 62 ii iv 3 16 1 About GNU Ach 62 3 16 2 Getting the latest version from the repository 63 3 16 3 Setting u
64. 3 reported to work e libjpeg version 7 reported to work e SQLite 3 version 3 6 18 reported to work e libcURL version 7 19 6 reported to work Next one needs to install a special version of SDL which targets the GP2X specifically This is not a generic SDL and it does have limitations which are related to the GP2X peculiar hardware There are installation instructions about how to do this The following should work cvs d pserver anonymous cvs sourceforge net cvsroot open2x login blank password cvs d pserver anonymous cvs sourceforge net cvsroot open2x co libs gp2x 3 9 Coding guidelines 3 9 1 Project goals reminder One of the purposes of Liquid War 6 is to make a cleaner implementation of Liquid War than the previous one namely Liquid War 5 While the latter has achieved the practical goal of providing a playable implementation of the game it failed at providing an evolutive platform Network capabilities where finally added to Liquid War 5 but anyone who played on Internet with someone a few hundreds of milliseconds away would agree that it s far from being perfect The main reason for this is that it is really had to hack on Liquid War 5 especially when you are not the core developper The core developper himself even knowing all the various hacks in the game is very quickly lost when trying to implement major changes To put it short Liquid War 5 is a global variable hell a pile of hacks on top of a quick
65. 4 provided that you also meet all of these conditions a The work must carry prominent notices stating that you modified it and giving a relevant date b The work must carry prominent notices stating that it is released under this Li cense and any conditions added under section 7 This requirement modifies the requirement in section 4 to keep intact all notices c You must license the entire work as a whole under this License to anyone who comes into possession of a copy This License will therefore apply along with any applicable section 7 additional terms to the whole of the work and all its parts regardless of how they are packaged This License gives no permission to license the work in any other way but it does not invalidate such permission if you have separately received it d If the work has interactive user interfaces each must display Appropriate Legal Notices however if the Program has interactive interfaces that do not display Appropriate Legal Notices your work need not make them do so A compilation of a covered work with other separate and independent works which are not by their nature extensions of the covered work and which are not combined with it such as to form a larger program in or on a volume of a storage or distribution medium is called an aggregate if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation s users beyond what the
66. 89 4 6 11 eustom peup n I Hm 89 4 6 12 c stom righl ENEE EEN EE ER ER eae 89 2406 13 CUSLOMAUD s cas oh bg ae et ere obs anh e e oia 90 4 6 14 double click delay 00 0 90 4 6 15 max cursor speed ssssssssssss eee nee eee 90 4 6 16 mouge sensitivity 0 cece eee eee eee eee 90 4 6 17 repeat Jelae cc cece nurunun nnar nh 90 4 6 18 repeat interval 0 0 ccc ees 91 4 6 19 use double chck 0 c cece eens 91 4 6 20 use esc button 0 cece cece n 91 46 21 zoom stiepiriee eem Ea ana aan E guuesecbed err Ves sess 91 4 6 22 zoom stick delay ssssesseesseeee ees 91 4 7 Graphics option 92 4l EDERT EE dan et E Ga 92 4 7 2 e e 92 4 1 3 gix backend sese seater de case eee ME NN d ee EN dee 92 ALTA gixequaliby EE 92 eL MERETUR 93 vill 4 0 6 w dth iis eee tb Ree REG EE te REX RERBA Rd 93 4 7 7 windowec mode bmnt 0 cece cece ee 93 4 8 Sound Options ersero tiren E ERROR REENEN EE 93 4 81 ambiance exclude 0 cece eee eee eee eee ee 93 4 8 2 ambiance Dle 0 ccc cece cece ne 94 4 8 3 ambiance filter 0 cece ene ren 94 4 84 G volume en 94 4 85 music volume sssssssesseeslee eee 94 4 8 6 snd backend 2 0 cece usinis ea Diaa EE 94 4 8 7 water volume cece cece e eee nnn 95 4 9 Network option 95 LOT eu de ener tate ee held ebbe dace iba ela 95 4 9 2 bind DOFt dek E EEN ge e eee enr E tb 95 4 9 8 broadeagt ee ec aee gas dona ENEE EEN 95 4 9 4 ch backendes
67. 91 4 11 92 4 11 93 4 11 94 4 11 95 4 11 96 4 11 97 4 11 98 4 11 99 4 11 100 4 11 101 4 11 102 4 11 103 4 11 104 4 11 105 4 11 106 4 11 107 4 11 108 4 11 109 4 11 110 4 11 111 Leam proble blue vulnerable 0c cece eee ees 115 team profile blue weapon alternate id 116 team profile blue weapon id 0c cee eee eee 116 team profile blue weapon mode eee 116 team profile cyan aggressive eee e eee eee ee eee 116 team profile cyan fast sessu 0 ccc eee eee eee 116 Leam pDroble cvan handican eee ee neces ky team profile cyan mobile sl cc cece eee ees 117 team profile cyan vulnerable 0 e eens IIT team profile cyan weapon alternate id 117 Leam Droble Cvamn weapon 2d eee eee ee 118 team profile cyan weapon mode 000 cece eee ees 118 team profile green aggressive sess 118 team profile green fast sss eee 118 Leam proble sreen handicean ccc eee eee eee 118 team profile green mobile 0c cece cece 119 Leam pDroble groeen vulnerable cece eee 119 team profile green weapon alternate id 119 team profile green weapon id 6c cece eee eee 119 team profile green weapon mode ssssssss 120 Leam proble beht blue aggresgive eee 120 Leam proble behtblue fast 120 Leam proble Debtblue handicanp 120 team profile lightblue mobile eee 120 team profile lightblue vulnerable
68. Command line option LW6_TEAM_PROFILE_PURPLE_AGGRESSIVE Environment variable team profile purple aggressive XML key Type integer Default value 32 Min value 5 Max value 2000 Defines how aggressive the purple team is This is a percentage if set to 200 then team will attack twice as much as any other team with the default value Setting this to a high value clearly advantages this team 4 11 117 team profile purple fast team profile purple fast value Command line option LNG TEAM PROFILE PURPLE FAST Environment variable team profile purple fast XML key Type integer Default value 80 Min value 5 Max value 2000 Changes the speed of the purple team This is a percentage if set to 50 then team will move twice slower than other teams with the default parameter Setting this high is very likely to advantage the team 4 11 118 team profile purple handicap team profile purple handicap value Command line option LW6 TEAM PROFILE PURPLE HANDICAP Environment variable team profile purple handicap XML key Type integer Default value 100 Min value 10 Max value 1000 Defines the handicap for the purple team 128 Liquid War 6 4 11 119 team profile purple mobile team profile purple mobile lt value gt Command line option LW6_TEAM_PROFILE_PURPLE_MOBILE Environment variable team profile purple mobile XML key Type integer Default value 0 Min value 3 Max value 3 Increases or decrea
69. Default value 80 Min value 5 Max value 2000 Changes the speed of the pink team This is a percentage if set to 50 then team will move twice slower than other teams with the default parameter Setting this high is very likely to advantage the team 126 Liquid War 6 4 11 110 team profile pink handicap team profile pink handicap lt value gt Command line option LW6_TEAM_PROFILE_PINK_HANDICAP Environment variable team profile pink handicap XML key Type integer Default value 100 Min value 10 Max value 1000 Defines the handicap for the pink team 4 11 111 team profile pink mobile team profile pink mobile value Command line option LNG TEAM PROFILE PINK MOBILE Environment variable team profile pink mobile XML key Type integer Default value 0 Min value 3 Max value 3 Increases or decreases if negative the number of move attack defense tries for the pink team If set to a high value team will appear more mobile and do more things but it won t change its cruising speed It s not obvious to tell wether this is an advantage or not but it clearly changes the behavior 4 11 112 team profile pink vulnerable team profile pink vulnerable value Command line option LNG TEAM PROFILE PINK VULNERABLE Environment variable team profile pink vulnerable XML key Type integer Default value 640 Min value 5 Max value 2000 Defines how vulnerable the pink team is This is a percentage if set to
70. Default value SHOME liquidwar6 log csv Set the log file path This enables you to use whatever log file you like keeping all other informations in the same place 4 4 4 map dir map dir Command line option Type string Default value usr local share liquidwar6 lt version gt map Set the map directory path By changing this value you ll be able to play with your own maps in your own directory Note that there are other ways to achieve that but using this option will work However a side effect is that you might not see builtin maps anymore 4 4 5 map path map path value Command line option LNG MAP PATH Environment variable map path XML key Type string Default value HOME liquidwar6 map usr local share liquidwar6 version map Set the map search path By changing this value you ll be able to play with your own maps in your own directory This is different from map dir since it includes Chapter 4 Reference 83 map dir plus it adds a number of other search paths Unlike most other param eters the values given from the command line from the environment variables or from the config file are not overwritten but appended That is to say if you spec ify a map path with the command line argument map path path but also de fine the LW6_MAP_PATH value and finally edit config xml to change the map path entry in it you ll end up with the game searching for maps in a
71. E DEE EE 98 cli backendsS e n eR io isuk res 96 ee illis ahi nire PIRE RN S REEL 87 Color alternate bg 0 cee eee eens 143 Color alternatefe cee eee eee 144 color base bp ii chs Se ertele ee b vel bru 144 color base fg illilssdes visi deny Pa ee ies 144 color conflict mode eee eens 100 COl rize i em pp qe ewetacwian nat LAE EE 144 GH E EE 145 Commands per SeC EE 161 cutsor pot indt o s s nE Srana be 100 cursor sensitivity eee 88 e 09 9 GG gm ebti pe Rm Dens 145 custom alt Lie ei edge dede chvenes RAE ER E 88 CUSTOM CEFL euentu date gebe au esters 88 CUSTOM GOWN ceenieeio a nanni ta ERR ni 88 c ston lip wl eee iireber ens 88 CUSTOM ESG Li 4 pb 1e RR LE AM IP TREPRPRETS 89 custom left 4 250 p REA E PES pd uS 89 CUSTOM PgdOWN 1 eee eee eee eee 89 CUSTOM PRUP EE 89 c stom right sic seceded dia ee ne RR RE AES 89 custom up iiicongshenitedegebeetibebi eh E Eres 90 Liquid War 6 D danger poger eee 101 debug layer id iseiie lil ERR Fb RR PEG 161 debug team id 6 eee eee 161 GEET GE 162 dirty read eto e denen p Sepe 162 display background eee eee 162 display consol8 i serbe os enen gen 162 display cursors s ssde rede br Rid 163 display debug gradient 163 d Leplay deiug z ones 00 ee 163 display figBhters eec eke 163 display fpS i fenteeetivteatevu eeu 164 display h d i o le elei eee ete der aes 164 display lopre iran
72. EE dr T71 4 15 90 reset EE D 4 15 56 reset config on upgrade eee eeeee eee 172 4 15 57 screenshots per min lesse e 4 15 58 EE Ae See Se e e pe pnr E REPREHEN de 172 4 15 59 simulate basic 0 0 eee eh 172 4 15 60 simulate full 0 00 eee eee 172 A I5 61 darget Ipg vico ede aa Be i REIR RARI RD Reet 173 4 15 62 raperorg tenet eee ees 173 415 09 troja EE EEN SEENEN aes 173 4 15 64 z decode cocotte m bcr e Seas ng 173 4 15 65 Zencode 00 cece cece e nett eee n 174 4 16 C to Guile cies iss see xec per eq il RERO ELDED Reg 174 4106 l Geebtegb ue NET traa EE tenes rr bana eec 174 4 16 2 cJwb eit en 174 4 16 3 cJwtf setzet e 174 4 16 4 clw6 release 0 cece eee en 174 4 16 5 cJwtf zetret esee 174 4 16 6 cJwpbot get backende eee eee 174 4 16 7 c Iw6bot new 0 cece cence nents 174 4 16 8 cJwpbot nest moe 0 cece eee eee 174 4 16 9 c Iw6cfg defaults 0 eee eens 175 4 16 10 cGJw cfe get option 0 00 cece eee II 175 4 16 11 G Japefe mt e EERSTEN NR re ENEE NEEN eats 175 4 16 12 c lw6cfg load 2 nee ee 175 4 16 13 c Iw6cfg option exists 06 175 4 16 14 c lw6cfg quit 00 e 175 4 16 15 c lw6cfg save 6 cece e 175 4 16 16 c lw6cfg set option 00 c cece eee ee eee 175 4 16 17 c lw6cfg unified get log file 2 2 0 0 00 e eee eee eee 175 4 16 18 cGJwpcfe umbed set map path ee eee 175 4 16 19 cGJw cfe
73. ETSEN 197 C LIv pil make backup 197 c Iw6pil poll dump i tices e 197 c lw6pil round2seq eee eee 197 c lw6pil seed command generate 197 c lw6pil send command 00 197 c lw6pil seq random 0 sess 197 c lw6pil seq2round ssusussssursssso 198 c lw6pil slow down sees 198 C Lv pil epeed up eso 198 c lw6pil suite get checkpoint 198 c lw6pil suite get commands by node index UTERE 198 c lw6pil suite get commands by stage 198 Appendix G Indexes c lw6pil suite get node id 198 c lw6pil suite get seq 0 198 c lw6pil suite init cece eee ee 198 c lw6pil sync from backup 198 c lw6pil sync from draft 199 c lw6pil sync from reference 199 c lw6snd get backends 199 CJv end ie music file 040124 199 c iw6snd news sc e ee e d 3n waa es 199 c iw6snd play fx i c eret Berg v eerie 199 c lw6snd play music file 199 c lw6snd play music random 199 c lw6snd poll iose seereebel s gets 199 c 1w6snd release eese DR debere 199 CLv end eet fx volume 200 c lw6snd set music volume 200 c lw6snd set water volume 200 c lw6snd stop music eee cece 200 c lw6srv get backends s 200 c lw6sys build get abs srcdir 200 c lw6sys build get
74. I duae Cereris 221 D 21 2 AD eon edt turco UE e e ess 221 EE 221 5 28 1 OVERVIEW seed ouo eege lee eed CECI 221 D 28 2 APT EE EE 221 5 28 Dbker RH REEN 221 D 20 ONVGeFVIGW ss lt ads seaxi ens Gackt ded eae epe sib eee 221 52922 CHL oed gere eren tdi rer eei ose SE 222 5 30 libldr sseeeeee RR 222 5 20 1 OVERVIEW ui ing eh Sue eeh dree 222 5 30 2 API EE 222 5 91 brommt dien SEENEN Eer dese SE 222 5 31 1 Overview 2 0 ccc cece cee teen e 222 5 3122 ART soie teeeecenceritbenbsseldest reuhelpegn eMe Dee es 222 Ee GEN 222 5 32 1 Overview 2 0 ccc IRR e 222 e MEET 292 Dida li DIDSE uere EPOD RV PUPUELMP PH ERIS ed eI ack 222 5 33 1 Overview lsseeeeeeee RR IRR e 222 D 99 2 EE 222 5 934 hbnebtsiiidleedsgeeud ee repe TENOR dre And Mera 223 5 34 1 Overview et ee EA ele PR EY RON M E RE 223 uq ME P 223 5 35 TEE 223 5 35 1 Overview elles Rh hne 223 539 2 ORM cen eiii uere ii Men Dated a Iun LE Su Er 223 5 30 lDp2p c ue p eA E RP EO Es 223 5 36 L OVeEVIGW c csse eve oon t onie SoA dU e dba de ee tabes 223 530 2 APT asseverent RR RE Le dar o rq RR 223 5 97 dhbpioeziem Re ele EE Ge EE EEN 223 BSG Overview sede dicated bench hase dare pee der e rape 225 e o DE Litt bre er rh EISE oexa a fit seaweed ie se 223 5 95 TSCA Mu nece LEAN Ee 223 HBB OVERVIEW ws ov cae viene purae eva ek Ante rox a ch 223 XXV xxvi b35 2 NPIuc eite ke ABI Ue Meme erui eed we dee 22
75. If the required texts for either cover are too voluminous to fit legibly you should put the first ones listed as many as fit reasonably on the actual cover and continue the rest onto adjacent pages If you publish or distribute Opaque copies of the Document numbering more than 100 you must either include a machine readable Transparent copy along with each Opaque copy or state in or with each Opaque copy a computer network location from which the general network using public has access to download using public standard network protocols a complete Transparent copy of the Document free of added material If you use the latter option you must take reasonably prudent steps when you begin distribution of Opaque copies in quantity to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy directly or through your agents or retailers of that edition to the public It is requested but not required that you contact the authors of the Document well before redistributing any large number of copies to give them a chance to provide you with an updated version of the Document 4 MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above provided that you release the Modified Version under precisely this License with the Modified Version filling the role of the Document thus lice
76. Liquid War 6 as well Enjoy C 1 The Battle of Emberlificoted The General presided over his massing army in his seat or rather hovering ring of power It dipped slightly as he flew low over his troops marching through the viscous marsh like terrain They were like children obedient loyal and they ate a lot Glancing at the status panel mounted in front of him he grimaced the other five armies Yellow Green Orange Turquoise and of course Red were also readying armies of a similar size to his own His violet clones would have to fight hard and eat well to win this day Today would not be a battle of luck the General mused it would be a battle of tactics of alliances and of betrayal Every clone was identical that was the general idea behind clones and the terrain seemed strangely symmetrical it would not give advantage to any of the six armies amassed today Glancing at the hologram of the battlefield projected in front of him the General noted that he would have to move quickly Orange and Yellow were too close for comfort though fortunately Baron Red s army of eponymous coloured clones was the furthest General Violet s fingertips were sweaty even before they touched the four main control keys in front of him They were labeled Wi A D and of course the full retreat button very useful for misleading foes and ambushing them as they pursued S The keys were arrange in a roughly equilateral triangular
77. This is a percentage but will be multiplied by itself to get the actual surface That is 50 means 50 50 that is a square of 1 2 the size of a square map so it represents 25 1 4 of the total surface 4 11 36 spread mode spread mode lt value gt Command line option LW6_SPREAD_MODE Environment variable spread mode XML key Type integer Default value 1 Min value 0 Max value 2 If set to 1 then gradient spread will be slower but gain in terms of homogeneity and consistency You could consider setting this to 0 on very very big maps to save CPU cycles else the default should work fine 4 11 37 spread thread spread thread lt value gt Command line option LW6_SPREAD_THREAD Environment variable spread thread XML key Type integer Default value 0 Min value 0 Max value 1 If set to 1 the core algorithm with fire a separate thread to spread the gradient By default this is turned off set to 0 Consider this as an experimental feature the 110 Liquid War 6 program is already rather heavily threaded turning this on will probably not offer any significant performance gain even on SMP systems This might change in the future 4 11 38 spreads per round spreads per round lt value gt Command line option LW6_SPREADS_PER_ROUND Environment variable spreads per round XML key Type integer Default value 5 Min value 1 Max value 100 Defines how many times the gradient is spread per round Gr
78. War 6 already has some features which are nowhere to be found in Liquid War 5 such as multiple layers It can be worth the upgrade e Maps A number of interesting maps have already been designed thanks to Kasper Hviid e The game runs natively on GNU Linux and has been ported to Microsoft Windows and Mac OS X Binaries are available for all those platforms Use at your own risk If in doubt get the source and compile In the near future e Network play Top level priority Yes network has been promised for months years yes years and is still not there I said when it s done e Fix bugs The current engine is somewhat buggy fighters might loose the cursor it clearly needs polishing 2 Liquid War 6 In the long run e Write new graphical backends so that the game does not require Mesa or any OpenGL like subsystem The idea is to get rid of the 3D accelerator dependency e Implement all the fancy 3D features make it possible to play Liquid War 6 on a Moebius ring e Use the cool features of CSound to provide dynamic contextualized sounds amp musics e Optimize the bot algorithm which is probably a complex AI problem You might be interested in checking the following URLs which give a view on opened tasks and bugs e bug list http savannah gnu org bugs group liquidwar6 e task list http savannah gnu org task group liquidwar6 1 2 2 What has changed since Liquid War 5 x Liquid War 6 is a complete re
79. and connect to it Note that once you re connected on a remote node you re still acting as an independant node and other nodes might connect to your node as well as to the other nodes In short there s no real server or client everyone is a client for someone and can act as a server Nodes connected together form a community which can disband accept new nodes and in a general manner has its own immaterial life the first node which created the game might disappear game can continue without it This is why the main network module is called libp2p this is a reference to the term peer to peer 2 10 4 Communities Once a node is connected to another one they ve started a community Formally a stand alone node accepting for connection is already a community even if it has only one member but the only really interesting communities are those formed with several nodes A community can t be reached through a given server to connect to one you just need to connect on one of its member nodes All nodes are equivalent there s no master no root node nodes collaborate to share the same real time information and maintaine an up to date game state Of course conflicts can arise and in that case nodes need to agree on an acceptable solution Normally the program takes decisions automatically for instance it could decide to kick a node out of the community so the player does not have to care about this but
80. and you are encouraged to use software that protects your freedom However for your convenience those links are provided they might give you a hopefully neutral idea of what the game is all about This list is also by no way extensive it s provided as is e http en wikipedia org wiki Liquid War Liquid War entry on Wikipedia e http fr wikipedia org wiki Liquid War Liquid War entry on Wikipedia French e http freecode com projects liquid war 6 Liquid War 6 on Freecode e http www openhub net p liquidwar6 Liquid War 6 on Open HUB e http www playdeb net software Liquid420War 4206 Liquid War 6 on PlayDeb D 3 Old stuff Various links that are deprecated but still might contain interesting informations for those who enjoy digging into the past e http arch sv gnu org archives liquidwar6 GNU Arch repository replaced by Git as for this project 238 Liquid War 6 e http www ufoot org liquidwar v5 Liquid War 5 the previous version of the game e http git savannah gnu org gitweb p liquidwar6 git Gitweb interface cgit seems to be Savannah s default now Appendix E GNU GENERAL PUBLIC LICENSE 239 Appendix E GNU GENERAL PUBLIC LICENSE Version 3 29 June 2007 Copyright 2007 Free Software Foundation Inc http fsf org Everyone is permitted to copy and distribute verbatim copies of this license document but changing it is not allowed Preamble The GNU General Public License is a free c
81. any GNU Linux box then upload the whole directory to the target Windows host Chapter 3 Hacker s guide 43 e autoconf2 5 2 61 1 bin tar bz2 e autoconf 4 1 bin tar bz2 e autogen 5 9 2 MSYS 1 0 11 1 bin tar gz e autogen 5 9 2 MSYS 1 0 11 1 dev tar gz e autogen 5 9 2 MSYS 1 0 11 1 dll25 tar gz e automakel 10 1 10 1 bin tar bz2 e automake 3 1 bin tar bz2 e bash 3 1 MSYS 1 0 11 1 tar bz2 e binutils 2 18 50 20080109 2 tar gz e bison 2 3 MSYS 1 0 11 1 tar bz2 e coreutils 5 97 MSYS 1 0 11 snapshot tar bz2 e crypt 1 1 1 MSYS 1 0 11 1 tar bz2 e csmake 3 81 MSYS 1 0 11 2 tar bz2 e cvs 1 11 22 MSYS 1 0 11 1 bin tar gz e diffutils 2 8 7 MSYS 1 0 11 1 tar bz2 e findutils 4 3 MSYS 1 0 11 1 tar bz2 e flex 2 5 33 MSYS 1 0 11 1 tar bz2 e gawk 3 1 5 MSYS 1 0 11 1 tar bz2 e gcc core 3 4 5 20060117 3 tar gz e gcc g 3 4 5 20060117 3 tar gz e gcc g71 3 4 5 20060117 3 tar gz e gcc objc 3 4 5 20060117 3 tar gz e gdb 6 8 mingw 3 tar bz2 e gdbm 1 8 3 MSYS 1 0 11 1 tar bz2 e gettext 0 16 1 1 bin tar bz2 e gettext 0 16 1 1 dll tar bz2 e gettext 0 16 1 MSYS 1 0 11 1 tar bz2 e gettext devel 0 16 1 MSYS 1 0 11 1 tar bz2 e inetutils 1 3 2 40 MSYS 1 0 11 2 bin tar gz e libiconv 1 11 1 bin tar bz2 e libiconv 1 11 1 dll tar bz2 e libiconv 1 11 MSYS 1 0 11 1 tar bz2 e libtooll 5 1 5 25a 1 bin tar bz2 e libtooll1 5 1 5 25a 1 dll tar bz2 e libtooll 5 1 5 25a 20070701 MSYS 1 0 11 1 tar bz2 e Indir 6 8 1 0 MSYS 1 0 11 1 tar bz2 e lpr 1
82. any work containing the Document or a portion of it either copied verbatim or with modifications and or translated into another language A Secondary Section is a named appendix or a front matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document s overall subject or to related matters and contains nothing that could fall directly within that overall subject Thus if the Document is in part a textbook of mathematics a Secondary Section may not explain any mathematics The relationship could be a matter of historical connection with the subject or with related matters or of legal commercial philosophical ethical or political position regarding them The Invariant Sections are certain Secondary Sections whose titles are designated as being those of Invariant Sections in the notice that says that the Document is released 252 2 Liquid War 6 under this License If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant The Document may contain zero Invariant Sections If the Document does not identify any Invariant Sections then there are none The Cover Texts are certain short passages of text that are listed as Front Cover Texts or Back Cover Texts in the notice that says that the Document is released under this License A Front Cover Text may be at most 5 words and a Back Cov
83. archives liquidwar6 tla get A liquidwar6 sv gnu org liquidwar6 beta All the patches in the archive are signed with GnuPG so you can check their authenticity with my public key You might need to edit your HOME arch params signing default check file and put the following text in it tla gpg check gpg command gpg verify files H 3 16 3 Setting up your own arch repository This section is for those who want to hack the game and set up their own repositories This will enable you to keep track of your patches package them and help the core maintainer merging them in the main repository You can introduce yourself and create a repository by issuing commands like You can introduce yourself and create a repository by issuing commands like tla my id me home net tla register archive me home net 2008 home me tla archives Then you can get create your own repository with a command like tla tag S liquidwar60sv gnu org liquidwar6 beta 0 1 me home net 2008 liquidwar6 b The idea is that you create locally a depot which has a name that matches the name on savannah this is for convenience you could technically give it any name and indicate that they represent today the same thing You can get a working copy of your depot with the command tla get me home net 2008 liquidwar6 beta 0 4 This will create a complete source tree which you are free to modify this is where you should hack 3 16 4 Synchronizing your r
84. at least should be a unique identifier of the node over the network Liquid War has 3 ways to communicate raw TCP this is the LW6 protocol the easiest to implement and debug probably the most reliable one but not always the fastest This involves the two modules mod tcp and mod tcpd HTTP over TCP this is a hack which allows the game to communicate through HTTP proxies for instance Additionnally the fact any node is a web server enables peering with a simple web browser Web server facility requires mod httpd and client part requires mod http which might or not be available depending on how the game was compiled raw UDP this is another version of the LW6 protocol this is in theory the fastest way to communicate it requires mod udp and mod udpd to work Using UDP only was not an option when conceiving Liquid War since it s interesting to have other solutions if for instance a firewall does not allow you to use UDP the way you want On each of these channels messages can be exchanged in two modes an out of band mode AKA oob and a regular message oriented here we speak of connection 3 14 2 Out of band messages There are only 3 out of band messages PING requests for a simple PONG http server port answer this is just to check if a server is a valid server and if the URL we used to connect on it is the correct one INFO requests for a list of key attributes pairs which describe the node te
85. based tunnels is probably not a great idea The ufoot concept pass map of the liquidwar6 extra maps demonstrates basic layer usage 3 1 7 texture png texture jpeg and texture alpha jpeg It is possible to define a texture for the map by putting a texture png or texture jpeg file It does not need to have the same dimensions as the map itself Indeed textures can be much more precise than the actual logical map There s no theorical limit on how big a texture can be more precisely it can be much bigger than any hardware driver maximum texture size In practice a too big texture will waste your video card RAM and slow everything down Sizes ranging from 640x480 to 1600x1200 are reasonable texture sizes If you don t define this the map png file will be used as the texture and also import colors from style xml if defined Note that the shape of the texture defines the shape of the map that is the ratio with which it will appear on the screen The PNG alpha layer will be used for transparency But to save disk space it can be convienient to prefer the JPEG format use texture jpeg instead of texture png and store the alpha layer in a separated file called texture alpha jpeg This avoids handling heavy PNG files PNG compression not being performant on most textures In texture alpha jpeg black is considered opaque and white is transparent Different levels of gray correspond to different levels of opacity Previous versions of
86. be translated to Ziblug zdonc jd zuc s tac The number order and type of entries is preserved To learn more about these formats use info printf or man 3 printf In a general manner get informations about printf Additionnally some strings are used by Scheme Guile code and not by C code Thus they don t use the standard C printf convention In these strings what you must preserve and be aware of is the tilde character Very often you ll see a in a string As with the printf 4 you must preserve the number order and type of those There is a complete online reference about this way of formatting strings 3 2 3 Partial translation Liquid War 6 has thousands and thousands of messages which could theorically be trans lated In practise it s counter productive to spend time to translate those as the game is still evolving constantly and as most of these messages are technical messages which inform about rare bugs and strange conditions All sort of informations which while valuable are not intented for end users and are more destinated to be reported in bug reports To select only the interesting messages to translate the current gettext configuration only uses a reduced set of files e src scriptpo c the most important file It contains the definitions used by all the Guile code this is where you ll find all the menu labels e src lib sys sys log c log messages and keywords These are not the log messages themsel
87. bin id 200 c lw6sys build get bugs url 200 c lw6sys build get cflags 200 c lw6sys build get codename 200 c lw6sys build get configure args 201 c lw6sys build get copyright 201 c lw6sys build get datadir 201 c lw6sys build get date 201 c lw6sys build get docdir 201 c lw6sys build get enable allinone 201 c lw6sys build get enable console 201 c lw6sys build get enable fullstatic 201 c lw6sys build get enable gcov 201 c lw6sys build get enable gprof 201 c lw6sys build get enable gtk 202 c lw6sys build get enable instrument 202 c lw6sys build get enable mod caca 202 c lw6sys build get enable mod csound 202 c lw6sys build get enable mod gl1 202 c lw6sys build get enable mod gles2 202 c lw6sys build get enable mod http 202 c lw6sys build get enable mod ogg 202 c lw6sys build get enable mod soft 202 c lw6sys build get enable openmp 202 c lw6sys build get enable optimize 203 c lw6sys build get enable paranoid 203 c lw6sys build get enable profiler 203 c lw6sys build get enable valgrind 203 c lw6sys build get endianness 203 c lw6sys build get gcc version 203 c lw6sys build get home url 203 c lw6sys build get host cpu 203
88. build get host os Wrapper on lw6sys build get host os 4 16 298 c lw6sys build get hostname c lw6sys build get hostname Wrapper on lw6sys build get hostname 203 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile 204 4 16 299 c lw6sys build get includedir c lw6sys build get includedir Wrapper on lIw6sys build get includedir 4 16 300 c Iw6sys build get ldflags c lw6sys build get ldflags Wrapper on lIw sys build get ldflags 4 16 301 c lw6sys build get libdir c lw6sys build get libdir Wrapper on lw6sys build get libdir 4 16 302 c lw6sys build get license c lw6sys build get license Wrapper on lw6sys build get license 4 16 303 c lw6sys build get localedir c lw6sys build get localedir Wrapper on lIw6sys build get localedir 4 16 304 c lw6sys build get md5sum c lw6sys build get md5sum Wrapper on lw6sys build get md5sum 4 16 305 c lw6sys build get package id c lw6sys build get package id Wrapper on lw6sys build get package id 4 16 306 c lw6sys build get package name c lw6sys build get package name Wrapper on lw6sys build get package name 4 16 307 c lw6sys build get package string c lw
89. code Try for instance 1 2 display foo n You can really break things with this console it gives you a direct access to all the program internals At least all the values which are accessible through the script interface that is many of them You can call any internal C function which has been exported to Guile here are some examples c lw6sys timestamp c 1w6bot get backends c lw6sys sleep 2 0 1w6 config get number zoom 1w6 config set number zoom 0 9 Chapter 3 Hacker s guide 53 1w6 config get number zoom While syntax and possibly other errors will be trapped by the interpreter note that if you break things inside the game by say changing some global value or in a general manner cause an error elsewhere in the code the game will really raise a fatal error and stop That s how you can break things Still this console is a very powerfull tool very usefull for debugging but also for tweaking the game without restarting it and or navigating through the menu interface 3 11 Advanced tweaking 3 11 1 Hacking ressources Liquid War 6 tries to have as few hardcoded data as possible So many constants and pretty much all the image files are accessible in the data directory You can know where it is by launching liquidwar6 show data dir If you look in this directory you ll find different files among them XML files Let s take an example Try and find the file gfx gl hud floating g
90. configure amp amp make amp amp make install SDL image untar SDL image 1 2 6 tar gz then configure amp amp make amp amp make install SDL mixer untar GDL mixer 1 2 8 tar gz then configure amp amp make amp amp make install SDL_ttf untar GDL ttf 2 0 9 tar gz then configure amp amp make amp amp make install For your convenience a zip file containing a complete MSYS Liquid War 6 ready environment is available It is simply the result of all the operations described above Simply 46 Liquid War 6 unzip msys for liquidwar6 20080819 zip about 240 megs in C MSYS Al dependencies compiled in local have been generated using the command cd usr local src msys for liquidwar6 build sh gt msys for liquidwar6 build log 2 gt amp 1 Note that this script does t do everything you ll still need to edit Guile source code and patch it manually It might even be possible to use this MSYS environment under Wine Simply unzip it under HO0ME wine drive c and run wine HOME wine drive_ c windows system32 cmd exe c c msys msys bat and with luck you ll get a working shell Note that this might allow you to compile the game but running it is another story Consider this MSYS over Wine trick as a hack enabling the use of free software only when compiling for Microsoft proprietary platform It is not a reasonnable way to run the game If running under a UNIXish platform or better GNU simply run nativ
91. dump clear Liquid War 6 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile Chapter 4 Reference 4 16 329 c lw6sys generate id 16 c lw6sys generate id 16 Wrapper on lw6sys generate jd Ip 4 16 330 c Iw6sys generate id 32 c lw6sys generate id 32 Wrapper on lIw6sys generate id 32 4 16 331 c lw6sys generate id 64 c lw6sys generate id 64 Wrapper on lw6sys_generate_id_64 4 16 332 c lw6sys get config file c lw6sys get config file Wrapper on lIw6sys get config file 4 16 333 c lw6sys get cwd c lw6sys get cwd Wrapper on lw6sys_get_cwd 4 16 334 c lw6sys get cycle c lw6sys get cycle Wrapper on lIw6sys get cycle 4 16 335 c lw6sys get data dir c lw6sys get data dir Wrapper on lw6sys get data dir 4 16 336 c lw6sys get default config file c lw6sys get default config file Wrapper on lw6sys get default config file 4 16 337 c lw6sys get default data dir c lw6sys get default data dir Wrapper on lw6sys get default data dir 4 16 338 c lw6sys get default log file c lw6sys get default log file Wrapper on lIw6sys get default log file 207 C function exported to Guile C function exported to Guile
92. dylib and not so e You might need to set the OBJCFLAGS environment variable along with CFLAGS because the Mac OS X port uses some Objective C code It is very important to have the right SDL flags when linking the Liquid War 6 binaries For instance it could be I opt extra include I opt local include Wl framework Wl CoreFoundation I opt local in Chapter 3 Hacker s guide 4T The point is to have Cocoa and OpenGL support Depending on the way you installed SDL you might also need to include an SDL framework support this is mostly if you installed SDL from dmg binary images and not from source with the command line A typical output of sdl config libs is L opt extra lib 1SDLmain 1SDL Wl framework Cocoa Another important issue is to include SDL h which in turn includes SDLmain h in all the c source files defining the standard main function This is done in liquidwar6 but should you try to link yourself on liquidwar6 libraries and or hack code you must do this or you ll get errors when running the game Such errors look like zitt NSAutoreleaseNoPool Object 0x420c90 of class NSCFNumber autoreleased with no pool i The reason is that SDL replaces your main with its own version of it One strong implication is that all the dynamic loading of SDL which works on sandard GNU Linux boxes won t work under Mac OS X since SDL hard codes itself by patching main with define C preprocessor commands A dmg file disk image
93. even when opt and usr local or re moved this is important else execution might rely on binaries which are only on the development machine and do not ship with game upload files doc on http savannah gnu org maintenance DownloadArea with a command like rsync rsh ssh recursive verbose progress X Y Z loginOdl sv nongnu org releases liquidwar6 X Y Z Each file must have its Sig corresponding file update online docs with gendocs sh carefull Liquidwar6 htm1 is suppressed by this need to re create it from previous version and or index html which is the same update index html liquidwar6 html and liquidwar6 fr html so that they reflect the latest release Check download links are OK post news on https savannah gnu org news group liquidwar6 http lists gnu org mailman listinfo help liquidwar6 and http lists gnu org mailman listinfo info liquidwar6 after everything did work upload files on ftp ftp gnu org for instance use gnupload to ftp gnu org liquidwar6 liquidwar6 X Y Z tar gz 3 15 2 Add a new option This describes how to add a new option to the game edit src lib def def list txt in src lib def def update py run def update py This will automatically fill src lib def def h and script def scm In the code you should always use LW6DEF_ lt OPTION gt in C and 1w6def option in scheme to refer to the option This does help avoiding typesetting errors add the entry to src lib hlp hlp lis
94. exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile 200 4 16 259 c Iw6snd set fx volume c lw6snd set fx volume Wrapper on lIw6snd set fx volume 4 16 260 c Iw6snd set music volume c lw6snd set music volume Wrapper on lw6snd set music volume 4 16 261 c Iw6snd set water volume c lw6snd set water volume Wrapper on lw6snd set water volume 4 16 262 c Iw6snd stop music c lw6snd stop music Wrapper on lIw6snd stop music 4 16 263 c Iw6srv get backends c lw6srv get backends Wrapper on lw6srv_get_backends 4 16 264 c lw6sys build get abs srcdir c lw6sys build get abs srcdir Wrapper on lw6sys build get abs srcdir 4 16 265 c lw6sys build get bin id c lw6sys build get bin id Wrapper on lw6sys build get bin id 4 16 266 c Iw6sys build get bugs url c lw6sys build get bugs url Wrapper on lw6sys build get bugs url 4 16 267 c lw6sys build get cflags c lw6sys build get cflags Wrapper on lIw6sys build get cflags 4 16 268 c Iw6sys build get codename c lw6sys build get codename Wrapper on lIw6sys build get codename Liquid War 6 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to G
95. get backends c lw6cli get backends Wrapper on lIw6cli get backends 4 16 22 c Iw6cns console support c lw6cns console support Wrapper on lw6cns console support 4 16 23 c Iw6cns init c lw6cns init Wrapper on lw6cns init 4 16 24 c lw6cns poll c lw6cns poll Wrapper on lw6cns poll 4 16 25 c lw6cns quit c lw6cns quit Wrapper on lIw6cns quit 4 16 26 c lw6cns term support c lw6cns term support Wrapper on lw6cns term support 4 16 27 c Iw6dsp get average fps c lw6dsp get average fps Wrapper on lw6dsp get average fps 4 16 28 c lw6dsp get fullscreen modes c lw6dsp get fullscreen modes Wrapper on lw6dsp get fullscreen modes Liquid War 6 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile Chapter 4 Reference 177 4 16 29 c Iw6dsp get instant fps c lw6dsp get instant fps C function exported to Guile Wrapper on lw6dsp_get_instant_fps 4 16 30 c lw6dsp get last frame rendering time c lw6dsp get last frame rendering time C function exported to Guile Wrapper on lw6dsp get last frame rendering time 4 16 31 c lw6dsp get nb frames c lw6dsp get nb frames C function exported to Guile Wrapper on lw6dsp_get_
96. however denominated not to enforce a patent such as an express permission to practice a patent or covenant not to sue for patent infringement To grant such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party If you convey a covered work knowingly relying on a patent license and the Corre sponding Source of the work is not available for anyone to copy free of charge and under the terms of this License through a publicly available network server or other readily accessible means then you must either 1 cause the Corresponding Source to be so Appendix E GNU GENERAL PUBLIC LICENSE 247 12 13 14 available or 2 arrange to deprive yourself of the benefit of the patent license for this particular work or 3 arrange in a manner consistent with the requirements of this License to extend the patent license to downstream recipients Knowingly relying means you have actual knowledge that but for the patent license your conveying the covered work in a country or your recipient s use of the covered work in a country would infringe one or more identifiable patents in that country that you have reason to believe are valid If pursuant to or in connection with a single transaction or arrangement you convey or propagate by procuring conveyance of a covered work and grant a patent license to some of the parties receiving the covered work authorizing them
97. html 5 35 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html_node libnod html 5 36 libp2p 5 36 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib p2p index html 5 36 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libp2p html 5 37 libpil 5 37 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib pil index html 5 37 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libpil html 5 38 libscm 5 38 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib scm index html 224 Liquid War 6 5 38 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html_node libscm html 5 39 libsim 5 39 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib sim index html 5 39 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html_node libsim html 5 40 libsnd 5 40 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib snd index html 5 40 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libsnd
98. html 5 41 mod csound 5 41 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage Ssrc lib snd mod csound index html 5 41 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node mod 002dcsound html 5 42 mod ogg 5 42 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib snd mod ogg index html 5 42 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node mod OO02dogg html Chapter 5 C API 225 5 43 libsrv 5 43 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib srv index html 5 43 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libsrv html 5 44 mod httpd 5 44 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib srv mod httpd index html 5 44 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html_node mod_O002dhttpd html 5 45 mod tcpd 5 45 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib srv mod tcpd index html 5 45 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html_node mod_002dtcpd html 5 46 mod udpd 5 46 1 Overview
99. in any medium either commercially or noncommercially provided that this License the copyright notices and the license notice saying this License applies to the Document are reproduced in all copies and that you add no other conditions whatsoever to those of this License You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute However you may accept compensation in exchange for copies If you distribute a large enough number of copies you must also follow the conditions in section 3 You may also lend copies under the same conditions stated above and you may publicly display copies 3 COPYING IN QUANTITY If you publish printed copies or copies in media that commonly have printed covers of the Document numbering more than 100 and the Document s license notice requires Cover Texts you must enclose the copies in covers that carry clearly and legibly all these Cover Texts Front Cover Texts on the front cover and Back Cover Texts on the back cover Both covers must also clearly and legibly identify you as the publisher of these copies The front cover must present the full title with all words of the title equally prominent and visible You may add other material on the covers in addition Copying with changes limited to the covers as long as they preserve the title of the Document and satisfy these conditions can be treated as verbatim copying in other respects
100. interesting to lower rendering options in order to gain speed on other aspects of the game On a quad core system it s probably useless just play with all bells and whistles activated e two threads to run the core algorithm One maintains the so called reference state the other being dedicated to the draft sate In a local game there s no draft state so only one of those two threads is used There s even a technical optimization which can be Chapter 3 Hacker s guide 33 turned on and can theorically use even more threads and be efficient on very big maps but well it s rather untested and still has to prove its real efficiency e a thread to handle map loading This one is not active all the time it s just here to keep a preemptive interface while loading complex maps e network code can also fire threads especially when connecting on remote systems So globally if you have an SMP system the game will be happy with it It will also run on a single processor as the program uses POSIX pthreads it s capable to run on any computer which has pthreads implemented for it But and this is a strong limitation without pthreads the game won t run At all Or at least not unless it s almost completely rewritten 3 3 3 Internal libraries The C code is splitted into several internal libraries This allow independant testing of various game modules The main module the most important one is libker stands for kernel Th
101. latex extra indent emacs doxygen xsltproc pmccabe libcuniti ncurses libcuniti ncurses dev google perftools libgoogle perftools dev git git2cl zip nsis debhelper devscripts Note that those requirements really depend on the exact distribution you have package names may vary from one to another 2 3 5 Compiling Liquid War 6 uses GNU Automake Autoconf and GNU Libtool 12 Liquid War 6 Once all the requirements are installed run configure make make install Liquid War 6 supports the standard configure prefix my path option in fact it supports much more than that so you can install the game in any directory You do not need to be root to install Liquid War 6 2 4 Extra maps 2 4 1 The extra maps package The main package contains some maps so that you can try out the game Still an addition nal package called extra maps or liquidwar6 extra maps is available containing more maps It really does contain many of them including most Liquid War 3 and Liquid War 5 legacy maps plus new Liquid War 6 maps 2 4 2 Install extra maps on GNU Linux and POSIX systems On GNU Linux systems and possibly any POSIX unixish system running configure make make install will install the extra maps on your system automatically they will then be available in the extra sub directory when browsing maps The configure script has a enable liquidwar6 switch which will try and find automatically if there s an e
102. level of gray There can be at the same place some gray or black in both medicine png and danger png How this will behave exactly is not really clear at this stage the recommendation is not to do this it does not really make sense anyway but if you do it game won t complain Chapter 3 Hacker s guide 27 3 1 10 one way lt direction gt png The four files e one way north png AKA up e one way east png AKA right e one way south png AKA down e one way west png AKA left can be used to force the fighters to go in one given direction on some parts of the map If an area is black on one of this meta layers then fighters will go in the given direction For instance a black zone in one way north will make fighters go to the north AKA up direction regardless of the cursor position The fact that this is a one way path is understood by fighters and they will take this in account when choosing the shortest path to go somewhere You can combine vertical and horizontal one way informations making diagonal one way paths 3 1 11 cursor png and cursor color png By default a simple cursor will be displayed but you can use a custom per map cursor Cursors are defined by two 64x64 bitmaps e cursor png is a PNG file very likely to use transparency which will be default be colorized according to the map colors You can draw it any color only greyscale informations will be used You can keep the orig
103. likely to advantage the team 4 11 126 team profile red handicap team profile red handicap value Command line option LW6 TEAM PROFILE RED HANDICAP Environment variable team profile red handicap XML key Type integer Default value 100 Min value 10 Max value 1000 Defines the handicap for the red team 4 11 127 team profile red mobile team profile red mobile value Command line option LNG TEAM PROFILE RED MOBILE Environment variable team profile red mobile XML key Type integer Default value 0 Min value 3 Max value 3 Increases or decreases if negative the number of move attack defense tries for the red team If set to a high value team will appear more mobile and do more things but it won t change its cruising speed It s not obvious to tell wether this is an advantage or not but it clearly changes the behavior 130 Liquid War 6 4 11 128 team profile red vulnerable team profile red vulnerable value Command line option LNG TEAM PROFILE RED VULNERABLE Environment variable team profile red vulnerable XML key Type integer Default value 110 Min value 5 Max value 2000 Defines how vulnerable the red team is This is a percentage if set to 200 then team will be attacked twice as much as any other team with the default value Setting this to a high value clearly disadvantages this team 4 11 129 team profile red weapon alternate id team profile red weapon alternate id
104. looser 0 6 eee eens 196 c lw6pil get max seq 6 cect eet 196 c lw6pil get next seq 6 eee eee eee ees 196 c Iw6pil get reference current seq eee eee 196 c JwfpiLget reference Lorget ae0 eee eee eee 196 c Jew n eet round0 eee eee 196 c lw6pil get seq 0 2 0 kc cece eens 196 c lw6pil get winner 0 cee eee 196 c lw6pil is over 0 6 n 197 c lw6pil local command ccc cece eee eens 197 c lw6pil local cursors set main 00e eee ee 197 c lw6pil local cursors set mouse controlled 197 c JwfpiLmake backunp eee eee eee 197 c lw6pil poll dump 0 c cece eee eens 197 c lw6pil round2seq ccc eee eee eee ees 197 c lw6pil seed command generate 00 20 00 197 c lw6pil send command 0 00 e cece ees 197 c Jew nL sec random 0 eects 197 c lw6pil seq2round 0 ccc eee ees 198 c lw6pil slow down 0 00 cece cece eee ee 198 c Jew nspeed up cece eee ees 198 c lw6pil suite get checkpoint 0 00 cena 198 c lw6pil suite get commands by node index 198 c lw6pil suite get commands by stage 198 c lw6pil suite get node id 0 cece eee eee 198 c JawfpiL ouite get zei cece eee 198 c lw6pil suite init 0 eee ee 198 c lw6pil sync from backup 0 cc cece eee eee 198 c lw6pil sync from draft 0 cece eee eens 199 c lw6pil sync from reference
105. lt value gt Command line option LW6_PLAYER3_COLOR Environment variable player3 color XML key Type string Default value blue Color of the third player must be red green blue yellow cyan magenta orange lightblue purple or pink 4 14 25 player4 color player4 color lt value gt Command line option LW6_PLAYER4_COLOR Environment variable player4 color XML key Type string Default value yellow Color of the fourth player must be red green blue yellow cyan magenta orange lightblue purple or pink 4 15 Advanced settings 4 15 1 base64 decode base64 decode Command line option If specified program will take stdin and base64 decode it to stdout This is for testing purpose for network messages for instance Will decode in standard base64 encoding 160 Liquid War 6 using characters and but also the url compliant version using and see RFC 4648 for details 4 15 2 base64 encode base64 encode Command line option If specified program will take stdin and base64 encode it to stdout This is for testing purpose for network messages for instance Will not use standard base64 encoding using characters and but and instead to be url compliant see RFC 4648 for details 4 15 3 bench bench Command line option Runs a benchmarking test which will report an approximative performance estimation of the game on your computer The result is in an arbitrary unit but it is logari
106. lt value gt Command line option LW6_TEAM_PROFILE_RED_WEAPON_ALTERNATE_ID Environment variable team profile red weapon alternate id XML key Type integer Default value 2 Min value 0 Max value 19 Id of the default alternate weapon for the red team see the documentation about weapons to know what these ids mean 4 11 130 team profile red weapon id team profile red weapon id lt value gt Command line option LW6_TEAM_PROFILE_RED_WEAPON_ID Environment variable team profile red weapon id XML key Type integer Default value 10 Min value 0 Max value 19 Id of the default weapon for the red team see the documentation about weapons to know what these ids mean 4 11 131 team profile red weapon mode team profile red weapon mode lt value gt Command line option LW6_TEAM_PROFILE_RED_WEAPON_MODE Environment variable team profile red weapon mode XML key Type integer Default value 1 Min value 0 Max value 2 Weapon mode for red team 0 means there s no weapon 1 means one weapon per team defined by the weapon id parameter 2 means random weapon 4 11 132 team profile yellow aggressive team profile yellow aggressive lt value gt Command line option LW6_TEAM_PROFILE_YELLOW_AGGRESSIVE Environment variable team profile yellow aggressive XML key Type integer Chapter 4 Reference 131 Default value 200 Min value 5 Max value 2000 Defines how aggressive the yellow team is This is a percenta
107. min map height min map height value Command line option LNG MIN MAP HEIGHT Environment variable min map height XML key Type integer Default value 30 Allows you to give a minimum map height When designing a map you might wonder this is dumb Im conceiving this map I know its height why should I limit it Now Chapter 4 Reference 139 think of the player who decided to play with highly defined maps because he has a super calculator and a hudge screen He might redefine this himself and does not necessarly wishes to fire Gimp to rescale the map 4 12 13 min map surface min map surface value Command line option LW6 MIN MAP SURFACE Environment variable min map surface XML key Type integer Default value 3600 Allows you to give a minimum map surface Map surface is simply width height This parameter is just here to save you the hassle of defining both min map width and min map height in a consistent manner 4 12 14 min map width min map width value Command line option LW6 MIN MAP WIDTH Environment variable min map width XML key Type integer Default value 40 Allows you to give a minimum map width When designing a map you might wonder this is dumb I m conceiving this map I know its width why should I limit it Now think of the player who decided to play with highly defined maps because he has a super calculator and a hudge screen He might redefine this himse
108. much noting it just says I m here which could be infered from any other message No command args e TICKET ticket is used to inform the caller of the ticket we use The ticket sent from A to B is ised by B to sign messages for A A node typically sents a different ticket to all its peers so when sending the same message to A and C B will typically use two different tickets thus generating two different signatures and if sending the exact same string to C A generate yet another signature as it will have sent another ticket There s one optional argument which is the ticket itself a 64 bit hexa integer e FOO key serial is sent on a regular basis it s really the replacement of the OOB PING message it will update the peer status and maintain consistent informations 58 Liquid War 6 It has two arguments the first one is key a 32 bit hexa integer which will upon BAR message reception used to figure out OK this is the BAR message associated to this FOO message I sent before The second one serial is used to inform the peer that possibly there are new messages to fetch from us The peer in turn might fire MISS messages but without this feature peers could fall asleep and forget to pump messages especially on non reliable connections BAR lt key gt lt serial gt is the response to FOO which is received on a regular basis it s really the replacement of the OOB PONG message it will update t
109. new 6 eee eee eee Jee c lw6gen seed normalize 177 CLupgtz ger backende 178 c lw6gui default look s 178 c Ilwegui input r s t eeosss sese sed 178 c lw6gui joysticki get move pad 178 c lw6gui joysticki pop button a 178 c lw6gui joysticki pop button b 178 c lw6gui joysticki pop button c 178 c lw6gui joysticki pop button d 178 c lw6gui joysticki pop button e 178 c lw6gui joysticki pop button f 178 c lw6gui joysticki pop pad down 179 c lw6gui joysticki pop pad left 179 c lw6gui joysticki pop pad right 179 c lw6gui joysticki pop pad up 179 c lw6gui joystick2 get move pad 179 c lw6gui joystick2 pop button a 179 c lw6gui joystick2 pop button b 179 c lw6gui joystick2 pop button c 179 c lw6gui joystick2 pop button d 179 c lw6gui joystick2 pop button e 179 c lw6gui joystick2 pop button f 180 c lw6gui joystick2 pop pad down 180 c lw6gui joystick2 pop pad left 180 c lw6gui joystick2 pop pad right 180 c lw6gui joystick2 pop pad up 180 c lw6gui keyboard get move pad 180 c lw6gui keyboard is pressed 180 c lw6gui keyboard pop arrow down 180 c lw6gui keyboard pop arrow left 180 c lw6gui keyboard pop arrow right 180 c lw6g
110. pattern with S forming the base and being adjacent to both A and D W formed the tip of the triangle A long breath left his parched lips as at last he made his move Dammit he screamed moments later He had misjudged Captain Yellow and Com mander Orange he had expected one at least to attack immediately one he could have handled They were working together foiling his attempt to shoot between them to near the center of the battlefield to gain a better vantage point Yellow had shot down towards him cutting off his advance and now Orange had sealed his escape route It s not over yet muttered the General He opened a voice channel with Commander Orange Very clever Flawed but still clever Flawed came the reply Yes flawed when the good Captain is finished devouring my army who do you think he will turn to next bluffed the General his hands worked quickly as he manoeuvred 234 Liquid War 6 his hovering control ring all that his troops ever saw of him carefully towards the weakest section of his attackers If he could just break out a few units he could soon turn the tide against both Yellow and Orange We have an alliance Orange s voice was unsure now Time for some sarcasm to through her even more off balance thought the General T gathered he spoke softly slowly and with too much meaning Then closing the channel he turned his attention back to h
111. power sicesesese reii Re pina See ae eR 103 4 11 14 highest team color allowed 0 00 eee eee eee 103 4 11 15 highest weapon allowed 0 nenese nnn 104 Liquid War 6 4 11 16 4 11 17 4 11 18 4 11 19 4 11 20 4 11 21 4 11 22 4 11 23 4 11 24 4 11 25 4 11 26 4 11 27 4 11 28 4 11 29 4 11 30 4 11 31 4 11 32 4 11 33 4 11 34 4 11 35 4 11 36 4 11 37 4 11 38 4 11 39 4 11 40 4 11 41 4 11 42 4 11 43 4 11 44 4 11 45 4 11 46 4 11 47 4 11 48 4 11 49 4 11 50 4 11 51 4 11 52 4 11 53 4 11 54 4 11 55 4 11 56 4 11 57 4 11 58 4 11 59 4 11 60 4 11 61 4 11 62 4 11 63 MAX CULSOl POb sivas ose oce ents REO ER een 104 max cursor pot offset ssssseeeeee sees 104 e TEE 104 MaX Nb NOdES 6 ete eee eee eens 105 ixdx nb Leatils ce de dae we Pe Ie cee Pea ee ood 105 max round delta 0 cece cece cece ene 105 MAX ZONE SIZE ue rrr eee hh nn 105 mecicine power 106 moves per round 6 eee eee teenies 106 nb attack tries 0 cece eee eee ne 106 nb defense tries cece eee eens 106 nb fnoVesbrl g eese pero RP p eins E PR PM 107 respaewn delae 2 0 cece cece nn 107 respawn position Mode 6 cece eee eee ees 107 respawn team es secs eee ee ed ees See eee ata 107 round delta ios e uber ER REPRE EY d ce 108 TOUNdS per SeC mnn 108 side attack factor csse 108 side defense factor 0 cece cence eee eee eens 109 Single army SiZe 0 eee ee 109 sp
112. recommendation is not to do this it does not really make sense anyway but if you do it game won t complain It s also wise not to abuse of boost png for obviously a map filled with boosted zones at a X10 pace will require much more CPU than the same map with no such setting This might fool the automatic resampling algorithm and lead to maps that are unplayable The spirit of boost png is just to make a few spots go faster It s also important to note that behaving faster or slower means moving faster or slower but also attacking faster or slower and in a general manner doing any action with a different pace 3 1 9 danger png and medicine png If there s a danger png or medicine png file in the map directory you can use one of them or both then they will be interpreted as follow e on areas where danger png and medicine png are white nothing special happens fighters follow their default behavior e on areas where danger png is black fighters die automatically that is they become black and loose health How dangerous these zones are depends on the danger power parameter e on areas where medicine png is black fighters regenerate faster they become bright and shiny as if auto healing How efficient this medicine is depends on the medicine power parameter e on areas where danger png or medicine png are gray well it s in between the dan ger and medicine effect will be proportional to the
113. show build enable mod gles2 Command line option Shows wether the mod gles2 graphical backend has been enabled when building the game This depends on parameters passed to configure and also on the presence of SDL and OpenGL ES related libraries 4 3 22 show build enable mod http show build enable mod http Command line option Shows wether the mod http network backend has been enabled when building the game This depends on parameters passed to configure and also on the presence of libCurl 4 3 23 show build enable mod ogg show build enable mod ogg Command line option Shows wether the mod ogg audio backend has been enabled when building the game This depends on parameters passed to configure and also on the presence of SDL and related libraries 4 3 24 show build enable mod soft show build enable mod soft Command line option Shows wether the mod soft graphical backend has been enabled when building the game This depends on parameters passed to configure and also on the presence of SDL related libraries 4 3 25 show build enable openmp show build enable openmp Command line option Shows wether the program was built with OpenMP support This depends on pa rameters passed to configure 4 3 26 show build enable optimize show build enable optimize Command line option Shows wether the optimize option has been chosen when building the game This depends on parameters passed
114. team profile orange weapon id team profile orange weapon id value Command line option LW6 TEAM PROFILE ORANGE WEAPON ID Environment variable team profile orange weapon id XML key Type integer Default value 0 Min value 0 Max value 19 Id of the default weapon for the orange team see the documentation about weapons to know what these ids mean 4 11 107 team profile orange weapon mode team profile orange weapon mode lt value gt Command line option LW6_TEAM_PROFILE_ORANGE_WEAPON_MODE Environment variable team profile orange weapon mode XML key Type integer Default value 1 Min value 0 Max value 2 Weapon mode for orange team 0 means there s no weapon 1 means one weapon per team defined by the weapon id parameter 2 means random weapon 4 11 108 team profile pink aggressive team profile pink aggressive value Command line option LW6 TEAM PROFILE PINK AGGRESSIVE Environment variable team profile pink aggressive XML key Type integer Default value 640 Min value 5 Max value 2000 Defines how aggressive the pink team is This is a percentage if set to 200 then team will attack twice as much as any other team with the default value Setting this to a high value clearly advantages this team 4 11 109 team profile pink fast team profile pink fast value Command line option LW6 TEAM PROFILE PINK FAST Environment variable team profile pink fast XML key Type integer
115. this is expected to be one of the most tricky and passionating part of Liquid War 6 hacking 2 10 5 Firewall settings By default Liquid War 6 will communicate on port 8056 in both TCP and UDP and in both ways too in out It s possible to play with partial connectivity in extreme case you can even play without direct internet access using only a mere web proxy However things will go faster and be much easier if the program can use its default native protocol Chapter 2 User s manual 19 Here s an example of a typicall iptables configuration which allows you to play the game full featured It s assumed that by default all packets are dropped this configuration will just open the necessary ports outgoing TCP on port 8056 liquidwar6 iptables A OUTPUT p tcp dport 8056 m state state NEW ESTABLISHED j ACCEPT iptables A INPUT p tcp sport 8056 m state state ESTABLISHED j ACCEPT incoming TCP on port 8056 liquidwar6 iptables A INPUT p tcp dport 8056 m state state NEW ESTABLISHED j ACCEPT iptables A OUTPUT p tcp sport 8056 m state state ESTABLISHED j ACCEPT outgoing UDP on port 8056 liquidwar6 iptables A OUTPUT p udp dport 8056 sport 1024 65535 j ACCEPT iptables A INPUT p udp sport 8056 dport 1024 65535 j ACCEPT incoming UDP on port 8056 liquidwar6 iptables A INPUT p udp dport 8056 sport 1024 65535 j ACCEPT iptables A OUTPUT p udp sport 8056 dport
116. those that do we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary To prevent this the GPL assures that patents cannot be used to render the program non free The precise terms and conditions for copying distribution and modification follow TERMS AND CONDITIONS 0 Definitions This License refers to version 3 of the GNU General Public License Copyright also means copyright like laws that apply to other kinds of works such as semiconductor masks The Program refers to any copyrightable work licensed under this License Each licensee is addressed as you Licensees and recipients may be individuals or organizations To modify a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission other than the making of an exact copy The resulting work is called a modified version of the earlier work or a work based on the earlier work A covered work means either the unmodified Program or a work based on the Pro gram To propagate a work means to do anything with it that without permission would make you directly or secondarily liable for infringement under applicable copyright law except executing it on a computer or modifying a private copy Propagation includes copying distribution with or without modification making available to the public and in some countries o
117. to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile 210 4 16 359 c lw6sys get timestamp c lw6sys get timestamp Wrapper on lIw6sys get timestamp 4 16 360 c Iw6sys get uptime c lw6sys get uptime Wrapper on lw6sys get uptime 4 16 361 c lw6sys get user dir c lw6sys get user dir Wrapper on lw6sys get user dir 4 16 362 c lw6sys get username c lw6sys get username Wrapper on lIw6sys get username 4 16 363 c lw6sys getenv c lw6sys getenv Wrapper on lw6sys_getenv 4 16 364 c lw6sys getenv prefixed c lw6sys getenv prefixed Wrapper on lw6sys_getenv_prefixed 4 16 365 c lw6sys idle c lw6sys idle Wrapper on lw6sys _idle 4 16 366 c lw6sys log c lw6sys log Wrapper on lw6sys_log 4 16 367 c lw6sys log get backtrace mode c lw6sys log get backtrace mode Wrapper on lIw sys log get backtrace mode 4 16 368 c lw6sys log get level c lw6sys log get level Wrapper on lw6sys log get level Liquid War 6 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile Chapter 4 Reference 4 16 369 c lw6sys log
118. to disappear setting it to a high value does nothing if you still don t have access to some colors you still don t period 104 Liquid War 6 4 11 15 highest weapon allowed highest weapon allowed lt value gt Command line option LW6_HIGHEST_WEAPON_ALLOWED Environment variable highest weapon allowed XML key Type integer Default value 19 Min value 7 Max value 19 Id of the greatest highest weapon one can use Normally you can leave this un touched the program will automatically fit this according to your exp Setting an artificially low value will just cause normally available weapons to disappear setting it to a high value does nothing if you still don t have access to some weapons you still don t period 4 11 16 max cursor pot max cursor pot value Command line option LW6 MAX CURSOR POT Environment variable max cursor pot XML key Type integer Default value 1000000 Min value 50000 Max value 5000000 Defines the maximum cursor potential Not really any reason to change it Any high value should produce the same results Low values might reveal algorithm bugs and inconsistencies 4 11 17 max cursor pot offset max cursor pot offset value Command line option LW6 MAX CURSOR POT OFFSET Environment variable max cursor pot offset XML key Type integer Default value 100 Min value 1 Max value 10000 Defines the maximum cursor potential offset The idea is that in some
119. to get the real error Game still segfaults try gdb liquidwar6 Type run trap errors false and watch output The dynamic library loader can sometimes have problemes and does not always report explicit messages on stdout or stderr You can change this by modifying some envi ronment variables export LD_DEBUG all This is very verbose but does help finding bugs Consider compiling the game using configure enable valgrind and then run it using Valgrind Try find type d a name liquidwar6 2 dev null to ensure you don t have an old version of Liquid War 6 somewhere else 2 6 Quick start 2 6 1 Quick start Once the game is installed run it click on Quick start with the mouse and control the red a cursor with the mouse or keyboard both work Try and surround the green team it s a stupid bot you should win You army is formed by all the red pixels on the screen they should try and rejoin the cursor the blinking a letter using the shortest path When red and green meet they fight Iry it toy arround The Quick start button will always make you play red against a green stupid bot whatever other options you have set up Todo 2 7 Strategy tips 2 8 User interface 2 8 1 A reduced set of keys Liquid War 6 can be controlled using a reduced set of keys This is to make the game more portable and allow possible ports to platforms where a full keyboard is not available Dependi
120. value gt 00000 101 cdata dir si se e RR CORRER mea Ede 82 ee TEE 67 debug layer id lt value gt 161 debug team id value 161 ssdefaults liiacueenencicc stebrebDOS DE 68 ee EE 162 dialog timeout lt value gt 162 dirty read lt value gt 000 162 display background lt value gt 162 display console lt value gt 162 display cursors lt value gt 163 display debug gradient lt value gt 163 display debug zones lt value gt 163 display fighters value 163 display fps value 0 eee 164 display hud value eese 164 dieplag Logecualuez nn 164 display map value esee 164 display menu value ss 164 display meta value sss 165 display mouse lt value gt sss 165 display mps value eee eee 165 display preview value 165 Liquid War 6 display progress value 165 display score lt value gt 00 166 display splash value 166 display url value eee eee 166 double click delay value 90 downsize using bench value value 136 downsize using fighter scale value 1
121. win c lw6pil did cursor win Wrapper on lw6pil_did_cursor_win 4 16 216 c lw6pil dump command generate c lw6pil dump command generate Wrapper on Iw6pil dump command generate 4 16 217 c lw6pil execute command c lw6pil execute command Wrapper on lw pil execute command 4 16 218 c lw6pil fix coords c lw6pil fix coords Wrapper on lw6pil_coords_fix 195 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile 196 4 16 219 c lw6pil fix coords x10 c lw6pil fix coords x10 Wrapper on lw pil coords fix x10 4 16 220 c lw6pil get last commit seq c lw6pil get last commit seq Wrapper on lw6pil get last commit seq 4 16 221 c lw6pil get looser c lw6pil get looser Wrapper on lw6pil_get_looser 4 16 222 c lw6pil get max seq c lw6pil get max seq Wrapper on lIw6pil get max seq 4 16 223 c lw6pil get next seq c lw6pil get next seq Wrapper on lw pil get next seq 4 16 224 c lw6pil get reference current seq c lw6pil get reference current seq Wrapper on lw pil get reference current seq 4 16 225 c lw6pil get reference target seq c lw6pil get reference target seq Wrapper on lw pil get reference target seq 4
122. www ufoot org liquidwar v6 doc coverage Src lib bot mod idiot index html 5 5 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node mod 002didiot html 5 6 mod random 5 6 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib bot mod random index html 5 6 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node mod 002drandom html 5 7 libcfg 5 7 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib cfg index html Chapter 5 C API 217 5 7 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html_node libcfg html 5 8 libcli 5 8 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib cli index html 5 8 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html_node libcli html 5 9 mod http 5 9 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib cli mod http index html 5 9 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node mod OO2dhttp html 5 10 mod tcp 5 10 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib cli mod tcp index html
123. zoom out A final word about joystick buttons there s no such thing as standard joystick buttons some will come with A B C D others will have A B start select L R there s no way to know By default the game will use the buttons with the lowest indexes returned by your 16 Liquid War 6 driver for the most usefull functions Validate menu entries is the most usefull action zooming in and out the one you can live without 2 8 3 Quit with F10 There s also an almost hardcoded shortcut which will quit the game immediately or at least as quickly as possible without any prompt or warning It is the F10 key Think of this feature as the procastinator s whoops here comes my boss function emergency 2 9 Solo game 2 9 1 Current state As of today Liquid War 6 is essentially a solo game since network is not working It allows you to toy arround in arcade mode on any map you wish A real solo mode with campaign and goals to reach is planned how it will be implemented is yet to be defined 2 9 2 Team profiles By default teams behave differently some of them move more rapidly some are more aggressive but vulnerable some are more defensive but do not attack as strong as others This aspect of the game is under active tuning things might be unfair by now you can toy arround with the various team profile options any report is appreciated Note that this is very different from Liquid War 5 and can giv
124. 0 tirs tereni tsn EEEE ETE E iS 189 c lw6ldr read relative 00 cece eens 189 c Iw6map exp get unlocked team color 189 c Iw6map exp get unlocked weapon 000 189 c lw6map exp is team color allowed L 190 c lw6map exp is weapon allowed 0000 eee 190 c lw6map get look 2 0 ccc eens 190 c lw6map get max nb colors cece eee 190 c Iw6map get max nb cursors cece eee ees 190 c lw6map get max nb nodes 00 cece cece ee 190 c Iw6map get music dir 6 6 eee ees 190 c Iw6map get title 00 eee eee 190 c lw6map param get 0 cece cece eee eens 190 c Iw6map rules get default 0 0 00 cece eee 190 c lw6map rules get int 10 0 66 191 c Jwfman rules get m93 rrna 191 c Iw6map rules get min 6 6 eee eee eee eee 191 Liquid War 6 4 16 172 4 16 173 4 16 174 4 16 175 4 16 176 4 16 177 4 16 178 4 16 179 4 16 180 4 16 181 4 16 182 4 16 183 4 16 184 4 16 185 4 16 186 4 16 187 4 16 188 4 16 189 4 16 190 4 16 191 4 16 192 4 16 193 4 16 194 4 16 195 4 16 196 4 16 197 4 16 198 4 16 199 4 16 200 4 16 201 4 16 202 4 16 203 4 16 204 4 16 205 4 16 206 4 16 207 4 16 208 4 16 209 4 16 210 4 16 211 4 16 212 4 16 213 4 16 214 4 16 215 4 16 216 4 16 217 4 16 218 4 16 219 c Iw6map style get default 0 cece eee eee 191 c Iw6map team color index to key sess 191 c Iw6map team color in
125. 0 cc cece niea aaa eee 96 4 9 5 known nodes 2 0 c cece eee cence a E EE 96 4 9 6 node descnption 0 00 cece eee eee eee eens 96 4 9 7 node title 0 0 0 ccc eee ee eens 96 4 0 8 password become ri ar RR ERG Ue Onep FORES 97 4 9 9 p blicsurla ciere re er Ep Reb b RR Rn EE 97 4 9 10 skp network teen eens 97 4 9 11 arv backendes ene 97 4 10 Map parameters sssssseesee emm 98 4 10 1 chosen map II 98 4 10 2 l ger seti Rose URS HIP Pene oie eti as aptae 98 4 10 3 ugecursor texcture enne 98 4 10 4 use hnts oml sse 98 4 10 5 use music file 2 0 eee 99 4 10 6 use rul s xKml ise iue err bes eats dese 99 4 10 7 use stvle zml 0 cece cence tenets 99 4 10 8 ueteams ml eee eee nee eens 99 4 10 9 use textur licce erre BRI ee ER a 100 4 11 Map rules xml sssssessssseeee Ie 100 4 11 1 boost pomer In 100 4 11 2 color conflict mode 0 0 c eee een eee 100 4 11 3 GUPSOr POt init jee 4c se Er wee ede cree heres 100 4 11 4 danger power 0 cece cee eee nett e 101 4 11 5 EXD a cie odere mee ete eee da bein see kya det den ees 101 4 11 6 Debter attack I 101 4 11 7 fighter defense 0 cece cece eee eee e eee 101 4 11 8 Debter new health eee 102 4 11 9 fighter regenerate sssesesessee II 102 4 11 10 frags fade out 6 06 cece eee eee n eee eee 102 4 11 11 frags mode 0 ccc cece een ere 102 4 11 12 frags to distribute 00 eee eee 103 4 11 18 gl e
126. 0 1 MSYS tar gz e lzma 4 43 MSYS 1 0 11 1 bin tar gz e make 3 81 MSYS 1 0 11 2 tar bz2 44 Liquid War 6 e mingw runtime 3 14 tar gz e mingw utils 0 3 tar gz e minires 1 01 1 MSYS 1 0 11 1 tar bz2 e MSYS 1 0 11 20071204 tar bz2 e msysCORE 1 0 11 2007 01 19 1 tar bz2 e openssh 4 7p1 MSYS 1 0 11 1 bin tar gz e openssl 0 9 8g 1 MSYS 1 0 11 2 bin tar gz e openssl 0 9 8g 1 MSYS 1 0 11 2 dev tar gz e openssl 0 9 8g 1 MSYS 1 0 11 2 d11098 tar gz e perl 5 6 1 MSYS 1 0 11 1 tar bz2 e perl man 5 6 1 MSYS 1 0 11 1 tar bz2 e regex 0 12 MSYS 1 0 11 1 tar bz2 e tar 1 19 90 MSYS 1 0 11 1 bin tar gz e texinfo 4 11 MSYS 1 0 11 1 tar bz2 e vim 7 1 MSYS 1 0 11 1 bin tar gz e w32api 3 11 tar gz e zlib 1 2 3 MSYS 1 0 11 1 tar bz2 This file list might contain file which are not absolutely mandatory for Liquid War 6 for instance the Fortran 77 compiler is absolutely useless but installing it won t harm either Some packages might unzip things the right way but some do it in a subfolder You might need to run commands like cp r coreutils rm rf coreutils Get rid of useless files rm DS Store DS8 Store It s also mandatory to move everything that has been installed in usr or usr local to since MSYS has some builtin wizardry which maps usr on You need to do this if you don t unzip files from a MinGW shell which is obviously the case when you first install it Usefull command can be mv usr rmdir usr Next libint
127. 0 Max value 19 Id of the default weapon for the purple team see the documentation about weapons to know what these ids mean 4 11 123 team profile purple weapon mode team profile purple weapon mode lt value gt Command line option LW6_TEAM_PROFILE_PURPLE_WEAPON_MODE Environment variable Chapter 4 Reference 129 team profile purple weapon mode XML key Type integer Default value 1 Min value 0 Max value 2 Weapon mode for purple team 0 means there s no weapon 1 means one weapon per team defined by the weapon id parameter 2 means random weapon 4 11 124 team profile red aggressive team profile red aggressive lt value gt Command line option LW6_TEAM_PROFILE_RED_AGGRESSIVE Environment variable team profile red aggressive XML key Type integer Default value 220 Min value 5 Max value 2000 Defines how aggressive the red team is This is a percentage if set to 200 then team will attack twice as much as any other team with the default value Setting this to a high value clearly advantages this team 4 11 125 team profile red fast team profile red fast value Command line option LW6 TEAM PROFILE RED FAST Environment variable team profile red fast XML key Type integer Default value 160 Min value 5 Max value 2000 Changes the speed of the red team This is a percentage if set to 50 then team will move twice slower than other teams with the default parameter Setting this high is very
128. 05 max network bench value sss 169 max round delta i 2 be e be be is 105 max Zone siz8 isioeseser ere e ep canes 105 medicine poWer ex ede Rte ERG 106 memory bazooka eraser eee eee 169 memory bazooka size cece eee eee 170 Menu Color aUuto e sid e rix REDE 138 menu Color default bg sss 147 menu Color default fg 147 menu color dieabled bg 147 menu color disabled fg 147 menu Color selected bg 148 Denu color selected fe cece 148 mnenu style c eb dts ese dude rueda 148 min map height 0 e cece 138 min map E TEE 139 min map width iip0eerec c re eee 139 mouse sensitivity eee 90 moyes per rouhnd ob pb rl RR ERE tnit 106 OT E bh e beneRh RPRRIE Re nebg 83 music exclude RR elbTIpRUS 148 m sicsfile 022b Lp RERS DE PRA Ree uae 148 m sic filter 2 c RR giie 149 m sic pathl i 22or 4es bj 4 E Eee E y Yd 83 music vol meoiinllsswlnenreseet9 r Ei ORES aces 94 Appendix G Indexes N nb attack trieS c waa add PUE sages 106 nb botSugce Vas nPDe PUE Pe LP URN de HE 155 el ET e dean ud pa iyu he 106 nb move btri68 0 c 0 eebhenbE aT es 107 net logicioeserseL ER ROT eU SUIT AE et Ee 170 net per seC ii de e epe ER A pret gage ces 170 Detvork bench delta sesu 170 network reliability 00 171 Dode descrtiption ccc eee eee eee 96 NOGS CA EE 96 O open relay lt siisiosis das dead saws Ma
129. 1024 65535 j ACCEPT If you can t change firewall settings and only have access to the web through a web proxy it can still be possible to play with some restrictions such as your node not being seen by others if mod http is available This in turn depends on wether libcurl support was activated when compiling the game To use the proxy you can set the http proxy environment variable For detailed informations please refer to libcurl doccumentation 2 10 6 Is the game secure As stated in the license the program comes with NO WARRANTY Period However an important effort has been made so that it can reasonnably be used online exposed to various common attacks As far as security is concerned there are two different issues e vulnerability to general security attacks people typically trying to gain prililedged access on your computer relying on a security flaw in the program A good firewall is a must have as you can never know for sure a program has no bugs Running Liquid War 6 as an unpriviledged user certainly not root is also a good practice e vulnerability to players cheating and sending malicious informations to fake their moves scores and or modify informations concerning other players This is a very important point in Liquid War 6 since it has a multi channel way of exchanging data think of the web interface you have no garantee of who the client is Here s a list of various steps which have been taken t
130. 11 77 team profile green fast team profile green fast lt value gt Command line option LW6 TEAM PROFILE GREEN FAST Environment variable team profile green fast XML key Type integer Default value 70 Min value 5 Max value 2000 Changes the speed of the green team This is a percentage if set to 50 then team will move twice slower than other teams with the default parameter Setting this high is very likely to advantage the team 4 11 78 team profile green handicap team profile green handicap value Command line option LNG TEAM PROFILE GREEN HANDICAP Environment variable Chapter 4 Reference 119 team profile green handicap XML key Type integer Default value 100 Min value 10 Max value 1000 Defines the handicap for the green team 4 11 79 team profile green mobile team profile green mobile lt value gt Command line option LW6_TEAM_PROFILE_GREEN_MOBILE Environment variable team profile green mobile XML key Type integer Default value 0 Min value 3 Max value 3 Increases or decreases if negative the number of move attack defense tries for the green team If set to a high value team will appear more mobile and do more things but it won t change its cruising speed It s not obvious to tell wether this is an advantage or not but it clearly changes the behavior 4 11 80 team profile green vulnerable team profile green vulnerable lt value gt Command line option LW6_TEAM_P
131. 11 debug team id debug team id lt value gt Command line option LW6_DEBUG_TEAM_ID Environment variable debug team id XML key Type integer Default value 0 Min value 0 Max value 9 A team id which will be used for debugging purposes for instance when displaying gradient 162 Liquid War 6 4 15 12 demo demo Command line option Start the game in demo mode 2 bots play against each other forever 4 15 13 dialog timeout dialog timeout value Command line option LW6 DIALOG TIMEOUT Environment variable dialog timeout XML key Type integer Default value 3600 Min value 0 Max value 86400 Timeout in seconds after which a dialog will automatically be closed wether user clicked on it or not Mostly used for testing to avoid program being stall on a visual prompt 0 will simply disable this feature and wait forever Note that some platforms might not support this Interfaces using Gtk do support it 4 15 14 dirty read dirty read value Command line option LW6 DIRTY READ Environment variable dirty read XML key Type integer Default value 2 Min value 0 Max value 2 How to handle dirty reads and locks when displaying stuff If set to 0 there will be no dirty reads at all a lock mutex will be set whenever it s needed If set to 1 display might be done with inconsistent data however the data itself won t be modified while displaying If set to 2 displayed data can and will be mo
132. 148 LWG MUSIC FILTER mede RR Dee ne 149 LWG MUSIC EE 83 LWG MUSIC VOLUME mem bee inimpea s 94 LW6_NB_ ATTACK TRIES RR tes 106 LW6 NB B TS 4 5 uper d 158 LW6 NB DEFENSE TRIES s 0000 106 LW6 NB MO VE TRIES ee 9er mes 107 LW6 NET LDGnesxeneerze ebyebbeenevceaemet 170 LWG NET PER SEGC tru esperes poniak Ee 170 LW6_NETWORK_BENCH_DELTA 170 LW6_NETWORK_RELIABILITY 171 LW6 NODE DESCRIPTION osr erncrsreseuneni minii 96 LW6 NODE TITLE 2 Re ne MR ERR RS 96 LW6 DEEN RELAY ree DS Re RR Rn Lr LW6 PASSWORD m eene Remp 9T LWG PILOT LAG ocre AIR SEI ace ceed It LWO PIXELIZE cke e Abee Zeg ee 149 LWG PLAYERI COLOR de Lemee rte me 159 LW6 PLAYER1 CONTROL 0002 e eee 84 LWG PLAYERA RENE lee Meet 85 LWG PLAYERI STATUS bmi Ren ERR 85 ENG PLAYER2 COLOR meh bebe ms 159 LWG PLAYER2 CONTROL 0 00000 85 LW6 PLAYER2 NAME ere neret eee 85 LW6 PLAYER2 STATUS Re meme EY ge 86 LNG PLAYERS COLOR 020 cece eee 159 LW6_PLAYER3_CONTROL 000000008 86 LWO PLAYERS NAME en bI Eege 86 LWO PLAYERS STATUS sised cca ceeded aeons 86 LW6 PLAYERA COLOR 0000 e eee eee 159 LW6_PLAYER4_CONTROL 0 00000 86 LW6_PLAYER4 NAME ei on e dpe i 87 LW6_PLAYER4_STATUS 0 00 c ee eee 87 LW6 PUBLIC URL ter e RR ees 97 LW6 REPEAT DELAY cri 522 002 3a RR 90 Appendix G Indexes LW
133. 2 4 16 113 4 16 114 4 16 115 4 16 116 4 16 117 4 16 118 4 16 119 4 16 120 4 16 121 4 16 122 4 16 123 c Iw6gui look get cesses ee 181 c lw6gui look set cesses ee 181 c Jwpeut Jook zoom 2mn eee 181 c lw6gui look z00M OUt cece eee 182 c lw6gui menu append 0 cece eee eee eee ee 182 c lw6gui menu close poOpup eee eee eee ee eens 182 c lw6gui menu enable esc 6 cece eee 182 c lw6gui menu has popup lesse 182 c lw6gui menu New 2 6 6 eee ee 182 c Iw6gui menu remove 2 eee eee ees 182 c Iw6gui menu remove all 0 182 c Iw6gui menu scroll down 0 0 c cece eee eee eee 182 c Jwfeui mem zcrollup eee eee 182 cJoa eui menu select 000 eee eee eens 183 c Iw6gui menu select esc 6 0 0 6 cece cece eee 183 c lw6gui menu set breadcrumbs 0000 000 ee 183 c lw6gui Menu syNC 2 eee eens 183 c lw6gui mouse get state 0 0 eee eee 183 c Iw6gui mouse poll move 0 0 cece e eee 183 c lw6gui mouse pop button left 0 eee ee 183 c lw6gui mouse pop button middle anasaanasas 183 c lw6gui mouse pop button right 00 eee 183 cJoa eui mouse pop double chck 183 c Jwfeui mouse Dop aimple chck 184 c Jwfeui mouse pop riple chck 184 c lw6gui mouse pop wheel do0Wn n asussssuseses 184 c lw6gui mouse pop wheel up 00 00s eee eee 184 c lw6hlp about cscs eie eee rere ad seeiis 184 c
134. 2 Basic Permissions All rights granted under this License are granted for the term of copyright on the Program and are irrevocable provided the stated conditions are met This License ex plicitly affirms your unlimited permission to run the unmodified Program The output from running a covered work is covered by this License only if the output given its content constitutes a covered work This License acknowledges your rights of fair use or other equivalent as provided by copyright law You may make run and propagate covered works that you do not convey without conditions so long as your license otherwise remains in force You may convey covered works to others for the sole purpose of having them make modifications exclusively for you or provide you with facilities for running those works provided that you comply with the terms of this License in conveying all material for which you do not control copyright Those thus making or running the covered works for you must do so exclusively on your behalf under your direction and control on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you Conveying under any other circumstances is permitted solely under the conditions stated below Sublicensing is not allowed section 10 makes it unnecessary 3 Protecting Users Legal Rights From Anti Circumvention Law No covered work shall be deemed part of an effective technological measur
135. 2 kb parts by libdat the constant _LW6DAT_ ATOM_MAX_SIZE is used to split big messages in smaller parts It s implemented in src lib msg msg envelope c 3 14 4 Regular control messages To establish a connection maintain it and do the OOB job a set of control message is used Those messages carry a bunch of informations about who is sending them in fact they just contain the informations that would otherwise be handled by out of band messages but it s convenient to have the information first hand rather than relying on the other protocol The syntax is LW6 VERSION PASSWORD CHECKSUM PHYSICAL TICKET SIG LOGICAL TICKET SIG PHYSICAL FROM Example LW6 0 1 3485 ffffffff 1001100110011001 2002200220022002 HELLO liquidwar6 0 1 3485 The fields starting from LW6 up to and including LOGICAL TO ID are part of the envelope described previously The message fields are Chapter 3 Hacker s guide 57 e lt COMMAMD gt described below the main command e lt PROGRAM gt should be liquidwar6 e lt VERSION gt the version of the program Yes this is also in the envelope but one could think of instances relaying informations for other peers in that case this could prove useful e lt CODENAME gt the code name of the program e lt STAMP gt the stamp it s normally contained within the version but this avoids parsing issues e lt ID gt the node id could be inferred from e
136. 200 then team will be attacked twice as much as any other team with the default value Setting this to a high value clearly disadvantages this team 4 11 113 team profile pink weapon alternate id team profile pink weapon alternate id value Command line option LNG TEAM PROFILE PINK WEAPON ALTERNATE ID Environment variable team profile pink weapon alternate id XML key Type integer Default value 19 Min value 0 Max value 19 Id of the default alternate weapon for the pink team see the documentation about weapons to know what these ids mean 4 11 114 team profile pink weapon id team profile pink weapon id value Command line option LNG TEAM PROFILE PINK WEAPON ID Environment variable Chapter 4 Reference 127 team profile pink weapon id XML key Type integer Default value 1 Min value 0 Max value 19 Id of the default weapon for the pink team see the documentation about weapons to know what these ids mean 4 11 115 team profile pink weapon mode team profile pink weapon mode lt value gt Command line option LW6_TEAM_PROFILE_PINK_WEAPON_MODE Environment variable team profile pink weapon mode XML key Type integer Default value 1 Min value 0 Max value 2 Weapon mode for pink team 0 means there s no weapon 1 means one weapon per team defined by the weapon id parameter 2 means random weapon 4 11 116 team profile purple aggressive team profile purple aggressive lt value gt
137. 218 bt hat geg mee teet Deme t DR eu 218 5 14 T OVERVIEW ice eege gen ee er 218 514 2 E EE 218 e GET ese scene oh aeaa w der IR ee 218 5 15 1 Overview 2 0 cece RR e 218 552 APIs od pues teerseriries pe dedi tad pee tes 218 5 16 hbdspasxcsecestexener e EE es tea pews vente hdex d PEE 218 5 16 1 Overview 2 0 RR e 218 le E EE 219 DA mmm oY KEE 219 5 17 1 Overview 20 ccc IRR e 219 D E1 2 EE 219 5 18 been osse iuet op Ur e PO tuae deemed eec E 219 5 18 1 Overview 00 0 c ccc cee cece he 219 a82 EE 219 ONO Haben HER cae re Lee eae 219 5 19 1 Overview 0 ccc ccc I ii Ea 219 D 19 2 ABI en e Eis et RIP ere be EU 219 0 20 iod gll ipe nad ean Pay EY Yu aede Seek 219 5 20 Overview ciat eeu vereri wile Duae sacas 219 EE 219 5 21 mod gles AEN NEE dees cede eee Rad t RR RH LER 220 5 21 l Overview Ze dg Eddi 220 EE A NR 220 5 22 MOd sOft 0 cee cece eee e 220 5 22 L Chemie iusso osx SEAN NENNT deeg e Ae 220 Liquid War 6 Dc eset ae are EE 220 5 23 EE 220 5 28 1 OVERVIEW v Eet ae so bith EE seat ee di Das 220 e E EE 220 tel eege ege ENEE Seer andscuans 220 5 24 1 Overview 0 ccc cee Hh 220 E EE 220 5 20 DGID iscsi eR ET Is Gad RRR Oe cea PEG Ege 221 CT OWwervieW merapat reri Rue ie cee Pb red KEE pgs 221 QURE INE 221 5 20 lbg rt de deet E ddan RE eIC ERE E 221 5 20 1 OVERVIEW Loo Eelere 221 520 2 EE 221 5 27 Jdbhlp idi re eee Raub AE SEN 221 CT Overview ceres IH actin PS bo POE
138. 23 LNG TEAM PROFILE ORANGE AGGRESSIVE 123 LW6 TEAM PROFILE ORANGE FAST 124 LW6 TEAM PROFILE ORANGE HANDICAP 124 LNG TEAM PROFILE ORANGE MOBILE 124 LW6 TEAM PROFILE ORANGE VULNERABLE 124 LNG TEAM PROFILE ORANGE WEAPON ALTERNATE ID Woe deems wee eee wee ee Boys Mba tld 124 LW6_TEAM_PROFILE_ORANGE_WEAPON_ID 125 LW6_TEAM_PROFILE_ORANGE_WEAPON_MODE 125 LW6_TEAM_PROFILE_PINK_AGGRESSIVE 125 LW6_TEAM_PROFILE_PINK_FAST 125 LW6_TEAM_PROFILE_PINK_HANDICAP 126 LW6_TEAM_PROFILE_PINK_MOBILE 126 LW6 TEAM PROFILE PINK VULNERABLE 126 LNG TEAM PROFILE PINK WEAPON ALTERNATE ID dnsibidshead d pd AEG eed cete eremum 126 272 LW6_TEAM_PROFILE_PINK_WEAPON_ID 126 LW6_TEAM_PROFILE_PINK_WEAPON_MODE 127 LW6_TEAM_PROFILE_PURPLE_AGGRESSIVE 127 LW6 TEAM PROFILE PURPLE FAST I2T LW6 TEAM PROFILE PURPLE HANDICAP 127 LW6 TEAM PROFILE PURPLE MOBILE 128 LW6 TEAM PROFILE PURPLE VULNERABLE 128 LW6 TEAM PROFILE PURPLE WEAPON ALTERNATE ID Alike scii E Ne da MESE LIEU es 128 LW6 TEAM PROFILE PURPLE WEAPON ID 128 LW6 TEAM PROFILE PURPLE WEAPON MODE 128 LW6 TEAM PROFILE RED AGGRESSIVE 129 LW6 TEAM PROFILE RED FAST ssese 129 LW6 TEAM PROFILE RED HANDICAP 129 LW6 TEAM PROFILE RED MOBILE 129 LW6 T
139. 3 Getting informations about where fighters are One of the key functions is 1w6ker game state get fighter id which will return the id of a fighter at a given position Then its companion function lw6ker game state get fighter by id can be called it will return a 1w6ker fighter t which contains the real data The type 1w6ker fighter t is not opaque and can be freely accessed by the caller which typically is a graphics backend trying to display informations Try and grep for the string Iw6ker game state get fighter id withing the src lib gfx source tree for exam ples One thing that is very important when hacking on libker you should always leave the lw6ker game state t struct in a state that is compatible with a correct usage of public getters in src lib ker ker h The reason is that this code can be executed by separate threads more precisely in dirty read mode the rendering thread will try and display a game state while this very game state is being updated by another thread 3 8 Compilation tips 3 8 1 Advanced configure options In addition to all the common Autoconf switches such as prefix Liquid War 6 has some custom switches e disable console allows you to turn on off console support Normally this is detected automatically but in case you really want to disable it on platforms which support it you can This will cause the program no to link against libreadline among other things e
140. 3 name lt value gt Command line option LW6_PLAYER3_NAME Environment variable player3 name XML key Type string Default value player3 lt hostname gt Name of the third player A default value is provided you ll certainly want to change it 4 5 9 player3 status player3 status value Command line option LW6 PLAYER3 STATUS Environment variable player3 status XML key Type boolean Default value false Status of the third player true if player is activated false if idle 4 5 10 player4 control player4 control lt value gt Command line option LW6_PLAYER4_CONTROL Environment variable player4 control XML key Type string Default value joystick2 Control for the fourth player must be mouse keyboard joystick1 joystick2 or custom Chapter 4 Reference 87 4 5 11 player4 name player4 name lt value gt Command line option LW6_PLAYER4_NAME Environment variable player4 name XML key Type string Default value player4 lt hostname gt Name of the fourth player A default value is provided you ll certainly want to change it 4 5 12 player4 status player4 status value Command line option LW6 PLAYERA STATUS Environment variable player4 status XML key Type boolean Default value false Status of the fourth player true if player is activated false if idle 4 6 Input options 4 6 1 auto release delay auto release delay value Command line option L
141. 352 4 16 353 4 16 354 4 16 355 4 16 356 4 16 357 4 16 358 4 16 359 4 16 360 4 16 361 4 16 362 4 16 363 c Iw6sys build get version major ssssss 205 c Iw6sys build get version minor e 205 c lw6sys build is gnu 0 eee eee 205 c lw6sys build is gp2x 0 6 eee eens 206 c lw6sys build is mac O8 X 0c eese 206 c lw6sys build is ms windows 0 0c cece eee eee 206 c Iw6sys build is unix 20 0 0 cece eens 206 c lw6sys build is x86 20 cee eee ees 206 c lw6sys debug get 00 cece cee eens 206 c Iw6sys debug set sss 206 c lw6sys delay ssseeeeeeeee ee 206 c Jwfovs dummp 0 cece eee eee eee 206 c lw6sys dump clear 6 eee eee eee ees 206 c Iw6sys generate id 16 2 0 0 eee ccc eens 207 c Iw6sys generate id 32 2 0 0 cece eee 207 c Iw6sys generate id 64 2 0 cece cece eee 207 c lw6sys get config file 2 eee eee ees 207 c lw6sys get CWd 6 cece cece e 207 c lw6sys get cycle 0 ccc cc cece eee 207 c lw6sys get data dir 0 ccc eee eens 207 c lw6sys get default config file 6 207 c Iw6sys get default data dir 0 0 0 cee eee eee 207 c lw6sys get default log file 0 0 0 0 207 c Iw6sys get default map dir 0 cece e eee 208 c Jwfovs get dJefault map patbh 208 c Iw6sys get default mod dir 0c cece ees 208 c Iw6sys get default music dir 0 e eee eee eee 208 c Iw6sys get default music path
142. 36 example hints xml 2 lk kk x Res 69 example ru ules xml i ee Rr x Rh 69 example style xml 2i eenexec RI eps 69 example teams xml i 2 2 erie cease Ra 69 executed again value s 166 cexps value5u isseber ede px ee VERS 101 fighter attack value ss 101 fighter defense lt value gt 101 fighter new health lt value gt 102 fighter regenerate lt value gt 102 fighter scale lt value gt sss 136 cforce val e6 i ieuige pe AEN EE P reed 98 frags fade out lt value gt 102 frags mode lt value gt 000s 102 frags to distribute value 103 fullscreen value esses 92 fx volume lt value gt sss 94 gfx backend value eese 92 gfx cpu usage value sss 166 gfx debug value cesse esssss 167 gfx quality lt value gt eee 92 glue power value esses s 103 guess colors value ssss 137 guess moves per sec value 137 h ights4value i vgeweri e e a ree pud 93 be E EE 68 hidden layer alpha lt value gt 145 highest team color allowed lt value gt 103 highest weapon allowed lt value gt 104 ae CT osc ded ceca stia teed esata bAR I REC RSEN 68 hud color auto value
143. 39 4 12 14 mn map width eee ee 139 4 12 15 resample Ae dae dies de taria Meegaua donee 139 4 1246 Speed ice appended eege 139 4 12 17 system color auto 2 0 eee eens 140 4 12 18 upsize using bench value cece eee eee eee 140 4 12 19 upsize using fighter scale 0 00 cece eee eee 140 4 12 20 viegw color auto esses 141 4 12 21 wallerense e 141 4 13 M ap stylexXml sii b ier dele E vede Co ERIT aa eas 141 4 13 1 animation density 000 eee e 141 4 13 2 animation speed 00 nee eee 142 4 13 3 backeround color zoot be eee ee eee 142 4 13 4 backeround color zoot Je eee 142 4 13 5 backeround color stuft be cece eee 142 4 13 6 backeround color stuftfe eee eee 143 4 13 7 backeround stle 0 cee ee 143 4 13 8 blmnk ourgor 0 00 ccc eect ee 143 4 13 9 color alternate bg 0 0 e 143 4 13 10 color alternate fg 0 0 ene eee ee 144 4 13 11 color base bg sss 144 4 13 12 color base fe see 144 4 13 13 colorize etr wie teet Eee EE D E ases 144 4 13 14 colonze cumgor ee 145 4 13 15 ourgorsaize hr 145 4 13 16 budden Iaver alpba eee ee 145 4 13 17 buccolor Prame be eee een eee 145 4 13 18 budcolor Prame fe eee eee 146 4 13 19 hud color text bg 0 ieee eee eee eens 146 4 13 20 hud color text fg 0 0 eee eee eee eee 146 4 13 21 hud style err ERR E rece EE ET 146 4 13 22 keenrato 0 cece re 146 4 13 23 memt color default be 0
144. 4 5 30 TbSlih AER 224 5 39 1 Overview lesse hh eteneeenees 224 5 902 GNP ageet aa 224 5 40 begleete PR ER PERI Cete Eb aate 224 5 40 1 Overview 0 IRI n 224 ET E NEE 224 041 mod esound e eet vere x eh ale ents de DLE P Ie Bae 224 5 41 1 Overview 0 ccc ccc cee ce eee Rh he 224 I NE ME 2c WEE 224 5 42 med og eet bue cere bead boa DESEE de eR ed 224 5 42 l OVERVIEW Liebe eege ee 224 5 49 2 E EE 224 DA Get 225 AS OVervieW ccn sedere PIE ins ep Iv qu eda era cries 225 VES E aces sexily eerste Gave ERE 225 5 444 mod hitpd used te Eo er dlc toe Pur ace a iot e 225 D 44 1 OVERVIEW user be EOD i ei RED pLeneRC5PR hg 225 EE E WEE 225 9 45 modstepd es ish be sana exe ese pee eR E RIP EY E 225 b 45 l ONVerVIeW ucusiueamc ni See ents Sear td EE 225 545 2 NP E Ee e e RERO edu Aer tid decus s 225 546 mod udpd isses poe oat RS EROR e ote rad ce meas 225 5 46 l OVERVIEW s vesriiilemcUertskrei ew gdwtpbereznekewbieegs 225 5 46 2 API obi eb esee pU esque eee ved Od eios 225 BAL MDSYS ence tec dare gier p IH PEBEQ esu esee 225 5 47 1 Overview lsseeeeeee IRR e 225 BAD APT ele teased eee PE Mettre Pep rs 226 Ds Ee eege sani EET tetto e SEN 226 5 48 1 Overview sseeeeee IRR es 226 DAS AP enerala a RERdec ie Sethi RIP tele ates 226 5 49 EE 226 5 49 1 Overview sseeeeee RR 226 5 40 29 NP Tice crude eege re iens 226 Appendix A Autbhors naana 227 Appendix B 2005 plan 229 B 1 Complete rewrite
145. 4 11 128 4 11 129 4 11 130 4 11 131 4 11 132 4 11 133 4 11 134 4 11 135 4 11 136 4 11 137 4 11 138 4 11 139 4 11 140 4 11 141 4 11 142 4 11 143 4 11 144 4 11 145 4 11 146 4 11 147 4 11 148 4 11 149 4 11 150 4 11 151 4 12 Map 4 12 1 4 12 2 4 12 3 4 12 4 4 12 5 4 12 6 4 12 7 team profile pink vulnerable 00 cece eee ees 126 team profile pink weapon alternate id 126 Leam pGroble omnk weapon 2d cece eee ee eee 126 team profile pink weapon mode 000005 127 team profile purple aggressive 0 cece eee ees 127 team profile purple fast 0 0 c cece eee eee eee 127 Leam Droble purple handieap seas 127 team profile purple mobile 0 000 e ee eee 128 Leam proble purple vulnerable 128 team profile purple weapon alternate id 128 team profile purple weapon id 0 ccc cece eee eee 128 team profile purple weapon mode 000000e 128 team profile red aggressive sussun eee 129 team profile red fast ccc cece cee eens 129 Leam Droble rec handiecan eee eee eee 129 team profile red mobile 00 0 0 eee 129 team profile red vulnerable 0 0 cece eee eee 130 team profile red weapon alternate id 130 Leam Droble reck oweapon 2d 0 0 e eee ee eee 130 team profile red weapon mode 0 2e eee eee 130 team profile yellow aggressive lesse 130 team profile yellow fast
146. 4 11 28 respawn delay respawn delay value Command line option LW6_RESPAWN_DELAY Environment variable respawn delay XML key Type integer Default value 3 Min value 0 Max value 30 Delay in seconds after which teams reappear on the battlefield when in deathmatch mode 0 means team right away 4 11 29 respawn position mode respawn position mode lt value gt Command line option LW6_RESPAWN_POSITION_MODE Environment variable respawn position mode XML key Type integer Default value 1 Min value 0 Max value 2 Defines how teams are set up on the map when respawning 0 means teams respect the pre defined start positions 1 means that a random position will be picked among the existing positions That is red could take green s place 2 means total randomness teams can appear anywhere 4 11 30 respawn team respawn team value Command line option LW6_RESPAWN_TEAM Environment variable respawn team XML key Type integer 108 Liquid War 6 Default value 1 Min value 0 Max value 1 Defines what to do when a team dies If set to 0 team disappears forever if set to 1 team reappears automatically with fresh fighters It s a deathmatch mode where the winner is not the one who stays alive the longest time since it makes no real sens in this case but the one who has died less often than others 4 11 31 round delta round delta lt value gt Command line option LW6_ROUND_DELTA Environ
147. 4 11 4 danger power danger power lt value gt Command line option LW6_DANGER_POWER Environment variable danger power XML key Type integer Default value 200 Min value 0 Max value 10000 Defines how dangerous are the black zones defined in danger png The value is used to decrease the fighter health at each move so you should compare its value to something like fighter attack Being on a dangerous zone is a bit like being attacked by an invisible and unknown ennemy 4 11 5 exp exp lt value gt Command line option LW6_EXP Environment variable exp XML key Type integer Default value 1 Min value 0 Max value 99 Level of experience AKA exp required to play the current level If this level is validated that is won then player will be granted with a level of exp 1 and be able to play all the next levels An exp of 0 means the level is playable by a pure beginner 4 11 6 fighter attack fighter attack value Command line option LW6 FIGHTER ATTACK Environment variable fighter attack XML key Type integer Default value 500 Min value 1 Max value 10000 Defines how hard fighters will attack others that is in one attack how many life points the attacked fighter will loose Increasing this will cause your opponents to melt faster when you attack them With a low value it will take ages to take on your opponents Different styles of game Can radically change the gameplay 4 11 7 fighter de
148. 4 Add a new module This describes how to add a new mod ab module for instance a new bot but gfx snd cli or srv backends should work pretty much the same e add a new entry in src lib bot Makefile am e create the subdir src lib bot mod ab with its Makefile am inspired from other existing modules e add the entry in configure ac so that src lib bot mod ab Makefile is generated e edit doc gdoc update sh and add an entry for mod ab e edit doc Makefile am and add mod ab gdoc texi in gdoc TEXINFOS e edit doc doxygen update sh and add an entry for mod ab e edit doc Makefile am and add mod ab doxygen texi in doxygen_TEXINFOS e type touch doc mod ab gdoc texi doc mod ab doxygen texi else dependencies checking will fail e in doc run gdoc update sh and doxygen update sh e edit doc liquidwar6 texi to add a new node section for this module e edit doc deps dot to update dependencies e edit src lib bot bot test c change the value of TEST NB BACKENDS and modify the code so that the new ab module is tested too e edit src lib bot bot register c the code must updated pretty much in every place with the conditionnal LW6 ALLINONE you need to add the new module e run automake autoconf configure and make 3 16 Using GNU Arch 3 16 1 About GNU Arch Since March 4th 2010 Liquid War 6 uses GIT to handle source code track changes branches and the rest It replaces the GNU Arch repository This old repository contains a
149. 5 30 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib ldr index html 5 30 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libldr html 5 31 libmap 5 31 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib map index html 5 31 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libmap html 5 32 libmat 5 32 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib mat index html 5 32 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html_node libmat html 5 33 libmsg 5 33 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib msg index html 5 33 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libmsg html Chapter 5 C API 223 5 34 libnet 5 34 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib net index html 5 34 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libnet html 5 35 libnod 5 35 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib nod index
150. 6 Import the core algorithm from Liquid War 5 make the game playable in demo mode la Liquid War 2 implement the network peer to peer like mode At this stage it will be possible to know wether Liquid War 6 is true vaporware or not e 2007 glue all this together to make something usable by anyone heavy work on the GUI on the options on error checking many bug fixes The goal is to have a game which is equivalent to Liquid War 5 with the network aspects pushed to the next level e 2008 tadaaaaaaaaaaa Release the game publicly inform Freecode 8 and enhance it with all the feedback from gamers bug reports and suggestions received since 1998 Work on artwork both graphics and musics Write documentation e 2009 stabilize the game patch it for all those things which had been forgotten back then in 2005 optimize for speed bug fix bug fix bug fix e 2010 stop maintaining Liquid War 5 invite Liquid War fans and coders to a hudge party in my garden sing all night drink beers and wine teach Liquid War strategies to my 5 and 6 year old daughters remember the old times when Liquid War wasn t so cool 8 Appendix C Fanfic 233 Appendix C Fanfic Quoting Gavin I wrote a liquid war fanfic some time ago I wrote it after a friend claimed that there wasn t any liquid war fanfic because it wasn t possible So here it is a Liquid War fanfic It was initially written for Liquid War 5 but applies to
151. 600 How long it will take for weapons to charge and be usable by default Unit is seconds 134 Liquid War 6 4 11 145 weapon charge max weapon charge max lt value gt Command line option LW6_WEAPON_CHARGE_MAX Environment variable weapon charge max XML key Type integer Default value 200 Min value 100 Max value 1000 Maximum percentage of charge intensity that one have For instance if this is 400 then if you wait four times more than required before firing then you weapon will have four times its default power but if you wait five times more it will still be four times more powerfull it s just the limit after which it s useless to charge 4 11 146 weapon duration weapon duration value Command line option LNG WEAPON DURATION Environment variable weapon duration XML key Type integer Default value 3 Min value 1 Max value 60 How long all weapons for which duration makes sense will last Unit is seconds 4 11 147 weapon tune berzerk power weapon tune berzerk power value Command line option LW6 WEAPON TUNE BERZERK POWER Environment variable weapon tune berzerk power XML key Type integer Default value 3 Min value 1 Max value 100 Use to specifiy how strong berzerk mode is if set to 3 then attacks will be 3 times as efficient in berzerk mode 4 11 148 weapon tune turbo power weapon tune turbo power value Command line option LW6 WEAPON TUNE TURBO POWE
152. 6_REPEAT_INTERVAL 2 0 0 c eee eeee 91 ENG RESAMPLE niei sdsee eve maie 139 LW6_RESET_CONFIG_ON_UPGRADE 172 LW6_RESPAWN_DELAY 0 000000 enue 107 LW6 RESPAWN POSITION MODE 107 LWO RESPAWN TEAM mnm ERR 107 LW6 ROUND DELTA ened ote kem ES 108 LW6 ROUNDS DER GE 108 LW6_SCREENSHOTS_PER_MIN 0 172 LNG SIDE ATIACK PACTOR 108 LW6_SIDE_DEFENSE_FACTOR nousnnrnnne 109 LNG SINGLE ARMY GI2E sss 109 LW6 SKIP NETWORK c eeiiIe4 ee wade E 97 LWO SND BAGCKEND ege gare Ee ere ERES 94 LWO SPEED i ec rb bre oie deaee IE nU ead eater deae 139 LWG SPREAD MODE 5L ninii De EIEEE pS 109 LW6 SPREAD THREAD 0 0c ee ee 109 LW6_SPREADS_PER_ROUND 000 110 LW6_SRV_BACKENDS 0 0 0 cee cee eee 97 LW6 START BLUE X e ane gees 110 LW6 START BLUE Y ehm 110 LWO START CYAN X nrRpI M ne RE e 110 LWO START CYAN Y t Ret E whee 111 LW6 START GREEN X oo ccc cece eee eee TA LW6 START GREEN Ve 111 LW6_START_LIGHTBLUE_X 0000 111 LW6 START LIGHTBLUE Y eeeeeeees 111 LW6 START MAGENTA X eese 112 LW6 START MAGENTA Y eeeeeee 112 LW6 START ORANGE X eee ree 112 LWG START ORANGE Y repe 112 LWO START PINK Xvi fas eise ee eer dee te 112 LWO START PINK Yaoi iieii AOE Ea 113 LW6_START_POSITION_MODE 113 LW6 START PUR
153. 6sys build get package string Wrapper on lIw6sys build get package string 4 16 308 c lw6sys build get package tarname c lw6sys build get package tarname Wrapper on lw6sys build get package tarname Liquid War 6 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile Chapter 4 Reference 4 16 309 c lw6sys build get pointer size c lw6sys build get pointer size Wrapper on lIw6sys build get pointer size 4 16 310 c lw6sys build get prefix c lw6sys build get prefix Wrapper on lIw sys build get prefix 4 16 311 c lw6sys build get stamp c lw6sys build get stamp Wrapper on lw6sys build get stamp 4 16 312 c lw6sys build get time c lw6sys build get time Wrapper on lIw6sys build get time 4 16 313 c lw6sys build get top srcdir c lw6sys build get top srcdir Wrapper on lIw6sys build get top srcdir 4 16 314 c lw6sys build get version c lw6sys build get version Wrapper on lw6sys build get version 4 16 315 c lw6sys build get version base c lw6sys build get version base Wrapper on lw6sys build get version base 4 16 316 c lw6sys build get version major c lw6sys build get version major Wrapper on lw6sys build
154. 9 4 16 149 c lw6ker unregister node c lw6ker unregister node C function exported to Guile Wrapper on lw6ker_unregister_node 4 16 150 c lw6ldr chain entry c lw6ldr chain entry C function exported to Guile Wrapper on Iw6ldr_chain_entry 4 16 151 c lw6ldr exp validate c lw6ldr exp validate C function exported to Guile Wrapper on lwOldr exp validate 4 16 152 c lw6ldr get entries c lw6ldr get entries C function exported to Guile Wrapper on lIw ldr get entries 4 16 153 c lw6ldr hints get default c lw6ldr hints get default C function exported to Guile Wrapper on lIw ldr hints get default 4 16 154 c lw6ldr print examples c lw6ldr print examples C function exported to Guile Wrapper on lw6ldr_print_examples 4 16 155 c Iw6ldr read c lw6ldr read C function exported to Guile Wrapper on lwOldr read 4 16 156 c Iw6ldr read relative c lw6ldr read relative C function exported to Guile Wrapper on lw6ldr_read_relative 4 16 157 c lw6map exp get unlocked team color c lw6map exp get unlocked team color C function exported to Guile Wrapper on lw6map_exp_get_unlocked_team_color 4 16 158 c Iw6map exp get unlocked weapon c lw6map exp get unlocked weapon C function exported to Guile Wrapper on lw6map exp get unlocked weapon 190 Liquid War 6 4 16 159 c lw6map exp is team color allowed c lw6map exp is team color allowed C function exported to Guile Wrapper on lw6map _exp _is_team_col
155. AA E EE 82 4 4 5 map path s via etur nc rre RR E d ined pate ds 82 Liquid War 6 vil AAG mod eeh REENERT EN IEEE da 83 AAT music diEsi eee nee he ite nti etait bab eee e etd dtes 83 EE eti Ru sigh wee deat eee EE Sea 83 4 9 pref eec bbeener 4 re RR E 84 44 10 seript hile 12i iced rer ERE rane tiere Ep 84 AA II meer NN e dan EETOH daa m br EORR RR 84 4 5 Players Options cece cece cence mens 84 4 5 1 playerl control 0 00 eee eee eene 84 4 5 2 olaver name 85 4 5 3 playerl status 0 cece eens 85 4 5 4 player2 control 0 eee eee eee ee 85 4 5 5 olaveriuame 00 cece teen eee ene eee 85 4 5 6 olaveri status 86 4 5 7 player3 control 0 eee n eee ees 86 4 5 8 olaveri name 2 0 cece eee eee ene eee 86 4 5 9 olaweri status 86 4 5 10 pDlaverieontrol 0 00 ene ee 86 4 5 11 pDlaveriname In 8T 4 5 12 pDlaveristatus m mme 8T 46 Input Options ENEE eE dE he ee uia d Ne d 87 4 6 1 auto release delay 0 0 c cece ene eee eee 87 4 0 2 click to foCus NEIEN Eurer eene ANE RAE 8T 4 6 3 eursor sensitivity eens 88 4 6 4 customealt cc0664 ctaeeaadagedet ikai esses a Reps 88 4 0 5 CUSLOID CLEl os cese e eee esseri T pepe a ron 88 4 6 6 custom down 0 cece cece eee n 88 4 6 7 eustom enter 0 ccc ele 88 4 6 8 QUSLOII 68C ice Arpa Sen R3 PA ede ca d dee ee Mee ede 89 4 0 9 Custom lett i e tdr meis i bM RE RE ESA EE ERES 89 4 6 10 custom pgdown ssssssese II e
156. BLE 117 LNG TEAM PROFILE CYAN WEAPON ALTERNATE ID PPUciAWedd uie Ste te Gets iis leti eot de 117 LW6 TEAM PROFILE CYAN WEAPON ID 118 LW6 TEAM PROFILE CYAN WEAPON MODE 118 LW6 TEAM PROFILE GREEN AGGRESSIVE 118 LW6 TEAM PROFILE GREEN FAST 118 LW6 TEAM PROFILE GREEN HANDICAP 118 LW6 TEAM PROFILE GREEN MOBILE 119 LW6 TEAM PROFILE GREEN VULNERABLE 119 LW6 TEAM PROFILE GREEN WEAPON ALTERNATE ID 119 LW6 TEAM PROFILE GREEN WEAPON ID 119 LNG TEAM PROFILE GREEN WEAPON MODE 120 LW6 TEAM PROFILE LIGHTBLUE AGGRESSIVE 120 LW6 TEAM PROFILE LIGHTBLUE FAST 120 LW6 TEAM PROFILE LIGHTBLUE HANDICAP 120 LW6 TEAM PROFILE LIGHTBLUE MOBILE 120 LW6 TEAM PROFILE LIGHTBLUE VULNERABLE 121 LW6 TEAM PROFILE LIGHTBLUE WEAPON ALTERNATE ID 22e ice eR pees exec 121 LW6 TEAM PROFILE LIGHTBLUE WEAPON ID 121 LW6 TEAM PROFILE LIGHTBLUE WEAPON MODE 121 LW6 TEAM PROFILE MAGENTA AGGRESSIVE 122 LW6 TEAM PROFILE MAGENTA FAST 122 LW6 TEAM PROFILE MAGENTA HANDICAP 122 LW6 TEAM PROFILE MAGENTA MOBILE 122 LW6 TEAM PROFILE MAGENTA VULNERABLE 122 LNG TEAM PROFILE MAGENTA WEAPON ALTERNATE ID Diieeseeda te ne pbhre EredqeiqeheEs 123 LNG TEAM PROFILE MAGENTA WEAPON ID 123 LW6 TEAM PROFILE MAGENTA WEAPON MODE 1
157. BQsHCgME AxUDAgMWAgECF4AACgkQ3j8rzf1AnpS kgCeN1528f 7waryDPBnEGJOF jevrdNMA oIDB UCj 1U65teCEbA3sEPyf kndFuQENBDxZRPUQBAD PoWUOT2R4pO0F t5WQvCE RqFSk QZ10YXZCtwW59 v3aiOxEYzv193kjhojHqcDifoeHb 7bkEU5ZrbtwDt33 LZ4JqCi8wBXH21 2msau 92Vn WGZZf1f fFRYJiputKyQrDnd05q41FvPI3knP FBIMV eKu0twqgGkLfHntwADBQP PE4YN1NU01bScHiwkz62E5Xf Mwg kBPF J D L1o18xaUVaNwrHSalI nJc04de6QzxNrVf DdREwd j Im M7CkK ru4agmECyE3EK3YL T6dFkE9geeO0ZTQ9A6MY9u D1h4 QHODgi1r2sNfqoMnsFaNWOLXtiv jHAXWMN6Qze N9H8UUqIRgQYEQIABgUCPFIE9QAKCRDePyvN UCe1JTA4AJ94wSFLzyLxZLT29cBW xybTpyt jQCZAXEQi6LWVEo5jt 99FWRwDVNHKA fcJV 2 3 Installation This section covers installation from source Other ways of installing the program are not described here 2 3 1 Requirements All these libraries are mandatory to compile the game Liquid War 6 won t compile let alone run without them Some of them could probably be replaced by equivalent tools but this would certainly require a programming effort and some changes in Liquid War 6 source code GCC Liquid War 6 does require the GNU C Compiler to build while other compilers might be able to build the game this is untested Gomp Liquid War 6 uses OpenMP pragma directives this should help the game run faster on SMP systems GNU Make Liquid War 6 might and certainly does use GNU Make extensions GNU C library Sounds obvious but you need a standard C library It happens that glibc has some rather usefull extensions yes as
158. CYAN HANDICAP Environment variable team profile cyan handicap XML key Type integer Default value 100 Min value 10 Max value 1000 Defines the handicap for the cyan team 4 11 71 team profile cyan mobile team profile cyan mobile value Command line option LNG TEAM PROFILE CYAN MOBILE Environment variable team profile cyan mobile XML key Type integer Default value 0 Min value 3 Max value 3 Increases or decreases if negative the number of move attack defense tries for the cyan team If set to a high value team will appear more mobile and do more things but it won t change its cruising speed It s not obvious to tell wether this is an advantage or not but it clearly changes the behavior 4 11 72 team profile cyan vulnerable team profile cyan vulnerable lt value gt Command line option LW6_TEAM_PROFILE_CYAN_VULNERABLE Environment variable team profile cyan vulnerable XML key Type integer Default value 12 Min value 5 Max value 2000 Defines how vulnerable the cyan team is This is a percentage if set to 200 then team will be attacked twice as much as any other team with the default value Setting this to a high value clearly disadvantages this team 4 11 73 team profile cyan weapon alternate id team profile cyan weapon alternate id lt value gt Command line option LW6_TEAM_PROFILE_CYAN_WEAPON_ALTERNATE_ID Environment variable team profile cyan weapon alternate id XML key Ty
159. CeN1528f7waryDPBnEGJOFjevrdNMA oIDB UCj1U65teCEbASSEPyfkndFuQENBDxZRPUQBAD PoWUOT2RApOFf t 5EWQvCE RqFSk QZ10YXZCtwW59 v3aiOxEYzv193kjhojHqcDifoeHb 7bkEU5ZrbtwDt33 LZ4JqCi8wBXH21 2msau 92Vn WGZZf1fFRYJiputKyQrDnd05q41FvPI3knP FBIMV eKu0twqgGkLfHntwADBQP PE4YN1NU01bScHiwkz62E5Xf MwgOkBPF J D L1oi8xaUaNwrHSal nJcO4de6QzxNrVfDdREwd lIm M7CkK ru4agmECyE3EK3YL T6dFkE9gee0ZTQ9A6MY9u D1h QHODg1r2sNfqoMnsFaNWOLXtiv jHA4XWMN6Qze N9H8UUqIRgQYEQIABgUCPFlE9QAKCRDePyvN UCe1JTA4A J94wSFLzyLxZLT29cBW xybTpyt jQCZAXEQi6LWVEo5jt 99FWRwDVNHK4 fcJV e 2048R 406FFCAB 2013 07 12 Jenkins Daemon Christian Mauduit jenk insQufoot org Version GnuPG vi 4 12 GNU Linux mQGiBDxZRPIRBACxPISZYEtkIGUliwLanAlZbIqVCI38d S0No8MS3VUZKk082XRo EAojA4KwX39fbUM3knpLK68i jzxKef 7MwOw3W71nQ NegqSelTxiHmJxEQmeLulk drP89CpXQPdir8ediZseR9 BAroiWgckDJK8YgMKsmBC jE62xfPrtxM2nwCghHOX JAT iD2uPOFdLpQGbM1dCnMD jM30cWIqQ1uG08gp lKTb7Kv7vEFQXOwaLaIWOk Liquid War 6 KJ45kx4guYuT 7u4dVg1Y01PCbtnWTYJ9t 1SW6GHhpNsdGybrw8izRk6zXESTYFtN 9LNOKYYx5V Szj14z5 JabdEAt20XZ9 N8Pb4PYInmG1 jRr5 178104SC1Gy03vK 9rL7A 9iXSGnN77 aNJ2qN3btTagwdLv4AYbk0ySneIpzKT9nmnM6MYs seOwYeS 8eTi SPISqb185G10WZ40 j5teOjotT7QFZdT3di02NuUQXqqXIvRNxBGVKfX7Sg TqvjZWlXMNAvH5KiuZ8vqgfEMqLSOhwjpJNVaZIPF4cifFgPFbQsQ2hyaXNOaWFu IEihdWRiaXQgKFUtRm9vdCkgPHVmb290QHVmb290Lm9yZz6IVwQTEQIAFwUCPFIE 8gULBwoDBAMVAwIDFgIBAheAAAoJEN4 K839QJ6Uk Y AnRuBRpn rdD JZNGHzOw bJaVon9eAJOYEd10agCwJaWjKeZGWJl f8TZqYhXBBMRAgAXBQISWUTz
160. EAM PROFILE RED VULNERABLE 130 LW6 TEAM PROFILE RED WEAPON ALTERNATE ID dr E ahh etie S ary tue elige duni 130 LW6 TEAM PROFILE RED WEAPON ID 130 LW6 TEAM PROFILE RED WEAPON MODE 130 LW6 TEAM PROFILE YELLOW AGGRESSIVE 130 LW6 TEAM PROFILE YELLOW FAST 131 LW6 TEAM PROFILE YELLOW HANDICAP 131 LW6 TEAM PROFILE YELLOW MOBILE 131 LW6 TEAM PROFILE YELLOW VULNERABLE T31 LW6_TEAM_PROFILE_YELLOW_WEAPON_ALTERNATE_ID rm 132 LW6 TEAM PROFILE YELLOW WEAPON ID 132 LW6 TEAM PROFILE YELLOW WEAPON MODE 132 LNG TOTAL ARMIEG GIZE 132 LWG T TAL TIME 2 2 pir Meme dE A 133 ENG TRAP ERRORS ospr dem Re ee ep PR UE 173 LW6 IR JAM 4 21 ebeeremereve e ucewux e ee 173 LW6 UPSIZE USING BENCH VALUE 140 LW6 UPSIZE USING FIGHTER SCALE 140 LW6_USE_CURSOR_TEXTURE 0000 98 LW6_USE_DOUBLE_CLICK nnnununnnnnsnennnn 91 LW6_USE_ESC BUTTON cider ace tied needs 91 LW6_USE_HINTS_XML 2 0 2 snosi eee eee 98 LW6_USE_MUSIC FILE kA Rm eee 99 LW6 USE RULES XML eese eee 99 LW6 USE STYLE XML nm NEIEN SE SE 99 LW6 USE TEAM PRO FILES eese 133 LW6USE TEAMS XML cir RII mi eres 99 LW6 USE TEXTURE ze rebelde eme nati 100 LWO USER DIR 2 2m ne kbbs snb keep 84 LW6 VERTICAL MOVE v esee 133 LW6_VIEW_COLOR_AUTO 00 141 LW6_VIEW_COLOR_CURSOR_BG
161. EAM_PROFILE_YELLOW_WEAPON_MODE Environment variable team profile yellow weapon mode XML key Type integer Default value 1 Min value 0 Max value 2 Weapon mode for yellow team 0 means there s no weapon 1 means one weapon per team defined by the weapon id parameter 2 means random weapon 4 11 140 total armies size total armies size value Command line option LW6 TOTAL ARMIES SIZE Environment variable total armies size XML key Type integer Default value 60 Min value 1 Max value 95 Defines the proportion of the whole available space which can be occupied by all the armies present together Setting this low whenever a new team arrives on the map fighters might be stolen to other teams otherwise the ame would get too crowded This allows you to play with reasonnably enough fighters with 2 players while still allowing interesting gameplay with many players This is a percentage but will be multiplied by itself to get the actual surface That is 50 means 50 50 that is a square of 1 2 the size of a square map so it represents 2596 1 4 of the total surface Chapter 4 Reference 133 4 11 141 total time total time lt value gt Command line option LW6_TOTAL_TIME Environment variable total time XML key Type integer Default value 900 Min value 10 Max value 864000 Defines the maximum time of the game in seconds Note that in some cases the game can end much earlier if some player has ma
162. ER dores 160 bench valuesscualuez sess 160 bin id value cesses esses 160 259 L Log Su MS 21 M Mac OS EE 46 Microsoft Windows 42 R r lesxml iucseiceeeeheubihe dee oe Gee de 27 S source EE 64 style SERA eeh 28 SUBVERSION cs cse cl caa lese ecce pd 64 DM IN ibid ebat esi umano aste eme edhe ae 64 T ngem css osetia aed ase enc ESSA 28 bind port lt value gt 0 eee eee eee eee 95 blink cursor value s s 143 boost power lt value gt 2 eee eee eee 100 bot iq value sese 154 bot speed lt value gt 0 0 eee eee eee eee 155 boti ai lt value gt ccc eee 155 boti color value eee 155 bot2 ai lt value gt cece eee 155 bot2 color lt value gt ccc eee eee 155 bot3 ai value esses 156 bot3 color value esses 156 bot4 ai value sslss cee eee 156 bot4 color value eee 156 botb ai value eesse lesse 156 botb5 color value sss 157 bot6 ai value ccc eee ee 157 bot6 color value eee T1537 bot false lues 157 bot7 color value eee eee L57 bot8 ai lt yalue gt ccc cece eee 158 bot8 color value sess 158 260 bot9 ai value sese eee 158 bot9 color lt value gt
163. Environment variable max round delta XML key Type integer Default value 1000 Min value 1 Max value 10000 This is the companion value of round delta Will put an absolute limit to the delta which what did you think is of course incremented in some cases by the core algorithm If in doubt don t touch 4 11 22 max zone size max zone size value Command line option LW6 MAX ZONE SIZE Environment variable max zone size XML key Type integer Default value 8 Min value 1 Max value 64 Defines the maximum zone size which is an internal and rather technical parameter The idea is that to optimize things Liquid War 6 divides the battlefield in squares where it can and tries to make these squares as big as possible the idea being that everywhere in this square fighters follow the same intructions Just a technical optimization The problem is that setting it too high will reveal the optimization and its tradeoffs to the player who will see the fighter behave strangely following invisible paths Plus it s ugly Depending on your tastes speed look n feel you ll prefer something nice or something fast Note that anyways passed a certain value this does not optimize anything anymore In doubt don t touch it 106 Liquid War 6 4 11 23 medicine power medicine power value Command line option LW6 MEDICINE POWER Environment variable medicine power XML key Type integer Default value 100 M
164. ICKET_SIG gt another signature but this one concerns the physical sender receiver If the physical sender is the logical sender and the physical receiver is the logical receiver that is if physical and logical nodes are the same pair of nodes then it need not be defined and can be replaced by the dash character In fact in that case the physical and logical signatures are obviously the same However not implemented yet the protocol is designed so that nodes can act as messages forwarders in that case they have no knowledge of the secret ticket to use so this ticket is here to ensure message consistency for the final real logical receiver of the message e lt PHYSICAL_FROM_ID gt the id of the physical sender the node that created the message e lt PHYSICAL_TO_ID gt the id of the physical receiver the node that should receive the message e lt LOGICAL_FROM_ID gt the id of the logical sender if it s the same than the physical sender can be replaced by the dash character e lt LOGICAL_TO_ID gt the id of the logical receiver if it s the same than the physical receiver can be replaced by the dash character e lt MSG gt the message itself it might in turn be separated by spaces or whatever the message delimiter is It should not be too long as it must be sendable on the network by UDP so it must fit within the MTU about 1 4 kb with all the protocol envelope stuff before it In practice it s cut into 1
165. Iw 6hlp get default value lesse 184 c lw6hlp list leeeseseeeeeeee Ie 184 c lw6hlp list advanced 0 0 184 c lw6hlp list aliases sese 184 c lw6hlp list doc 0 eee eee eee 184 c lw6hlp list funcs 2 0 0 eee eee 185 c lw6hlp list graphics 0 0 00 cece eee eee 185 c Jwpblp bet hooks nennen 185 c lw6hlp list input 0 0 0 eee eee 185 c Jwpblp bet map Ie 185 c Jwpblp bet map hunts eee eee eee 185 c Jwpblp bat map mules 0 00 cee eee eee eee 185 c lw6hlp list map style 00 cece eee eee 185 c lw6hlp list map teams 6 cece eee eee 185 c Jwpblp bat network 0 0 0 c cece ee 185 c Jwpblp bot poatbh eee eee 186 c lw6hlp list players 06 c eee 186 c lw6hlp list quick 0 0 eee eee 186 c lw6hlp list show 0 0 0 cece eee eee eee 186 c Jwpblp bat aound eee ees 186 xvii xviii 4 16 124 4 16 125 4 16 126 4 16 127 4 16 128 4 16 129 4 16 130 4 16 131 4 16 132 4 16 133 4 16 134 4 16 135 4 16 136 4 16 137 4 16 138 4 16 139 4 16 140 4 16 141 4 16 142 4 16 143 4 16 144 4 16 145 4 16 146 4 16 147 4 16 148 4 16 149 4 16 150 4 16 151 4 16 152 4 16 153 4 16 154 4 16 155 4 16 156 4 16 157 4 16 158 4 16 159 4 16 160 4 16 161 4 16 162 4 16 163 4 16 164 4 16 165 4 16 166 4 16 167 4 16 168 4 16 169 4 16 170 4 16 171 c lw6hlp list team colors 00 cece ees 186 c lw6hlp list weapons 0 cece eee ee
166. Iw6map rules get min c lw6map rules get min C function exported to Guile Wrapper on lw6map _rules_get_min 4 16 172 c lw6map style get default c lw6map style get default C function exported to Guile Wrapper on lIw6map style get default 4 16 173 c Iw6map team color index to key c lw6map team color index to key C function exported to Guile Wrapper on lw6map team color index to key 4 16 174 c Iw6map team color index to label c lw6map team color index to label C function exported to Guile Wrapper on lw6map team color index to label 4 16 175 c Iw6map team color key to index c lw6map team color key to index C function exported to Guile Wrapper on lw6map team color key to index 4 16 176 c lw6map team color list c lw6map team color list C function exported to Guile Wrapper on lw6map team color list 4 16 177 c Iw6map teams get default c lw6map teams get default C function exported to Guile Wrapper on lw6map teams get default 4 16 178 c Iw6map weapon index to key c lw6map weapon index to key C function exported to Guile Wrapper on lw6map weapon index to key 192 4 16 179 c lw6map weapon index to label c lw6map weapon index to label Wrapper on lw6map weapon index to label 4 16 180 c Iw6map weapon key to index c lw6map weapon key to index Wrapper on lw6map weapon key to index 4 16 181 c Iw6map weapon list c lw6map weapon list Wrapper on lw6map weapon lis
167. Liquid War 6 A unique multiplayer wargame Documentation for version 0 6 3902 codename Goliath 6 May 2015 by Christian Mauduit lt ufoot ufoot org gt Liquid War 6 a unique multiplayer wargame Copyright c 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 Christian Mauduit lt ufoot ufoot org gt Permission is granted to copy distribute and or modify this document under the terms of the GNU Free Documentation License Version 1 3 or any later version published by the Free Software Foundation with no Invariant Sections no Front Cover Texts and no Back Cover Texts A copy of the license is included in the section entitled GNU Free Documentation License Table of Contents 1 PIubrOOGUGLIODE cepe cco 33 deny nO DRE HER t Ub aao Lt Inva nutshell iciseccieds peewee i ERR I qu epp aded ERA 1 2 Project Status see Decitre Exp eR pre pepe E RE RE dus 1 2 1 What works and what does not Deet 1 2 2 What has changed since Liquid War si 1 2 3 Revision histOry eic4 acea sade bees aa Ae 1 2 4 Road map 1 3 How you can bein LS Help GNU tbat Eed ied yd bated rake tea dea 13 2 Todo listener etx et ti pebeteeadet E P ped eo 2 Users anual rios ees nemen we te EOM eee 2 1 Mailing lists ceiegscso ehe a eR e aaa ALLEE ARR 2 1 1 General discussion 2 1 2 Announcements eee eee eens 2 1 3 BU Ugsicienziesee 9e M bk eR ERE READ DURER cea A EAE 214 IRC channel Soe REENEN cedo 2 0 Getting th
168. NG AUTO RELEASE DELAY Environment variable auto release delay XML key Type integer Default value 250 Time in milliseconds before which a key is automatically released This might or might not be used by the graphics backend it s typically used by backends which don t always handle key releases events the right way that is don t fire them Libcaca is a good example of such a case 4 6 2 click to focus click to focus value Command line option LW6 CLICK TO FOCUS Environment variable click to focus XML key Type boolean Default value false If set to true you ll need to click with the mouse to select a menuitem or move the cursor in the game If not some actions will be taken automatically without the need to click 88 Liquid War 6 4 6 3 cursor sensitivity cursor sensitivity value Command line option LNG CURSOR SENSITIVITY Environment variable cursor sensitivity XML key Type float Default value 1 0 Keyboard and joystick sensitivity while moving the cursor 1 0 is the default 0 1 is slow 10 is reponsive This is used for moving the cursor during the game only the option has no impact on menu navigation 4 6 4 custom alt custom alt value Command line option LW6 CUSTOM ALT Environment variable custom alt XML key Type string Default value c Iw6gui keyboard is pressed 110 SDLK_n Guile custom code associated to the ALT key equivalent 4 6 5 custom ctrl
169. PLE AX sig gc pres se ees e SA 113 LW6 START PURPLE Y um RR 113 LW6 START RED X gr a cea intan a ee 114 LW6 START LN E e Re Rkre 114 LW6 START YELLOW Te 114 LWG START YELLOW EE 114 LW6_SYSTEM_COLOR_AUTO 00 0 140 LW6 SYSTEM _GOLOR BG REIR 149 LW6_SYSTEM_ COLOR EE 149 EW6 TARGET BPS 1 xc2 o m ebbe Ege 173 LW6_TEAM_COLOR_BLUE 00005 150 LW6_TEAM_COLOR_CYAN 0000 150 LNG TEAN COLOR DE AD crrsisnsesn cs sess 150 LW6_TEAM_COLOR_GREEN 0000 150 LW6 TEAM COLOR LIGHTBLUE 150 LW6 TEAM COLOR MAGENTK 151 LW6_TEAM_COLOR_ORANGE 00 151 LW6 TEAM COLOR PINK ee eeeee 151 LNG TEAN COLOR DURDLE 151 LW6_TEAM_COLOR_RED 0 00005 151 LW6_TEAM_COLOR_YELLOW 0 0 152 LW6_TEAM_PROFILE_BLUE_AGGRESSIVE 114 LW6_TEAM_PROFILE_BLUE_FAST 115 LW6 TEAM PROFILE BLUE HANDICAP 115 271 LW6 TEAM PROFILE BLUE MOBILE 115 LW6 TEAM PROFILE BLUE VULNERABLE 115 LNG TEAM PROFILE BLUE WEAPON ALTERNATE ID 116 LNG TEAM PROFILE BLUE WEAPON ID 116 LW6 TEAM PROFILE BLUE WEAPON MODE 116 LW6 TEAM PROFILE CYAN AGGRESSIVE 116 LW6 TEAM PROFILE CYAN FAST 116 LW6 TEAM PROFILE CYAN HANDICAP 117 LW6 TEAM PROFILE CYAN MOBILE 117 LW6 TEAM PROFILE CYAN VULNERA
170. R Environment variable weapon tune turbo power XML key Type integer Default value 3 Min value 1 Max value 10 Defines how fast fighters move in turbo mode if set to 3 then fighters move and act 3 times as fast 4 11 149 x polarity x polarity lt value gt Command line option LW6_X_POLARITY Environment variable x polarity XML key Type integer Chapter 4 Reference 135 Default value 0 Min value 1 Max value 1 Defines how the map will be wrapped on the X horizontal axis If set to 0 nothing is wrapped If set to 1 the right and left borders are connected any fighter can disappear on the right border and reappear on the left border for instance If set to 1 it will be wrapped but also inversed that is on a 320x240 map a fighter disappearing on the left border at position 0 60 will reapper on the right border at position 319 180 You can combine it with y polarity 4 11 150 y polarity y polarity lt value gt Command line option LW6_Y_POLARITY Environment variable y polarity XML key Type integer Default value 0 Min value 1 Max value 1 Defines how the map will be wrapped on the Y vertical axis If set to 0 nothing is wrapped If set to 1 the top and bottom borders are connected any fighter can disappear on the top border and reappear on the bottom border for instance If set to 1 it will be wrapped but also inversed that is on a 320x240 map a fighter disappearing on t
171. RECTION Limitation of Liability IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER OR ANY OTHER PARTY WHO MODIFIES AND OR CONVEYS THE PROGRAM AS PERMITTED ABOVE BE LIABLE TO YOU FOR DAMAGES INCLUDING ANY GENERAL SPECIAL IN CIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUS TAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAM AGES Interpretation of Sections 15 and 16 If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee Appendix E GNU GENERAL PUBLIC LICENSE 249 END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program and you want it to be of the greatest possible use to the public the best way to achieve this is to make it free software which everyone can redistribute and change under these terms To do so attach the following notices to the program It is safest
172. ROFILE_GREEN_VULNERABLE Environment variable team profile green vulnerable XML key Type integer Default value 30 Min value 5 Max value 2000 Defines how vulnerable the green team is This is a percentage if set to 200 then team will be attacked twice as much as any other team with the default value Setting this to a high value clearly disadvantages this team 4 11 81 team profile green weapon alternate id team profile green weapon alternate id lt value gt Command line option LW6_TEAM_PROFILE_GREEN_WEAPON_ALTERNATE_ID Environment variable team profile green weapon alternate id XML key Type integer Default value 7 Min value 0 Max value 19 Id of the default alternate weapon for the green team see the documentation about weapons to know what these ids mean 4 11 82 team profile green weapon id team profile green weapon id lt value gt Command line option LW6_TEAM_PROFILE_GREEN_WEAPON_ID Environment variable team profile green weapon id XML key Type integer Default value 13 Min value 0 Max value 19 Id of the default weapon for the green team see the documentation about weapons to know what these ids mean 120 Liquid War 6 4 11 83 team profile green weapon mode team profile green weapon mode lt value gt Command line option LW6_TEAM_PROFILE_GREEN_WEAPON_MODE Environment variable team profile green weapon mode XML key Type integer Default value 1 Min value 0 Max value 2 Wea
173. Red Hat packages Liquid War 6 does have a spec files in both main and extra maps packages To build the main rpm package untar the main source tarball then make dist cd pkg cp liquidwar6 X Y Z tar gz X Y Z is the version make rpm Note that you have to copy the source tarball to pkg and move to this directory before typing make rpm This is among other things to simplify the main Makefile To build the extra maps rpm package untar the extra maps tarball then make rpm 3 8 4 Microsoft Windows msys mingw32 port This section describes how to compile the game from source under Microsoft Windows Note that players are encouraged to use a free system such as GNU Linux which is the platform Liquid War 6 is being hacked on by default If you encounter problems with this port you ll probably save time by installing a double boot with GNU Linux coexisting with your previous Microsoft Windows install Basically Liquid War 6 requires MinGW More precisely it requires MSYS A standard Cygwin installation won t work because it is too UNIXish to allow third party libraries like SDL to compile natively You might argue that SDL is available for Cygwin but in reality the Cygwin port of SDL is a MinGW port Indeed Cygwin brings all standard POSIX functions including the use of main instead of WinMain and I suspect this is a problem for graphical libraries like SDL which do require some sort of direct access to the OS low lev
174. S You may make a collection consisting of the Document and other documents released under this License and replace the individual copies of this License in the various documents with a single copy that is included in the collection provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects You may extract a single document from such a collection and distribute it individu ally under this License provided you insert a copy of this License into the extracted document and follow this License in all other respects regarding verbatim copying of that document 256 T Liquid War 6 AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works in or on a volume of a storage or distribution medium is called an aggregate if the copyright resulting from the compilation is not used to limit the legal rights of the compilation s users beyond what the individual works permit When the Document is included in an aggregate this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document If the Cover Text requirement of section 3 is applicable to these copies of the Document then if the Document is less than one half of the entire aggregate the Document s Cover Texts may be placed on covers that bracket the Document within the aggregate or th
175. UPES IP eee E 153 213 59 XW aD es ieoi erpita En E a saga Ae URN Eb er EE 153 2 13 54 ER AER REENEN E SL ah 153 413 55 Soot Et peed pene eae bead Du Eee PY et ege 154 2 13 56 ZOOMMA seei tei cete oper ek Re b Regio 154 4 13 57 z om min i ene kebreeRR HG IE ERRRPRIDOODPESES 154 4 14 Map teams xml onia Peed ee eee date bee d ds 154 A144 WR Tee DEEN 154 4 14 2 DOtsSPOO iiie x er a donad waded alee Ea E cendi 155 ANAS Bett eege leu rb ese te peces 155 ATAA botI colorc rrini iere bre REESE RE EN 155 GN ER EE 155 4 14 6 boticolor enne 155 4 14 7 DotA rr peer teo reete Ea eremo oe rn 156 4 14 8 bot3 color 0 6 cece cee E een eee eee 156 4 14 9 bot4 al RER bees ceedings adn RIPE AERIS 156 A NANO bot4 Golor ege Leere Hien rre tete ben re ace atas 156 AVA DEE 156 4 14 12 bObbD GOlOE n sores s per t ttc e EE RR inc 157 4 14 13 bOLO B1 e ELE PRO ET be he ea Rat sche ea ers 157 4 14 14 bot6 color iecore eme be e 157 4 14 15 BOUL BL deii sab E ERE oben he daaes RR Re da 157 4 14 16 bot eolor ae eet eR e eed 157 ANAM DbObUB BE cinere ieia nidade t eret e dacedia s 158 4 14 18 bot amp color ssssssssessseee nes 158 4 14 19 bot9 ali m e eter RR SEELEN 158 4 14 20 bettel ce zb te bOR tete ree ere here Y v rede 158 4 14 21 mb botss siiis eh XR br mene b NEE Renner tae 158 4 14 22 playerl color 0 ccc eee eee eee 159 4 14 23 olageri color 159 xiii xiv 4 14 24 player3 color 0 00 cec
176. UT ue e mmm eet 168 LW6 MAGIC NUMBER eme eR eme 168 LWO MAP PATH eos uo no rae oae Re DT A bee 82 LWG MAX CURSOR POT e ice er eRIDXereesvs X 104 LW6_MAX_CURSOR_POT_OFFSET 104 LW6_MAX_CURSOR_SPEED 0000 90 LW6 MAX LOCAL BENCH VALUE 169 LW6 MAX MAP HEIGHT eese 137 LNG MA MAP GURPACE 138 LW6_MAX_MAP_WIDTH 000 0ce eeu 138 LW6_MAX_NB_CURSORS 0 0 0 0 00s 104 LW6 MAX NB NODES e Rem er ne 105 Liquid War 6 LW6 MAX NB TEAMB isu en o e e eheenhes 105 LW6_MAX_NETWORK_BENCH_VALUE 169 LW6_MAX_ROUND_DELTA 000 105 LW6_MAX_ZONE_ SIZE ure cect m 105 LW6 MEDICINE POWER sees 106 LNG MEMORY BAZOOKA ERASER sss 169 LNG MEMORY BAZOOKA SIZE 170 LWG MENU COLOR AUTO 138 LW6_MENU_COLOR_DEFAULT_BG 147 LW6_MENU_COLOR_DEFAULT_FG 147 LW6_MENU_COLOR_DISABLED_BG 147 LW6_MENU_COLOR_DISABLED_FG 147 LW6_MENU_COLOR_SELECTED_BG 148 LW6_MENU_COLOR_SELECTED_FG 148 LB LU Eu EE EE 148 LWG MIN MAP HEIGHT mee4 Re asad ened 138 LWG MIN MAP SURFACE EE 139 LW6_MIN_ MAP WIDTH en RR RR 139 LW6_MOUSE_SENSITIVITY nnnunnnnnnnnnee 90 LNG MUVES DER RUUND 106 LW6 MUSIC DIR oie eR RR enm ER 83 LWG MUSIC EXCLUDE seeeeeee ne 148 LWG MUSIC FIBE ag tte Ate Eer
177. XHl lgeenecssses oreet bep uud is 98 use music file o e REIR Ie el 99 use rules xml c nee fee tenenda Ms 99 use style xml i eres E ca pese lere a 99 se team profileS ees 133 se teanms xm lk 2femcer e eee te ev rus 99 se texture cie rv eueleritequreef 100 ser dir isel c2 pee be Ree HE Tee eege 84 V KREE 133 view color auto iuesselu dee e deer des 141 view color cursor bg rentene 152 view color cursor fg esses 152 viev color aap bg sess 152 view color map fg osos coda he nens 152 yiew style e i d e b ee EP Rad 153 W wall gre se eet eren 141 water volume 2 2 ccc nce d daar etdg Ree etie DAE 95 KEE 153 veapon charge delag eno 133 weapon charge max 6 cece cece 134 weapon duration lene 134 weapon tune berzerk power s s 134 weapon tune turbo power s s 134 CR EE 93 windowed mode limit cece eee 93 Appendix G Indexes X G 3 Data types index Index is nonexistent 275 Z z polarity em eve be t ar E nn E 135 ZOOIl Lecta aca ue Ure Deed ae den Er Rd aie ene 154 ZOOn HaX uv Rb per RE ERERER DEN MERE 154 ZOOM MIN 64 50 twee seiowe adie OUS ERR RU RR 154 Zzo0m Stepuccecsseeidewcee fce 9e rede e des d 91 zoom stick delay 2be 6 renint ei ro noiai gj
178. XML key Type integer Default value 10 Maximum lag in rounds until the game engine is slowed down This will typically be usefull if your computer is too slow for the map resolution and the game speed you set up 4 15 54 quick start quick start Command line option Start the game just like if the player had requested a quick start without showing any menu 172 Liquid War 6 4 15 55 reset reset Command line option Clears the config file so that the game will run with defaults next time The idea is to get rid of traces of previous executions The difference with defaults is that reset does not run the game while defaults does 4 15 56 reset config on upgrade reset config on upgrade value Command line option LW6 RESET CONFIG ON UPGRADE Environment variable reset config on upgrade XML key Type boolean Default value true If set then a reset config file set to defaults is run every time you upgrade the game 4 15 57 screenshots per min screenshots per min value Command line option LW6 SCREENSHOTS PER MIN Environment variable screenshots per min XML key Type integer Default value 12 Defines the number of screenshots node info per minute This can a quite costly operation but still it must not be too low else screenshots are too outdated 4 15 58 server server Command line option Start the game in server mode without requiring any graphics b
179. able start cyan y XML key Type integer Default value 10 Min value 0 Max value 100 Y start position for the cyan team This is a percentage of map height value between 0 and 100 4 11 43 start green x start green x lt value gt Command line option LW6_START_GREEN_X Environment variable start green x XML key Type integer Default value 90 Min value 0 Max value 100 X start position for the green team This is a percentage of map width value between 0 and 100 4 11 44 start green y start green y value Command line option LW6 START GREEN Y Environment variable start green y XML key Type integer Default value 90 Min value 0 Max value 100 Y start position for the green team This is a percentage of map height value between 0 and 100 4 11 45 start lightblue x start lightblue x value Command line option LW6 START LIGHTBLUE X Environment variable start lightblue x XML key Type integer Default value 35 Min value 0 Max value 100 X start position for the lightblue team This is a percentage of map width value between 0 and 100 4 11 46 start lightblue y start lightblue y value Command line option LW6 START LIGHTBLUE Y Environment variable start lightblue y XML key Type integer Default value 90 Min value 0 Max value 100 112 Liquid War 6 Y start position for the lightblue team This is a percentage of map height value between 0 and 100 4
180. ackend Server mode is usefull if you just want to start a network node without hosting any real game on it It can be used to list existing nodes and sessions or as a bounce server in case some clients can t contact each other because firewalled If you only want to start a server game on your computer don t use this option just start the game normally and start a game server by clicking on the GUI buttons 4 15 59 simulate basic simulate basic Command line option Simulates some fights using the basic colors red green yellow and blue Will output on the console a percentage based on scores obtained by the teams This is typically for map designers and or people who want to fiddle with team profiles if some team is really stronger than another one it should appear in these percentages 4 15 60 simulate full simulate full Command line option Simulates some fights using all available colors This can be very long it will run approximatively 1000 games consecutively you can look in the log file to see the Chapter 4 Reference 173 progress Will output on the console a percentage based on scores obtained by the teams This is typically for map designers and or people who want to fiddle with team profiles if some team is really stronger than another one it should appear in these percentages 4 15 61 target fps target fps value Command line option LW6 TARGET FPS Environment variable target fps XML key Type
181. ad right C function exported to Guile Wrapper on lw gui joystick2 pop pad right 4 16 63 c Iw6gui joystick2 pop pad up c 1w6gui joystick2 pop pad up C function exported to Guile Wrapper on lw6gui joystick2 pop pad up 4 16 64 c Iw6gui keyboard get move pad c lw6gui keyboard get move pad C function exported to Guile Wrapper on lw6gui keyboard get move pad 4 16 65 c lw6gui keyboard is pressed c lw6gui keyboard is pressed C function exported to Guile Wrapper on Iw6gui keyboard is pressed 4 16 66 c Iw6gui keyboard pop arrow down c lw6gui keyboard pop arrow down C function exported to Guile Wrapper on lw6gui keyboard pop arrow down 4 16 67 c Iw6gui keyboard pop arrow left c lw6gui keyboard pop arrow left C function exported to Guile Wrapper on lw6gui keyboard pop arrow left 4 16 68 c Iw6gui keyboard pop arrow right c lw6gui keyboard pop arrow right C function exported to Guile Wrapper on lw6gui_keyboard_pop_arrow right Chapter 4 Reference 4 16 69 c lw6gui keyboard pop arrow up c lw6gui keyboard pop arrow up Wrapper on lw6gui keyboard pop arrow up 4 16 70 c Iw6gui keyboard pop key alt c lw6gui keyboard pop key alt Wrapper on lw6gui keyboard pop key alt 4 16 71 c lw6gui keyboard pop key ctrl c lw6gui keyboard pop key ctrl Wrapper on lw6gui keyboard pop key ctrl 4 16 72 c Iw6gui keyboard pop key enter c lw6gui keyboard pop key enter Wrapper on lw6gui ke
182. adient spread is a very Liquid War 6 specific feature just remember that the more often you do it the more accurately fighters will move That is you will be sure they really take the shortest path Usually this does not have much effect the default value should fit in most cases but you might want to decrease it on very simple maps where the gradient is obvious or increase it on complex maps where you want fighters to be real smart 4 11 39 start blue x start blue x value Command line option LW6 START BLUE X Environment variable start blue x XML key Type integer Default value 90 Min value 0 Max value 100 X start position for the blue team This is a percentage of map width value between 0 and 100 4 11 40 start blue y start blue y value Command line option LW6 START BLUE Y Environment variable start blue y XML key Type integer Default value 10 Min value 0 Max value 100 Y start position for the blue team This is a percentage of map height value between 0 and 100 4 11 41 start cyan x start cyan x value Command line option LW6 START CYAN X Environment variable start cyan x XML key Type integer Default value 35 Min value 0 Max value 100 X start position for the cyan team This is a percentage of map width value between 0 and 100 Chapter 4 Reference 111 4 11 42 start cyan y start cyan y lt value gt Command line option LW6_START_CYAN_Y Environment vari
183. al advice is to tunnel your connections through SSL or TLS use a VPN LW6 won t implement fortress mode third party tools should do this much better If undefined should be replaced by the dash character e PHYSICAL TICKET SIG a signature done by the sender which is unique for the combination message from to This means two different messages will generate two differents signatures but different senders and or receivers will also change this so it s not possible unless one has the ticket to fake a message This is clearly not bullet proof and more specifically brute force attacks and or network listening could break the protocol and or reveal the ticket still this is a good way to make sure that if something is inconsistent someone is trying to cheat As every node maintain its 56 Liquid War 6 own game state a cheater can only be a nuisance by sending wrong key presses but in the long run it will be defeated by the fact that an attacker should intercept and modify all messages on all channels tcp udp http and make sure the official real informations never makes its way to the right node This is quite hard to achieve very likely an inconsistency will be detected nodes concerned should be disconnected period When sending the first messages ticket might not be exchanged yet so there s no way to calculate this during this period ffffffff is sent and checksum errors are ignored e lt LOGICAL_T
184. al on these platforms This mod gli module is really one of the key stones of Liquid War 6 and if you want to change graphical things it s definitely the place to hack on The source is in src lib gfx mod g11 The mod g11 backend requires moderate hardware but it still does require hardware acceleration Pure software rendering through mesa for instance won t be enough So if youre running Xorg on GNU Linux and there s a DRI driver for your card the game should run fine On the programmer side the counterpart is that one should not rely on fancy OpenGL features Textures have a maximum size of 512x512 for instance Of course some maps are bigger than this but this means that internally mod g11 splits them into smaller tiles and displays those tiles one by one Inside the mod g11 backend the src lib gfx mod gli gl utils directory contains lots of common structures factorized functions which can and should if appliable be used e mod gles2 This is under development the idea is to provide an alternative renderer based on OpenGL ES 2 which could be used on standard computers but also on mobile plat forms Work in progress don t hold your breath e mod soft This is under development the idea is to provide a very basic rendered which can be compiled pretty much anywhere as long as SDL is available since it does use software rendering only Work in progress don t hold your breath e mod caca This is under heavy development
185. alue Command line option LW6 MENU COLOR DEFAULT BG Environment variable menu color default bg XML key Type color Default value 333333 Defines the default background color for menus Ignored if menu color auto is set Can be ZRGB RGBA RRGGBB or ZRRGGBBAA 4 13 24 menu color default fg menu color default fg value Command line option LW6 MENU COLOR DEFAULT FG Environment variable menu color default fg XML key Type color Default value ZZffffff Defines the default foreground color for menus In fact this is the main color for menu text the color used to draw letters in menus Ignored if menu color auto is set Can be RGB RGBA ZRRGGBB or ZRRGGBBAA 4 13 25 menu color disabled bg menu color disabled bg value Command line option LNG MENU COLOR DISABLED BG Environment variable menu color disabled bg XML key Type color Default value 72000000 Defines the background color for a disabled menu item Ignored if menu color auto is set Can be ZRGB ZRGBA ZRRGGBB or ZRRGGBBAA 4 13 26 menu color disabled fg menu color disabled fg value Command line option LNG MENU COLOR DISABLED FG Environment variable menu color disabled fg XML key Type color Default value cccccc Defines the foreground color for a disabled menu item Ignored if menu color auto is set Can be RGB ZRGBA ZRRGGBB or ZRRGGBBAA 148 Liquid War 6 4 13 27 menu color selected bg
186. alue 1 Max value 1000000000 The program assumes network is non reliable however the problem with those as sumptions is that when you test network is always reliable even with non garanteed protocols like UDP This option will force the program to actually ignore some calls to send or recv functions simulating a network disfunction This is to ensure the internal mecanisms correcting network problems do work for good on daily regular use It s not possible to set it to a perfect behavior never dropping any packet however using the default settings you probably won t even notice the performance drop induced by having to fix problems The highest the number is the most reliable network will look the algorithm is simply to drop one message out of X 4 15 52 open relay open relay value Command line option LW6 OPEN RELAY Environment variable open relay XML key Type boolean Default value false Enables forwarding of abritrary network messages If open relay is forbidden the game will only forward messages when physical sender and logical sender are the same This is to say if messages come from A for C and is sent by A to B B will forward it to C But if message comes from X to C and is sent by A to B then B won t forward it In practice it means without open relay messages can only be forwarded once 4 15 53 pilot lag pilot lag value Command line option LW6 PILOT LAG Environment variable pilot lag
187. ame or anything else 4 3 57 show build version base show build version base Command line option Shows the version base This is basically MAJOR MINOR and determines the level of compatibility of the program Two programs with the same base version should be able to communicate on the network share data files and even binary modules if on the same platform 4 3 58 show build version major show build version major Command line option Shows the major version number This is just used to differenciate alpha beta releases using 0 from stable releases using 6 4 3 59 show build version minor show build version minor Command line option Shows the minor version number This is manually increased at each significant public release of the game 4 3 60 show build x86 show build x86 Command line option Tells wether the CPU belongs to the x86 family 4 3 61 show config file show config file Command line option Shows the config file path Default is SHOME liquidwar6 config xml Chapter 4 Reference 79 4 3 62 show cwd show cwd Command line option Shows the current working directory the value that the pwd command would return 4 3 63 show data dir show data dir Command line option Shows the data directory path This is where the games searches for most of its data the most important exception being maps which are stored elsewhere Default is usr local share liquidwar6 version data 4
188. an be obtained with GIT Here s the typicall command which will fetch the latest version git clone git git sv gnu org liquidwar6 git If you are behing a firewall and can t use the native GIT protocol you can rely on the slower http protocol git clone http git sv gnu org r liquidwar6 git You can browse the code online consult log summary and in a general manner follow the project on http git savannah gnu org gitweb p liquidwar6 git and http git savannah gnu org cgit liquidwar6 git Beware git does not contain all the files included in the official source tarball For instance the configure script is not present You need to run autoreconf configure make make install The autoreconf call is really mandatory the first time autoconf is not enough You will also need all the prerequisites needed to build the docs generally speaking getting the source from git requires more tools to build the package than picking a ready to use tarball 2 2 4 Daily snapshots Alternatively you can download daily snapshots on http www ufoot org liquidwar v6 snapshots These files used to be built every day now they are generated by Jenkins whenever there s a source change commit A simple make is done before generating source tarballs however a make distcheck is performed before generating binaries therefore some times you can have the source but no associated tarballs Chapter 2 User s manual 7 Beware of rev
189. and dirty implementation Still it works 50 Liquid War 6 With Liquid War 6 the idea is to take the time to make something stable something nice which will enable developpers to implement the cool features and have fun along the way Of course this is only a dream and in the hopefully very long run Liquid War 6 will also end up as a big unmaintainable mess like any real life program until then it should remain hackable 3 9 2 Common sense Here are a few guidelines which I think are common sense advice but they are still worth mentionning e try and respect the GNU coding standards e absolutely no strcpy or sprintf anywhere in the code Nowhere Use their equivalent strncpy and snprintf systematically as they are part of the glibc and are an order of magnitude safer Moreover Liquid War 6 provides wrappers such as lw6sys_new_ sprintf which handles all the nasty dirty memory allocation stuff for you e keep global variables for when there is something truely global and even in that case try to fit them in clearly identified structures 3 9 3 Unitary tests Each of the internal libraries in Liquid War has a test program associated with it For instance liquidwar6sys test is associated to libliquidwar6sys and its purpose is to test the features of this library While it is fairly easy to test out unitary functions which require no peculiar context testing high level functions which requires files graphical and
190. ap resolution is higher This can be usefull if you don t want fighters to be too big Chapter 4 Reference 141 4 12 20 view color auto view color auto lt value gt Command line option LW6_VIEW_COLOR_AUTO Environment variable view color auto XML key Type boolean Default value true Defines wether view colors will be set automatically from base and alternate col ors This is a time saver to keep map designers from requiring to redefined every single color in the game You only need to set color base bg color base fg color alternate bg and color alternate fg Then view_color_cursor_bg view_color_cursor_fg view_color_map_bg and view_color_map_fg will be automatically set 4 12 21 wall grease wall grease lt value gt Command line option LW6_WALL_GREASE Environment variable wall grease XML key Type integer Default value 0 Min value 5 Max value 5 This parameter allows you to make walls AKA map foreground thicker or thiner when map is loaded Indeed when map are resampled and especially when they are downscaled some walls may disappear or some passages may be blocked The loader can t automatically figure out wether it s more important to keep an existing wall or to keep an open passage for fighters This parameter helps doing so if you set it toa low value level will be less greasy and many passages might open themselves On the contrary if grease is at a high level then a thin line of almo
191. ar almost always resamples maps unless you ask it not to do it This is not recommended it is believed in the general case letting the internal algorithm make its own decisions is better than trying to figure out oneself which is the best resolution The reason is the right resolution we re talking here of the logical resolution how many fighters wide is the battlefield often depends on the speed and general ressources the of the computer the program is running on The map designer does not have this information The program does It runs a bench at startup So this way it can choose at runtime the resolution which fits best The recommended way of doing things is not to try to be too picky about rules xml parameters related to speed and also let the default map size limits in hints xml to their defaults Do not use them unless debugging stuff Then the program will resample the map so that the player can play on it at a reasonnable speed If map is too big and it s often the case then it will downsize it until there are sufficiently few fighters so that the CPU can handle the job This of course is not rocket science The bench calculation is a somewhat brute force approach of doing things Formally we would have to run the map for good to figure out what is the right speed Still this bench gives good approximations Previous versions of the game relied heavily on fighter scale to resample maps but this is not the case an
192. ard high and low resolution Liquid War 6 will try and pick up a default resolution when the game is launched the first time It won t use your maximum screen resolution but will instead list all available fullscreen modes and pick up one which is usually something like two thirds of the highest mode This is to allow switching back and forth between fullscreen and windowed mode using the same settings This automatically picked up resolution really depends on your hardware and driver It is called standard in the graphics options menu Then it is possible to automatically select the minimum and maximum resolution your hardware allows in fullscreen mode These are called low and high in the graphics options menu Just click on the button that display the resolution it will change and use the next setting In windowed mode the game won t accept the highest available mode but will instead use a percentage of it defined by the windowed mode limit parameter You might still be in a case where this is not enough For instance your maximum resolution is 1600x1200 Liquid War 6 picks a default mode of 1280x960 for you but for some reason you want to play in 800x600 fullscreen In this case simply switch to windowed mode resize the window with the mouse the resolution button will show you the current resolution and just choose a resolution near 800x600 It does not even need to be exactly 800x600 798x603 would probably fit The
193. ariable max map surface XML key Type integer Default value 1000000 Allows you to give a maximum map surface Map surface is simply width height This parameter is just here to save you the hassle of defining both max map width and max map height in a consistent manner 4 12 10 max map width max map width value Command line option LW6 MAX MAP WIDTH Environment variable max map width XML key Type integer Default value 1500 Allows you to give a maximum map width When designing a map you might wonder this is dumb I m conceiving this map I know its width why should I limit it Now think of the play who plays on a old slowish computer with a tiny screen He might redefine this himself and does not necessarly wishes to fire Gimp to rescale the map 4 12 11 menu color auto menu color auto value Command line option LW6 MENU COLOR AUTO Environment variable menu color auto XML key Type boolean Default value true Defines wether menu colors will be set automatically from base and alternate colors This is a time saver to keep map designers from requiring to redefined every single color in the game You only need to set color base bg color base fg color alternate bg and color alternate fg Then menu color default bg menu color default fg menu color selected bg menu color selected fg menu color disabled bg and menu color disabled fg will be automatically set 4 12 12
194. aser XML key Type boolean Default value true The memory eraser is a tool which will systematically fill allocated memory with M and overwrite all allocated bytes with F before freeing memory It will even handle realloc calls This is usefull to track bugs Indeed with this option enabled freshly allocated memory will never contain zeroes unless one calls calloc and if you ever free some memory zone before being done with it it will be filled with junk and therefore not be usable The memory bazooka must be big enough if you want this feature to actually work 170 Liquid War 6 4 15 47 memory bazooka size memory bazooka size lt value gt Command line option LW6_MEMORY_BAZOOKA_SIZE Environment variable memory bazooka size XML key Type integer Default value 99991 The memory bazooka is a brute force tool conceived after a full night spent tracking some memory leak The idea is to keep a track of all allocated pointers when the data was allocated timestamp where in the code file line and even point out what data there is in that place A memory bazooka report at the end of the game will just show what s left There should be nothing This parameter is here to avoid wasting CPU cycles on a feature which is very debug oriented and does not really make sense for the casual user Set it to 0 for best performance something like 100 might just be helpfull but 1000000 is the right way to seriously debug cod
195. asily e several cursors for one team Appendix B 2005 plan 231 alliances between teams deep places on a map where more liquid can reside circular maps which connect the left border to the right one As for graphical improvements this is not my top level priority Simply l ll make the game ready to improve Again all these enhancements are very hard to code in Liquid War 5 else I would already have coded them Network enhancements That s my top level prioriry Why is that Well think of Liquid War in terms of what makes it a good game and what makes it a poor game It s a good game because the idea is original the gameplay is addictive you can play on a LAN all the family can play it s cross platform it s Free Software It s a poor game because it s somewhat ugly and has a retro back in the eighties look network games are slow on Internet there are not enough active Internet servers For the ugliness well OpenGL and some artwork should make it But for the network what s the real problem The real problem is that in the current situation the server needs to have all keystrokes before doing anything and all players must be connected before a game starts Here s what I plan to do to fix this players will be able to connect on a game on the fly This is done by most online games and it s IMHO a required features for a network mode to work on Internet not speaking of local ne
196. by the map designer 4 10 3 use cursor texture use cursor texture value Command line option LW6 USE CURSOR TEXTURE Environment variable use cursor texture XML key Type boolean Default value true Defines wether the cursor textures should be used If unset then the default builtin cursor texture will be used instead of the map specific one 4 10 4 use hints xml use hints xml value Command line option LNG USE HINTS XML Environment variable use hints xml XML key Type boolean Default value true If set then hints will be picked up from the map defined hints xml if it exists This is the default Chapter 4 Reference 99 4 10 5 use music file use music file value Command line option LW6 USE MUSIC FILE Environment variable use music file XML key Type boolean Default value true If set then the program will use the music file attribute to choose the music to play If unset then a random builtin music will be picked up regardless of what is specified in music file 4 10 6 use rules xml use rules xml value Command line option LW6 USE RULES XML Environment variable use rules xml XML key Type boolean Default value true If set then rules will be picked up from the map defined rules xml if it exists This is the default Use force time and force size to override this and use user defined values anyway 4 10 7 use style xml use sty
197. can help 1 3 1 Help GNU Please remember that development of Liquid War 6 is a volunteer effort and you can also contribute to its development For information about contributing to the GNU Project please read How to help GNU 1 3 2 Todo list Here s a short list of todo items It is probably too early to start hacking the core engine itself for it is still under heavy development might undergo major rewrites and it s hard for documentation to keep up with the reality of the code However there are still many things to do e Try the game Play Test Send bug reports Without bug reports bugs don t get fixed e Write maps Obviously this is something which can perfectly be delegated Experi ence shows user contributed maps are on average better than maps conceived by the author e Translate texts Liquid War 6 uses GNU gettext so all messages can be translated e any help is welcome Feel free to join the mailing lists this is clearly the best place to start with There s also a list of opened tasks on Savannah at http savannah gnu org task group liquidwar6 which you can browse online Maybe there s some task for you Alternatively you can contact Christian Mauduit Chapter 2 User s manual 5 2 User s manual The Liquid War 6 user s manual hopefully contains any usefull information to install the program and play the game If you just want to enjoy Liquid War 6 without diving into map creation a
198. cases the potential of a cursor can increase in burst mode for instance to make this cursor more important than others so that fighters rally to it neglecting other cursors talking about a multi cursor controlled team This parameter is here to limit this burst effect and avoid bugs 4 11 18 max nb cursors max nb cursors value Command line option LW6 MAX NB CURSORS Environment variable max nb cursors XML key Type integer Default value 26 Min value 2 Max value 26 Defines the maximum number of cursors who can enter the game Really makes sense in network games Default value is 26 the maximum Chapter 4 Reference 105 4 11 19 max nb nodes max nb nodes value Command line option LW6 MAX NB NODES Environment variable max nb nodes XML key Type integer Default value 12 Min value 2 Max value 15 Defines the maximum number of servers who can enter the game Really makes sense in network games Default value is 10 and should fit in most cases Can be raised up to 26 4 11 20 max nb teams max nb teams value Command line option LNG MAX NB TEAMS Environment variable max nb teams XML key Type integer Default value 10 Min value 2 Max value 10 Defines the maximum number of teams who can enter the game Really makes sense in network games Default value is 10 the maximum 4 11 21 max round delta max round delta value Command line option LNG MAX ROUND DELTA
199. ce implies that I won t use Allegro anymore Allegro stays a very convenient library and I would recommend it for it s excellent easy to learn powerfull and stable But for the needs of Liquid War 6 I ll use something else because of OpenGL I first thought of using GLUT but I might end up simply using SDL The idea is just fo have an OpenGL wrapper which sets up OpenGL in a similar manner on all platforms and handles basic things such as mouse or keyboard B 2 3 CSound I ve got two excellent books on Csound and the will to learn how to use this tool I ll probably use Csound for a number of things ranging from bubbling sounds to full blown music Stay tuned 8 B 3 Functionnalities B 3 1 Visual enhancements Of course Liquid War 6 will look nicer than Liquid War 5 blah blah blah What do you think Maybe I ll try to use some OpenGL features to make it possible to play on a ball on a Moebius ring or other fancy things I have zillion of ideas future will decide which ones will be implemented first To make it clear visual enhancements aren t my top level priority However I ll try and make room for these enhancements and prepare the terrain correctly So it s possible that the first releases of Liquid War 6 won t be that much better than Liquid War 5 but at least Liquid War 6 will have the possibility to evolve Something Liquid War 5 doesn t have B 3 2 Rules enhancements There are many things that could be done e
200. ckground color stuff fg lt value gt Command line option LW6 BACKGROUND COLOR STUFF FG Environment variable background color stuff fg XML key Type color Default value ZZffffff Defines a color which will be used to draw things animations sprites text whatever in the background It should be different enough from color alternate bg so that one can really distinguish these colors Think of this as the sprite the text the whatever needs to be seen uses this color Will be automatically guessed from the map texture if color auto is set Can be RGB RGBA RRGGBB or RRGGBBAA 4 13 7 background style background style lt value gt Command line option LW6_BACKGROUND_STYLE Environment variable background style XML key Type string Default value bubbles The background defines of course what is displayed at the background but it also conditions the colors used for other items such as the menus for instance The possible values are void and bubbles 4 13 8 blink cursor blink cursor lt value gt Command line option LW6_BLINK_CURSOR Environment variable blink cursor XML key Type boolean Default value false If set then cursor will blink allowing you to see what s under the cursor It s just a matter of taste you might to always have your cursor displayed or prefer to have it disappear from time to time so that you can see the action below 4 13 9 color alternate bg color alter
201. ctions should be defined but some of them are obviously more important The two most critical functions are e pump events This is used to process inputs The function should update a lw6gui_ input s struct and return it to the caller How this done is really up to the backend it happens that all SDL based backends mod gli mod gles2 and mod soft share the same code for this but another backend could do this differently there s no real need to use SDL Only the returned input should behave correctly when queried with function from libgui As a consequence one needs to have a look at libgui to understand how input works A look at src lib gfx shared sdl shared sdl event c is a good example of this as this file contains the implementation for SDL based input See Section 5 19 libgfx page 219 See Section 5 26 libgui page 221 display By far the most complicated function this one is called on each display loop to render the game It s always used in the same thread so need not be reentrant and on some platforms eg Mac OS X it will even be called in the main thread this can be of some importance regarding some libraries such as SDL Still beware the game state object it uses can change on the fly while rendering In that case changing means that fighters can move and gradients be updated but the global structure won t change So any pointer on a fighter will still be valid after it s been obtained but the rende
202. d War 6 so that it should be much more hackable than previous versions Any feedback is welcome 3 1 Designing levels 3 1 1 Why is level design so important As of Liquid War 5 most levels have been contributed by players While the maintainer of Liquid War 6 has technical knowledge to develop the game artistic talent and taste might not be his domain of excellence 8 Therefore contribution are truely welcomed when they take the form of a new original fun and good looking level It s believed the levels often make the game much more than its engine This is true for any type of game and Liquid War is no exception So this section is here to help players understand how to hack existing levels and create new ones in the hope that 1 they can enjoy their own creations and 2 possibly share their work with others Note that this manual might refer to levels and maps they are just two different names to describe the very same thing It s an alias 3 1 2 Format overview Liquid War 6 stores level information in a plain directory There is no such thing as an opaque dat binary file The name of the level is the name of the directory itself and its elements are the files contained in it Files must follow a precise naming scheme For instance Liquid War 6 expects a map png file to be present in each map directory All image files in a level use the Portable Network Graphics or JPEG format It is possible that in the long term
203. d get conbeure argg 201 c Jwfovs builk get copneht 0 cece eee 201 c lw6sys build get datadir nasasa e cece 201 c lw6sys build get date 6 6 eee eee 201 c lw6sys build get docdir 0 cece cece ee 201 c Iw6sys build get enable allinone 0 00 201 c lw6sys build get enable console 0 000 e eee 201 c Iw6sys build get enable fullstatic 00 201 c Iw6sys build get enable gcov cece eee 201 c Jwfovs buill get enable eprof rrene 201 c lw6sys build get enable gtk 2 eee eee eee 202 c Iw6sys build get enable instrument 202 c Iw6sys build get enable mod caca sss 202 c Iw6sys build get enable mod csound 202 c Iw6sys build get enable mod gll 202 c Iw6sys build get enable mod gles2 202 c Iw6sys build get enable mod http 202 c Iw6sys build get enable mod ogg ssse 202 c Iw6sys build get enable mod soft suuu 202 c Iw6sys build get enable openmp s suse 202 c Iw6sys build get enable optimize e 203 c Iw6sys build get enable paranoid 203 c Jotavs build get enable probler 203 c Jofavs build get enable valennd 203 c Iw6sys build get endianness 000 cece ee eee 203 c Iw6sys build get gcc version 0 cece eee 203 c Iw6sys build get home url 0 00 e eee 203 c Iw6sys build get host cpu
204. d never expected I would patch and fix this game for so long and it s no surprise that it s bloated today FYI here s a list of what makes LW5 unsuitable for major improvements without a complete rewrite e global variable hell Lots of things are stored in globals e hard coded C GUI Read src level c to get an idea of how horrible it is e hard coded 256 colors paletted mode A clever bet in 1998 performance Not anymore e generally bloated code Makes bug finding very tricky B 2 Technologies Liquid War 6 will use a different technical framework than Liquid War 5 B 2 1 Script standard C assembly It happens that coding a large project in pure C is a waist of time if possible at all If one applies the standard 80 20 rule to a computer game one might state that 80 of the code eat up 20 of the CPU and the other 20 of the code eat up 80 of the CPU the former being high level glue code and the latter being low level algorithmic code With Liquid War one could speak of the 99 01 rule I mean that 99 of the CPU time concerns only 196 of the code and vice versa Basically Liquid War has a very CPU greedy core algorithm still spends a fair amount of CPU displaying stuff but this is delegated to the low level game programming library and the rest is totally unsignificant in terms of CPU Point is this rest represents the vast majority of the code and also represents the very same buggy code I spend nights to patch o
205. d the file music file parameter taken from style xml or defined overriden by player in the current map directory step 2 if not found it will try every path in music path to find this file This includes the system music directory with musics that ship with the game but also the music subfolder in the user directory step 3 if still not found it will try to play a random file relying on music filter to ignore some files 3 1 18 Experience exp In rules xml you can set a special parameter which is exp and allows you to tell a player can t load this map if he doesn t have at least N at his her exp rating Gaining exp stands for experience isn t hard you just need to win a level with exp N to gain exp N 1 By default the player s exp is 0 and levels default to 1 so this means only levels with exp set explicitely to 0 in rules xml might be used Then player wins that level and is given access to all maps by default unless these are explicitely set with exp greater than 1 In solo game when a player wins a level he s automatically redirected to the map which is in the same directory and has exactly the exp he just gain For instance if you win a map with exp 5 then you re chained to the first map in alphabetical order which has exp 6 By setting up the exp parameter the right way with a map for each exp level one can transform a simple map directory in a scenario that player will automatically follow Last but
206. d with keyboard or joystick joystick 1 Consider using cursor sensitivity too 4 6 16 mouse sensitivity mouse sensitivity value Command line option LW6 MOUSE SENSITIVITY Environment variable mouse sensitivity XML key Type float Default value 1 0 Mouse sensitivity 1 0 is the default 0 1 is slow 10 is reponsive This is used for moving the cursor during the game only the option has no impact on menu navigation 4 6 17 repeat delay repeat delay value Command line option LW6 REPEAT DELAY Environment variable repeat delay XML key Type integer Default value 500 Time in milliseconds before key repeat will start use 0 to disable Chapter 4 Reference 91 4 6 18 repeat interval repeat interval lt value gt Command line option LW6_REPEAT_INTERVAL Environment variable repeat interval XML key Type integer Default value 100 Time in milliseconds between two repeats once repeat has started use 0 to disable 4 6 19 use double click use double click lt value gt Command line option LW6_USE_DOUBLE_CLICK Environment variable use double click XML key Type boolean Default value false Wether to use double click feature mostly usefull if running on a system that has only one button such as a tablet PC or anything with a tactile screen if your mouse has three buttons disabling this might avoid some confusion Basically if enabled double click is equivalent to righ
207. da aoe eme 171 P password n re e EEEE 97 pilot lagii cerris 99rica sae rebpebest4s ask rue al pixelizo REPE en ibare ad 149 playeri color ss i223 Vee op iene atid eke el 159 piayeri corntrol ene RR EE rus 84 piayeri name cc ee sessed eee 85 playerl status EE 85 RE NEE 159 player2 control 2 2 0 9 0 noiri Enei 85 player2 name wccbeora uds am e tants 85 player2 status i co er eie ee ER RbP OWENS 86 RE d EE 159 player3 control 2 2 fp ped panne 86 playerg9 name epecrer v RN eer beQr ede 86 player3 status j cnereneY6e hae and AE 86 player4 colOr e v t e sate bere 159 player contrOol 2 e e ebhe e er Rn 86 player4 name eene 8T player stat s i ee e e e eren 8T public ufl iesebessr eek nra ere eph Hebe REER OF R repeat delay c are a ERR takia 90 repeat interval ooo e eere io ea 91 resample eR DEG er ag Y eR Teed 139 reset config on upgrade 172 respawn delay ccc cece teri eee eee ees 107 respawn position mode sess 107 respawn team cscseeccc usc h bere ER E 107 round delt e ke tet perna 108 geg EE 108 S Sscreenshots per min eee 172 Side attack factor eee eee 108 Side detense factor cece cece eee 109 Single arm Ree ENNEN har 109 273 Skip Network 0 508 sen EE nese degunet 97 snd backend ice e eren ERE P e eres 94 GE EE 139 Spr
208. detecte EUROPA Ch PR edacln seat 28 241 14 taggt icu deri epa Hec ea EE gd taris 28 3 1 15 teams xml ii am eR bed ares Re ER EE 28 311 16 R esamplng iecocken eee mk ERR Eet RR 29 Sell o Musee ect AER sd hos Gn pag eee DECOR 29 3 1 18 Experience Cep poat e EE 30 29 2 Translating oe iUe xtra ine Rire C d eda ii det 31 3 2 1 Using gettext 2 cece cee EE nnn 31 3 2 2 Formatted strings 0 00 eee eee eens 31 3 2 8 Partial Translation 31 3 9 JAjychibecture iii deseeeerr rr ex ebbe ede EE EGE dba do aas 32 9 9 l C Guiile sas te ea hehehe Wee Rb ehb REPERTA 32 Liquid War 6 3 3 2 Threading and SM 32 3 3 3 Internal libraries sede er eee sh lens 33 3 4 Memory structure 35 3 5 100 predictable algorithm esos esee eer Rhys 35 3 6 Graphics backends 0 00 cece eect eee een eee eens 36 9 6 1 Modularity EE 36 3 6 2 List of backends eee eee eens 36 3 6 3 How to write a new backend 0 00 eee eee eee 37 31 Gore algorithm EE 38 3 7 1 Untroduction SEELEN ENN ek eee eae a RR Ren 39 3 7 2 Level game struct game state and pilot 39 3 7 8 Getting informations about where fighters are 40 3 8 Compilation Ups uoecaeedecme dees ERNEIEREN NES 40 3 8 1 Advanced configure option 40 3 8 2 Debian packages sssssssssseees teenies 41 3 83 Red Hat pnockage 0 000 e cence n 42 3 8 4 Microsoft Windows msys mingw32 port 42 3 85 Mac OS X oort ene padania 46
209. dex to label sss 191 c Iw6map team color key to index esses 191 c Iw6map team color list 0 191 c lw6map teams get default 0 c cece eee eee 191 c Iw6map weapon index to key 000 c cece 191 c Iw6map weapon index to label 00005 192 c lw6map weapon key to index 0 cece eee eee 192 c lw6map weapon list 6 cece eee eee ees 192 C lw6net init 2 0 ccc n 192 clw6net quit e seesi en eee seen 192 c lw6p2p db default name 0 0 cece eee eee eee 192 c lw6p2p db new 0 6 eee eee eens 192 c Iw6p2p db reset 0 cece eee eees 192 c lw6p2p node calibrate 6 eee ees 192 c lw6p2p node client join 6 6 eee eee eee ee 192 c lw6p2p node close 6 6k eee 193 c lw6p2p node disconnect usss cece eee ee eens 193 c Iw6p2p node get entries 6 cece eee eee eee 193 c lw6p2p node get id 6 cece cece eee 193 c Iw6p2p node get local seq 0 6 eee ees 193 c Iw6p2p node get local seq last cece eee eee 193 c lw6p2p node get next draft msg 2 eee eee eee 193 c Iw6p2p node get next reference msg 0000 193 c Iw6p2p node get seq draft 0 cece eee eee ees 193 c lw6p2p node get seq MaxX 6 cece eee eee eee 193 c Iw6p2p node get seq min 6 eee eee eee 194 c Iw6p2p node get seq reference 6 eee eee eee 194 c Iw6p2p node is dump needed 0 cece eee 194 c Iw6p2p node i
210. dified while the rendering thread is running 4 15 15 display background display background value Command line option LW6 DISPLAY BACKGROUND Environment variable display background XML key Type boolean Default value true Decides wether the background animation image should be displayed at all 4 15 16 display console display console lt value gt Command line option LW6_DISPLAY_CONSOLE Environment variable display console XML key Type boolean Default value false Chapter 4 Reference 163 Defines wether the interactive system console must be displayed Note that console support must have been enabled at compilation time It might not be available on your computer for instance if you are running a system such as Microsoft Windows 4 15 17 display cursors display cursors lt value gt Command line option LW6_DISPLAY_CURSORS Environment variable display cursors XML key Type boolean Default value true Debugging option which can be set to false to disable the display of cursors when playing 4 15 18 display debug gradient display debug gradient lt value gt Command line option LW6_DISPLAY_DEBUG_GRADIENT Environment variable display debug gradient XML key Type boolean Default value false Set this to true to display the gradient this is usefull to debug the core algorithm or understand how it works 4 15 19 display debug zones display debug zones
211. e cece eee eee 210 268 c lw6sys get user dir sss 210 c lw6sys get username sss 210 C LIw6SyS Bgetenw ex praec eek pde 210 c lw6sys getenv prefixed 210 c lw68ys idl iice e tes tees 210 C IWOSyS lOB iiw b3 n Rain had i 210 c lw6sys log get backtrace mode 210 c lw6sys log get level 210 c lw6sys log set backtrace mode 211 c lw6sys log set dialog timeout 211 c lw6sys log set level 0008 211 c lw6sys megabytes available 211 c lw6sys openmp get num procs 211 CLv evs path concat cee eee eee 211 c lw6sys path file only 211 c lw6sys path parent sss sssss 211 c lw6sys path split eese 211 c lw6sys set memory bazooka eraser 211 c lw6sys set memory bazooka size 212 CLu sus siensal custom 212 c lw6sys signal default 212 c lw6sys signal poll quit 212 c lw6sys signal send quit 212 ce lw6osys sleep sam i giereaneeheeee nee 212 eet EE 212 c lw6sys url canonize sss 212 c lw6tsk loader get stage ss 212 c lw6tsk loader new esses 212 GJv tsk Loader pop ee cece eee yoye 213 c lw6tsk loader push gen 213 c lw6tsk loader push ldr 213 Capt re ci e d eu teed eek dade ARTI RES Rd 92 el
212. e 4 15 48 net log net log value Command line option LW6 NET LOG Environment variable net log XML key Type boolean Default value false Activates network log that is logs everything sent received over the network except data which is sent through a third party library such as libCurl This is mostly for debugging purpose it can lead to rather big log files 4 15 49 net per sec net per sec value Command line option LW6 NET PER SEC Environment variable net per sec XML key Type integer Default value 500 Min value 1 Max value 1000 Defines the number of calls to network functions per second This can technically change the network transfers speed the higher the number the faster it should be but at the same time it can technically be more CPU greedy 4 15 50 network bench delta network bench delta value Command line option LW6 NETWORK BENCH DELTA Environment variable network bench delta XML key Type integer Default value 5 Min value 70 Max value 20 A value which is added to bench before starting a network game This is typically a negative value lower than the one added to local game This is because network games can be more CPU greedy Chapter 4 Reference 171 4 15 51 network reliability network reliability value Command line option LW6 NETWORK RELIABILITY Environment variable network reliability XML key Type integer Default value 1000 Min v
213. e Command line option LW6 COLOR BASE FG Environment variable color base fg XML key Type color Default value cccccc Defines the base color more precisely its fg foreground part Colors are always defined by a bg fg pair Most colors in the game can be deduced from this one usually to color a map you only need to define color base bg color base fg color alternate bg and color alternate fg 4 13 13 colorize colorize value Command line option LW6_COLORIZE Environment variable colorize XML key Type boolean Default value true If set then all background drawings including textures will use the background colors This means for instance that if background colors are set automatically by color auto from the map texture then the background will adopt the same range of colors than the map itself In short the background will mimic the map Chapter 4 Reference 145 4 13 14 colorize cursor colorize cursor lt value gt Command line option LW6_COLORIZE_CURSOR Environment variable colorize cursor XML key Type boolean Default value true If set then all cursors will use the automatic guessed colors or the specified colors but basically they won t be displayed using their native colors This can be usefull for you can wish to use a generic non colored texture for your cursor and let it be colorized automatically so that it s accorded to the level 4 13 15 cursor size cursor si
214. e enable profiler will enable Google Performance Tools support Basically this means linking against libtcmalloc and libprofiler You could activate those by using LD_PRELOAD or by using your own LDFLAGS but using this option will also make the game tell you if CPUPROFILE or HEAPPROFILE are set when it starts The pprof gv output is very handy Note that on some systems pprof is renamed google pprof e enable gcov will enable coverage informations to use with gcov and lcov This is for developpers only It will activate enable allinone else there would be some link errors when opening dynamic libraries The obtained information is available online coverage and GNU global e enable valgrind will enable some CFLAGS options which are suitable for the use of Valgrind to track down memory leaks and other common programming errors Use for debugging only usually together with enable allinone 3 8 2 Debian packages Liquid War 6 does have a debian in both main and extra maps packages so it s debian ized To build the main deb package untar the main source tarball then make dist cd pkg cp liquidwar6 X Y Z tar gz X Y Z is the version make deb Note that you have to copy the source tarball to pkg and move to this directory before typing make deb This is among other things to simplify the main Makefile To build the extra maps deb package untar the extra maps tarball then 42 Liquid War 6 make deb 3 8 3
215. e XML key Type integer Default value 150 Min value 5 Max value 2000 Chapter 4 Reference 115 Defines how aggressive the blue team is This is a percentage if set to 200 then team will attack twice as much as any other team with the default value Setting this to a high value clearly advantages this team 4 11 61 team profile blue fast team profile blue fast value Command line option LW6 TEAM PROFILE BLUE FAST Environment variable team profile blue fast XML key Type integer Default value 50 Min value 5 Max value 2000 Changes the speed of the blue team This is a percentage if set to 50 then team will move twice slower than other teams with the default parameter Setting this high is very likely to advantage the team 4 11 62 team profile blue handicap team profile blue handicap value Command line option LW6 TEAM PROFILE BLUE HANDICAP Environment variable team profile blue handicap XML key Type integer Default value 100 Min value 10 Max value 1000 Defines the handicap for the blue team 4 11 63 team profile blue mobile team profile blue mobile value Command line option LNG TEAM PROFILE BLUE MOBILE Environment variable team profile blue mobile XML key Type integer Default value 0 Min value 3 Max value 3 Increases or decreases if negative the number of move attack defense tries for the blue team If set to a high value team will appear more mobile and do mo
216. e electronic equivalent of covers if the Document is in electronic form Otherwise they must appear on printed covers that bracket the whole aggregate TRANSLATION Translation is considered a kind of modification so you may distribute translations of the Document under the terms of section 4 Replacing Invariant Sections with translations requires special permission from their copyright holders but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections You may include a translation of this License and all the license notices in the Document and any Warranty Disclaimers provided that you also include the original English version of this License and the original versions of those notices and disclaimers In case of a disagreement between the translation and the original version of this License or a notice or disclaimer the original version will prevail If a section in the Document is Entitled Acknowledgements Dedications or His tory the requirement section 4 to Preserve its Title section 1 will typically require changing the actual title TERMINATION You may not copy modify sublicense or distribute the Document except as expressly provided under this License Any attempt otherwise to copy modify sublicense or distribute it is void and will automatically terminate your rights under this License However if you cease all violation of
217. e 15 4 3 33 abhow bouild epis eee 75 4 3 34 show build home url 0 c cece eee eee eee 15 4 3 35 show build host cpu 0 eee cece eee 75 4 3 36 show build host os 0 000 cece eee eee eee 76 4 3 37 show build hostname 0c cece eee eee eee 76 4 3 38 show build includedir 0 00 cece eee eee eee 76 4 3 39 show build ldflags 00 0 cece eee eee eee 76 4 3 40 show build libdir 0 ees 76 4 3 41 show build license 0 0 cece eee 76 4 3 42 show build localedir 0 000 cece eee eee eee 76 vi 4 3 43 show build mac 0s x 0 0 cece eee eee ee 76 4 3 44 show build md5sum 0 c cece ene eee 76 4 3 45 show build ms windows 00 cece eee eee eee TT 4 3 46 show build package id 0 cece eee eee eee 77 4 3 47 show build package name 0 0 cece eee eee eee rin 4 3 48 show build package string 0 cece eee eee eee 1T 4 3 49 show build package tarname 000 e eee eee ee 77 4 3 50 show build pointer size 0 cece eee eee eee TT 4 3 51 obhow bouiklk prefts TT 4 3 52 show build stamp 00 cece eee e 77 4 3 53 obhow boutlk tme 0 0 cece eee eee eee 77 4 3 54 show build top sredir 0 cece eee eee eee 78 4 3 55 obhow boutld umnis 0 cece eee eee eee 78 4 3 56 show build version 000 cece eee eee e 78 4 3 57 show build version base 0 0c e eee eee eee eee 78 4 3 58 sh
218. e 186 c lw6img screenshot 6 cece eee eee ees 186 c Iw6ker add cursor sss 186 c Jot ker build eame state 0 c cece eee eee eee 186 c Jot ker build eame stmuet cece cece 187 c Iw6ker cursor exists 2 0 6 cece 187 c Iw6ker did cursor win 0 0 cece eens 187 c lw6ker do round 0 cece eee 187 c Iw6ker dup game state 6 eee eens 187 c lw6ker game state checksumM 0 0 cee eee eee 187 c lw6ker game struct checksum 0 00000 eee eee 187 c lw6ker get Cursor 0 cece eee eee ees 187 c lw6ker get MOVES 0 6 eee eee eens 187 c lw6ker get nb colors 0 cece eens 187 c Iw6ker get nb cursors ccc cece 188 c lw6ker get nb nodes 0 0c cece cee eens 188 c lw6ker get rounds 00 ccc eect ees 188 c lw6ker get spreads 00 c cece eee eee ee 188 C lw6ker is OVEr 6 nee eens 188 c Iw6ker node exists 0 6 0 6 cece eee 188 c Jwfker register node 0 0 c cece eee eee eee 188 c lw6ker reMoOve Cursor 6 eee es 188 c lw6ker set CUrsOLr 6 cee eee ees 188 c lw6ker sync game state 0 0 cece eee eee eee 188 c lw6ker unregister node 0 000 cece eee eens 189 c lw6ldr chain entry 2 6 eee eee 189 c lw6ldr exp validate 6 0 0 ccc cece eee ee 189 c lw6ldr get entries 6 0 66 eee eee ees 189 c lw6ldr hints get default 0 e eee eee 189 c lw6ldr print examples 2 000 e cece eee eee 189 C lw6ldr read 2 0
219. e code And you must show them these terms so they know their rights Developers that use the GNU GPL protect your rights with two steps 1 assert copy right on the software and 2 offer you this License giving you legal permission to copy distribute and or modify it For the developers and authors protection the GPL clearly explains that there is no warranty for this free software For both users and authors sake the GPL requires that modified versions be marked as changed so that their problems will not be attributed erroneously to authors of previous versions Some devices are designed to deny users access to install or run modified versions of the software inside them although the manufacturer can do so This is fundamentally incom patible with the aim of protecting users freedom to change the software The systematic pattern of such abuse occurs in the area of products for individuals to use which is pre cisely where it is most unacceptable Therefore we have designed this version of the GPL to prohibit the practice for those products If such problems arise substantially in other domains we stand ready to extend this provision to those domains in future versions of the GPL as needed to protect the freedom of users 240 Liquid War 6 Finally every program is threatened constantly by software patents States should not allow patents to restrict development and use of software on general purpose computers but in
220. e code Use the Windows 32 bit port only if you are jailed on a Microsoft system Now let s come to the real meat untar the Liquid War 6 source tarball launch your MSYS shell and configure make make install Now the binary is in src libs liquidwar6 exe beware src liquidwar6 exe is only a wrapper This binary is an MSYS MinGW binary so it read paths la Microsoft that is it has no knowledge of what usr is for instance It requires paths starting by C WV 3 8 5 Mac OS X port This is still experimental Basically install MacPorts and most dependencies with except for SDL which you compile from source The idea is to compile SDL using the native OS X bindings and not some other GL files you could have in opt local installed by MacPorts then compile the game and other SDL dependencies against this SDL The SDL mixer library might need to be told to compile itself without dynamic ogg support By default it seems that it tries to load 1ibvorbisfile dylib at runtime and it can fail To disable this dynamic loading use for instance configure prefix opt extra enable music ogg disable music ogg shared Also it might seem obvious for Mac OS X users but there are some important issues related to compiling options and handling dynamic libraries at runtime e The command 1dd does not exist run otool L instead e The equivalent of LD_LIBRARY_PATH is DYLD LIBRARY PATH e The extension for shared binaries is
221. e diate E ah Sate dade Ee aa eae beats 120 team profile lightblue aggressive lt value gt peppen rer ENESE EERE ONERA E HE NUS EO RS 120 team profile lightblue fast value 120 team profile lightblue handicap value Sain nibs Sorte das durae E distet 120 team profile lightblue mobile value SEELEN NEIE EE 120 team profile lightblue vulnerable lt value gt DEE 121 team profile lightblue weapon alternate ide value ov cewek pr ed DR ten n 121 team profile lightblue weapon id value TT T 121 team profile lightblue weapon modescualuez ccc eee eee 121 team profile magenta aggressive lt value gt rm 122 team profile magenta fast lt value gt 122 team profile magenta handicap lt value gt ws ose iad Gee dees Makes Lanes tater ned 122 team profile magenta mobile lt value gt 122 team profile magenta vulnerable lt value gt vuoRUpspripsaAr qeriutsestiesnse te pg hes nes 122 263 team profile magenta weapon alternate id e value ssleses sapere per KEER iii 123 Et 123 team profile magenta weapon mode value aval 123 team profile orange aggressive value sade NEE 123 team profile orange fast lt value gt 124 team profile orange handicap lt value gt 124 team profile orange mobile lt value gt 124 team profile orange vulnerable lt value gt erm 124 team profile orange weapon al
222. e eee eee ees 159 4 14 25 player4 color 0 00 cece cece eee ee nee eee 159 4 15 Advanced settings 0 cece cece cece eee nee nee 159 4 15 1 base64 decode 0 cece ec e eee eeee een e eee eee 159 4 15 2 basepi encode 0 cece eect eee esee 160 dr benelici acces serris ineei iea he EEN E RENDER 160 4 15 4 bench value ne 160 4 15 5 bon iiis came pos PE eed E EQ Teu 160 4 15 6 check sos ecce v ERREUR obser ed bees 160 4 15 7 commanda per aer seh 161 4 15 3 G nlbiiioueesenet6csre eo i E a La ees 161 4 15 9 daemon erranaren e etch ba aaa 161 4 15 10 debugJaver 24 161 4 15 11 debug team id 0 cece cnet eee ee 161 d LTE demoussooni ccs rer LUE e doe a gea Pudens 162 4 15 13 dialog timeout 0 eee eee eee eh 162 4 15414 ee NEE 162 4 15 15 display background 0 0 cece eee eee eee eee 162 4 15 16 dsplan congole 0 cece eee eee ees 162 4 15 17 display cursors 0 0 cece eect eee e 163 4 15 18 display debug gradient 0 0 0 cece e eee eee 163 4 15 19 display debug zones 0c cece eee eee eee eee 163 4 15 20 display fighters 0 0 cece rereana 163 4 15 21 display fm 164 4 15 22 display hud ernn ek ENEE EE d aedes ga 164 4 15 29 display log csse E chee eee b emet ek 164 4 15 24 display map sssssssssseees II 164 4 15 25 displaysmenu ENEE ENEE c ee Pere nw ss 164 4 15 26 display meta 0 cece eee tera ne eens 165 4 15 27 di
223. e eens 69 4 2 4 eample ieamsa ml eee eens 69 4 2 5 list ad vanced gung hide oe eme treed ae RG AER asa 69 4 2 6 list aliases icc ese ker RE RR 69 4 2 0 hgtedOGsinsiedes due ER b box hehe ERR PA rta 69 4 2 8 liStefungss susce dee ER gue ne e ERERRA ESTE ns ee 69 4 2 9 hst graphiesz eeneg eh doe bici qur e REOR Rn edd 69 4 2 10 Det hooks Ie 70 421I Uist In pits veces spends paper nage ERR EA EEN eas 70 42 12 EE ee UR ERRARE wii ie I ER Reh an 70 4 2 13 Dot map humts eee n 70 4 2 14 Dot map ules I 70 4 2 15 list map style 00 cece cece eee eee eee 70 4 2 16 Dot map teams 0 ccc n 70 4 2 17 lst neiwork zii conn Reeg eg EE 70 4 2 18 hstepatli EE 70 4 2 19 list players uiic iri eec REES d 71 Liquid War 6 4 2 20 list Quick dE ERNEIEREN EROS cll A221 lists hW o drei Pherae aoe ANN Riesen ed eeu 71 4 2 22 list SOUNGl ses soie er Reh Ae E rere E EPA ra 4 2 23 Dat team colorg e 71 4 2 24 Det wenpong eh 71 43 Show Options iiem sedasa ria eer eR PEDE up de eer RE EEN 71 4 3 1 show build abs srcdir 0 0 cece eee eens val 4 3 2 show build bin id ccc ene eee teens ra 4 3 8 show build bugs url ssesssseeeeeeeseee 71 4 3 4 show build cflags 00 c eee eects T2 4 3 5 sbow build codename 000 c cece cece nrn 72 4 3 0 show build configure args esses eee eee eee 72 4 3 7 show build copyright 0 0 0 cece eee eee eens 72 4 3 8 show build datadir 00 0 cece eee eee
224. e game cece ee nene 2 241 Download source 2 2 2 Download binaries sess eee eee 2 2 8 GIT repository pesien ahs sos ares RR eae bee BRI ote 2 2 4 Daily snapshots 0 0 c cece eee e 2 2 5 Check integrity EIERE ENEE n ke ee eed reas 2 3 Wnstallati ne sed ger ohne yawned oan send rere RE Iu Un pends 2 3 1 Requirements cece eect eee EPER E eee aED 2 3 2 Optional libraries 00 eee 2 3 3 Optional tools edere odere d rea aes 2 3 4 Installing requirements using RPM DEB packages 2 3 5 Compiling eeedassc e agen ek ERAT RR ERR ITE pa 2 4 Extra m ps ueber ge ha ade dey kee eee nes 2 4 1 The extra maps package 20 c eee eee eee eens 2 4 2 Install extra maps on GNU Linux and POSIX systems 2 4 3 Raw install of extra maps all platforms 2 5 Troubleshooting nie SR ENEE AE SEENEN aoa 2 5 1 Compilation problem 2 5 2 Check mstallaton 0 00 ee 2 5 3 Problems running the game 2 0 QUICK Starts stove utc eae tosta ae annem ELLE TEE 2 0 1 Quick start eisda e uua eens fees Pies pane RUD UA 2 7 S rabegy EE 2 8 User interfaces siseses sdti ee EEEN ANAA awk FER RSS NS 2 8 1 A reduced set of ken 2 8 2 Combining mouse keyboard and joysticks 2 2 8 3 Quit with FI eege ea ede ecce RR per dd 16 2 9 Solo gare deeg EE Cere avi DRE Sete eR Ape denda 16 2 9 1 Current State Louauede cere iin a e ER 16 2 9 2 Team
225. e in a consistent state The general idea is that big commits tend to make error tracking more complicated e a commit should not leave the code in a state in which it does not compile and or is consistent from a user point of view The general idea is to go step by step and break as little things as possible e tests should be written along the way The project is not developped with a test driven method still it s a good practice to write the tests functions as soon as possible To check that a commit does not break everything a good practice is to run a make check before committing submitting anything Then once it s within the main GIT repository check the Jenkins builds to see if the program still builds correctly 3 9 7 Audit the code Liquid War 6 is regularly audited with automated tools You might need to pass enable gcov to configure if you want to use thes tools yourself More precisely 52 Liquid War 6 e CUnit is used for regression tests It s used to provide hopefully standardized output when testing and provide test statistics more easily It s a rule of thumb to try and write tests when new features and or bug fixes pour in e lcov is run ideally with each release but it s not garanteed check the output date and time and the output is available online on http www ufoot org liquidwar v6 doc coverage e GNU global is run too ideally with each release again check the output date and time
226. e mobile team profile lightblue mobile value Command line option LW6 TEAM PROFILE LIGHTBLUE MOBILE Environment variable team profile lightblue mobile XML key Type integer Chapter 4 Reference 121 Default value 0 Min value 3 Max value 3 Increases or decreases if negative the number of move attack defense tries for the lightblue team If set to a high value team will appear more mobile and do more things but it won t change its cruising speed It s not obvious to tell wether this is an advantage or not but it clearly changes the behavior 4 11 88 team profile lightblue vulnerable team profile lightblue vulnerable value Command line option LW6 TEAM PROFILE LIGHTBLUE VULNERABLE Environment variable team profile lightblue vulnerable XML key Type integer Default value 8 Min value 5 Max value 2000 Defines how vulnerable the lightblue team is This is a percentage if set to 200 then team will be attacked twice as much as any other team with the default value Setting this to a high value clearly disadvantages this team 4 11 89 team profile lightblue weapon alternate id team profile lightblue weapon alternate id lt value Command line option LW6_TEAM_PROFILE_LIGHTBLUE_WEAPON_ALTERNATE_ID Environment variable team profile lightblue weapon alternate id XML key Type integer Default value 17 Min value 0 Max value 19 Id of the default alternate weapon for the lightblue team see the docu
227. e qaa t be deed 215 5 2 1 OVERVIEW A geuerdnet ge irn oe 215 522 Eet ee ek Een Ee Uwe ee ee gees 215 5 3 InOGSDrDutes EE 216 5 3 1 Overview lssssssessesseese e he here 216 5 9 2 AP EE 216 5 4 mod folloW zziii lp E ERG old ERU RR EUR Renta 216 BAL Overviewoassli das dace ee EEN api ug pa RA EE eda 216 CI ME VM 216 et De e EE 216 5 5 l Overview AANEREN KEE ENNER baa Re ER a 216 510 27 AP Dae oa cece degree te PR o dep tends ak ded ahaa ei Ee ed 216 5 6 mod randOoni eire eee e ERE E Euer eis eked 216 5 6 1 Overview 0 ccc RR es 216 xxiii XXlv POE Aa etek cata rete n ANE Bea MN ae e Rufe Sages 216 Dsl WDC METER 216 ST ONERVIEW anien aterrune dees Bic eis CbDSDIeN er nC 216 e er E KEE 217 528 beliisicseeeMiebteust gtRR UP REI ueber ded oedaeae 217 SCT OVERVIEW esrara ee ee eats Der p EEUU DERE aw oe 217 5 82 APE Sateen edad weg tu uei Ca tacts EE 217 D mod http issu Reti p ER e Ea EE CHE RR RR 217 5 9 T OVERVIEW 2 ocd casos deeb Nee ege ENER RO 217 EN EE 217 5 10 mod tep ies sete adia E EE 21 5 10 l e TEE 217 5 10 2 NEE 217 Dll mod dp eei need teer ee TP ERA DES 217 NULL Chemie cogere rire Ida eis 217 Dale TAP Teena ee a LE pe Eo LC Caen d 217 5 12 TDbOnS see iecit tati RE eR Pb ad o EE RR i 218 b 12 1 C VeEVIGW us sete EhenDRERS REP REN eie pente bein 218 up p EE d m 218 gu WEI EE 218 b 13 L OVERVIEW epa LL Meee edie EE iste sees 218 5 13 2 APT ose erties beh Rea er rate i p Reise
228. e under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996 or similar laws prohibiting or restricting circumvention of such measures 242 Liquid War 6 When you convey a covered work you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work and you disclaim any intention to limit operation or modification of the work as a means of enforcing against the work s users your or third parties legal rights to forbid circumvention of technological measures Conveying Verbatim Copies You may convey verbatim copies of the Program s source code as you receive it in any medium provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice keep intact all notices stating that this License and any non permissive terms added in accord with section 7 apply to the code keep intact all notices of the absence of any warranty and give all recipients a copy of this License along with the Program You may charge any price or no price for each copy that you convey and you may offer support or warranty protection for a fee Conveying Modified Source Versions You may convey a work based on the Program or the modifications to produce it from the Program in the form of source code under the terms of section
229. e very different gaming experiences you can artificially set up arbitrary strong bots for instance Here s a description of the default color settings blue has a strong attack but is slow e cyan has an extremely good defense but is slow e green has a better defense than the average e lightblue has an extremely strong attack but is very slow e magenta is extremely fast but also very vulnerable e orange is fast but has a very weak attack e pink has a very strong attack but is also very vulnerable e purple has a very good defense but a weak attack e red moves faster than the average e yellow has a strong attack 2 9 3 Weapons Additionnally when profiles are used each team has two weapons a primary weapon and an alternate one Think of weapons as special usually nasty tricks you can play on your opponents Here s a description of available weapons Chapter 2 User s manual 17 e atomic nuclear explosion all fighters arround your cursor are about to die e attract all fighters from all teams are packed near your cursor e berzerk super strong attack for a limited time crush your enemies e control you take the control of all other teams while your cursor stays in place e crazy all your opponents go crazy for some time acting with no logic e disappear you disappear for some time from the battlefield to reappear later some where else e escape fighters placed as far as possible from cursor magical
230. ead modei scrise is eee EE nani DEEE 109 spread threa EE cies ete unten shades 109 spreads per round cee eee eee 110 Srv backendS EES A 97 Start blug x i i e c e Rh RH EEEE E 110 start blue y uoae e pnl Reeds weaned den 110 Start cyan X i e per te te een den 110 Start cyan y c9 epp per HAIR ERR EE 111 Start green x osse de gu e reped Bee It SEENEN per Rr Ende EN Hit start lightblue x ce n Re ninang Et sStart lightblue y er eR Reid 111 Start magent x e s s ir per ees bee gs 112 Start magenta y i or RAPERE at 112 Start orange X EE 112 Start orang y xiii pg eee Rp tad aga 112 Start pink Xi o ces eR ELA RPILERAMDAG 112 Start pink y i issokne tonnnua dede ee RATS 113 Start position mode 0000eeeee ones 113 Start purple x siri sce opens aed eee ae epee 113 start p rple y sen urbe dde 113 Start redax sie v ces cidigas chen ee penes 114 Start red yi ekigou ser DS RA ERROPLSUUS 114 Start yelloW X 22de ete E Rt enoet 114 Start yellow y eem ee RR eher 114 system color auto EE sm edet 140 SyStem COlOr bg eee eee eee 149 Svstemn Color Ze ccc cece eee eee 149 T target fpS nest asda pens RE ER ER 173 team color blue sn n ete ee E 150 team color cyan ve 150 Leam color dead ccc eee eee eee eee 150 team color green ssss ic e emen 150 team color lightblue s 150 Leam color magenta sss ssss 151 team color orange sess ss
231. easing stamp number which is incre mented each time a build is done with a different source Latest versions use the stamp as the revision number the version 3rd number e 2006 12 18 0 0 1beta e 2007 09 07 0 0 2beta e 2008 01 30 0 0 3beta codename Napoleon stamp 549 Chapter 1 Introduction e 2008 09 19 0 0 4beta codename Clovis stamp 756 e 2008 12 20 0 0 5beta codename Henri IV stamp 1082 e 2009 01 10 0 0 6beta codename Cesar stamp 1124 e 2009 10 03 0 0 7beta codename Geronimo stamp 1465 e 2010 07 05 0 0 8beta codename Attila stamp 1658 e 2010 08 23 0 0 9beta codename Chuck stamp 2096 e 2011 07 29 0 0 10beta codename Gengis Kahn stamp 2562 e 2011 10 02 0 0 11beta codename Ho Chi Minh stamp 2785 e 2011 12 18 0 0 12beta codename Aguirre stamp 2938 e 2011 12 24 0 0 13beta codename Blackbeard stamp 2950 e 2014 01 04 0 2 3551 codename Davy Crockett e 2014 03 26 0 4 3681 codename Hannibal e 2015 05 06 0 6 3902 codename Goliath 1 2 4 Road map The game will probably be labelled 6 0 0 when network mode is up and running Until then there will probably be other improvements concerning gameplay and appearance eye candy There s a balance to keep between the major goals such as make that network thingy work and the very real fact that hacking must be fun 1 3 How you
232. ed to set up a working toolchain It s suggested you do this on a working GNU Linux box There are several solutions the recommended one being Open2x Read the online documentation on how to install Open2x Basically the following should work mkdir opt open2x check that you can write here svn co https open2x svn sourceforge net svnroot open2x trunk toolchain new open2x toolcha open2x gp2x apps sh cd open2x toolchain Then for your environment to be complete you need to set up some environment vari ables For instance export O PEN2X SYSTEM PREFIX opt open2x gcc 4 1 1 glibc 2 3 6 arm open2x linux export GP2X USER PREFIX HOME gp2x export CC 0PEN2X SYSTEM PREFIX bin arm open2x linux gcc export CPP 10PEN2X SYSTEM PREFIX bin arm open2x linux cpp export CXX OPEN2X_SYSTEM_PREFIX bin arm open2x linux g export AS 0PEN2X SYSTEM PREFIX bin arm open2x linux as export CFLAGS I 0PEN2X PREFIXj include I GP2X USER PREFIX include export CPPFLAGS I OPEN2X_PREFIX include I GP2X_USER_PREF1IX include export CXXFLAGS I OPEN2X_PREFIX include I GP2X_USER_PREF1IX include export LDFLAGS L OPEN2X_PREFIX lib L GP2X_USER_PREFIX lib export PATH GP2X_USER_PREF1IX bin OPEN2X_SYSTEM_PREFIX bin PATH In this setting there s a user HOME gp2x directory which will contain all the Liquid War 6 related libraries while the opt open2x remains untouched The
233. eee eee eee 158 broadcast value 2 eee eee eee 95 capture value sese eese 92 me GEET 160 chosen map lt yalue gt cece eee eee 98 cli backendascualuez rn 96 click to focus lt value gt 00 87 color alternate bg lt value gt 143 color alternate fg lt value gt 144 color base bg value ss 144 color base fg value ss 144 color conflict mode value 100 colorize cursor value 145 colorize lt value gt cece siis 144 commands per sec value 161 COD ig f116 5 nere pinnis pida ei 82 ge d E EE 67 E Eh oss seen ge eR Ga bud phate need 67 ee GR E CEET 161 cursor pot init value 100 cursor sensitivity lt value gt 88 cursor size value cece eee 145 custom alt lt value gt 2 eee eee eee 88 custom ctrl lt value gt eee eee eee eee 88 custom down lt value gt cece eee ee eee 88 custom enter value eee eee 88 ECHO ege lues 89 custom left lt value gt eee eee eee eee 89 custom pgdown value esses 89 custom pgup value sess eee 89 custom right value esses 89 custom up value 0 eee eee eee 90 SdaeMONn civic ege EEE EET 161 danger power lt
234. eens T2 4 3 9 show build date 00 cece ee eens 72 4 3 10 show build docdir 0 0 e ccc ee eee ee 2 4 3 11 sbhow boktenable allnone 00 cee eee eee eee T2 4 3 12 show build enable console 00 0 e eee eee eee 73 4 3 13 show build enable fullstatic sees 73 4 3 14 show build enable gcov 2 cece eee eee eee 73 4 3 15 show build enable gprof 0 00 c cece eee 73 4 3 16 zbhow bo ktenable otk 0 ccc eee ee 73 4 3 17 abhow boutl enable Ansteument 0000 e eee eee 73 4 3 18 obhow bouild enable modcacn ccc eee eee eee 73 4 3 19 show build enable mod csound 200eee eee 73 4 3 20 show build enable mod gll 0 2 cece eee eee 74 4 3 21 show build enable mod gles2 000 eee eee eee 74 4 3 22 show build enable mod http 000 cee eee ee eee 74 4 3 23 show build enable mod ogg 00 0 eee eens 74 4 3 24 sbhow boktenable mod aoft 0c eee eee eee 74 4 3 25 show build enable openmp 0000 cece eee eee 74 4 3 26 show build enable optimize 0 0 c cece eee eee 74 4 3 27 abhow boktenable paranoid 00 cee eee ee eee 75 4 3 28 show build enable profiler 00 e cece eee eee 75 4 3 29 show build enable valgrind 0 0 e cece e eee 75 4 3 30 show build endianness esee esses 75 4 3 31 show build gcc version 0 000 e cece eee ee 75 4 3 32 show build gnu 0 0 cece eee eee ee
235. eference 123 team profile magenta vulnerable XML key Type integer Default value 1920 Min value 5 Max value 2000 Defines how vulnerable the magenta team is This is a percentage if set to 200 then team will be attacked twice as much as any other team with the default value Setting this to a high value clearly disadvantages this team 4 11 97 team profile magenta weapon alternate id team profile magenta weapon alternate id lt value gt Command line option LW6_TEAM_PROFILE_MAGENTA_WEAPON_ALTERNATE_ID Environment variable team profile magenta weapon alternate id XML key Type integer Default value 15 Min value 0 Max value 19 Id of the default alternate weapon for the magenta team see the documentation about weapons to know what these ids mean 4 11 98 team profile magenta weapon id team profile magenta weapon id lt value gt Command line option LW6_TEAM_PROFILE_MAGENTA_WEAPON_ID Environment variable team profile magenta weapon id XML key Type integer Default value 6 Min value 0 Max value 19 Id of the default weapon for the magenta team see the documentation about weapons to know what these ids mean 4 11 99 team profile magenta weapon mode team profile magenta weapon mode lt value gt Command line option LW6_TEAM_PROFILE_MAGENTA_WEAPON_MODE Environment variable team profile magenta weapon mode XML key Type integer Default value 1 Min value 0 Max value 2 Weapon mode for magenta team
236. el functions Therefore MinGW is more adapted for it does not define all these functions and allows any library to hook on Microsoft Windows internals directly Point is then you also loose the cool effect of Cygwin which is to have a complete glibc available including network functions like select defined the POSIX way and not the WinSock way If you ever ported code from POSIX sockets to WinSock 2 you know what I mean Using MinGW is also embarassing for some libraries won t compile easily and for instance programs which heavily rely on a real TTY interface to work are usually hard to port This includes ncurses and GNU readline Liquid War 6 tries to have workarrounds for all this and in some cases the workarround is simply that embarassing code is not compiled on Microsoft Windows For this reason some features are not available on this platform Period Now the reason you need MSYS and not only MinGW is that MSYS will allow configure scripts to run and this eases up the porting process a lot MinGW and MSYS packages are downloadable on the SourceForge MinGW download page Alternatively there is a mirror on ufoot org but files might be outdated To compile Liquid War 6 first download and unzip all the following files in the same directory for instance C MSYS If you do not have any tool to handle tar gz and tar bz2 files under Microsoft Windows which is likely to be the case when MSYS is not installed yet you can untar these on
237. en game won t do anything network related No listen no connect no nothing You are playing locally 4 9 11 srv backends srv backends lt value gt LW6_SRV_BACKENDS Srv backends Type string Default value tcpd udpd httpd Command line option Environment variable XML key The server backends to use Most of the time the default is fine change it only if you specifically want to disactivate some protocol or if you want to activate a custom made server backend It s a comma separated list 98 Liquid War 6 4 10 Map parameters 4 10 1 chosen map chosen map lt value gt Command line option LW6_CHOSEN_MAP Environment variable chosen map XML key Type string Default value subflower The last map chosen by the player locally This is the map which will be used for a quick start game a local game or a game started as a server 4 10 2 force force value Command line option LW6 FORCE Environment variable force XML key Type string Default value respawn team color conflict mode A comma separated list of options which should be ignored when reading map XML files For instance if this contains rounds per sec moves per round then whatever values were defined for this in rules xml then game will ignore them and use the user s values stored in config xml running the game at the requested speed This ultimately allows the player to control everything despite the values set
238. ent and handle input mouse and keyboard SDL_image This SDL extension is used to read textures and other graphics from disk FreeType 2 This library is required by SDL_ttf to draw fonts SDL ttf This SDL extension is used to draw fonts It is UTF 8 enabled libcaca This library transforms bitmaps into ascii art images allowing an alternative style of display TTY compatible libcsound While this tool is not used yet it is meant to be the final sound backend as CSounds offers great power to the composer enabling truely dynamically generated sound amp music For now Liquid War 6 tries to detect csound 4 but as the mainstream 10 Liquid War 6 stable release is now 5 an update is needed It will probably be updated fixed Liquid War 6 using csounds 5 some day for now you can safely not install csound on your system and enjoy all the possibilities of the game SDL_mixer This SDL extension is used to allow dynamic mixing of sounds and it also provides a builtin 0GG Vorbis file renderer libcURL Used to handle HTTP requests the idea being not to re invent the wheel but use a robust standards compliant generic library 2 3 3 Optional tools Those tools are used upstream to maintain the game you normally do not need them to build the game as is but if you modify the source code and hack the game you might be interested in installing them Perl 5 Liquid War 6 uses Perl for many tedious task including but not li
239. epository with upstream releases To synchronize yourself with upstream developments go into your copy the directory created by tla get and type 64 Liquid War 6 tla star merge liquidwar60sv gnu org liquidwar6 beta 0 1 This will apply locally all the changes that happened since the last synchronization Of course this is one way to work you can decide to cherry pick patches and such stuff but for most dayly uses a good ol star merge is fine Not that star merge will only apply patches on your working copy not on your repos itory The only way to actually commit the modifications on the repository is to use the commit command 3 16 5 Submitting patches When using Arch you can of course still send patches created with diff or even send updated files directly the way you would without revision control But it can be more convenient to either e Send the patches stored in the depot home me tla archives in our example e Make patches using t1a mkpatch Here s an example of an mkpatch command and which will compute the differences between a previous liquidwar6 beta 0 4 patch 2 snapshot and a not yet commited latest version tla mkpatch arch pristine trees unlocked liquidwar6 liquidwar6 beta liquidwar6 b This will create a my patch directory which can be gzipped and sent by mail 3 16 6 Recover from broken lock Sometimes when signing a patch you might enter the wrong passphrase several times or you might
240. er Text may be at most 25 words A ransparent copy of the Document means a machine readable copy represented in format whose specification is available to the general public that is suitable for revising the document straightforwardly with generic text editors or for images com posed of pixels generic paint programs or for drawings some widely available drawing editor and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters copy made in an otherwise Transparent file format whose markup or absence of markup has been arranged to thwart or discourage subsequent modification by readers is not Transparent An image format is not Transparent if used for any substantial amount of text A copy that is not Transparent is called Opaque Examples of suitable formats for Transparent copies include plain ASCII without markup Texinfo input format LaTEX input format SGML or XML using a publicly available DTD and standard conforming simple HTML PostScript or PDF designed for human modification Examples of transparent image formats include PNG XCF and JPG Opaque formats include proprietary formats that can be read and edited only by proprietary word processors SGML or XML for which the DTD and or processing tools are not generally available and the machine generated HTML PostScript or PDF produced by some word processors for output purposes only
241. er Texts being list If you have Invariant Sections without Cover Texts or some other combination of the three merge those two alternatives to suit the situation If your document contains nontrivial examples of program code we recommend releasing these examples in parallel under your choice of free software license such as the GNU General Public License to permit their use in free software Appendix G Indexes Appendix G Indexes G 1 Concept index C Compilations 2e oerte repre das 13 42 OVS EE 64 D Download ides uber reed vice seh S ra reg 6 G E per 64 GPL GNU General Public License 239 H ek EE 28 G 2 Function and keyword index aboutS lt valuery Eeer E tone RIT AE 67 ambiance exclude value 93 ambiance Zilesscualuez 94 ambiance filter lt value gt 94 animation density value 141 animation speed lt value gt 142 scaudit l i520 a a tb xeu t ee iptegkbess 67 auto release delay value 87 background color auto lt value gt 135 background color root bg value 142 background color root fg value 142 background color stuff bg value 142 background color stuff fg value 143 background style value 143 base64 decode oec eiie nanos yada 159 base64 encOde iore e I E E PIC PES 160 cbench i senda RR EEL
242. er push ldr Wrapper on lIw6tsk loader push dr 4 17 Script hooks 213 C function exported to Guile C function exported to Guile C function exported to Guile Chapter 5 C API 215 5 C API This chapter contains a description of all modules and a list of all documented C functions in the program It contains many references and is self generated from C comments using gdoc by Simon Josefsson In order to reduce the number of pages of printed output this complete reference is by default disabled in printable versions of the documentation PostScript PDF This is both to make the manual more readable and to avoid wasting paper Think about the environment It is however available in the HTML version of the documentation which you can read online on http www gnu org software liquidwar6 manual html_node Additionnally the following adresses contain various view on the source code giving informations on all the internal and public C interfaces e http www ufoot org liquidwar v6 doc coverage the lcov output when running liquidwar6 test It shows what functions are actually tested and how many times they are called e http www ufoot org liquidwar v6 doc global the GNU global output gives complete cross references macros headers contants declaration It s a very good place to start browsing the code e http www ufoot org liquidwar v6 doc cyclo the pmccabe output shows the cyclomatic complexity of f
243. esting purposes e enable silent will allow compilation without any sound backend The game won t play any music in that state but one can still wish to compile what is compilable for testing purposes e enable allinone will stuff all the internal libraries into one big executable Very convenient for profiling The major drawback is that you need to have all the optional libraries installed to compile all the optional modules Another side effect is that with this option there s no more dynamic loading of binary modules so if your platform has a strange or buggy support for so files this option can help e enable fullstatic will build a totally static binary that is using the static option for gcc and the all static option for libtool Currently broken this option could in the future allow for building binaries that run pretty much everywhere without requiring any dependency but a Kernel e enable gprof will enable profiling informations This will activate enable allinone else you would only track the time spent in functions in the main liquidwar6 executable and exclude lots of interesting code contained in dynamic libraries e enable instrument will instrument functions for profiling This will turn on the finstrument functions switch when compiling so that the hooks cyg profile func enter and cyg profile func exit are called automatically Then you can link against tools like cprof or FunctionCheck
244. ex html Chapter 5 C API 219 5 16 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libdsp html 5 17 libdyn 5 17 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib dyn index html 5 17 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libdyn html 5 18 libgen 5 18 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib gen index html 5 18 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libgen html 5 19 libgfx 5 19 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib gfx index html 5 19 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libgfx html 5 20 mod gl1 5 20 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib gfx mod gli gl utils index html as there are many sub directories in this module please refer to the test coverage directory index for complete information 5 20 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html_node mod_002dg11 html 220 Liquid War 6 5 21 mod gles2 5 21 1 Overview View lcov test coverage results on http www
245. f processors contexts might give slightly different results because of rounding problems e It s a two pass algorithm the first step is to calculate the distance from any point of the map to the closest cursor This step is always imperfect the shortest path is never really found the naive approach is to consider that if a place on the map is at distance N of the cursor then in the worst case all adjacent places are at distance N 1 As of Liquid War 6 the corresponding code is in src lib ker ker spread c The second step is to move the fighters make them act In Liquid War 6 the corresponding code is in src lib ker ker move c One can have a look at the code source for the function lw6ker_game_state_do_round in src lib ker ker gamestate c to see how these are called 3 7 2 Level game struct game state and pilot Most of the algorithm code has something to do with the following types which are structs e lw6map level t defined in which is used to store the level data e lw6ker game struct t defined in src lib map map h which is used to store the mem ory data required by the algorithm but which are immutable There s a difference between those data and the ones stored in the level struct For instance those data are private since 1w6ker game struct t is opaque while everything is 1w6map Level t is public Also data in lw6ker game struct t might be highly redundant for performance issues and is optimized for speed whi
246. fense fighter defense value Command line option LNG FIGHTER DEFENSE Environment variable fighter defense XML key Type integer Default value 50 Min value 0 Max value 10000 102 Liquid War 6 Defines how fast fighters will regenerate after an attack When this parameter is set low an attacked fighter which is very dark and almost dead will take a very long time to regain energy If the parameter is set high it can almost instantaneously regain energy 4 11 8 fighter new health fighter new health lt value gt Command line option LW6_FIGHTER_NEW_HEALTH Environment variable fighter new health XML key Type integer Default value 5000 Min value 1 Max value 10000 Defines how healthy fighters will be when they appear on the map This can be either at the beginning of the game of when a fighter changes team Setting this low will allow battefields to switch from one side to another very fast for freshly gained fighters will be feeble and very likely to return to their original camp To calibrate this parameter keep in mind that the absolute maximum health a fighter can have is always 10000 ten thousands 4 11 9 fighter regenerate fighter regenerate value Command line option LW6_FIGHTER_REGENERATE Environment variable fighter regenerate XML key Type integer Default value 5 Min value 0 Max value 10000 Defines at which speed fighters will self regenerate without even begin packed to ge
247. ferent states of the game A backup state which can be used any time to go back in time and get the game in a stable 100 sure state A reference state which is correct but ever changing Basically backup plus all the orders received between backup and reference gives reference And finally a draft state which is as up to date as possible but might be wrong This is typically interesting in network game where we want to show something moving something fast even if there s lag on the network and other computers fail to send information in time In this case we display draft while still keeping reference and updating it when we finally receive valid informations Backup would be used to send bootstrap information when people are joining a new game or to check up if things are going right A special libbot module is here to handle bot algorithms A bot is just a simple move function which takes a game state as an input and returns an x y position just the way a mouse handler would How complex a bot is under the hood depends on the type of bot 34 Liquid War 6 Current bots are really basic Additionnally libsim will run dummy fight simulations to find out wether some team has a real advantage on another one speaking of team profiles depending on colors The libgfx module handles all the graphics stuff It is itself splitted in several sub modules that is it does not do anything but load a module such as mod g11 which will actually conta
248. file logs etc It does not use HOME 1liquidwar6 like the default UNIX port The Mac OS X port also has a special behavior in order to load some libraries with dlopen SDL image does this with libpng and libjpeg it needs to set DYLD_FALLBACK_ LIBARY PATH to a value that contains these libraries This is typically in the bundle dis tributed on the disk image On a developper s computer this problem does not appear for those libs are often in places like 48 Liquid War 6 e usr local lib e usr X11 lib e opt local lib So the program sets DYLD FALLBACK LIBARY PATH but not DYLD LIBRARY PATH else it breaks internal OS X stuff which relies for instance on libjpeg library that has the same name but different contents but it needs to do it before it is even run else the various dyld functions do not acknowledge the change That is calling the C function setenv even before dlopen has no effect So the program calls exec to re run itself with the right environment variable This is why on Mac OS X there are two lines exactly the same ones displaying the program description when it is started in a terminal 3 8 6 GP2X port This is not working yet but there are good hopes that some day Liquid War 6 can run on a GP2X console This handled gaming device uses a Linux kernel on an ARM processor does support most GNU packages through cross compilation and has basic SDL support To compile Liquid War 6 for GP2X you first ne
249. foreground color for the hud frame Ignored if hud color auto is set Can be RGB RGBA RRGGBB or RRGGBBAA 4 13 19 hud color text bg hud color text bg value Command line option LNG HUD COLOR TEXT BG Environment variable hud color text bg XML key Type color Default value 333333 Defines the background color for hud text Ignored if hud color auto is set Can be RGB RGBA RRGGBB or RRGGBBAA 4 13 20 hud color text fg hud color text fg value Command line option LW6 HUD COLOR TEXT FG Environment variable hud color text fg XML key Type color Default value ZZffffff Defines the foreground color for hud text Ignored if hud color auto is set Can be Z RGB ZRGBA RRGGBB or RRGGBBAA 4 13 21 hud style hud style value Command line option LNG HUD STYLE Environment variable hud style XML key Type string Default value floating The hud is where informations about the game are displayed This means who is winning are other status like informations Possible values include floating and tactical 4 13 22 keep ratio keep ratio lt value gt Command line option LW6_KEEP_RATIO Environment variable keep ratio XML key Type boolean Chapter 4 Reference 147 Default value true Defines wether the map should keep its ratio or if it should be stretched to fill the shape of your screen 4 13 23 menu color default bg menu color default bg v
250. from this one Default is usr local 4 3 82 show run dir show run dir Command line option Shows the run directory usually the path where the binary is It depends on how and where the program is launched It is guessed from the argc argv values at runtime 4 3 83 show script file show script file Command line option Shows the main script file path This file is very important since the program is more or less hudge scheme interpreter and this file is the file loaded by Guile In short it is the main program Default is usr local share liquidwar6 version script liquidwar6 scm 4 3 84 show user dir show user dir Command line option Shows the user directory path This is where run time data config files log files are stored Default is SHOME liquidwar6 4 4 Path options 82 Liquid War 6 4 4 1 config file config file Command line option Type string Default value SHOME liquidwar6 config xml Set the config file path This enables you to use whatever config file you like keeping all other informations in the same place 4 4 2 data dir data dir Command line option Type string Default value usr local share liquidwar6 lt version gt data Set the data directory By changing ths value you ll be able to use an alternative data directory 4 4 3 log file log file value Command line option LW6 LOG FILE Environment variable log file XML key Type string
251. ge if set to 200 then team will attack twice as much as any other team with the default value Setting this to a high value clearly advantages this team 4 11 133 team profile yellow fast team profile yellow fast value Command line option LNG TEAM PROFILE YELLOW FAST Environment variable team profile yellow fast XML key Type integer Default value 70 Min value 5 Max value 2000 Changes the speed of the yellow team This is a percentage if set to 50 then team will move twice slower than other teams with the default parameter Setting this high is very likely to advantage the team 4 11 134 team profile yellow handicap team profile yellow handicap value Command line option LW6 TEAM PROFILE YELLOW HANDICAP Environment variable team profile yellow handicap XML key Type integer Default value 100 Min value 10 Max value 1000 Defines the handicap for the yellow team 4 11 135 team profile yellow mobile team profile yellow mobile value Command line option LW6 TEAM PROFILE YELLOW MOBILE Environment variable team profile yellow mobile XML key Type integer Default value 0 Min value 3 Max value 3 Increases or decreases if negative the number of move attack defense tries for the yellow team If set to a high value team will appear more mobile and do more things but it won t change its cruising speed It s not obvious to tell wether this is an advantage or not but it clearly c
252. ght remain the same for instance message translations localedir But most game specific data including maps graphics sounds will be searched according to the new given parameter 4 4 10 script file script file Command line option Type string Default value usr local share liquidwar6 lt version gt script liquidwar6 scm Set the main script file path This file is very important since the program is more or less a hudge scheme interpreter and this file is the file loaded by Guile In short it is the main program 4 4 11 user dir user dir value Command line option LW6 USER DIR Environment variable user dir XML key Type string Default value SHOME liquidwar6 Set the user directory path This is where run time data config files log files are stored If you override this value other parameters such as where the config and log files reside will change 4 5 Players options 4 5 1 player1 control playeri control value Command line option LW6 PLAYER1 CONTROL Environment variable Chapter 4 Reference 85 player1 control XML key Type string Default value mouse Control for the first player must be mouse keyboard joystickl joystick2 or custom 4 5 2 playerl name playeri name value Command line option LW6_PLAYER1_NAME Environment variable player1 name XML key Type string Default value lt username gt Name of the first player the player used by defau
253. h drives me to rewrite it completely First because it s impossible to implement it without some heavy work Then because I find it very motivating B 3 3 Hey you forgot my idea Many gamers submitted suggestions either by mail or by posting messages on the mailing list Don t worry I keep them Not reading them here does not mean I won t implement them It simply means I won t implement them first I first need the game basically function before enhancing it with fancy stuff B 4 Road map As I stated on the mailing list when thinking about Liquid War 6 think of years rather than months unless I get fired jobless or spend several months in a hospital with a laptop Note that this road map takes it for granted that I ll be the lone coder on the project It s unlikely that someone is going to help me for the first stages until there s at least something real something playable Something that proves that the concept is valid Besides real team work implies a significant overhead especially at project start It s hard to figure out how to distribute tasks when the tasks themselves are not clearly identified But for the rest starting in 2007 or 2008 it s possible that external help might greatly help e 2005 Project framework should be done This implies that the scripting engine is up and running graphical mode works config and data loading work basic menus are available Nothing playable e 200
254. hadburn A music filter used to select the files which are played while navigating in the menus It works like music filter except this one is not related to a peculiar map This is not a complex regex enabled filter just a plain string search Even the wildcard won t work 4 8 4 fx volume fx volume value Command line option LW6 FX VOLUME Environment variable fx volume XML key Type float Default value 0 3 Min value 0 Max value 1 Set the sound effects volume This is a floating point value 0 is mute Maximum value is 1 4 8 5 music volume music volume lt value gt Command line option LW6_MUSIC_VOLUME Environment variable music volume XML key Type float Default value 0 6 Min value 0 Max value 1 Set the music volume This is a floating point value 0 is mute Maximum value is 1 4 8 6 snd backend snd backend lt value gt Command line option LW6_SND_BACKEND Environment variable snd backend XML key Type string Chapter 4 Reference 95 Default value ogg Sets the sound backend AKA snd to use Can be ogg or csound but only ogg will produce sound in the current release 4 8 7 water volume water volume value Command line option LNG WATER VOLUME Environment variable water volume XML key Type float Default value 0 2 Min value 0 Max value 1 Set the volume for water sounds This is a floating point value 0 is mute Maximum va
255. hanges the behavior 4 11 136 team profile yellow vulnerable team profile yellow vulnerable lt value gt Command line option LW6_TEAM_PROFILE_YELLOW_VULNERABLE Environment variable team profile yellow vulnerable XML key Type integer Default value 90 Min value 5 Max value 2000 Defines how vulnerable the yellow team is This is a percentage if set to 200 then team will be attacked twice as much as any other team with the default value Setting this to a high value clearly disadvantages this team 132 Liquid War 6 4 11 137 team profile yellow weapon alternate id team profile yellow weapon alternate id lt value gt Command line option LW6_TEAM_PROFILE_YELLOW_WEAPON_ALTERNATE_ID Environment variable team profile yellow weapon alternate id XML key Type integer Default value 9 Min value 0 Max value 19 Id of the default alternate weapon for the yellow team see the documentation about weapons to know what these ids mean 4 11 138 team profile yellow weapon id team profile yellow weapon id lt value gt Command line option LW6_TEAM_PROFILE_YELLOW_WEAPON_ID Environment variable team profile yellow weapon id XML key Type integer Default value 5 Min value 0 Max value 19 Id of the default weapon for the yellow team see the documentation about weapons to know what these ids mean 4 11 139 team profile yellow weapon mode team profile yellow weapon mode lt value gt Command line option LW6_T
256. he General s dying words Appendix D Links 237 Appendix D Links This section lists various Internet Liquid War related links D 1 Official links These are the official links hopefully you ll find everything you need here e http www gnu org software liquidwar6 Liquid War 6 homepage e http www gnu org software liquidwar6 manual Online manual e http ftp gnu org gnu liquidwar6 GNU downloads source only e http download savannah gnu org releases liquidwar6 Savannah downloads source and binaries e http www ufoot org download liquidwar v6 ufoot org downloads mirror e http www ufoot org liquidwar v6 snapshots Daily snapshots e http www ufoot org liquidwar v6 doc Automatically generated doc e http www ufoot org jenkins job liquidwar6 Jenkins continuous integration e http git savannah gnu org cgit liquidwar6 git GIT repository e http savannah gnu org projects liquidwar6 Project on Savannah e http savannah gnu org bugs func additem amp group liquidwar6 Submit a bug report e http lists gnu org archive html help liquidwar6 Mailing list archives e http ufoot org 8056 Permanent seed server running latest snapshot e irc irc freenode net liquidwar IRC channel liquidwar on irc freenode net D 2 Other sites Note that some of these links might link to and or promote proprietary software It s impor tant to emphasize Liquid War 6 is free software free as in speech
257. he Program specifies that a certain numbered version of the GNU General Public License or any later version applies to it you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation If the Program does not specify a version number of the GNU General Public License you may choose any version ever published by the Free Software Foundation If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used that proxy s public statement of acceptance of a version permanently authorizes you to choose that version for the Program Later license versions may give you additional or different permissions However no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version Disclaimer of Warranty THERE IS NO WARRANTY FOR THE PROGRAM TO THE EXTENT PER MITTED BY APPLICABLE LAW EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND OR OTHER PARTIES PROVIDE THE PROGRAM AS IS WITHOUT WARRANTY OF ANY KIND EITHER EX PRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU SHOULD THE PROGRAM PROVE DEFEC TIVE YOU ASSUME THE COST OF ALL NECESSARY SERVICING REPAIR OR COR
258. he bottom border at position 40 239 will reapper on the top border at position 280 0 You can combine it with x polarity 4 11 151 z polarity z polarity value Command line option LNG Z POLARITY Environment variable z polarity XML key Type integer Default value 0 Min value 0 Max value 1 Defines how the map will be wrapped on the Z deep axis If set to 0 nothing is wrapped If set to 1 when using a 4 layer map for instance fighters on layer 1 will be able to go directly to layer 4 even if layers 2 and 3 are filled with walls A value of 1 is forbidden this is not like x and y axis it does not really make sense Consider this an advanced setting which might save a layer in some tricky cases the default value of 0 should fit in most cases 4 12 Map hints xml 4 12 1 background color auto background color auto value Command line option LW6 BACKGROUND COLOR AUTO Environment variable background color auto XML key Type boolean Default value true Defines wether hud colors will be set automatically from base and alternate colors This is a time saver to keep map designers from requiring to redefined every single color 136 Liquid War 6 in the game You only need to set color base bg color base fg color alternate bg and color alternate fg Then hud color frame bg hud_color_frame_fg hud_color_text_bg and hud_color_text_fg will be automatically set 4 12 2 downsize using bench value
259. he entry in the SUBDIRS and LW6_LIBS sections of src lib Makefile am add the entry in the AC CONFIG FILES of configure ac run automake and autoconf edit src lib lw6 options c and add a call to lw6xyz_test for both check and test cases edit src lib lw6 test c and add a reference to the 1w6xzy test function in every internal abc library that depends on xyz edit the 1w6abc test function so that it contains a reference to 1w6xzy test in every internal abc library that depends on xyz xyz h edit the abc abc h header so that it includes xzy xyz h Also edit src lib liquidwar6 h in in every internal abc library that depends on libxyz add a reference to Xyz libxyz la inf the _LDADD section create a new src lib 1w6 funcsxyz c file which declares Guile bindings for this lib if needed edit doc gdoc update sh and add the entry for xyz edit doc Makefile am and add xyz gdoc texi in gdoc_TEXINFOS edit doc doxygen update sh and add the entry for xyz edit doc Makefile am and add xyz doxygen texi in doxygen TEXINFOS edit doc perf update sh and add the entry for xyz in doc run gdoc update sh doxygen update sh and perf update sh edit doc doxygen Makefile am and add the dependency on src lib xyz xyz h edit doc liquidwar6 texi to and a new node section for this internal library 62 Liquid War 6 e edit doc deps dot to update dependencies e run configure amp amp make fix code if needed 3 15
260. he name which will be displayed when listing servers This is different from player name for there can be several players on a single com puter By default this will be set to hostname Chapter 4 Reference 4 9 8 password password value LW6 PASSWORD password Type string Default value 97 Command line option Environment variable XML key The password to use for network games Do not use a valuable password as this is stored as clear text on your hard drive Still the game will only send a hash checksum of the password on the network so eavesdropper won t be able to read it They can see the hash checksum and use it if clever but they can t guess the real password A blank password means anyone can join your games when you act like a server 4 9 9 public url public url value LW6 PUBLIC URL public url Command line option Environment variable XML key Type string Default value The public URL of your server By default the game will pick up one for you In fact the clients discovering your server should guess the public URL probably http lt your ip gt lt your port gt but you might need to use your own settings if you are using NAT or an Apache reverse proxy to rewrite HTTP requests 4 9 10 skip network Command line option Environment variable XML key skip network lt value gt LW6_SKIP_NETWORK Skip network Type boolean Default value false If set th
261. he peer status and maintain consistent informations It has two arguments the first one is key a 32 bit hexa integer which will upon reception ne matched against a corresponding FOO messaged used to figure out OK this is the BAR message associated to this FOO message I sent before The second one serial is used to inform the peer that possibly there are new messages to fetch from us The peer in turn might fire MISS messages but without this feature peers could fall asleep and forget to pump messages especially on non reliable connections JOIN lt seq gt lt serial gt Used to join a game In fact having said HELLO and exchanged FOO and BAR messages does not mean one has joined the game for real The reason for this is that those messages help establishing a stable communication channel then one needs to come in with the right seq and serial There are basically two cases First case seq can be zero in that case it means we re trying to connect on an existing server which will in turn send a JOIN message with a non zero value giving the current seq Second case seq is non zero in that case it means we re answering a connection request In both cases serial is a serial number other peers should use as a minimum limit and never ask for messages with a serial lower than that GOODBYE symetric of HELLO should be called on disconnection however the peers should handle the case when no GOODBYE message is sent th
262. he program itself That is to say most if its content is already available to you if you have the game installed Running liquidwar6 list and liquidwar6 about lt keyword gt is very likely to give you the very same informations the advantage being that you ll be sure the informa tion is up to date and corresponds to the exact version of the program you have However publishing this in a reader friendly way is convenient plus it enables web search engines to harvest the content 4 1 Basic options 4 1 1 about about value Command line option Type string Will allow you to get informations about a given keyword Let s say that for instance you want informations about the keyword map path Simply run iquidwar6 about map path Note that this internal self documentation system can describe command line switches as well as XML config file parameters or environment variables and even some Guile script functions The list command line switch will give you the list of all available keywords 4 1 2 audit audit Command line option Display all path values defaults and current settings This output is very usefull to track down problems such as missing directories broken installations If you get an error message that suggests some file is missing then give this option a try 4 1 3 copyright copyright Command line option Returns the copyright notice for the program 4 1 4 credits credits Command line
263. he rest who need it themselves libjpeg Maps can also be provided as jpeg files so libjpeg is required as well SQLite 3 Used to handle the list of available servers 2 3 2 Optional libraries While all these libraries are theorically optional the game will successfully compile without them you ll obviously need for instance one graphics backend Otherwise you ll simply have no display This is not acceptable As of today one can reasonnably consider all SDL related libraries are required The rest is truely optional libcunit Provides hopefully more readable test output It s not strictly mandatory but still highly recommended Building without is just allowed in case some rare and bizarre platform would not have a libcunit port ncurses Required by readline needs to be there otherwise readline might not be detected properly on some systems GNU readline Used to handle input on the console Console is not absolutely manda tory but it s a must have if you want to hack the game Console unavailable does not mean you won t get anything on stdout but the interactive script shell just won t work GTK Used to display error critical messages so that users who launch the game by clicking on a icon that is not from the console are still visually informed of important messages Mesa This library provides an API similar to OpenGL and enables 2 D and 3 D drawing SDL SDL is used to set up a working OpenGL environnem
264. her a way to get credit for their work while not being considered responsible for modifications made by others This License is a kind of copyleft which means that derivative works of the document must themselves be free in the same sense It complements the GNU General Public License which is a copyleft license designed for free software We have designed this License in order to use it for manuals for free software because free software needs free documentation a free program should come with manuals providing the same freedoms that the software does But this License is not limited to software manuals it can be used for any textual work regardless of subject matter or whether it is published as a printed book We recommend this License principally for works whose purpose is instruction or reference 1 APPLICABILITY AND DEFINITIONS This License applies to any manual or other work in any medium that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License Such a notice grants a world wide royalty free license unlimited in duration to use that work under the conditions stated herein The Document below refers to any such manual or work Any member of the public is a licensee and is addressed as you You accept the license if you copy modify or distribute the work in a way requiring permission under copyright law A Modified Version of the Document means
265. his or that option let him say it in this file See Section 4 13 Map style xml page 141 3 1 15 teams xml In this file one can specify per map team settings In short this is where you can say how many bots you want which color and so on This can be on a per map basis so that each map has different customized settings some maps might be fun with only one bot some other maps might be fun packed with 8 opponents Chapter 3 Hacker s guide 29 Technically teams xml will allow you to define up to 4 players and 9 bots This is an awfull lot considering there are only 10 colors Basically it s OK to simply define e 2 players player1 and player2 e 4 bots bot and bot2 It might also be a clever idea to just set up player2 and bot1 being the same color in case of a conflict the game will pick up another color but in practice those two entries often correspond to the second player bot or human coming on the battlefield All in all this represents 5 entries to set up main player other player or first bot which can be the same then 3 more bots it s OK to have the rest undefined or set to defaults Note that this can also simply be unset and in that case the game defaults will apply and the user will be able to change them whereas if you set these up the player will somewhat force to used the map settings See Section 4 14 Map teams xml page 154 3 1 16 Resampling This is a very important point Liquid W
266. household purposes or 2 anything designed or sold for incorporation into a dwelling In determining whether a product is a consumer product doubtful cases shall be resolved in favor of coverage For a particular product received by a particular user normally used refers to a typical or common use of that class of product regardless of the status of the par ticular user or of the way in which the particular user actually uses or expects or is expected to use the product A product is a consumer product regardless of whether the product has substantial commercial industrial or non consumer uses unless such uses represent the only significant mode of use of the product Installation Information for a User Product means any methods procedures autho rization keys or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source 244 Liquid War 6 The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made If you convey an object code work under this section in or with or specifically for use in a User Product and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term regardless of how the
267. i joystick1 pop button c c lw6gui joysticki pop button c Wrapper on lw6gui joystickl pop button c 4 16 46 c Iw6gui joystick1 pop button d c lw6gui joysticki pop button d Wrapper on lw6gui joystick1 pop button d 4 16 47 c Iw6gui joystick1 pop button e c lw6gui joysticki pop button e Wrapper on lw gui joystick1l pop button e 4 16 48 c Iw6gui joystick1 pop button f c lw6gui joysticki pop button f Wrapper on lIw gui joystick1 pop button f Liquid War 6 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile Chapter 4 Reference 4 16 49 c Iw6gui joystick1 pop pad down c lw6gui joysticki pop pad down Wrapper on lw6gui joystickl pop pad down 4 16 50 c Iw6gui joystick1 pop pad left c lw6gui joysticki pop pad left Wrapper on lw6gui joystick1 pop pad left 4 16 51 c Iw6gui joystick1 pop pad right c lw6gui joysticki pop pad right Wrapper on lw6gui joystickl pop pad right 4 16 52 c Iw6gui joystick1 pop pad up c lw6gui joysticki pop pad up Wrapper on lw6gui joystick1 pop pad up 4 16 53 c Iw6gui joystick2 get move pad c lw6gui joystick2 get move pad Wrapper on lw6gui joystick2 get move pad 4 16 54 c Iw6gui
268. ic License Of course your program s commands might be different for a GUI interface you would use an about box You should also get your employer if you work as a programmer or school if any to sign a copyright disclaimer for the program if necessary For more information on this and how to apply and follow the GNU GPL see http www gnu org licenses The GNU General Public License does not permit incorporating your program into proprietary programs If your program is a subroutine library you may consider it more useful to permit linking proprietary applications with the library If this is what you want to do use the GNU Lesser General Public License instead of this License But first please read http www gnu org philosophy why not lgpl html Appendix F GNU Free Documentation License 251 Appendix F GNU Free Documentation License Version 1 3 3 November 2008 Copyright 2000 2001 2002 2007 2008 Free Software Foundation Inc http fet org Everyone is permitted to copy and distribute verbatim copies of this license document but changing it is not allowed 0 PREAMBLE The purpose of this License is to make a manual textbook or other functional and useful document free in the sense of freedom to assure everyone the effective freedom to copy and redistribute it with or without modifying it either commercially or non commercially Secondarily this License preserves for the author and publis
269. ick 184 c lw6gui mouse pop wheel down 184 c lw6gui mouse pop wheel up 184 Cc Iwohlp about ieeneibe es er E nenia s 184 c lw6hlp get default value 184 C lIwOhlp Hist 5 02019 diate m D eae 184 CLIv hlp List advanced 184 c lw6hlp list aliases inin 184 c Iw6hlp list dOC i e epe m rr v 184 c Iw6hlp list funCS s e rg 185 CLIv hlp List grapnbice 185 c lw6hlp list hooks sees 185 cHlw6hlp list 1nput Eeer Eer 185 C lw6hlp list Map EE 185 c lw6hlp list map hints 185 c lw6hlp list map rules 185 c lw6hlp list map style een 185 c lw6hlp list map teams 185 c lw6hlp list network sss 185 c Iwohlp list path i e nh 186 c Iwohlp list playerS eee ers 186 c lw6hlp list quiCk 222o0 x Rel 186 c lw6hlp list ShOW 2e 4k wem meros 186 c Iwohlp list sound 2 RE Reid 186 c lw6hlp list team colors 186 c lw6hlp list weaponsS deck enu 186 c lw6img screenshot sssssssrrrrrrso 186 c lw6ker add cursor eee 186 c lw6ker build game state 186 c lw6ker build game struct 187 c lw6ker cursor exists esses 187 266 c lw6ker did cursor win 0 187 c lw6ker do round 0 cece e ee eee 187 c lw6ker dup game state 187 c lw6ker game state checksum
270. idth Note that the graphics backend might ignore this hint Use with its companion option height A negative value will force the use of a default value 4 7 7 windowed mode limit windowed mode limit value Command line option LNG WINDOWED MODE LIMIT Environment variable windowed mode limit XML key Type float Default value 0 95 When switching back from fullscreen mode to windowed mode if we re in maximum resolution then this coefficient will be applied before resizing the window The idea is that obviously a windowed mode is prefered when a little smaller that totally fullscreen So set this to a value just below 1 0 4 8 Sound options 4 8 1 ambiance exclude ambiance exclude value Command line option LW6 AMBIANCE EXCLUDE Environment variable ambiance exclude XML key Type string Default value If this string is present in a music file name this file won t be played during the menus it will be excluded from the list 94 Liquid War 6 4 8 2 ambiance file ambiance file value Command line option LW6 AMBIANCE FILE Environment variable ambiance file XML key Type string Default value A music file which will be used to be played during the menus If not found game will fallback on random files 4 8 3 ambiance filter ambiance filter value Command line option LW6 AMBIANCE FILTER Environment variable ambiance filter XML key Type string Default value C
271. idwar6 log csv 4 3 76 show map dir show map dir Command line option Shows the map directory This is where builtin maps are stored Default is usr local share liquidwar6 lt version gt map 4 3 77 show map path show map path Command line option Shows the map search path This is where the game searches for maps It s the com bination of command line arguments and builtin paths Might return more directories than the one specified in a single map path dirl dir2 argument Chapter 4 Reference 81 4 3 78 show mod dir show mod dir Command line option Shows the module directory path This is where all dynamically loaded modules are stored Default is usr local lib liquidwar6 lt version gt 4 3 79 show music dir show music dir Command line option Shows the music directory This is where builtin maps are stored Default is usr local share liquidwar6 lt version gt music 4 3 80 show music path show music path Command line option Shows the music search path This is where the game searches for musics It s the combination of command line arguments and builtin paths Might return more directories than the one specified in a single music path dir1 dir2 argument 4 3 81 show prefix show prefix Command line option Shows the prefix used This should logically be the value passed to the GNU Autoconf configure script when building the game Most other path are deduced
272. ill also increase network traffic Values between 10 and 50 really make sense 4 11 33 side attack factor side attack factor lt value gt Command line option LW6_SIDE_ATTACK_FACTOR Environment variable side attack factor XML key Type integer Default value 20 Min value 0 Max value 100 Defines how hard fighters will attack sideways It s an algorithm trick fighters attack by default the opponent right in front but if there s no fighter there they will still Chapter 4 Reference 109 try to attack someone else maybe sideways But doing this their attack is not as strong This parameter enables you to tune this This is a percentage 4 11 34 side defense factor side defense factor value Command line option LNG SIDE DEFENSE FACTOR Environment variable side defense factor XML key Type integer Default value 20 Min value 0 Max value 100 Defines how fast fighters will regenerate when being side by side instead of being right in front of the other This is a percentage 4 11 35 single army size single army size lt value gt Command line option LW6_SINGLE_ARMY_SIZE Environment variable single army size XML key Type integer Default value 30 Min value 1 Max value 95 Defines the proportion of the whole available space which will be occupied by an army at the beginning of the game You can either imagine playing with almost empty maps or play very crowded with almost no space left
273. in the implementation In an object oriented language it would be an abstract class an inteface The implementation does not need to be thread safe It s better if it is for theorically it could be possible to fire Liquid War 6 with two display backends running at the same time on the same game instance but this code has yet to be written and it s a rare dual headed configuration which probably has no real life usage If only one graphics backend is activated at a time the rest of the implementation garantees there will never be two concurrent calls to a function is this module It is the libdsp display which handles this It fires a thread for rendering purposes and sends information to this thread detecting automatically if it s necessary to acquire a mutex and update rendering informations For the caller this is transparent one just has to call an update function from time to time The module will even perform dirty reads on a game state being calculated to render things in real time as soon as possible An experimental libvox module is under design development and might in the future provide a real time voxel renderer Still pre alpha stage To ease up the implementation of different graphics backends a 1ibgui module contains code which is meant to be used by any graphics backend It s just a factorisation module containing common code and interfaces related to displaying things This is where for instance one can f
274. in value 0 Max value 10000 Defines how fast fighter will automatically regenerate on black zones defined in medicine png The value is used to decrease the fighter health at each move so you should compare its value to something like fighter defense Being on a medicined zone is a bit like being defended by an invisible and unknown friend 4 11 24 moves per round moves per round value Command line option LW6 MOVES PER ROUND Environment variable moves per round XML key Type integer Default value 2 Min value 1 Max value 50 Defines how many times fighters move per round Increasing this will just make fighters move faster but won t change anything for the rest that is keyboard and mouse responsivity and network traffic will stay the same Multiplying the number of moves per round by the number of rounds per second will give the number of moves per second which is in fact how fast fighters move on the screen 4 11 25 nb attack tries nb attack tries value Command line option LNG NB ATTACK TRIES Environment variable nb attack tries XML key Type integer Default value 3 Min value 1 Max value 7 Defines how many tries a fighter will do before giving up attacking and choosing another behvior defense By tries we mean how many directions it will try Going North Going North West Setting this to a low value will make fighters somewhat less aggressive This idea is that they ll prefer to sw
275. inal colors if you really want to by setting colorize cursor to false but the default is to ignore the hue e cursor color png is another PNG file very likely to use transparency too which will always be colorized replacing white by the team color and black by the dead color which by default is black and is usually a dark color This colorization is a way to recognize your cursor and know which team it belongs to You can define only one of those bitmaps if doing so then the other layer will be empty and won t be filled with the default cursor data Note that additionnally a little letter single character will be displayed using the team color so that s yet another way to identify which teams the cursor belongs too The PNG files really need to be PNG JPEG won t work and need to be 64x64 any other size will be ignored 3 1 12 rules xml Whereas style xml is only about the appearance of the map rules xml allows the map designer to change pretty much any parameter Ultimately the player can still ignore these settings and overide them with its own values but the idea is most game options are only pertinent in a given context For instance on some maps it s interesting to move slowly on some other it s interesting to move fast Some maps might be playable packed with fighters everywhere some other might be much more fun with almost nobody on them The approach in Liquid War 5 was to make the options available but le
276. ind a high level menu object In the same spirit libmat contains generic math vector and matrix code which is commonly used in 3D interfaces The libsnd module handles sound It s also an abstract class an interface which uses dynamic backends as implementations The libnet module is a wrapper over different network APIs it handles Winsock and POSIX sockets in a uniform manner The libcli and libsrv contain network client and server code implementing the various protocols in dynamically loadable sub modules It s the role of libp2p to glue this together handle the list of available servers the message queue verifying nobody is cheating and so on All this modules share information about current game state using code amp structures defined in 1ibnod use message utilities format parse defined in libmsg and share code concerning connections in libcnx Additionnally libdat provides facilities to store old network messages and sort them The libsys module contains most system and convenience functions it handles logs type conversions timer memory allocation it s the fundamental module every other module depends on It has a compation libglb module with all the Gnulib shared code The libhlp is used to handle keywords and internal self documentation this is what is used by list and about libcfg knows how to read and save config files libcns handles the console and 1ibdyn can load so shared files dynamically To glue al
277. integer Default value 60 Min value 1 Max value 1000 Defines how many frames will be displayed per second Of course this is a maximum value if your hardware can t keep up with this value display will just be slow no matter what value you define here Note that you might really wish to have something rather low here to keep network and logic function responsiveness Passed 60 frames per second speed is really only for visual comfort as Liquid War 6 is now so fast paced that it requires 200 frames sec to outperform opponents 4 15 62 trap errors trap errors value Command line option LW6 TRAP ERRORS Environment variable trap errors XML key Type boolean Default value false If set to true will trap segmentation fault and floating point errors and display messages about those in a custom box instead of the default one 4 15 63 trojan trojan value Command line option LW6_TROJAN Environment variable trojan XML key Type boolean Default value false Make the program act like a stupid trojan horse trying to fake messages sending various inconsistent informations This is to check the normal version of the program is able to detect such a fake and kick it out of the game It s of no use for regular players be sure to unset this if you want to play for good 4 15 64 z decode z decode Command line option If specified program will take stdin and z decode it to stdout This is for testing
278. ion LNG VIEW COLOR MAP BG Environment variable view color map bg XML key Type color Default value 72000000 Defines the background map color If there s no map texture defined or if use texture is false this is the color of the places where armies will go Ignored if view color auto is set Can be RGB RGBA RRGGBB or RRGGBBAA 4 13 50 view color map fg view color map fg value Command line option LNG VIEW COLOR MAP FG Environment variable Chapter 4 Reference 153 view color map fg XML key Type color Default value cccccc Defines the foreground map color If there s no map texture defined or if use texture is false this is the color of walls what armies can t go through Ignored if view color auto is set Can be RGB RGBA RRGGBB or RRGGBBAA 4 13 51 view style view style lt value gt Command line option LW6_VIEW_STYLE Environment variable view style XML key Type string Default value flat The view style conditions which renderer is used for the map the area where fighters are displayed This is not the graphics backend Indeed the graphics backend defines which technical tool one uses which library one runs wether this parameter says what kind of rendering one wants 4 13 52 waves waves value Command line option LW6 WAVES Environment variable waves XML key Type boolean Default value true Activates the wave effect that s to say level appears
279. is 155 LG B I2 Al br ir eh pha EE 155 LW6_BOT2 COLOUR i scenes coed hr entree 155 EWG BOT AI ceoenkieeR eu ee tenere 156 269 LW6_BOTS_ COLOR Rene ie eae 156 LW6 B TA AI e e eteseme dr eae 156 LW6_BOT4_COLOR 2 cece cee cee eee 156 LWG BOTS AI e eee hbUienERIPNOSDE 156 LWG BUER COLOR e er Rer EDS 157 LWG BOTO EE 157 LWG BOTG COLOR pic m e Eg Sach ees 157 E LR CARE EE 157 LWO BOTZ COLOR eed ee Uenr retta 157 EWG CEET 158 LW6_BOTS COLOR iul iet 158 LW6 B TO AI nce rere 158 LWG BOTO AUER ege r Sg deeg e SES 158 LW6 BR ADOAST onic nate tees e n DIS RISE 95 LWO CAPTURE e bue aaa EE 92 LWG CHOSEN MAP ee e Seege EE b nis 98 LWG GLT BACKENDS ig compre eere IAE 96 LW6_CLICK_TO_FOCUS 00008 87 LW6 COLOR ALTERNATE BG sees 143 LW6 COLOR ALTERNATE FG esses 144 LW6 COLOR BASE BG 144 LW6 CULOR BASE FG ol rm RR em dee 144 LW6 COLOR CONFLICT MODE 100 LW6 C L RIZE bili i imreeetxeDereIer 144 LW6 COLORIZE CURS R sseeseeeeeeeee 145 LW6_COMMANDS_PER_SEC 0 0 0 0 0000 161 LW6_ CURSOR POT INIT 2 00350c020 cde case tee 100 LNG CURGOR GENGITIVIIN 88 LW6_CURSOR_SIZE 0 0 1 cee eee 145 LW6 CUSTOM ALT ege ege eet ten 88 LWG GUSTOM CTRL iie teet eene eel and anne 88 LW6 CUSTOM DINN ooi Reese 88 LW6 CUSTOM ENTBR enpiseI cheer RUE 88 LWO CUSTOM ESC epe geegent E Wess 89 LW6 CUSTOM LEFT
280. is escape Yes wooped the ecstatic figure of the General Fifty or so of his troops had broken free undetected and were even now working their way cautiously towards the camps of the Yellow army only the front lines were still actively fighting this opening gambit of Yellow and Orange had turned into a stale siege and Yellow s army had pitched tent General Violet steered his hovering guidance ring to the center of the Yellow camp His troops struck both those who had got behind the lines and those who were still besieged Yellow reacted too slowly and suddenly found that her army was shrinking back from the onslaught There was nowhere to run to and bye now her only ally Commander Orange had abandoned her to her fate he was too busy engaging Sir Turquoise who had managed to escape from the slaughter that the Baron had caused to the Turquoise ranks and was even now valiantly attacking the flanks of the Orange troops A glance at the status panel showed that Yellow s life force was fading quickly 896 396 1 Gone The General smiled he always enjoyed getting the first kill and by now his armies life force had grown and his clones had replicated With his now formidable fighting force it was no problem to engulf both Sir Turquoise and Commander Orange s brawling armies and annihilate them Once again his army grew in size and power Now if only the Baron didn t notice that thought the General Too late yelped the Gene
281. is is just about being polite No command args It s implemented in src lib msg msg cmd c g msg 3 14 5 Regular MISS messages Todo 3 14 6 Regular META messages Todo 3 14 7 Regular DATA messages Todo 3 14 8 Other raw technical stuff WIP TCP messages LW6 lt passwd gt lt version gt lt client id gt lt from id gt lt to id gt lt serial gt lt i gt lt n gt sig MSG1 lt from id gt lt to id gt lt serial gt lt i gt lt n gt sig MSG2 TCP oobs Chapter 3 Hacker s guide 59 lt return gt only works anonymous same as INFO INFO lt passwd gt lt public url gt LIST lt passwd gt lt public url gt PING lt passwd gt lt public url gt UDP messages LW6 lt passwd gt version lt client id gt lt from id gt lt to id gt serial lt i gt n sig MSG1 LW6 lt passwd gt version lt client id gt lt from id gt lt to id gt serial lt i gt n sig MSG2 UDP oobs INFO lt passwd gt lt public url gt LIST lt passwd gt lt public url gt PING lt passwd gt lt public url gt HTTP messages client id amp password passed in HTTP headers 1w6 version lt from id gt lt to id gt lt serial gt lt i gt lt n gt sig MSG1 1w6 version lt from id gt lt to id gt lt serial gt lt i gt lt n gt sig MSG2 HTTP public URLs gt index html index html favicon ico screenshot jpeg robots txt gpl txt info txt lis
282. is is were the core algorithm is To some extent the rest of the code is just about how to provide this module with the right data and environment Logically if you profle the game you should find out that a great part of the CPU time is spent here Code here is about spreading gradients moving fighters and cursors The libmap module is here to handle maps it contains the code to manipulate maps in memory But it does not know how to load them from disk This is the responsability of another module libldr which is linked against libraries such as libpng or libjpeg and does the job of transforming those standard formats into a usable in memory structure The libgen module also works the same way creating pseudo random maps There s still a another moduled involved in map handling it s libtsk whose job is to load a level in the background It has a 2 steps asynchronous loading system which allows the game to load maps while the user interface is still responsive and give a preview of the map as soon as possible when loading continues in the background building optimizing structures which are usefull when playing but not mandatory just to show the map At the other end of the algorithm chain the libpil module will pilot things It s this module which will translate text readable orders typically adapted for network usage into function calls It has event lists keeps them in the right order and will also permanently maintain three dif
283. ision numbers snapshots can make you believe version X Y is out when it s only a release candidate at best and most of the time just a work in progress Still if you want bleeding edge versions this is the way to go Documentation is automatically updated as well and available on http www ufoot org liquidwar v6 doc 2 2 5 Check integrity Most binary packages at least deb and RPM GNU Linux binaries should be signed using GnuPG The following keys are used when generating upstream vendor packages e 1024D FD409E94 2002 01 31 Christian Mauduit U Foot lt ufoot ufoot org gt Version GnuPG vi 4 12 GNU Linux mQGiBDxZRPIRBACxPISZYEtkIGUliwLanAlZbIqVCI38d S0No8MS3VUZKk082XRo EAoj 4KwX39f bUM3knpLK6Si jzxKef 7MwOw3W71nQ NegqSelTxiHmJxEQmeLulk drP89CpXQPdir8ediZseR9 BAroiWgckDJK8YgMKsmBC jE62xfPrtxM2nwCghHOX JAT iD2uPOFdLpQGbM1dCnMD jM30cWIqQ1uGO8gp 1KTb7Kv7vEFQXOwaLaIWOk KJ45kx4guYuT 7u4dVg1Y01PCbtnWTY J9t 1SW6GHhpNsdGybrw8izRk6zZXESTYFtN 9LNOkYYx5V Szjl4z5JabdEAt20XZ9 N8Pb4PYInmG1jRr5f1781048C1GyO3vK 9rL7A 9iXSGnN77 aNJ2qN3btTagwdLvA4AYbkOySneIpzKT9nmnM6MYs se 0wYeS 8eT7i SPISqb185G10WZ40 j5teOjotT7QFZdT3di02NuUQXqqXIvRNxBGVKfX7Sg TqvjZWlXMNAvH5KiuZ8vqgfEMqLSOhwjpJNVaZIPF4cifFgPFbQsQ2hyaXNOaWFu IEihdWRiaXQgKFUtRm9vdCkgPHVmb290QHVmb290Lm9yZz6IVwQTEQIAFwUCPFIE 8gULBwoDBAMVAwIDFgIBAheAAAoJEN4 K839QJ6Uk Y AnRuBRpn rdD JZNGHzOw bJaVon9eAJOYEdl0agCwJaWjKeZGWJl f8TZqYhXBBMRAgAXBQIS8WUTzBQsHCgME AxUDAgMWAgECFAAACgkQ3j8rzfiAnpS kg
284. it only if you specifically want to disactivate some protocol or if you want to activate a custom made client backend It s a comma separated list 4 9 5 known nodes known nodes lt value gt Command line option LW6_KNOWN_NODES Environment variable known nodes XML key Type string Default value http ufoot org 8056 http ufoot hd free fr 8056 List of known nodes nodes which the program will try to contact first to get the list of other nodes This is mostly usefull when program is launched for the first time after this it should keep an up to date list of known servers in its internal database and automatically reconnect to them next time it starts You might want to change this if you really want to connect to a given server which is not publically listed The list is comma separated 4 9 6 node description node description lt value gt Command line option LW6_NODE_DESCRIPTION Environment variable node description XML key Type string Default value No description The description of your node that is a text that describes your server This will typically appear when pointing a web client on the public server URL it is for general information so if there s something special about your server say it here 4 9 7 node title node title lt value gt Command line option LW6_NODE_TITLE Environment variable node title XML key Type string Default value The title of your node that is t
285. itch to the next option that is defense regeneration if there s no opponent right in front of them 4 11 26 nb defense tries nb defense tries value Command line option LW6 NB DEFENSE TRIES Environment variable nb defense tries XML key Type integer Default value 1 Min value 1 Max value 7 Defines how many tries a fighter will do before giving up attacking and choosing another behavior do nothing By tries we mean how many directions it will try Chapter 4 Reference 107 Going North Going North West Setting this to a low value you ll need a very compact pack of fighters for regeneration to operate else fighters will hang arround unhealthy 4 11 27 nb move tries nb move tries value Command line option LNG NB MOVE TRIES Environment variable nb move tries XML key Type integer Default value 5 Min value 3 Max value 7 Defines how many tries a fighter will do before giving up moving and choosing another behvior attack or defense By tries we mean how many directions it will try Going North Going North West Setting this to a low value your fighters will look very stubborn and always try to move in one direction neglecting the fact that they could dodge This can lead to queues of fighters and other strange behaviors On the other hand setting it too high will cause fighter to always avoid the enemy and groups of fighters will just pass each other without any fight Matter of taste
286. ive is allowed only occasionally and noncommercially and only if you received the object code with such an offer in accord with subsection 6b d Convey the object code by offering access from a designated place gratis or for a charge and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge You need not require recipients to copy the Corresponding Source along with the object code If the place to copy the object code is a network server the Corresponding Source may be on a different server operated by you or a third party that supports equivalent copying facilities provided you maintain clear directions next to the object code saying where to find the Corresponding Source Regardless of what server hosts the Corresponding Source you remain obligated to ensure that it is available for as long as needed to satisfy these requirements e Convey the object code using peer to peer transmission provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d A separable portion of the object code whose source code is excluded from the Cor responding Source as a System Library need not be included in conveying the object code work A User Product is either 1 a consumer product which means any tangible per sonal property which is normally used for personal family or
287. ix Command line option Shows the prefix value as passed to the GNU Autoconf configure script when compiling the program Default is usr local 4 3 52 show build stamp show build stamp Command line option Shows the build stamp A very usefull value more precise than the version to track down binaries It is incremented each time the core C code is updated It won t reflect all the programs for it does not take scripts in account but if you are running a work in progress version it might be very convenient to use this to know what your are running exactly It s also used as the revision number the third number afer MAJOR MINOR 4 3 53 show build time show build time Command line option Shows the time when the binary was compiled 78 Liquid War 6 4 3 54 show build top srcdir show build top srcdir Command line option Shows the top source directory on the machine where the binary was compiled as a possibly relative path 4 3 55 show build unix show build unix Command line option Returns 1 true if host OS is a UNIX system or at least has been considered as such when compiling 0 false if not 4 3 56 show build version show build version Command line option Shows the version Note that this is different from the standard GNU version com mand line option which shows a complete message with a short copyright notice This one will just return the version without the package tarn
288. joystick2 pop button a c lw6gui joystick2 pop button a Wrapper on lw6gui joystick2 pop button a 4 16 55 c Iw6gui joystick2 pop button b c lw6gui joystick2 pop button b Wrapper on lw6gui joystick2 pop button b 4 16 56 c lw6gui joystick2 pop button c c lw6gui joystick2 pop button c Wrapper on lw6gui joystick2 pop button c 4 16 57 c lw6gui joystick2 pop button d c lw6gui joystick2 pop button d Wrapper on lIw gui joystick2 pop button d 4 16 58 c lw6gui joystick2 pop button e c lw6gui joystick2 pop button e Wrapper on lIw gui joystick2 pop button e 179 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile 180 Liquid War 6 4 16 59 c lw6gui joystick2 pop button f c lw6gui joystick2 pop button f C function exported to Guile Wrapper on lw6gui_joystick2_pop_button_f 4 16 60 c lw6gui joystick2 pop pad down c lw6gui joystick2 pop pad down C function exported to Guile Wrapper on lw6gui_joystick2_pop_pad_down 4 16 61 c lw6gui joystick2 pop pad left c lw6gui joystick2 pop pad left C function exported to Guile Wrapper on lw6gui_joystick2_pop_pad_left 4 16 62 c lw6gui joystick2 pop pad right c lw6gui joystick2 pop p
289. ke a look at the output of pedigree if you have problems running the game 4 1 12 test test Command line option Runs a hopefully complete test suite which will call most internal Liquid War 6 functions and check out wether they work in a simple context without any game interference Usefull for troubleshooting 4 1 13 version version Command line option Returns the version of the program as defined by the GNU Coding Standards Chapter 4 Reference 69 4 2 Doc options 4 2 1 example hints xml example hints xml Command line option Dumps on stdout an example hints xml file Such a file is normally shipped with the game It is indeed generated using this command 4 2 2 example rules xml example rules xml Command line option Dumps on stdout an example options xml file Such a file is normally shipped with the game It is indeed generated using this command 4 2 3 example style xml example style xml Command line option Dumps on stdout an example style xml file Such a file is normally shipped with the game It is indeed generated using this command 4 2 4 example teams xml example teams xml Command line option Dumps on stdout an example teams xml file Such a file is normally shipped with the game It is indeed generated using this command 4 2 5 list advanced list advanced Command line option List advanced options which can be used for fine tuning the game 4 2 6 list aliases lis
290. kis erinin Dunna 164 displ y mapil esi uere reme rer ead et 164 display menu o ecc we E e er ER 164 display metac iiiceiel e IR peel ez 165 KEE e TER 165 GEET 165 display preview ici secesint dee ase bere 165 display progress arcos eee ee e ne e ese 165 displ y SCcOXe o e eer en ee EY eid 166 display spdash c esr eei rerecnes 166 KEE e EE 166 double click delay 2 22 08 ieee x 90 downsize using bench value 136 downsize using fighter scale 136 E fighter attack vil dis ddse EE 101 e eg DEE 101 Zigbter 3ev health cisrecrcrirreiswis 102 fighter regenerate 6 cee eee eee 102 fighter sCcal6 i e edu ab deg a REI ds 136 FOTCE ME 98 frags fade out iliislielisse assesses 102 frags mode wy iis ese s ig eR bed AH Ras rins 103 Zrage to distribure esses 103 fullscreen cest tenet Ma An e tE prin 92 f x VOlum eredi wpenede deque rer re eee 94 G gfx backend tg sssi esee ehe saan eed 92 gfx cpu usage c iise aisiais ER tants 166 Efx deb g iacsesneerte SOERENSEN Rudd 167 Efx quality iios Re EE ENEE 92 gl e poWeE SN Ee SEENEN Se agiia neds 103 guess ColorS es edere nada ed ocean 137 GUCSS MOVES PEL SEC eee eee eee 137 Appendix G Indexes H LEE 93 bidden Laver alpba s s 145 highest team color allowed 103 highest weapon allowed 104 hud colof auto li ee ever ret be Eus 137 hud color frame bg Ee e
291. l floating const xml Edit the line with the clock y1 entry Change the number after value Re run the program Play a game What happens Logically you should see that some thing is not displayed at the same place than before You could also modify the textures JPEG and PNG files In a general manner it s more cautious to keep them the same size but it depends sometimes other sizes will work as well Many of these parameters are really too technical and obscure to have their place in the main config file which is already rather big Use at your own risks you can really break things touching this but you can also find out lots of things can be tuned 3 11 2 Optimize for speed Todo 3 12 Writing modules Todo 3 13 Use as a library Todo 3 14 Network protocol This section describes how Liquid War 6 handles network messages Note that for now this is purely theorical more of a draft a plan it might change before being implemented 3 14 1 No server no client only nodes Liquid War 6 does not really have the notion of server or client any instance of the program can act as both server and client therefore we use the term node A node listens on a given port in both TCP and UDP and can connect to other nodes on the same port The main identifier of a node is its public url which is typically of 54 Liquid War 6 the form http lt ip address gt lt port gt This url is very important for it is or
292. l is not correctly handled detected by LW6 and can raise an error like gcc exe C msys local lib libs libintl dll a No such file or directory so one needs to copy some libraries in usr local lib libs mkdir local lib libs cp local lib libintl local lib libs Another step is to edit etc profile and add lines like export CFLAGS g I usr local include export LDFLAGS L usr local lib export GUILE_LOAD_PATH C MSYS local share guile 1 8 Close and re launch your msys shell rxvt so that these changes take effect Check that those values are correctly set Chapter 3 Hacker s guide 45 env grep FLAGS env grep GUILE Finally your MSYS environment is hopefully working Now you need to compile the following programs from source Files are mirrored on ufoot org for your convenience however these might be outdated Still there are known to work Proceed like if you were under a POSIX system Some packages use the disable rpath swith there are various reasons for which rpath is an issue In the same manner disable nls when linking against libintl or libiconv was painful pthreads win32 untar pthreads w32 2 8 0 release tar gz then make clean GC cp pthread h sched h usr local include cp pthreadGC2 dll usr local bin cp libpthreadGC2 a usr local lib GNU MP untar gmp 4 2 2 tar gz then configure amp amp make amp amp make install Guile untar guile 1 8 5 tar gz Edit libguile guile c and inse
293. l libjpeg libjpeg devel sqlite sqlite devel ncurses ncurses devel readline readline devel Chapter 2 User s manual 11 libGL libGL devel libGLU libGLU devel SDL SDL devel SDL image SDL image devel SDL mixer SDL mixer devel freetype freetype devel SDL ttf SDL ttf devel libcaca libcaca devel libcurl libcurl devel gtk2 devel perl lcov global valgrind graphviz gv ImageMagick texinfo tex indent emacs doxygen libxml CUnit CUnit devel rpm build On a DEB package based GNU Linux system this command tested with Debian 6 0 squeeze would be apt get install make autoconf automake gcc libc6 libc6 dev binutils libgompi guile 2 0 guile 2 0 dev guile 2 0 libs libgmp10 libgmp3 dev libtool libltdl7 libltdl dev zlibig zlibig dev libexpati libexpati dev libpngi2 0 libpngi2 dev libjpeg8 libjpeg dev libsqlite3 0 libsqlite3 dev libncurses5 libncurses5 dev libreadline6 libreadline6 dev libgli mesa glx libgli mesa dri libgli mesa dev libglui mesa libglui mesa dev libgles2 mesa libgles2 mesa dev libsdli 2debian libsdli 2 dev libsdl imagei 2 libsdl image1 2 dev libsdl mixeri 2 libsdl mixer1 2 dev libfreetype6 libfreetype6 dev libsdl ttf2 0 0 libsdl ttf2 0 dev libcaca0 caca utils libcaca dev libcurl4 gnutls dev libgtk2 0 dev perl lcov global valgrind graphviz gv imagemagick texinfo texlive base texlive generic extra texlive fonts recommended texlive
294. l this there are some Guile bindings with helper functions available in 1ibscm which fills two needs one being an easy way to check if Guile linking is working correctly without requiring all other modules to be available and also performing automatic checks on some actions such as registering or executing a function Chapter 3 Hacker s guide 35 Finally there are small modules like 1libimg to make screenshots of the game which have been separated because they required special libraries to link with and or did not really fit in existing modules for dependencies reasons So well this is a lot of modules The list might move a bit but the big picture is here Each module is testable separately Below is a Graphviz diagram which shows the modules dependencies 3 4 Memory structures The most important memory structures in Liquid War 6 are e map lw6map_level_t this contain the map immutable informations This is what resides in memory after a map has been loaded from the disk It contains all the various png and jpeg files stored as pixel arrays resampled if need and also contains the various map attributes Once this structure is ready the game is capable of displaying the map on the screen but it can not do anything with it yet e game struct 1w6ker game struct t this one contains the same informations as the previous structure only the information has been
295. le lt value gt Command line option LW6_TEAM_PROFILE_ORANGE_MOBILE Environment variable team profile orange mobile XML key Type integer Default value 0 Min value 3 Max value 3 Increases or decreases if negative the number of move attack defense tries for the orange team If set to a high value team will appear more mobile and do more things but it won t change its cruising speed It s not obvious to tell wether this is an advantage or not but it clearly changes the behavior 4 11 104 team profile orange vulnerable team profile orange vulnerable lt value gt Command line option LW6_TEAM_PROFILE_ORANGE_VULNERABLE Environment variable team profile orange vulnerable XML key Type integer Default value 144 Min value 5 Max value 2000 Defines how vulnerable the orange team is This is a percentage if set to 200 then team will be attacked twice as much as any other team with the default value Setting this to a high value clearly disadvantages this team 4 11 105 team profile orange weapon alternate id team profile orange weapon alternate id lt value gt Command line option LW6_TEAM_PROFILE_ORANGE_WEAPON_ALTERNATE_ID Environment variable Chapter 4 Reference 125 team profile orange weapon alternate id XML key Type integer Default value 16 Min value 0 Max value 19 Id of the default alternate weapon for the orange team see the documentation about weapons to know what these ids mean 4 11 106
296. le blue weapon mode team profile blue weapon mode lt value gt Command line option LW6_TEAM_PROFILE_BLUE_WEAPON_MODE Environment variable team profile blue weapon mode XML key Type integer Default value 1 Min value 0 Max value 2 Weapon mode for blue team 0 means there s no weapon 1 means one weapon per team defined by the weapon id parameter 2 means random weapon 4 11 68 team profile cyan aggressive team profile cyan aggressive lt value gt Command line option LW6_TEAM_PROFILE_CYAN_AGGRESSIVE Environment variable team profile cyan aggressive XML key Type integer Default value 44 Min value 5 Max value 2000 Defines how aggressive the cyan team is This is a percentage if set to 200 then team will attack twice as much as any other team with the default value Setting this to a high value clearly advantages this team 4 11 69 team profile cyan fast team profile cyan fast value Command line option LW6 TEAM PROFILE CYAN FAST Environment variable team profile cyan fast XML key Type integer Chapter 4 Reference 117 Default value 40 Min value 5 Max value 2000 Changes the speed of the cyan team This is a percentage if set to 50 then team will move twice slower than other teams with the default parameter Setting this high is very likely to advantage the team 4 11 70 team profile cyan handicap team profile cyan handicap value Command line option LNG TEAM PROFILE
297. le data in lw6map level t is just plain data and won t change if the algorithm is updated e lw6ker game state t defined in src lib ker ker h which is used to store the level data required by the algorithm and which changes during the game This is typically where an information such as there s a red fighter in slot 3 23 1 will be stored e lw6pil pilot t defined in src lib pil pil h which is used to handle all the thread ing issues It keeps a track of 3 game states A reference state which is the state of the game considering all input has been received from the network and is validated A draft state which might be anticipated and updated as if the players we did not get input from did not move there cursors This can give the illusion that the game is running smoothly while in reality input from other players on the network is choppy In a local game draft and reference are equivalent since there s no doubt about what s on the network And finally a backup state which can be pulled in case of a serious flaw and is a good way to solve the hey someone untrusted is throwing garbage on the net One can always pull a backup Most of the time hacking on the algorithm changing the gameplay does not require to touch anything but the code in src lib ker 40 Liquid War 6 See See Section 5 31 libmap page 222 See See Section 5 29 libker page 221 See See Section 5 37 libpil page 223 3 7
298. le purple mobile 128 team profile purple vulnerable 128 team profile purple weapon alternate id 1 128 team profile purple weapon id 128 team profile purple weapon mode 128 team profile red aggressive 129 team profile red fast sess 129 Liquid War 6 team profile red handicap 129 team profile red mobile 129 team profile red vulnerable 130 team profile red weapon alternate id 130 team profile red weapon id 130 team profile red weapon mode 130 team profile yellow aggressive 130 team profile yellow fast 131 team profile yellow handicap 131 team profile yellow mobile 131 team profile yellow vulnerable 131 team profile yellow weapon alternate id Sythe SEE ot CARAS ERLE held bathe Sanat athe 132 team profile yellow weapon id 132 team profile yellow weapon mode 132 total armies size iii cece ck gees eg eee 132 total time enerekeegoc a ena phe ne td 133 trap errorS cscri Rx EE E RR RR 173 EISE erer gebr peewee ded br peated ands 173 U upsize using bench value 140 upsize using fighter scale 140 use cursor texture ssss e nn 98 use double Click i o ci i e rete ns 9t uge egc button lees een nnn 91 use hIBts
299. le to dynamically view the map with hudge fighters seeing only a fraction of the level 4 13 57 zoom min zoom min value Command line option LW6 ZOOM MIN Environment variable zoom min XML key Type float Default value 0 3 Defines the min map zoom If set to a low value you ll be able to dynamically view a very small reduced map 4 14 Map teams xml 4 14 1 bot iq bot iq value Command line option LW6 BOT IQ Environment variable bot iq XML key Type integer Default value 100 Min value 0 Max value 200 The IQ intelligence quotient of bots Typically a value of 100 will make the bot behave normally performing at its best A value of 0 will just make it act the worst Chapter 4 Reference 155 way it can Values over 100 probably won t change anything compared to 100 but this truely depends on which bot backend you re running 4 14 2 bot speed bot speed value LW6 BOT SPEED bot speed Type float Default value 1 0f Command line option Environment variable XML key The speed of bots 1 means normal speed higher value will speed it up lower will slow it down Note that this only has an impact on bot engines not on the game speed itself 4 14 3 botl ai boti ai value LNG BOT1 AI boti ai Type string Default value idiot AI engine for bot number 1 4 14 4 botl color boti color lt value gt LW6_BOT1_COLOR boti color Type string Defau
300. le xml value Command line option LNG USE STYLE XML Environment variable use style xml XML key Type boolean Default value true If set then style will be picked up from the map defined style xml if it exists This is the default Use force time and force background to override this and use user defined values anyway 4 10 8 use teams xml use teams xml value Command line option LNG USE TEAMS XML Environment variable use teams xml XML key Type boolean Default value true If set then teams will be picked up from the map defined teams xml if it exists This is the default Use force time and force background to override this and use user defined values anyway 100 Liquid War 6 4 10 9 use texture use texture lt value gt Command line option LW6_USE_TEXTURE Environment variable use texture XML key Type boolean Default value true Defines wether the map texture should be used Of course if there s no map texture the texture won t be used But if there is one this parameter will force the game to ignore it and play with solid colors This probably won t look as nice as the textured map in most cases but some players might find it more readable and confortable to play when throwing eye candy away 4 11 Map rules xml 4 11 1 boost power boost power lt value gt Command line option LW6_BOOST_POWER Environment variable boost power XML key Type integer Default va
301. lf and does not necessarly wishes to fire Gimp to rescale the map 4 12 15 resample resample value Command line option LW6_RESAMPLE Environment variable resample XML key Type boolean Default value true If set to true maps will always be resampled to a size which depends on your screen resolution zoom factor and the rest If false maps will be set at the exact resolution of map png 4 12 16 speed speed lt value gt Command line option LW6_SPEED Environment variable speed XML key Type float Default value 1 0 140 Liquid War 6 This parameter is the main parameter on which game speed depends The map loader will garantee by downscaling the map that to cross the level by crossing the level we mean for instance going from top left corner to bottom right corner in a straight line a fighter will take a constant amount of time Under the hood the loader might of course rescale the map but it will also change game speed so that at the end fighters take a constant time to cross the level This is indeed the most important thing players do not care much if internally there are X or Y moves per second the global game experience depends on how fast fighter movement looks on the screen The default settings corresponds roughly to one second to cross the level If you set this to 2 0 it will go twice faster 4 12 17 system color auto system color auto value Command line option LW6 SYSTEM
302. line option Shows the default music directory This is where builtin musics are stored Default is usr local share liquidwar6 version music 4 3 71 show default music path show default music path Command line option Shows the default music search path This is where the game searches for musics It s the combination of command line arguments and builtin paths Might return more directories than the one specified in a single music path dir1 dir2 argument 4 3 72 show default prefix show default prefix Command line option Shows the default prefix used This should logically be the value passed to the GNU Autoconf configure script when building the game Most other path are deduced from this one Default is usr local 4 3 73 show default script file show default script file Command line option Shows the default main script file path This file is very important since the pro gram is more or less a hudge scheme interpreter and this file is the file loaded by Guile In short it is the main program Default is usr local share liquidwar6 version script liquidwar6 scm 4 3 74 show default user dir show default user dir Command line option Shows the default user directory path This is where run time data config files log files are stored Default is HOMEYJ liquidwar6 4 3 75 show log file show log file Command line option Shows the log file path Default is HOME liqu
303. ll sources up to version 0 0 7beta following versions including 0 0 8beta must be retrieved from GIT So the following informations only concern those who are interested in previous versions of the game Anybody else probably you should use GIT instead See Section 3 17 Using GIT page 64 Still this quick Arch survival guide is kept in the documentation Read the GNU Arch tutorial to learn how Arch works Note that there are many other source control managers available some of which provide functionnalities similar to GNU Arch tla GNU Arch has been chosen for Liquid War 6 because e it is Free Software e it is not limited to per file commits like CVS and supports atomic commits involving several files Chapter 3 Hacker s guide 63 e it is distributed e it enables developpers to sign each of their contributions e it was already available back in 2005 3 16 2 Getting the latest version from the repository The repository for Liquid War 6 is accessible on http arch savannah gnu org archives liquidwar6 This is a read only access but with the distributed nature of GNU Arch it still allows you to keep track of your own changes and submit patches Ac cessing it in read write mode with sftp requires a Savannah account and special rights on the Liquid War 6 project Here are typicall commands one can use to get Liquid War 6 source from the GNU Arch repository tla register archive http arch savannah gnu org
304. ll these di rectories Additionnally map dir and lt user dir gt map will always be in the list Any given value can itself include several pathes separated by the path separa tor This separator is on GNU Linux and on Microsoft Windows For instance on a GNU Linux box you could use the command line argument map path foo bar map home user map map 4 4 6 mod dir mod dir Command line option Type string Default value usr local lib liquidwar6 lt version gt Set the module directory path By changing this you will load dynamic shared libraries game specific modules such as the graphical backend from an alternative place Use this at your own risks for there can always be a binary incompatibility You ve been warned 4 4 7 music dir music dir value Command line option LW6 MUSIC DIR Environment variable music dir XML key Type string Default value usr local share liquidwar6 version music Set the music directory path By changing this value you ll be able to use your own musics in your own directory Note that there are other ways to achieve that but using this option will work The major side effect is that using this option you really replace the existing builtin musics by your own If you simply want to add musics you can store them in HOME liquidwar6 music or in the map directory itself 4 4 8 music path music path value Command line option LW6 MUSIC PATH E
305. lling for instance its version its uptime and so on LIST requests for a list of other nodess this node is aware of You can test out of band messages by simply connecting on your server with a command like telnet localhost 8056 At the telnet prompt simply type INFO and press return and you should have a description of your node The complete syntax of OOB messages is COMMAND password url The password and url parameters are optionnal password can contain either the plain text password or a checksum calculated from the password which is for security reasons seeded with the public url of the node we re connecting to so that this password can t be re used on another node url is simply a clue we give to the other node to help find us the other node will automatically try to detect our IP address and use standard LW6 port 8056 but if for some reason we use a different setting this is a good way to pass the hint Here are examples of valid messages LIST PING http myhost mydomain 1234 Chapter 3 Hacker s guide 55 INFO secret http myhost mydomain 1234 LIST 12ab34cd If there s only one argument the parser will first try and interpret it as a URL If it s not parseable that way it will consider it s a password The password in turn may be specified as clear text or as a 32 bit checksum As far as OOB is concerned TCP and UDP work almost the same HTTP is a bit different the OOB comma
306. lt A default value is provided you can of course change it at will 4 5 3 playerl status playeri status value Command line option LW6 PLAYER1 STATUS Environment variable playeri status XML key Type boolean Default value true Status of the first player true if player is activated false if idle 4 5 4 player2 control player2 control value Command line option LG PLAYER2 CONTROL Environment variable player2 control XML key Type string Default value keyboard Control for the second player must be mouse keyboard joystickl joystick2 or cus tom 4 5 5 player2 name player2 name value Command line option LW6 PLAYER2 NAME Environment variable player2 name XML key Type string Default value player2 lt hostname gt Name of the second player A default value is provided you ll certainly want to change it 86 Liquid War 6 4 5 6 player2 status player2 status value Command line option LW6 PLAYER2 STATUS Environment variable player2 status XML key Type boolean Default value true Status of the second player true if player is activated false if idle 4 5 7 player3 control player3 control lt value gt Command line option LW6_PLAYER3_CONTROL Environment variable player3 control XML key Type string Default value Joystick Control for the third player must be mouse keyboard joystick joystick2 or custom 4 5 8 player3 name player
307. lt value green Color for bot number 1 4 14 5 bot2 ai bot2 ai value LNG BOT2 AI bot2 ai Type string Default value idiot AI engine for bot number 2 4 14 6 bot2 color bot2 color lt value gt LW6_BOT2_COLOR bot2 color Type string Command line option Environment variable XML key Command line option Environment variable XML key Command line option Environment variable XML key Command line option Environment variable XML key 156 Default value blue Color for bot number 2 4 14 7 bot3 ai bot3 ai lt value gt LW6_BOT3_AI bot3 ai Type string Default value random AI engine for bot number 3 4 14 8 bot3 color bot3 color value LW6 BOT3 COLOR bot3 color Type string Default value yellow Color for bot number 3 4 14 9 bot4 ai bot4 ai value LW6_BOT4_AT bot4 ai Type string Default value follow AI engine for bot number 4 4 14 10 bot4 color bot4 color lt value gt LW6_BOT4_COLOR bot4 color Type string Default value cyan Color for bot number 4 4 14 11 bot5 ai bot5 ai lt value gt LW6_BOT5_AT bot5 ai Type string Default value random AI engine for bot number 5 Liquid War 6 Command line option Environment variable XML key Command line option Environment variable XML key Command line option Environment variable XML key Command line option Environmen
308. lue 3 Min value 1 Max value 10 Defines how fast and powerfull the boost is That is if on boost png it s pitch black and this parameter is set to 3 then fighters will move and act 3 times than what they would do normally 4 11 2 color conflict mode color conflict mode value Command line option LNG COLOR CONFLICT MODE Environment variable color conflict mode XML key Type integer Default value 1 Min value 0 Max value 2 How to handle color conflicts that is when a player requests a color but this color is already used what should be done If 0 wether a color already exists won t affect the color of a new cursor If 1 then two players on the same computer will be allowed to share the same color team but if another computer is already playing with a color any new computer will need to use another team If 2 then it s impossible for a new cursor to use a pre existing color any new cursor will require a new color if that color is already used a new color will be picked randomly 4 11 3 cursor pot init cursor pot init value Command line option LW6 CURSOR POT INIT Environment variable cursor pot init XML key Type integer Chapter 4 Reference 101 Default value 100000 Min value 5000 Max value 500000 Defines the cursor potential at startup Not really any reason to change it Theori cally there could be maps where the default value doesn t fit but none has been seen yet
309. lue gt Command line option LW6_TEAM_PROFILE_MAGENTA_FAST Environment variable team profile magenta fast XML key Type integer Default value 320 Min value 5 Max value 2000 Changes the speed of the magenta team This is a percentage if set to 50 then team will move twice slower than other teams with the default parameter Setting this high is very likely to advantage the team 4 11 94 team profile magenta handicap team profile magenta handicap lt value gt Command line option LW6_TEAM_PROFILE_MAGENTA_HANDICAP Environment variable team profile magenta handicap XML key Type integer Default value 100 Min value 10 Max value 1000 Defines the handicap for the magenta team 4 11 95 team profile magenta mobile team profile magenta mobile lt value gt Command line option LW6_TEAM_PROFILE_MAGENTA_MOBILE Environment variable team profile magenta mobile XML key Type integer Default value 0 Min value 3 Max value 3 Increases or decreases if negative the number of move attack defense tries for the magenta team If set to a high value team will appear more mobile and do more things but it won t change its cruising speed It s not obvious to tell wether this is an advantage or not but it clearly changes the behavior 4 11 96 team profile magenta vulnerable team profile magenta vulnerable lt value gt Command line option LW6_TEAM_PROFILE_MAGENTA_VULNERABLE Environment variable Chapter 4 R
310. lue is 1 4 9 Network options 4 9 1 bind ip bind ip value Command line option LW6 BIND IP Environment variable bind ip XML key Type string Default value 0 0 0 0 The IP address to bind on when listening to network messages You can use this to specifically use a given network interface the default will listen on any available interface 4 9 2 bind port bind port value Command line option LW6 BIND PORT Environment variable bind port XML key Type integer Default value 8056 Min value 1 Max value 65535 The IP port to bind on when listening to network messages The default should work out of the box and will ease up the discovery process That is if you use your own settings automatic detection of your server by other servers might not work so well 4 9 3 broadcast broadcast value Command line option LW6 BROADCAST Environment variable broadcast XML key Type boolean Default value true Allows the program to send broadcast messages on the network It can be usefull to disable those if you don t use UDP node discovery and or if there s a sysadmin arround who does not enjoy permanent broadcasts on his LAN 96 Liquid War 6 4 9 4 cli backends cli backends lt value gt Command line option LW6_CLI_BACKENDS Environment variable cli backends XML key Type string Default value tcp udp http The client backends to use Most of the time the default is fine change
311. lw6pil round2seq C function exported to Guile Wrapper on lw6pil_round2seq 4 16 236 c lw6pil seed command generate c lw6pil seed command generate C function exported to Guile Wrapper on lw6pil_seed_command_generate 4 16 237 c lw6pil send command c lw6pil send command C function exported to Guile Wrapper on lIwOpil send command 4 16 238 c lw6pil seq random 0 c lw6pil seq random 0 C function exported to Guile Wrapper on lw6pil_seq_random_0 198 Liquid War 6 4 16 239 c lw6pil seq2round c lw6pil seq2round C function exported to Guile Wrapper on lw6pil_seq2round 4 16 240 c lw6pil slow down c lw6pil slow down C function exported to Guile Wrapper on lIw pil slow down 4 16 241 c lw6pil speed up c lw6pil speed up C function exported to Guile Wrapper on lw6pil_speed_up 4 16 242 c lw6pil suite get checkpoint c lw6pil suite get checkpoint C function exported to Guile Wrapper on lw6pil_suite_get_checkpoint 4 16 243 c lw6pil suite get commands by node index c lw6pil suite get commands by node index C function exported to Guile Wrapper on lw pil ouite get command by node index returns the list of all steps 4 16 244 c lw6pil suite get commands by stage c lw6pil suite get commands by stage C function exported to Guile Wrapper on lw6pil_suite_get_command_by_stage returns the list of all steps 4 16 245 c lw6pil suite get node id c lw6pil suite get node id C function exported to Guile
312. lw6sys log set level 0 cc cece eee eee 2d 4 16 372 cJwfsnwvs megabvtes available 005 211 4 16 373 c lw6sys openmp get NUM prOCS s s sses ss rnnr 211 4 16 374 c lw6sys path concat 00 eee ee 211 4 106 375 c Iw6sys path file only sssssseeeeeeeeeees 211 4 16 376 c lw6sys path parent ccc eee eee ee eee 211 4 16 377 cJwfanvs path anit eee ene eee 211 4 106 378 cJwfavs zet memorv bazooka ergser 211 4 16 379 cJwfavs set memorv bazooka aize 212 4 106 380 c Iw6sys signal custom sesseeeseeeseeeeeee 212 4 106 381 c lw6sys signal default ssssseeeeeeeeeeese 212 4 16 382 cJfanvs stenal poollout resena 212 4 16 383 cJfswvs stenal zend ouit cee eee ee eee 212 4 16 384 c lw6sys sleep 6 ieee eee III 212 4 16 385 c lw6sys Sn00Ze 1 eee teens 212 4 106 386 chefavs urteanonize eee 212 4 16 387 c lw6tsk loader get stage 0 ccc eee eee eee 212 4 16 388 c lw6tsk loader new 0 cece eee eee eee 212 4 16 389 cJeftsk oader pop 0 0 cece eee eee eee eee 213 4 16 390 c Jetftsk Joader pusb gen 0c eee eee eee 213 4 16 391 c Iw6tsk loader push ldr 00 cece eee eee 213 AAT Seript HOOKS 202 ia looser eh pe hu setae das EELER AS es 213 CAPI oreet eee CC ee er Ead due 215 5 1 Dblotdewarg ciriciri eee eee eee eens 215 Sll OVERVIEW essei Debt ph Estes pd ra edet 215 512 A A PE s esce on e nore bre prb PES eng pe 215 5 23 Nb dot EELER D p om die E
313. ly escape from any grip e fix all other teams are freezed you can move but not attack them e invincible no damage for a limited time move untouched e kamikaze you die along with the strongest team on the battlefield requires at least 3 teams e mix fighters exchange position their properties being preserved e permutation will exchange colors randomly requires at least 3 teams double edged weapon e plague general disease all fighters mysteriously loose health e reverse fighters continue to move normally but attacks are done in reverse mode backwards e rewind make the battlefield be like it was a few seconds ago e scatter every fighters of every team scattered in random places e shrink reduces the number of fighters on the map e steal steals some fighters to other teams e teleport fighters placed as close as possible to cursor e turbo move faster for a limited time Note that this is in progress some of them are NOT IMPLEMENTED YET 2 10 Network games 2 10 1 Choose your public url Liquid War 6 needs to name your node you can think as your server instance of the game and have a unique URL address to publish and give to other nodes If only one network adapter is attached to your computer and your address IP is A B C D then by default the game will pick automatically the address http A B C D 8056 and it should work flawlessly Problems can arise if you have a peculiar network configuration
314. me you would get reading this manual 2 14 Logs Liquid War 6 uses stdout to output important messages and stderr to log warnings and errors It will also use syslog if available Additionnally a verbose log is available in HOME liquidwar6 log csv on GNU Linux and POSIX systems in C Documents and Settings lt username gt Liquid War 6 log csv on Microsoft Windows and in Users lt username gt Library Application Support Liquid War 6 log csv on Mac OS X You can read this using any spreadsheet software capable of reading csv file It uses the tab t character as a separator It contains valuable informations including version and 22 Liquid War 6 most default values for the game and for each line logged it says where in the code the log function was called A must have for debugging 2 15 Report bugs There are two ways to report bugs e send a mail to lt bug liquidwar6 gnu org gt e use the web based Savannah bug tracker http savannah gnu org bugs func additem amp group liquidwar6 The latter Savannah is much preferred because the mailing list is bloated with spam It also offers a list of bugs which you should read before submitting a new one Chapter 3 Hacker s guide 23 3 Hacker s guide This hacker s guide is for anyone who is curious about the game and wants to know how it works It covers many aspects from simple map creation to technical program internals A great effort has been done in Liqui
315. ment specifies that a particular numbered version of this License or any later version applies to it you have the option of following the terms and conditions either of that specified version or of any later version that has been published not as a draft by the Free Software Foundation If the Document does not specify a version number of this License you may choose any version ever published not as a draft by the Free Software Foundation If the Document specifies that a proxy can decide which future versions of this License can be used that proxy s public statement of acceptance of a version permanently authorizes you to choose that version for the Document RELICENSING Massive Multiauthor Collaboration Site or MMC Site means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works A public wiki that anybody can edit is an example of such a server A Massive Multiauthor Collaboration or MMC contained in the site means any set of copyrightable works thus published on the MMC site CC BY SA means the Creative Commons Attribution Share Alike 3 0 license pub lished by Creative Commons Corporation a not for profit corporation with a principal place of business in San Francisco California as well as future copyleft versions of that license published by that same organization Incorporate means to publish or republish a Document
316. ment variable round delta XML key Type integer Default value 1 Min value 0 Max value 100 Conditions by how much the cursor potential will be incremented each time gradient is spreaded Sounds cryptic It is The idea is that at each time you move your cursor of 1 pixel theorically you ll need in the worst case to move of 1 more pixel to reach any point on the map Of course this is not true but this is the default asumption and gradient spread will fix that Only in Liquid War 6 this is not even the worst case for you can control your cursor with the mouse and cross walls Whenever you cross a wall you might have done a great distance from the fighters point of view if the map is a maze Thus this parameter which corrects things experience shows it does give acceptable results to increase the cursor potential by more than one at each turn Toy arround with this if you find fighters take wrong paths on some given map If in doubt don t touch 4 11 32 rounds per sec rounds per sec value Command line option LW6 ROUNDS PER SEC Environment variable rounds per sec XML key Type integer Default value 50 Min value 1 Max value 200 Defines the overall speed of the game All other settings being equal raising this value will cause the game to behave faster Everything will be faster except probably the display since your computer will calculate more game positions in a given time and spend more CPU time It w
317. mentation about weapons to know what these ids mean 4 11 90 team profile lightblue weapon id team profile lightblue weapon id lt value gt Command line option LW6 TEAM PROFILE LIGHTBLUE WEAPON ID Environment variable team profile lightblue weapon id XML key Type integer Default value 4 Min value 0 Max value 19 Id of the default weapon for the lightblue team see the documentation about weapons to know what these ids mean 4 11 91 team profile lightblue weapon mode team profile lightblue weapon mode value Command line option LW6 TEAM PROFILE LIGHTBLUE WEAPON MODE Environment variable team profile lightblue weapon mode XML key Type integer Default value 1 Min value 0 Max value 2 Weapon mode for lightblue team 0 means there s no weapon 1 means one weapon per team defined by the weapon id parameter 2 means random weapon 122 Liquid War 6 4 11 92 team profile magenta aggressive team profile magenta aggressive lt value gt Command line option LW6_TEAM_PROFILE_MAGENTA_AGGRESSIVE Environment variable team profile magenta aggressive XML key Type integer Default value 192 Min value 5 Max value 2000 Defines how aggressive the magenta team is This is a percentage if set to 200 then team will attack twice as much as any other team with the default value Setting this to a high value clearly advantages this team 4 11 93 team profile magenta fast team profile magenta fast lt va
318. mited to parsing documentation GNU Indent Code is regularly indented using the script src indent sh which calls indent automatically and recursively on the whole source tree md5sum GNU core utilities This is used to stamp the source code and help tracking exact build versions Doxygen Used to generate documentation concerning C structs more precisely include the struct members documentation into the official texinfo manual xsltproc Used to post process Doxygen output and transform it to texinfo dot Used to generate Doxygen call graphs Google Performance Tools This tool is convenient to optimize the program and find out what parts of it take most of the CPU power to execute lcov Gives nice output about code coverage GNU global Shows global references through the code pmccabe Cyclomatic complexity shows what part of the code are bloated Valgrind Usefull to track down memory leaks and many other programming errors 2 3 4 Installing requirements using RPM DEB packages You might find it convenient not to install all the requirements from source but use your favorite GNU Linux distribution packages On an RPM based GNU Linux system a typical command tested with Fedora 15 Lovelock could be yum install make gcc glibc glibc devel binutils libgomp guile guile devel gmp gmp devel libgcic2 libgc dev libtool libtool 1tdl libtool ltdl devel zlib zlib devel expat expat devel libpng libpng deve
319. mmand line option LW6 EXECUTED AGAIN Environment variable executed again XML key Type boolean Default value false This environment variable keyword is used to detect wether the program has been launched by itself with an internal execv call This is used as a workarround to set some environment variables DYLD LIBRARY PATH on Mac OS X for instance before the program is run as sometimes using setenv inside the program does not work 4 15 35 gfx cpu usage gfx cpu usage value Command line option LW6 GFX CPU USAGE Environment variable gfx cpu usage XML key Type float Chapter 4 Reference 167 Default value 0 75 Min value 0 Max value 1 Percentage of the CPU which will be used by the display thread It s wise to leave some time to other threads to execute The OS does it naturally but setting this helps the whole process by explicitely pausing sleep call the display thread You could change this to a low value if you have lagging games but smooth display 4 15 36 gfx debug gfx debug value Command line option LW6 GFX DEBUG Environment variable gfx debug XML key Type boolean Default value false Enables dedicated graphics debugging tools This is different from debug mode which is global this one is really graphics specific 4 15 37 io per sec io per sec lt value gt Command line option LW6 I0 PER SEC Environment variable io per sec XML key Type integer
320. mod ogg C function exported to Guile Wrapper on lw6sys build get enable mod ogg 4 16 287 c lw6sys build get enable mod soft c lw6sys build get enable mod soft C function exported to Guile Wrapper on lIw6sys build get enable mod soft 4 16 288 c lw6sys build get enable openmp c lw6sys build get enable openmp C function exported to Guile Wrapper on lw6sys_build_get_enable_openmp Chapter 4 Reference 4 16 289 c lw6sys build get enable optimize c lw6sys build get enable optimize Wrapper on lIw6sys build get enable optimize 4 16 290 c lw6sys build get enable paranoid c lw6sys build get enable paranoid Wrapper on lw6sys build get enable paranoid 4 16 291 c lw6sys build get enable profiler c lw6sys build get enable profiler Wrapper on lw6sys build get enable profiler 4 16 292 c lw6sys build get enable valgrind c lw6sys build get enable valgrind Wrapper on lIw6sys build get enable valgrind 4 16 293 c lw6sys build get endianness c lw6sys build get endianness Wrapper on lIw6sys build get endianness 4 16 294 c Iw6sys build get gcc version c lw6sys build get gcc version Wrapper on lw6sys build get gcc version 4 16 295 c lw6sys build get home url c lw6sys build get home url Wrapper on lIw6sys build get home url 4 16 296 c lw6sys build get host cpu c lw6sys build get host cpu Wrapper on lw6sys build get host cpu 4 16 297 c lw6sys build get host os c lw6sys
321. mpose a license fee royalty or other charge for exercise of rights granted under this License and you may not initiate litigation including a cross claim or counterclaim in a lawsuit alleging that any patent claim is infringed by making using selling offering for sale or importing the Program or any portion of it Patents A contributor is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based The work thus licensed is called the contributor s contributor version A contributor s essential patent claims are all patent claims owned or controlled by the contributor whether already acquired or hereafter acquired that would be infringed by some manner permitted by this License of making using or selling its contributor version but do not include claims that would be infringed only as a consequence of further modification of the contributor version For purposes of this definition con trol includes the right to grant patent sublicenses in a manner consistent with the requirements of this License Each contributor grants you a non exclusive worldwide royalty free patent license under the contributor s essential patent claims to make use sell offer for sale import and otherwise run modify and propagate the contents of its contributor version In the following three paragraphs a patent license is any express agreement or com mitment
322. music dir 0 80 show default music path 80 show default prefix sess 80 Liquid War 6 show default script file 80 Sbhou default user dir 80 how log fil i icei oed E 80 SHOW MAP EE 80 shoW Map path EE 80 sBhow mod dir ceikegueni e Eee ber REDI 81 2sShow music dir c izc id dil ee ERA 81 Bhow music path i ieseer ie ne bee 81 Ahoy profik occisi oe eS xe e RE ad 81 cOBlHOWN r un diPf e21 s9ectese rPteberQ vertes 81 show script file lb IE eh 81 cghow user dir ic lac lex epe ee eph 81 side attack factor value 108 side defense factor value 109 Bimulate baBliC ciosbgneest hhb ee quer giel 172 cgd3mulate fu ll icizie9eABSS emerit aos 172 single army size 4value 109 skip network value s sess 97 snd backend lt value gt 0 eee eee 94 speed lt value gt eis via ected e Are ERE RR xa 139 spread mode value ssssss 109 spread thread lt value gt sues 109 spreads per round lt value gt 110 srv backends value sess 97 start blue x value cee eee 110 start blue y 2 value sss 110 start cyan x value sess 110 start cyan y 4value s sess 111 start green x value
323. n XML key Type color Default value 00ff00 Defines the color for the green team Syntax is HTML like ZZRGB or RRGGBB 4 13 40 team color lightblue team color lightblue value Command line option LW6 TEAM COLOR LIGHTBLUE Environment variable team color lightblue XML key Type color Chapter 4 Reference 151 Default value 88bbff Defines the color for the light blue team Syntax is HTML like RGB or RRGGBB 4 13 41 team color magenta team color magenta value Command line option LW6 TEAM COLOR MAGENTA Environment variable team color magenta XML key Type color Default value ff00ff Defines the color for the magenta team Syntax is HTML like RGB or RRGGBB 4 13 42 team color orange team color orange value Command line option LNG TEAM COLOR ORANGE Environment variable team color orange XML key Type color Default value ff8800 Defines the color for the orange team Syntax is HTML like RGB or RRGGBB 4 13 43 team color pink team color pink value Command line option LW6 TEAM COLOR PINK Environment variable team color pink XML key Type color Default value ff88bb Defines the color for the pink team Syntax is HTML like RGB or RRGGBB 4 13 44 team color purple team color purple lt value gt Command line option LW6_TEAM_COLOR_PURPLE Environment variable team color purple XML key Type color Default value bb88ff Defi
324. n Liquid War 5 I m talking about network code GUI and other high level glue code which are currently being written in C This idea is to write all this in a convenient scripting language There won t be any impact on performances I can t garantee Liquid War 6 will be blazingly fast but for sure it won t be the scripting language fault And of course if as in Liquid War 3 and 5 I feel the need to implement some stuff in assembly for performances issues I will do it 230 Liquid War 6 We end up with a multi language architecture script C assembly My guess is that I ll use Scheme as an extension language Python would be a good choice too Let s say DI give Scheme a chance and if it s really not adapted I ll switch back to Python The point is that today I know Python and don t really know Scheme but well it s always a pleasure for me to learn new things It s fun So what is planned today is that Liquid War 6 will be a Scheme program which will call callbacks functions written in C and or assembly These functions will do all the low level time consuming algorithmic and graphical stuff The rest of the code being entirely scripted B 2 2 OpenGL Liquid War is not a 3D game so why use OpenGL e it s a very convenient way to access video hardware acceleration with XFree86 e low end computers and or computers without 3D acceleration can still run Liquid War 5 e I m interested in learning using this API 8 This choi
325. n when switching back to fullscreen you ll be in 800x600 the game will automatically pick up the fullscreen mode which is closest to the current windowed mode resolution 2 11 2 Display rate By default the game will try and run at 60 frames per second Given the nature of Liquid War 6 this is probably enough Higher values will maybe give a slightly smoother display but barely noticeable You can activate the display of frames per seconds aka fps through the menu op tions gt system or with the command line display fps On a single processor system reducing the number of frames per second might allow the rest of the game run faster So if you notice the game is really slow in terms of fighters move slowly then you might be happy reducing the display rate and therefore giving power back to the other parts of the program On a dual core or more or on a multi processor Chapter 2 User s manual 21 system this is probably useless since the game is threaded and has a dedicated thread for display purposes The command line option to reduce the number of frames per second is target fps Additionnally the parameter gfx cpu usage allows you to force the display thread to take a rest and go idle for some time This is advanced settings most users won t touch this 2 12 Sound amp music 2 12 1 Current status As of today the game is capable of playing Ogg Vorbis audio files That s it
326. n you need to install the requirements All these packages need to be cross compiled To make things clear and non ambiguous even if you have CC set up in your environment variables pass build and host arguments to the configure script of all these pack ages typical command is Chapter 3 Hacker s guide 49 configure build i686 pc linux gnu host arm open2x linux prefix GP2X_USER_PREFIX Here s the list of the requirements e SDL 1 2 14 works zith the following settings configure prefix GP2X_ USER_PREFIX build x86 64 pc linux gnu host arm open2x linux disable pulseaudio disable video directfb e libtool Install a 1 5 x version and not 2 2 x For some reasons 2 2 x is unusable it keeps on complaining that lt libltdl LTX preloaded symbols is not defined Appar ently the bug has already been reported For Liquid War 6 needs 1 5 x is very fine use 1 5 26 for instance it works well e GNU MP version 4 3 1 reported to work e Guile version 1 8 7 reported to work You need to pass the witout threads switch to the configure script else it will try and fail to run a test program Liquid War 6 does not use Guile threads it does use threads but uses them directly outside the Guile layer e zlib version 1 2 3 reported to work Do not use build and host for this one they are unsupported Package compiles fine anyway e expat version 2 0 1 reported to work e libpng version 1 2
327. naged to win before the bell rings Also technically this value will be translated into rounds and moves and the game engine will wait until enough rounds and moves have been played So if the computer is too slow and the desired speed is not reached then the game will last for a longer time 4 11 142 use team profiles use team profiles value Command line option LNG USE TEAM PROFILES Environment variable use team profiles XML key Type integer Default value 1 Min value 0 Max value 1 If set then all the team profile values will be taken in account This enables a mode in which teams behave differently according to their colors If you disable this then all teams will behave the same which is more fair but might not be as fun 4 11 143 vertical move vertical move value Command line option LW6 VERTICAL MOVE Environment variable vertical move XML key Type integer Default value 1 Min value 0 Max value 7 Defines when to process a vertical move along the Z depth axis If set to 0 fighters never spontaneously move along this axis If set to 1 it will be tried just after the first move failed If set to 2 it will be tried just after the second move failed And so on 4 11 144 weapon charge delay weapon charge delay value Command line option LNG WEAPON CHARGE DELAY Environment variable weapon charge delay XML key Type integer Default value 30 Min value 1 Max value
328. name sess 76 show build includedir s 76 Sbov build Ldflage nrnna 76 s show build li3bdir 22 2 pea eas eke es 76 show build license cee eee 76 show build localedir 76 show b ild mac 08 X i 0 be ens 76 Sbhog buiLd mdbeum 00008 76 show build ms windows 005 Vi show build package id 77 show build package name 77 show build package string 77 show build package tarname 77 show build pointer size s Sbhou build prefis Ka show build stamp sese d Sbhog build trime 0 cee eee eee ee Fan show b ild top sredir sscssicesisrsstanis 78 eshow build unix 11iliilidl s l92te 78 show build version eee 78 show build version base 78 show build version major 78 show build version minor 78 shoOW DULId X06 EES 78 show config file lcs usos eds 78 TASShO0W CWQ ee er vedere ede Peu 19 show data diros s sweripRis eS eene anneta 79 show default config file 79 show default data dip isses siiiinetait 19 show default log file 79 show default map dir s s 19 show default map path cesse 79 show default mod dir sss 79 show default
329. nate bg value Command line option LW6 COLOR ALTERNATE BG Environment variable color alternate bg XML key Type color Default value 333333 Defines the alternate color more precisely its bg background part Colors are always defined by a bg fg pair Most colors in the game can be deduced from this one usually to color a map you only need to define color base bg color base fg color alternate bg and color alternate fg 144 Liquid War 6 4 13 10 color alternate fg color alternate fg value Command line option LNG COLOR ALTERNATE FG Environment variable color alternate fg XML key Type color Default value ZZffffff Defines the alternate color more precisely its fg foreground part Colors are always defined by a bg fg pair Most colors in the game can be deduced from this one usually to color a map you only need to define color base bg color base fg color alternate bg and color alternate fg 4 13 11 color base bg color base bg value Command line option LW6 COLOR BASE BG Environment variable color base bg XML key Type color Default value 4000000 Defines the base color more precisely its bg background part Colors are always defined by a bg fg pair Most colors in the game can be deduced from this one usually to color a map you only need to define color base bg color base fg color alternate bg and color alternate fg 4 13 12 color base fg color base fg valu
330. nb_frames 4 16 32 c lw6dsp get video mode c lw6dsp get video mode C function exported to Guile Wrapper on lw6dsp_get_video_mode 4 16 33 c Iw6dsp new c lw6dsp new C function exported to Guile Wrapper on lw6dsp_new 4 16 34 c Iw6dsp release c lw6dsp release C function exported to Guile Wrapper on lw6dsp_release 4 16 35 c Iw6dsp update c lw6dsp update C function exported to Guile Wrapper on lw6dsp update 4 16 36 c Iw6gen create from seed c lw6gen create from seed C function exported to Guile Wrapper on lw gen create from seed 4 16 37 c lw6gen seed new c lw6gen seed new C function exported to Guile Wrapper on lw6gen seed new 4 16 38 c Iw6gen seed normalize c lw6gen seed normalize C function exported to Guile Wrapper on lw6gen_seed_normalize 178 4 16 39 c lw6gfx get backends c lw6gfx get backends Wrapper on lw6gfx get backends 4 16 40 c Iw6gui default look c lw6gui default look Wrapper on lIw6gui default look 4 16 41 c lw6gui input reset c lw6gui input reset Wrapper on lw 6gui input reset 4 16 42 c Iw6gui joystick1 get move pad c lw6gui joysticki get move pad Wrapper on lw gui joystickl get move pad 4 16 43 c Iw6gui joystick1 pop button a c lw6gui joysticki pop button a Wrapper on lw6gui joystick1 pop button a 4 16 44 c Iw6gui joystick1 pop button b c lw6gui joysticki pop button b Wrapper on lw6gui joystick1 pop button b 4 16 45 c Iw6gu
331. nce of using peer to peer transmission to receive a copy likewise does not require acceptance 246 10 11 Liquid War 6 However nothing other than this License grants you permission to propagate or modify any covered work These actions infringe copyright if you do not accept this License Therefore by modifying or propagating a covered work you indicate your acceptance of this License to do so Automatic Licensing of Downstream Recipients Each time you convey a covered work the recipient automatically receives a license from the original licensors to run modify and propagate that work subject to this License You are not responsible for enforcing compliance by third parties with this License An entity transaction is a transaction transferring control of an organization or substantially all assets of one or subdividing an organization or merging organizations If propagation of a covered work results from an entity transaction each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party s predecessor in interest had or could give under the previous paragraph plus a right to possession of the Corresponding Source of the work from the predecessor in interest if the predecessor has it or can get it with reasonable efforts You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License For example you may not i
332. nd b serves only to enable use of the work with that Major Component or to implement a Standard Interface for which an implementation is available to the public in source code form A Major Component in this context means a major essential component kernel window system and so on of the specific operating system if any on which the executable work runs or a compiler used to produce the work or an object code interpreter used to run it The Corresponding Source for a work in object code form means all the source code needed to generate install and for an executable work run the object code and to modify the work including scripts to control those activities However it does not include the work s System Libraries or general purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work For example Corresponding Source includes interface definition files associated with source files for the work and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require such as by intimate data communication or control flow between those subprograms and other parts of the work The Corresponding Source need not include anything that users can regenerate auto matically from other parts of the Corresponding Source The Corresponding Source for a work in source code form is that same work
333. nd programming this is just for you 2 1 Mailing lists 2 1 1 General discussion The main discussion list is lt help liquidwar6 gnu org gt and is used to discuss all aspects of Liquid War 6 including installation development game strategies and whatever subject players and hackers might want to talk about provided it is Liquid War 6 related If you don t know on which list to subscribe this is the one To subscribe to it please send an empty mail with a Subject header line of just sub scribe to the request list that is lt help liquidwar6 requestQ gnu org gt You can also subscribe to the list using the Mailman web interface for help liquidwar6 and consult help liquidwar6 archives 2 1 2 Announcements Announcements about LiquidWar 6 are made on lt info liquidwar6 gnu org gt Subscribe to it to be informed of major releases and other significant news To subscribe to it please send an empty mail with a Subject header line of just sub scribe to the request list that is lt info liquidwar6 request gnu org gt You can also subscribe to the list using the Mailman web interface for info liquidwar6 and consult info liquidwar6 archives Please also consider reading the latest news on Savannah 2 1 3 Bugs There is also a special list used for reporting bugs lt bug liquidwar6 gnu org gt Please try and describe the bug as precisely as possible The more accurate the description the more chances it will get
334. nd publisher s of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version 5 COMBINING DOCUMENTS You may combine the Document with other documents released under this License under the terms defined in section 4 above for modified versions provided that you include in the combination all of the Invariant Sections of all of the original documents unmodified and list them all as Invariant Sections of your combined work in its license notice and that you preserve all their Warranty Disclaimers The combined work need only contain one copy of this License and multiple identical Invariant Sections may be replaced with a single copy If there are multiple Invariant Sections with the same name but different contents make the title of each such section unique by adding at the end of it in parentheses the name of the original author or publisher of that section if known or else a unique number Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work In the combination you must combine any sections Entitled History in the vari ous original documents forming one section Entitled History likewise combine any sections Entitled Acknowledgements and any sections Entitled Dedications You must delete all sections Entitled Endorsements 6 COLLECTIONS OF DOCUMENT
335. nds on parameters passed to configure 4 3 16 show build enable gtk show build enable gtk Command line option Shows wether GTK support has been enabled when building the game This depends on parameters passed to configure and also on the presence of GTK headers and libs It uses pkg config to detect it 4 3 17 show build enable instrument show build enable instrument Command line option Shows wether the game was build with the finstrument functions GCC switch This depends on parameters passed to configure 4 3 18 show build enable mod caca show build enable mod caca Command line option Shows wether the mod caca graphical backend has been enabled when building the game This depends on parameters passed to configure and also on the presence of libcaca related libraries 4 3 19 show build enable mod csound show build enable mod csound Command line option Shows wether the mod csound audio backend has been enabled when building the game This depends on parameters passed to configure and also on the presence of the csound library 74 Liquid War 6 4 3 20 show build enable mod gl1 show build enable mod gli Command line option Shows wether the mod gll graphical backend has been enabled when building the game This depends on parameters passed to configure and also on the presence of SDL and OpenGL related libraries 4 3 21 show build enable mod gles2
336. nds are accessed through the following URLs e ping txt e info txt e list txt OOB messages are usually sent many times in redundant mode on the network as there s no tracking of them sending them through multiple channels ensures they make their way to the right place The parser for these messages is located in src lib msg msg oob c 3 14 3 Regular messages overview All messages that are non OOB share a common syntax This is called the envelope of messages The general syntax is LW6 VERSION lt PASSWORD_CHECKSUM gt lt PHYSICAL_TICKET_SIG gt lt LOGICAL_TICKET_SIG gt lt PHYSICAL_FROM Here s an example LW6 0 1 3485 2didbed7 3003300330033003 2002200220022002 DATA 8 0 1 1000000035005 30 In this example the messages carried is DATA 8 O 1 1000000035005 3003300330033003 SET 3001 11 1 1 O the rest is part of the envelope protocol Here s what those fields mean e LW6 should always be LW6 this is a marker to make sure we re speaking the right protocol e VERSION the version of the program sending the message the receiver of the message should check this version is compatible e PASSWORD CHECKSUM the password checksum while a clear password should still be correctly interpreted as for OOB messages there s no reason to send the cleartext password so the checksum is just fine Note that the checksum is short and vulnerable to brute force attacks If you want strong protection the gener
337. ne nena 145 hud color frame fg sess sese rens 146 hud color text bg ens s eda eae dies 146 hud color text fg ices lesse evene 146 hud stylG8 enhn beaded eee 146 I JO per BOG iur e rex ei rr EE EEES 167 J jpeg quality imo rib ehe rere 167 K keep rati0 ene neers sae EE Qe 146 krnown nodes 5045 508 eae oe ROUTERS 96 L loadet sl68p x deii REAPER d 167 local bench delt ais kuer eleme hers 168 log file LR eae ede eet ne ERE end 82 log level s ssel9kmd RR peu LR EUER Se de 168 log timeout 2224 x ee Roe reese E rii 168 LW6_AMBIANCE_EXCLUDE 00 ee eee 93 LW6 AMBIANCE FILE 2e et rele es 94 LW6 AMBIANCE FILTER eese eee 94 LW6_ANIMATION_DENSITY 0 0 141 LW6 ANIMATION GPEED 142 LW6 AUTO RELEASE DELAY 8T LW6_BACKGROUND_COLOR_AUTO 135 LW6_BACKGROUND_COLOR_ROOT_BG 142 LW6_BACKGROUND_COLOR_ROOT_FG 142 LW6_BACKGROUND_COLOR_STUFF_BG 142 LW6_BACKGROUND_COLOR_STUFF_FG 143 LW6_BACKGROUND_STYLE 008 143 LG BENCH VALUE 0 0 0 c cece n 160 LW6 BINID uia ep et I aue pta 160 LWG BIND IP epp ihren redd yere Se Pes 95 LW6 BIND P RT ea ia d eege eg dick See 95 LW6_BLINK_CURSOR 0 0 cece eee eee 143 LW6_BOOST POWER seg rm meer hr 100 LW6 B T IQ ReecERERMR ERR RDUS RES 154 LG BUT SPEED s era e er rn eee 155 EWG BOTI Al kre rc hk AE 155 LW6 BUET COLOR eece ster NEE peris
338. nes the color for the purple team Syntax is HTML like RGB or RRGGBB 4 13 45 team color red team color red value Command line option LW6 TEAM COLOR RED Environment variable team color red XML key Type color Default value ff0000 Defines the color for the red team Syntax is HTML like Z RGB or RRGGBB 152 Liquid War 6 4 13 46 team color yellow team color yellow lt value gt Command line option LW6_TEAM_COLOR_YELLOW Environment variable team color yellow XML key Type color Default value ffff00 Defines the color for the yellow team Syntax is HTML like RGB or RRGGBB 4 13 47 view color cursor bg view color cursor bg lt value gt Command line option LW6_VIEW_COLOR_CURSOR_BG Environment variable view color cursor bg XML key Type color Default value 333333 Defines the background cursor color Will typically be used to draw the shape of the cursor Ignored if view color auto is set Can be RGB RGBA RRGGBB or RRGGBBAA 4 13 48 view color cursor fg view color cursor fg lt value gt Command line option LW6_VIEW_COLOR_CURSOR_FG Environment variable view color cursor fg XML key Type color Default value ffffff Defines the foreground cursor color Will typically be used to draw text in the cursor Ignored if view color auto is set Can be RGB RGBA RRGGBB or RRGG BBAA 4 13 49 view color map bg view color map bg value Command line opt
339. ng on the graphics backend exact mapping might change they should hopefully be obvious and intuitive Those keys are e up the arrow up key e down the down arrow key Chapter 2 User s manual e left the left arrow key e right the right arrow key e enter the enter return key e esc the escape key e ctrl the control key e alt the alt meta key e pgup the page up key e pgdown the page down key Basically 2 8 2 Combining mouse keyboard and joysticks 15 It s also possible to control the game with the mouse only or with a joystick By default the interface will trap all events and respond on any of these possible devices Keyboard up down left right enter esc ctrl alt pgup pgdown Mouse mouse pointer mouse pointer mouse pointer mouse pointer left click right click right click or double click on any button middle click or triple click on any button wheel up wheel down Joystick stick stick stick stick button A button B button C button D button E button F Menu action previous menu item next menu item change menu item value change menu item value validate menu back to previ ous menu N A N A previous menu item next menu item In game move cursor up move cursor down move cursor left move cursor right validate chat line quit game fire alternate fire zoom in
340. not least the game at startup only allows you to play red green blue and yellow Other colors are unlocked as you progress among levels Same things with weapons there are liberated continuously through the game This mechanics allows the following behavior e when game is launched first only a small subset of maps are accessible e after you win one map sort of quite easy you gain access to the next level plus many of the maps of the extra package e after each map you win you re redirected to the next map and regularly you gain access to new colors weapons As a final word yes it s possible to cheat fool the exp system but it s believed this is moot and lame Chapter 3 Hacker s guide 31 3 2 Translating 3 2 1 Using gettext Liquid War 6 uses GNU gettext for all its messages There s an online manual about this tool In practice what you have to do as a translator is to edit the po xx po file with xx being your language country code For instance to translate the game in French one needs to edit po fr po 3 2 2 Formatted strings This is very important you might already be aware of it if you are familiar with gettext but still it s worth mentionning when a string contains special characters such as jd or 4s in a general manner anything with a it s important that all translations contain exactly the same number of ds and ss than the original For instance foo has jd bars 4s can
341. ns of this License they do not excuse you from the conditions of this License If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations then as a consequence you may not convey it at all For example if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program Use with the GNU Affero General Public License Notwithstanding any other provision of this License you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work and to convey the resulting work The terms of this License will continue to apply to the part which is the covered work but the special requirements of the GNU Affero General Public License section 13 concerning interaction through a network will apply to the combination as such Revised Versions of this License 248 15 16 17 Liquid War 6 The Free Software Foundation may publish revised and or new versions of the GNU General Public License from time to time Such new versions will be similar in spirit to the present version but may differ in detail to address new problems or concerns Each version is given a distinguishing version number If t
342. nsing distribution and modification of the Modified Version to whoever possesses a copy of it In addition you must do these things in the Modified Version A Use in the Title Page and on the covers if any a title distinct from that of the Document and from those of previous versions which should if there were any 254 N O Liquid War 6 be listed in the History section of the Document You may use the same title as a previous version if the original publisher of that version gives permission List on the Title Page as authors one or more persons or entities responsible for authorship of the modifications in the Modified Version together with at least five of the principal authors of the Document all of its principal authors if it has fewer than five unless they release you from this requirement State on the Title page the name of the publisher of the Modified Version as the publisher Preserve all the copyright notices of the Document Add an appropriate copyright notice for your modifications adjacent to the other copyright notices Include immediately after the copyright notices a license notice giving the public permission to use the Modified Version under the terms of this License in the form shown in the Addendum below Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document s license notice Include an unaltered copy of this License P
343. nvelope but repeated here e lt URL gt the node url could be inferred from envelope but repeated here e lt TITLE gt the readable title of the node base64 encrypted e lt DESCRIPTION gt the readable description of the node base64 encrypted e lt HAS_PASSWORD gt wether it s protected by a password or not 0 if not 1 if protected e lt BENCH gt the bench of the node giving its CPU strength in an arbitrary unit e OPEN RELAY wether the node act as an open relay 0 if not 1 if in relaying e lt UPTIME gt node uptime in seconds e COMMUNITY ID the community id a unique id shared by all nodes connected to a game session e ROUND the current round id e REQUIRED BENCH the minimum bench required to connect to this node used to avoid slow nodes connecting to way too fast games e NB COLORS number of colors playing e MAX NB COLORS maximum number of colors allowed on this node e NB CURSORS number of cursors playing e MAX NB CURSORS maximum number of cursors allowed on this node e NB NODES number of nodes connected e MAX NB NODES maximum number of nodes allowed on this node e PEER LIST list of peers connected to this node e COMMAND ARGS command specific arguments Here are the different possibilities for the COMMAND field e HELLO is used when connecting this should be the first message sent In itself the message means pretty
344. nvironment variable music path XML key Type string Default value HOME liquidwar6 music usr local share liquidwar6 version music Set the music search path By changing this value you ll be able to play with your own musics in your own directory This is different from music dir since it in cludes music dir plus it adds a number of other search paths Unlike most other 84 Liquid War 6 parameters the values given from the command line from the environment vari ables or from the config file are not overwritten but appended That is to say if you specify a music path with the command line argument music path path but also define the LANG MUSIC PATH value and finally edit config xml to change the music path entry in it you ll end up with the game searching for musics in all these directories Additionnally music dir and lt user dir gt music will always be in the list Any given value can itself include several pathes separated by the path sep arator This separator is 7 on GNU Linux and on Microsoft Windows For instance on a GNU Linux box you could use the command line argument music path foo bar music home user music music 4 4 9 prefix prefix Command line option Type string Default value usr local Override the prefix value given to the GNU Autoconf configure script when building the game Not all path will be changed some of them mi
345. o be played with friends on a single computer on a LAN or on Internet An older version Liquid War 5 is available but is not part of the GNU Project Only Liquid War 6 is part of the GNU Project it is a complete rewrite The official page of Liquid War 6 is http www gnu org software liquidwar6 For more information you can read the Wikipedia article about Liquid War 1 2 Project status 1 2 1 What works and what does not yet As of today the game is in beta state It can be installed and you can toy arround with You can even play with It is still far from being complete as some key features are still missing What works e The whole framework is here some functions are not implemented yet but the bases are set up and they are believed solid The game is very modular and is fully threaded It is designed so that graphics sound network and bot backends can be hacked at will It has a complete self test suite many debugging built in tools and is regularly checked with automated tools For instance you can check reports concerning global references code coverage and cyclomatic complexity This is not a quick hack e Documentation Yes you re reading it e Version 0 0 7beta is playable Local game between humans up to 4 players is possible Two bots are implemented named random and stupid No great players but well they move the cursor A new deatchmatch mode different from LW5 is in place e Liquid
346. o make the program more secure e skip network option is here if you really do not want to be bothered by networking risks e program has basic password support so that you can deny access to unknown players e passwords are never sent in clear text over the network only a hash checksum is sent e no use of well known buffer overflow friendly functions like strcpy equivalents such as strncpy are used e program never trusts what comes from network peers when it wants to know something it checks it out by itself for instance the node list is systematically verified by the local node before being used and or published 20 Liquid War 6 e the built in web server is not a general purpose web server which will end up revealing some of your private files it can only serve game related pages e the very fact that the game has no central server makes it hard to attack it because if someone wants to play Oscar annoying Alice and Bob he well need to fool all the nodes participating in a game sending wrong informations to a single node won t have much effect This being said Liquid War 6 does not use any strong encryption library to protect the data it sends All the checksum machinery might be vulnerable to a brute force and or strong cryptographic attack so in theory it s possible to fool the program In practise if you want real privacy play over a VPN Virtual Private Network 2 11 Graphics 2 11 1 Stand
347. o play a custom music file typically your own ogg music and override default game music If file does not exist game will use its internal music The file will be searched for in the current music path but also in the current map directory No absolute or even relative path are allowed only a plain filename with no slash or backslash Avoid special characters at all cost 4 13 32 music filter music filter lt value gt Command line option LW6_MUSIC_FILTER Environment variable music filter XML key Type string Default value A music filter used when files are played randomly This is not a complex regex enabled filter just a plain string search Even the wildcard won t work If you want precise control on what music file to play please consider reorganizing your files and or use the music file parameter 4 13 33 pixelize pixelize value Command line option LW6_PIXELIZE Environment variable pixelize XML key Type boolean Default value false Depending on the renderer capabilities will try to pixelize some parts of the game This can be used to emulate the old LW5 appearance 4 13 34 system color bg system color bg lt value gt Command line option LW6_SYSTEM_COLOR_BG Environment variable system color bg XML key Type color Default value 333333 Defines the system background color used when displaying system info such as the number of frames per second Can be RGB
348. of 2006 some vendors continue to offer C libraries without snprintf and Liquid War 6 might use them In a general manner Liquid War 6 is part of and designed for GNU You might however manage to compile it with limited libc support this is the case with mingw32 for instance but do it at your own risk Perl Some Makefile commands require Perl You don t need any Perl devel packages and you can probably use any Perl 5 x version since no fancy recent feature of Perl is used Just plain Perl Guile Possibly the most required library since Liquid War 6 is a scheme program which uses a set of functions coded in standard C You need at least Guile 1 8 Chapter 2 User s manual 9 GNU MP GMP is a free library for arbitrary precision arithmetic required by Guile libgc This is a a garbage collector library recent versions of Guile might require this so in case your version of Guile requires it then Liquid War 6 will need it too Itdl This library which comes with libtool provides a portable alternative to dlopen and dlclose Check that you have a usr include ltdl h file or install the corre sponding package zlib Required by other libraries but can also be used directly by Liquid War 6 to compress network messages for instance expat Used to read and write XML files which contain constants and configuration data libpng Liquid War 6 uses libpng to read levels maps not to speak of other optional libraries SDL and t
349. ommand line option Shows the localedir value as passed to the GNU Autoconf configure script when compiling the program Default is usr local share locale 4 3 43 show build mac os x show build mac os x Command line option Returns 1 true if host OS is Mac OS X 0 false if not 4 3 44 show build md5sum show build md5sum Command line option Shows the MD5 checksum which has been calculated from the C source files Com plementary with show build stamp Chapter 4 Reference TT 4 3 45 show build ms windows show build ms windows Command line option Returns 1 true if host OS is Microsoft Windows 0 false if not 4 3 46 show build package id show build package id Command line option Shows the package tarname with its version that is liquidwar6 version 4 3 47 show build package name show build package name Command line option Shows the package name that is Liquid War 6 4 3 48 show build package string show build package string Command line option Shows the package string that is Liquid War 6 version 4 3 49 show build package tarname show build package tarname Command line option Shows the package tarname that is liquidwar6 4 3 50 show build pointer size show build pointer size Command line option Returns the pointer size in bytes Should be 4 on 32 bit systems and 8 on 64 bit systems 4 3 51 show build prefix show build pref
350. on http www gnu org software liquidwar6 manual html node mod 002dcaca html Chapter 5 C API 221 5 25 libglb 5 25 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib glb index html 5 25 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libglb html 5 26 libgui 5 26 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib gui index html 5 26 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libgui html 5 27 libhlp 5 27 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib hlp index html 5 27 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libhlp html 5 28 libimg 5 28 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib img index html 5 28 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libimg html 5 29 libker 5 29 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib ker index html 222 Liquid War 6 5 29 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libker html 5 30 libldr
351. on lIw6sys set memory bazooka size 4 16 380 c lw6sys signal custom c lw6sys signal custom Wrapper on lw6sys_signal_custom 4 16 381 c lw6sys signal default c lw6sys signal default Wrapper on lw6sys_signal_default 4 16 382 c lw6sys signal poll quit c lw6sys signal poll quit Wrapper on lw6sys_signal_poll_quit 4 16 383 c lw6sys signal send quit c lw6sys signal send quit Wrapper on lw6sys signal send quit 4 16 384 c lw6sys sleep c lw6sys sleep Wrapper on lw sys sleep 4 16 385 c lw6sys snooze c lw6sys snooze Wrapper on lw6sys snooze 4 16 386 c lw6sys url canonize c lw6sys url canonize Wrapper on lw6sys_url_canonize 4 16 387 c lw6tsk loader get stage c lw6tsk loader get stage Wrapper on lw6tsk loader get stage 4 16 388 c lw6tsk loader new c lw6tsk loader new Wrapper on lw6tsk_loader_new Liquid War 6 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile Chapter 4 Reference 4 16 389 c lw6tsk loader pop c lw6tsk loader pop Wrapper on lw6tsk loader pop 4 16 390 c Iw6tsk loader push gen c lw6tsk loader push gen Wrapper on lw6tsk loader push gen 4 16 391 c lw6tsk loader push ldr c lw6tsk load
352. option Gives hopefully extensive information on who contributed to the game 4 1 5 debug debug Command line option Enables debug mode This will turn on maximum log information and display ev erything on stderr even messages which are normally only stored in the log file 68 Liquid War 6 4 1 6 defaults defaults Command line option Clears the config file and run the game with default settings Use this if you suspect you have broken something by tweaking user settings or when upgrading the game to a new version 4 1 7 help help Command line option Returns a short help for the program 4 1 8 host host Command line option Display all known system host properties including os and cpu informations 4 1 9 list list Command line option Returns the list of all keywords which can be queried for information This includes command line options environment variables and so on This is the companion option of about Results obtained with st can be passed to about 4 1 10 modules modules Command line option Tells which modules have been enabled when the game was compiled It s still possible to add or remove modules afterwards but this option allows you to know how things were at first 4 1 11 pedigree pedigree Command line option Display all build values these are general constants which can help debugging tracing what binary you are running and so on It s a good idea to ta
353. opyleft license for software and other kinds of works The licenses for most software and other practical works are designed to take away your freedom to share and change the works By contrast the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program to make sure it remains free software for all its users We the Free Software Foundation use the GNU General Public License for most of our software it applies also to any other work released this way by its authors You can apply it to your programs too When we speak of free software we are referring to freedom not price Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software and charge for them if you wish that you receive source code or can get it if you want it that you can change the software or use pieces of it in new free programs and that you know you can do these things To protect your rights we need to prevent others from denying you these rights or asking you to surrender the rights Therefore you have certain responsibilities if you distribute copies of the software or if you modify it responsibilities to respect the freedom of others For example if you distribute copies of such a program whether gratis or for a fee you must pass on to the recipients the same freedoms that you received You must make sure that they too receive or can get the sourc
354. or_allowed 4 16 160 c lw6map exp is weapon allowed c lw6map exp is weapon allowed C function exported to Guile Wrapper on lw6map exp is weapon allowed 4 16 161 c Iw6map get look c lw6map get look C function exported to Guile Wrapper on lw6map get look 4 16 162 c Iw6map get max nb colors c lw6map get max nb colors C function exported to Guile Wrapper on lw6map get max nb colors 4 16 163 c Iw6map get max nb cursors c lw6map get max nb cursors C function exported to Guile Wrapper on lw6map get max nb cursors 4 16 164 c Iw6map get max nb nodes c lw6map get max nb nodes C function exported to Guile Wrapper on lw6map get max nb nodes 4 16 165 c Iw6map get music dir c lw6map get music dir C function exported to Guile Wrapper on lw6map get music dir 4 16 166 c Iw6map get title c lw6map get title C function exported to Guile Wrapper on lw6map get title 4 16 167 c Iw6map param get c lw6map param get C function exported to Guile Wrapper on lw6map param get 4 16 168 c Iw6map rules get default c lw6map rules get default C function exported to Guile Wrapper on lw6map rules get default Chapter 4 Reference 191 4 16 169 c lw6map rules get int c lw6map rules get int C function exported to Guile Wrapper on lw6map rules get int 4 16 170 c Iw6map rules get max c lw6map rules get max C function exported to Guile Wrapper on lw6map rules get max 4 16 171 c
355. ormations 4 15 24 display map display map value Command line option LW6 DISPLAY MAP Environment variable display map XML key Type boolean Default value true Debugging option which can be set to false to disable map level display when playing 4 15 25 display menu display menu lt value gt Command line option LW6_DISPLAY_MENU Environment variable display menu XML key Type boolean Default value true Debugging option which can be set to false to disable the display of menus Chapter 4 Reference 165 4 15 26 display meta display meta lt value gt Command line option LW6_DISPLAY_META Environment variable display meta XML key Type boolean Default value true Set to false to disable the display of meta information this includes the help tootips and breadcrumbs in menus 4 15 27 display mouse display mouse value Command line option LW6 DISPLAY MOUSE Environment variable display mouse XML key Type boolean Default value true Set this to false to always hide the mouse pointer 4 15 28 display mps display mps lt value gt Command line option LW6_DISPLAY_MPS Environment variable display mps XML key Type boolean Default value false Set this to true to display the number of moves per second In theory the game should maintain this constant but in practise it can get low if your computer is too slow or too busy 4 15 29 dis
356. ot mean anything in itself but it s supposed to change each time you compile the game 4 3 3 show build bugs url show build bugs url Command line option Shows the URL to make bug reports 72 Liquid War 6 4 3 4 show build cflags show build cflags Command line option Shows what value you should put in CFLAGS environment variable if you want to compile programs that use Liquid War 6 as a library and include liquidwar6 h 4 3 5 show build codename show build codename Command line option Shows the codename associated with this version generally the name of someone famous who is war related a general an emperor 4 3 6 show build configure args show build configure args Command line option Shows the arguments that have been passed to the GNU Autoconf configure script when building the program This can be very usefull if you want to know how the program has been built 4 3 7 show build copyright show build copyright Command line option Shows a very short copyright notice 4 3 8 show build datadir show build datadir Command line option Shows the datadir value as passed to the GNU Autoconf configure script when compiling the program Default is usr local share This is the generic non Liquid War 6 specific data directory Liquid War 6 related data is stored elsewhere usually in a sub directory see the data dir switch for more information datadir is not
357. ot9 ai Type string Default value idiot AI engine for bot number 9 4 14 20 bot9 color bot9 color value LW6 BOT9 COLOR bot9 color Type string Default value pink Color for bot number 9 4 14 21 nb bots nb bots lt value gt LW6_NB_BOTS nb bots Type integer Default value 2 Min value 0 Max value 9 Liquid War 6 Command line option Environment variable XML key Command line option Environment variable XML key Command line option Environment variable XML key Command line option Environment variable XML key Command line option Environment variable XML key Number of bots on the map 0 means no bots if set to 1 the the bot1 settings will be used if set to 2 then bot1 and bot2 will be used and so on Chapter 4 Reference 159 4 14 22 playerl color playeri color value Command line option LW6 PLAYER1 COLOR Environment variable playeri color XML key Type string Default value red Color of the first player must be red green blue yellow cyan magenta orange lightblue purple or pink 4 14 23 player2 color player2 color value Command line option LW6 PLAYER2 COLOR Environment variable player2 color XML key Type string Default value green Color of the second player must be red green blue yellow cyan magenta orange lightblue purple or pink 4 14 24 player3 color player3 color
358. ound color This is for instance the color which will be used to clear the screen before drawing thing Will be automatically guessed from the map texture if color auto is set Can be ZRGB RGBA RRGGBB or RRGGBBAA 4 13 4 background color root fg background color root fg value Command line option LW6 BACKGROUND COLOR ROOT FG Environment variable background color root fg XML key Type color Default value cccccc Defines a color which will be used together with color base bg to compose the back ground It can be wise to have a minimum contrast between this color and color base bg but it is not mandatory especially if other colors are manually redefined Will be automatically guessed from the map texture if color auto is set Can be RGB RGBA RRGGBB or ZRRGGBBAA 4 13 5 background color stuff bg background color stuff bg value Command line option LW6 BACKGROUND COLOR STUFF BG Environment variable background color stuff bg XML key Type color Default value 333333 Defines a color which will be used together with color alternate fg to draw things an imations sprites text whatever in the background It should be different enough from color alternate fg so that one can really distinguish these colors Will be auto matically guessed from the map texture if color auto is set Can be RGB RGBA RRGGBB or RRGGBBAA Chapter 4 Reference 143 4 13 6 background color stuff fg ba
359. ow build version major 0 c cece eee eee eens 78 4 3 59 show build version minor 0000 e cece ee 78 4 3 60 abhow builk 90 0 00 cece eee e 78 4 3 01 show config file 00 eee 78 4 3 62 abhow cwd e nee e nee eens 79 4 3 63 obhow data dir nurus r raare 79 4 3 64 show default config file 0 0 0 cece eee eee eee eee 79 4 3 65 show default data dir 0 0 0 cece ene eee eee 79 4 3 66 obhow detault Jog Die 79 4 3 67 sbhow default map dr cece eee eee 79 4 3 68 show default map path 0 0 0 cece eee eee eee 79 4 3 69 show default mod dir 00 cece cece eee eee 79 4 3 70 show default music dir 0 c eee eee eee 80 4 3 71 show default music path 0 00 cece eee ee eee 80 4 3 72 abhow detault prefs eee eee eee 80 4 3 73 show default script file 0 00 c eee eee eee 80 4 3 74 sbhow detault user dr ence eens 80 4 3 75 zbhow Jog Dle eee I 80 4 3 76 show map dir 0 cece e 80 4 3 77 show map path 0 eee 80 4 3 78 show mod dir 81 4 3 79 sbhow mugie dir eee eens 81 4 3 80 sbhow mugie path eee aes 81 4 3 81 ShoWw prefb eoseeeseen yd RR HMMS Ere kr ERE DEES 81 4 3 82 abhow zumn dr ene 81 4 3 83 obhow scnpt Dle 0 cece eh 81 4 3 84 show user dir 0 cece cece eee eee eens 81 4 4 Path option 81 4 4 1 config fil wecsccdesi esee RR RR E ES 82 AAD daba diE usse beris ENEE eite Neen Bede Dado eet 82 44 3 EE 82 A
360. p your own arch repository 00 eee 63 3 16 4 Synchronizing your repository with upstream releases 63 3 16 5 Submitting patches 0 0 eee eee eee 64 3 16 6 Recover from broken lock 0 0 cee eee eee 64 O17 UsmpQLD ell Rr DC Gb E RR URN dde 64 Sf About GIL esee eiie e aee bere E RR Eae Re 64 3 17 2 Getting the latest source 65 3 17 3 Developper acceng 0 cece cence e 65 3 17 4 Submitting patches 0 0 0 eee eee 65 3 18 Jenkins builds i 40ccces0 pecan deeded es RR ERR rae men 65 4 Reference 0 0 cc cece ccc 67 Al Basic OptiOns n SERA E E LETRAS RR Ta 67 ALL about ciere deer Eee ade ates EY edd hts 67 4 12 audi b es lank che de Renee iG a eee oe Roe 67 4 3 COPYTICNb EE 67 ALA Credits deno bob ERSTER Pn dene ace datas 67 4 1 5 deb gascis eoe e beau eda eee EE ERA A EE E E 67 4 1 0 defaulis 5c ose he tee pbpI EP RR ERE ERR RR e Nd 68 AAT helpii 2 iesu hue LEE See 68 4 L 8 eebe eege dere d Celia kae bab aues 68 ALI et eeh Seb Ee eed gods e ERE ERE DE ie isdn beens 68 4 1 10 modules cie kb Rr abies RR AEN 68 4 l 11 Pedi Pree eg datt herr mee E phe Le Rare dud 68 2 1 12 testa eege STE pe 8 pe pO RD EDD 68 21 19 MEPSIOW sists deese dese act Oe acd adele bate Mies OUR hua a E REEE 68 4 2 Doc Options ese M anh REESEN E EE ES 69 4 2 1 eample bnts zml 0 00 cece cece eee eee eee eee 69 4 2 3 example rules xml 00 e eee eens 69 4 2 8 example style xml 0 0 e cece eee ee
361. pe integer Default value 12 Min value 0 Max value 19 Id of the default alternate weapon for the cyan team see the documentation about weapons to know what these ids mean 118 Liquid War 6 4 11 74 team profile cyan weapon id team profile cyan weapon id lt value gt Command line option LW6_TEAM_PROFILE_CYAN_WEAPON_ID Environment variable team profile cyan weapon id XML key Type integer Default value 3 Min value 0 Max value 19 Id of the default weapon for the cyan team see the documentation about weapons to know what these ids mean 4 11 75 team profile cyan weapon mode team profile cyan weapon mode lt value gt Command line option LW6_TEAM_PROFILE_CYAN_WEAPON_MODE Environment variable team profile cyan weapon mode XML key Type integer Default value 1 Min value 0 Max value 2 Weapon mode for cyan team 0 means there s no weapon 1 means one weapon per team defined by the weapon id parameter 2 means random weapon 4 11 76 team profile green aggressive team profile green aggressive lt value gt Command line option LW6_TEAM_PROFILE_GREEN_AGGRESSIVE Environment variable team profile green aggressive XML key Type integer Default value 70 Min value 5 Max value 2000 Defines how aggressive the green team is This is a percentage if set to 200 then team will attack twice as much as any other team with the default value Setting this to a high value clearly advantages this team 4
362. play preview display preview lt value gt Command line option LW6_DISPLAY_PREVIEW Environment variable display preview XML key Type boolean Default value true Decides wether a map preview should be displayed when choosing a level 4 15 30 display progress display progress lt value gt Command line option LW6_DISPLAY_PROGRESS Environment variable display progress XML key Type boolean Default value true Decides wether a progress bar should be displayed when a long operation is realized as a background task 166 Liquid War 6 4 15 31 display score display score lt value gt Command line option LW6_DISPLAY_SCORE Environment variable display score XML key Type boolean Default value true Decides wether the score screen should be displayed 4 15 32 display splash display splash value Command line option LW6 DISPLAY SPLASH Environment variable display splash XML key Type boolean Default value true Set this to false to disable the display of the splash screen at game startup 4 15 33 display url display url lt value gt Command line option LW6_DISPLAY_URL Environment variable display url XML key Type boolean Default value false Set this to true to display the URL homepage of the game This is mostly used when doing screenshots so that generated images contain a link to the homepage 4 15 34 executed again executed again value Co
363. point If it is over 127 on a 0 to 255 scale it will be considered as background if it is below 127 it will be considered as foreground 3 1 6 layer2 png layer7 png Liquid War 6 can handle mutiple layer maps Think of a pile of maps one being on top of the other This allows you to create a volume the game considers every layer has two axis x and y and the z axis is to travel through layers First layer corresponds to z 0 second layer to z 1 and so on Here are the files you can use to define layers Chapter 3 Hacker s guide 25 e map png this one is on top it s always defined z 0 e layer2 png z 1 e layer3 png z e layer4 png z 3 e layer5 png z e layer6 png z 5 e layer7 png z A layerX png file should be designed exactly like map png In fact map png could simply have been called layer1 png Up to 6 extra layers can be defined from layer2 png to layer7 png This is a hard coded limit It allows you to define 7 different layers including the top map png layer Keep in mind this layer system is not real 3D it s more a 2D and a half model Adding layers can considerably slow down the game so it s wise to try and use as few layers as possible Technically 3 layers will allow you to build bridges and tunnels which is probably the most usefull construction using layers Fighters can also have difficulties navigating through layers so piling up layers in narrow vertical z axis
364. pon mode for green team 0 means there s no weapon 1 means one weapon per team defined by the weapon id parameter 2 means random weapon 4 11 84 team profile lightblue aggressive team profile lightblue aggressive value Command line option LW6 TEAM PROFILE LIGHTBLUE AGGRESSIVE Environment variable team profile lightblue aggressive XML key Type integer Default value 200 Min value 5 Max value 2000 Defines how aggressive the lightblue team is This is a percentage if set to 200 then team will attack twice as much as any other team with the default value Setting this to a high value clearly advantages this team 4 11 85 team profile lightblue fast team profile lightblue fast value Command line option LW6 TEAM PROFILE LIGHTBLUE FAST Environment variable team profile lightblue fast XML key Type integer Default value 20 Min value 5 Max value 2000 Changes the speed of the lightblue team This is a percentage if set to 50 then team will move twice slower than other teams with the default parameter Setting this high is very likely to advantage the team 4 11 86 team profile lightblue handicap team profile lightblue handicap value Command line option LW6 TEAM PROFILE LIGHTBLUE HANDICAP Environment variable team profile lightblue handicap XML key Type integer Default value 100 Min value 10 Max value 1000 Defines the handicap for the lightblue team 4 11 87 team profile lightblu
365. ported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile 188 4 16 139 c lw6ker get nb cursors c lw6ker get nb cursors Wrapper on lw6ker_game_state_get_nb_cursors 4 16 140 c lw6ker get nb nodes c lw6ker get nb nodes Wrapper on Iw6ker game state get nb nodes 4 16 141 c lw6ker get rounds c lw6ker get rounds Wrapper on lwG6ker get rounds 4 16 142 c lw6ker get spreads c lw6ker get spreads Wrapper on lw 6ker get spreads 4 16 143 c lw6ker is over c lw6ker is over Wrapper on lw6ker_is_over 4 16 144 c lw6ker node exists c lw6ker node exists Wrapper on lw6ker node exists 4 16 145 c lw6ker register node c lw6ker register node Wrapper on lIw ker register node 4 16 146 c Iw6ker remove cursor c lw6ker remove cursor Wrapper on lIwO6ker remove cursor 4 16 147 c lw6ker set cursor c lw6ker set cursor Wrapper on lIw ker set cursor 4 16 148 c lw6ker sync game state c lw6ker sync game state Wrapper on lw6ker_sync_game_state Liquid War 6 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile Chapter 4 Reference 18
366. possibly network contexts to exist is obviously harder to achieve There s no easy way to draw the line but the idea is to put in these test executables as many features as possible to be sure that what is tested in them is rock solid bullet proof and that one can safely rely on it and trust that code when running it in a more complex environnement These test executables are also very good places to see a library API in action find code fragments and make experiments 3 9 4 Memory allocation Liquid War 6 provides macros to allocate and free memory One should use them systemat ically except when trying to free something allocated by another library and in very special cases mostly concerning low low level operations which are seldom hacked on Usage of macros LW6SYS_MALLOC LW6SYS_CALLOC and LW6SYS FREE is straightforward read any random chunk of code for instance src lib sys sys test c to see them in action They are defined in sys sys h Once used these macros will track every single call to malloc and free and if there s a difference it will report it It will also help you by showing what s in the non freed memory area at which line of code it has been allocated and when This is very usefull to track down memory leaks Of course a debugger could tell you some of these informations but experience shows than when you encounter a memory bug it s very often impossible to reproduce it So you one wastes time trying to reprod
367. post treated so that it s ready for use by the core algorithm It will for instance contain the famous mesh structure which groups squares by packets of 1 4 16 64 or more The reason it s been separated from the level is that operations such as creating the mesh might require a lot of time So to allow players to see the level while black magic is still running in the background it was required to make a difference between what is required to view the map level and what is required to play on it game struct e game state 1w6ker game state t contains all the variable ever changing game data This is where the position of fighters is stored their health and such things It is designed to be synchronizable by using mostly simple calls to memcpy It heavily relies on the previous structures the idea is that one can have several game state plugged on a single game struct All these structures are defined in the ker ker h header 3 5 100 predictable algorithm The core Liquid War 6 algorithm is 10096 predictable that is to say given the same input it will produce the same results on any computer Previous versions of the game also had this property This is very important for network games since in a network only informations such as cursor A is at position x y are transmitted Every node maintains its own internal 36 Liquid War 6 game state so it s very important that every node comes with the same output gi
368. pper on Iw6p2p node is peer registered 4 16 204 c Iw6p2p node is seed needed c lw6p2p node is seed needed Wrapper on lw6p2p node is seed needed 4 16 205 c Iw6p2p node new c lw6p2p node new Wrapper on lw6p2p node new 4 16 206 c Iw6p2p node poll c lw6p2p node poll Wrapper on lw6p2p node poll 4 16 207 c Iw6p2p node put local msg c lw6p2p node put local msg Wrapper on Iw6p2p node put local msg 4 16 208 c Iw6p2p node refresh peer c lw6p2p node refresh peer Wrapper on Iw6p2p node refresh peer Liquid War 6 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile Chapter 4 Reference 4 16 209 c lw6p2p node server start c lw6p2p node server start Wrapper on lw6p2p node server start 4 16 210 c Iw6p2p node update info c lw6p2p node update info Wrapper on lw6p2p node update info 4 16 211 c lw6pil bench c lw6pil bench Wrapper on lIw6pil bench 4 16 212 c lw6pil build pilot c lw6pil build pilot Wrapper on lw pil build pilot 4 16 213 c lw6pil calibrate c lw6pil calibrate Wrapper on lw6pil_calibrate 4 16 214 c lw6pil commit c lw6pil commit Wrapper on lw6pil commit 4 16 215 c lw6pil did cursor
369. press CTRL D inadvertantly In that case tla will be in a half broken state telling you it can t acquire revision lock A quick workarround for this is to go to the depot find the latest patch and in this repository create the following folders revision lock contents Both are directories note the two and the single the contents directory can be empty Once you ve done this try to re commit 3 17 Using GIT 3 17 1 About GIT There s no CVS or Subversion AKA SVN source depot for Liquid War 6 Instead a GIT depot is used GIT has many advantages over other source control managers SCM among them it s distributed like GNU Arch You can find interesting informations on GIT here e http git scm com documentation e http savannah gnu org maintenance UsingGit e http savannah gnu org git group liquidwar6 Chapter 3 Hacker s guide 65 3 17 2 Getting the latest source Simply install git and run the following command git clone git git sv gnu org liquidwar6 git If you are behing a firewall and can t have direct TCP IP access git clone http git sv gnu org r liquidwar6 git Additionnally source can be browsed online here http git savannah gnu org cgit liquidwar6 git 3 17 3 Developper access You need an ssh access on Savannah and appropriate rights on the project then you can type git clone login git sv gnu org srv git liquidwar6 git 3 17 4 Submitting patches If you have developpe
370. profiles ee 16 2 0 3 W eapOInSsse ee eek LE PROPRE e rr p RIED AE 16 2 10 Network eames eee nnn 17 2 10 1 Choose your public uf 17 2 10 2 Starting a node ik eee eee eee ees 18 2 10 3 Connecting to a node 0 eee eee eee tenets 18 2 10 4 Communities cece eee ees 18 2 10 5 Firewall settings 0 00 II 18 2 10 6 Is the game securel eee eee 19 2 I1 Graphis eerten sors noe EE ears oh che wade 20 2 11 1 Standard high and low resolution 20 2 11 2 Display faber Peer RES vad beeen 20 2 12 Sound amp musie i oe reser REPERI COE Cae 21 2 12 1 Current status 21 2 12 2 The futuie 6e eR Ret REEL a ERR d 21 2 13 Contig EE 21 214A OBS socer A recie ee e iet ber eun eb UR RR acer 21 2 15 Report bugs 22 Hacker s engl ses vow dd rd EE 23 3 1 Designing Jevels en 23 3 1 1 Why is level design so important sseeslssssess 23 3 1 2 Format overview sssssseeeeeee hn 23 3 1 3 Resolution Lengt Re eege ENEE e 23 BLA Metadata dvs ctis a eh dahon oo e ER I e ERR 24 2 4 05 ae E ccce vedas ePi UE E ERRPERUEM URBE Oe ELE 24 3 1 6 layer2 png Joer ong 24 3 1 7 texture png texture jpeg and texture alpha jpeg 25 3 1 8 glue png and boost pmng cece eee eee eee eee 26 3 1 9 danger png and medicine png 0 cece 26 3 1 10 one was directions pmng cece eee eee eee 27 3 1 11 cursor png and euraor color pmng 000 eee eee 21 9 1 12 E EE 2f 3 1 19 Minte Xml sirs
371. purpose for network messages for instance Z decoding here means verifying there a Z at the beginning base64 decode and pass the content through Zlib inflating I content is not Z prefixed will be returned as is 174 Liquid War 6 4 15 65 z encode z encode Command line option If specified program will take stdin and z encode it to stdout This is for testing purpose for network messages for instance Z encoding here means passing the message through Zlib deflating then base64 encoding and prefix it with a Z 4 16 C to Guile 4 16 1 c gettext c gettext C function exported to Guile Calls GNU gettext to convert string in current locale Note that _ plain underscode is exported as well so that code can be written using _ as a function 4 16 2 c Iw6 exit c lw6 exit C function exported to Guile Wrapper on lw6_exit 4 16 3 c lw6 get ret c lw6 get ret C function exported to Guile Wrapper on lw6 get ret 4 16 4 c lw6 release c lw6 release C function exported to Guile Wrapper on Io release 4 16 5 c Iw6 set ret c lw6 set ret C function exported to Guile Wrapper on bat set ret 4 16 6 c Iw6bot get backends c lw6bot get backends C function exported to Guile Wrapper on lw6bot get backends 4 16 7 c Iw6bot new c lw6bot new C function exported to Guile Wrapper on lw6bot new 4 16 8 c Iw6bot next move c lw6bot next move C function exported to Guile Wrapper on lw6bot next
372. r access to the project then a simply git push will commit your changes If not that is if you checked out anonymously using git clone git git sv gnu org liquidwar6 git for instance you can still submit patches Follow these steps e edit the code make your patches commit to your local GIT tree e run git format patch p origin this command will generate patch files one for each of you commits which you can send by email They can be easily integrated in the main source tree by using git apply lt file patch gt Note that you can need to run git format patch p master with master instead of origin it not using a fresh checkout Also consider adding the stdout switch eg git format patch p master stdout my changes patch if you re not using a fresh check out 3 18 Jenkins builds Liquid War 6 uses Jenkins for continuous integration Each time a commit is done on the main GIT source tree a build is triggered The list of builds their status is available on e all Jenkins jobs on ufoot org e liquidwar6 Jenkins job on ufoot org It s interesting among other things to look at the log produced when the game is built as it contains the test suite output and can provide usefull informations of what is supposed to happen when the game is built correctly and what happens when things go wrong Chapter 4 Reference 67 4 Reference This chapter is a technical reference Most of its content is self generated by t
373. r trademark law for use of some trade names trade marks or service marks or f Requiring indemnification of licensors and authors of that material by anyone who conveys the material or modified versions of it with contractual assumptions of liability to the recipient for any liability that these contractual assumptions directly impose on those licensors and authors All other non permissive additional terms are considered further restrictions within the meaning of section 10 If the Program as you received it or any part of it con tains a notice stating that it is governed by this License along with a term that is a further restriction you may remove that term If a license document contains a further restriction but permits relicensing or conveying under this License you may add to a covered work material governed by the terms of that license document provided that the further restriction does not survive such relicensing or conveying If you add terms to a covered work in accord with this section you must place in the relevant source files a statement of the additional terms that apply to those files or a notice indicating where to find the applicable terms Additional terms permissive or non permissive may be stated in the form of a sep arately written license or stated as exceptions the above requirements apply either way 8 Termination You may not propagate or modify a covered work except as expressly provided
374. ral now thrown into panic as he saw the approaching Baron His army had also grown in size and power having fatally injured the Turquoise army within the opening moments of the battle and having finally managed to catch the elusive fleeing form of or what remained of Emperor Green Gripping the controls harder the General thought quickly his army doesn t so completely outnumber me that this is already over however unless I can cause him to make a mistake that allows me to take the upper hand then I will inevitably lose Maybe I can This thought was terminated and replaced by another as the Baron s angry red troops broke through the undergrowth that had covered their movements and started to surround the General s army The thought that now throbbed through the panic stricken mind of General Violet was simply Run Even as he signaled the retreat and made for what seemed to be the only possible means of escape the Baron s blood red control ring appeared at the opening The General knew it was over even before the host of red beings appeared at the opening Appendix C Fanfic 235 There was no escape His life force was almost depleted and he was surrounded Then it was that the Baron decided to communicate Too bad It was a good game The General blinked gaped and was generally gobsmacked Just before his life force completely failed and his own weary eyes closed in defeat he snarled What This is not a game were t
375. ranslations e Karl Ove Hufthammer NN Norwegian e Yevgeny Lezhnin RU Russian Many people contributed to Liquid War 5 their names are not listed here but without them Liquid War 6 would obviously never have been started Special thanks to all of them However this is not a direct contribution to the project in terms of code and other copyrightable materials Appendix B 2005 plan 229 Appendix B 2005 plan Here s my plan file which describes what I Christian Mauduit have planned for Liquid War 6 There s no garantee that what s written here is a precise description of the real future however it should give a good idea of what I have in mind Note that the information here was written in summer 2005 it might or not be accurate now as the main reason for plans to exist is that people never follow them I m no exception B 1 Complete rewrite Liquid War 6 will be an almost complete rewrite I mean that common code between branches 5 and 6 might end up in representing 096 of the total code I think this is a wise decision for the current code is really hard to maintain and would not survive any serious cleanup LW5 was first written in 1998 for DOS when I had much less experience in programming In 7 years I and other people as well hacked major enhancements in it such as cross platform support network games and if you compare release 5 0 with the latest 5 x x release you ll see that a bunch of things have changed I ha
376. re Running configure gt configure log 2 gt configure err does help Editing etc 1d so conf and running ldconfig as root can help if some dependencies are installed in exotic places Check the values of the environment variables CFLAGS LDFLAGS and LD_LIBRARY_PATH Try configure enable allinone this will disable some fancy but somewhat com plicated dynamic so file support it can help if shared libraries are handled differently on your system than on a plain GNU Linux box If none of these help consider reporting a bug or search the mailing lists for help 2 5 2 Check installation Here s a check list to ensure that your installation is correct What was the output of make install make check Is the liquidwar6 binary in your PATH environment variable It might be in usr games Run liquidwar6 pedigree Look at the output Check the compilation date amp time the version number Run liquidwar6 audit What do these paths look like Are they absolute paths Do they exist What s there Normally once the game is installed all of them should exist and be populated with sub directories and files Run liquidwar6 modules to know which modules where compiled You need at least one graphical module for instance mod g11 else the game won t run Run liquidwar6 host this displays informations about the host system the binary has been built for 2 5 3 Problems running the game Now game looks correctly installed bu
377. re things but it won t change its cruising speed It s not obvious to tell wether this is an advantage or not but it clearly changes the behavior 4 11 64 team profile blue vulnerable team profile blue vulnerable value Command line option LW6 TEAM PROFILE BLUE VULNERABLE Environment variable team profile blue vulnerable XML key Type integer Default value 60 Min value 5 Max value 2000 Defines how vulnerable the blue team is This is a percentage if set to 200 then team will be attacked twice as much as any other team with the default value Setting this to a high value clearly disadvantages this team 116 Liquid War 6 4 11 65 team profile blue weapon alternate id team profile blue weapon alternate id lt value gt Command line option LW6_TEAM_PROFILE_BLUE_WEAPON_ALTERNATE_ID Environment variable team profile blue weapon alternate id XML key Type integer Default value 8 Min value 0 Max value 19 Id of the default alternate weapon for the blue team see the documentation about weapons to know what these ids mean 4 11 66 team profile blue weapon id team profile blue weapon id lt value gt Command line option LW6_TEAM_PROFILE_BLUE_WEAPON_ID Environment variable team profile blue weapon id XML key Type integer Default value 14 Min value 0 Max value 19 Id of the default weapon for the blue team see the documentation about weapons to know what these ids mean 4 11 67 team profi
378. read mode eee e cence cnet tenn ee eens 109 spread thread a cereo bee ied 109 Spreada Der roumnd eee 110 a2 fal A n 110 EE 110 start Cya X ces xe ee oer e EES eee eee od 110 Start CyaLEy ecresRewerkhCrbberberReterr i eM acier Rte 111 IR EEN 111 St rt green y e cea rebus ee eee y ag Hea EE 111 start lightblue x 2 6 0 e 111 start lightblue y nsnnsnsusununsus ennn rererere 111 Start magemta X esseeri kee eee mn 112 Ge ee os ies cae aee e ak e herr E ERE Ren 112 St rt OrBnpge X ccn pec we eee Baas so OR COP 112 start orange y eee e r12 Start D k X errori he dee de EEEE i 112 start PiNk y sses yb nana dad aon Eii a a EEEE 113 start position mode cece eee ens 113 Ee e OT dcire ie er rue weeds a RE PR UD 113 start purple y 2 0 cece cee enn 113 St rt red X css iud deed ae cae pac SEENEN AE tas 114 Slari Fed y i olent ER BRA ER a see e bes 114 start yellow x eesessssseeeeeees e 114 start yellow y sssseseeeseeseee eene 114 team profile blue aggressive 00 cece eee eee 114 Leam proble blue fast 115 Leam proble blue handiean 0 cece eee eee 115 team profile blue mobile 0 000 c cece eee eees 115 4 11 64 4 11 65 4 11 66 4 11 67 4 11 68 4 11 69 4 11 70 4 11 71 4 11 72 4 11 73 4 11 74 4 11 75 4 11 76 4 11 77 4 11 78 4 11 79 4 11 80 4 11 81 4 11 82 4 11 83 4 11 84 4 11 85 4 11 86 4 11 87 4 11 88 4 11 89 4 11 90 4 11
379. rer should not expect the game to be static In practice this is not really a problem If you are curious you can look in libdsp how and when this function is called A very important parameter is mask depending on its value the backend should or not display the menu or the map or both etc The reference for this are the LW6GUI_ DISPLAY constants in src lib gui gui h As a starting point implementing menu display before anything else is probably the best bet since without menus it s hard to do anything within the game To test out a backend one can either launch the full game using the under devel opment backend or launch the test suite by typing liquidwar6gfx test 1 in src lib gfx See Section 5 16 libdsp page 218 3 7 Core algorithm Chapter 3 Hacker s guide 39 3 7 1 Introduction Since Liquid War 3 the algorithm to power Liquid War is pretty much unchanged at least there has been no revolution the basic principles remain the same This has been explained in Liquid War 5 doc but is repeated here along with the specific Liquid War 6 stuff The very important things to remember are e The algorithm is 100 00 predictable This means given the same input it will give exactly the same output This is very important for the network games to work cor rectly therefore the algorithm does not ever use any call to rand random functions it also does not use any float value either since different type o
380. reserve the section Entitled History Preserve its Title and add to it an item stating at least the title year new authors and publisher of the Modified Version as given on the Title Page If there is no section Entitled History in the Docu ment create one stating the title year authors and publisher of the Document as given on its Title Page then add an item describing the Modified Version as stated in the previous sentence Preserve the network location if any given in the Document for public access to a Transparent copy of the Document and likewise the network locations given in the Document for previous versions it was based on These may be placed in the History section You may omit a network location for a work that was published at least four years before the Document itself or if the original publisher of the version it refers to gives permission For any section Entitled Acknowledgements or Dedications Preserve the Title of the section and preserve in the section all the substance and tone of each of the contributor acknowledgements and or dedications given therein Preserve all the Invariant Sections of the Document unaltered in their text and in their titles Section numbers or the equivalent are not considered part of the section titles Delete any section Entitled Endorsements Such a section may not be included in the Modified Version Do not retitle any existing section to be Enti
381. ries These parameters enable you to specify which teams should play on the map 4 2 17 list network list network Command line option List network options 4 2 18 list path list path Command line option List parameters which allow you to override the defaults of the game and force the game your own file paths and directories Chapter 4 Reference 71 4 2 19 list players list players Command line option List player related entries that is to say who plays 4 2 20 list quick list quick Command line option List quick help entries this includes the GNU standard options and a few trou bleshooting tools 4 2 21 list show list show Command line option List command line options which begin with show These will display on the console many internal parameters Usefull when debugging 4 2 22 list sound list sound Command line option List sound options volume 4 2 23 list team colors list team colors Command line option List the team colors there should be 10 of them 4 2 24 list weapons list weapons Command line option List the available weapons 4 3 Show options 4 3 1 show build abs srcdir show build abs srcdir Command line option Shows the top source directory on the machine where the binary was compiled as an absolute path 4 3 2 show build bin id show build bin id Command line option Shows the internal bin id value This value does n
382. rofile lightblue vulnerable 121 team profile lightblue weapon alternate id EE 121 team profile lightblue weapon id 121 team profile lightblue weapon mode I21 team profile magenta aggressive 122 team profile magenta fast 122 team profile magenta handicap 122 team profile magenta mobile 122 team profile magenta vulnerable 122 team profile magenta weapon alternate id EE saecu et secas 123 team profile magenta weapon id 123 team profile magenta weapon mode 123 team profile orange aggressive 123 team profile orange fast 124 team profile orange handicap 124 team profile orange mobile 124 team profile orange vulnerable 124 team profile orange weapon alternate id ETT 124 team profile orange weapon id 125 team profile orange weapon mode 125 team profile pink aggressive 125 Leam profile pink Taert sess 125 team profile pink handicap 126 team profile pink mobile 126 team profile pink vulnerable 126 team profile pink weapon alternate id 126 team profile pink weapon id 126 team profile pink weapon mode 127 team profile purple aggressive 127 team profile purple fast 127 team profile purple handicap 127 team profi
383. rt undef SCM IMPORT just before include lt libguile h gt Edit libguile threads c and place struct timespec long tv sec long tv nsec just before include libguile scm h Then configure disable nls disable rpath disable error on warning without threads amp amp make amp make install The GUILE LOAD PATH value must be correctly set for guile config to work For unknown reasons running guile can throw a stack overflow error Don t panic See bug 2007506 on SourceForge net for an explanation on why the Guile binary shipped with MSYS is not suitable for Liquid War 6 expat untar expat 2 0 1 tar gz then configure amp amp make amp amp make install SQLite untar sqlite amalgamation 3 5 9 tar gz then configure amp amp make amp amp make install libpng untar libpng 1 2 29 tar gz then configure amp amp make amp amp make install libjpeg untar jpegsrc v6b tar gz then configure amp amp make amp make install amp amp make install lib libcURL untar curl 7 18 1 tar gz then configure without ssl amp amp make amp amp make install FreeType 2 untar freetype 2 3 5 tar gz then configure amp amp make amp amp make install libogg untar libogg 1 1 3 tar gz then configure amp amp make amp amp make install libvorbis untar libvorbis 1 2 0 tar gz then LDFLAGS LDFLAGS logg amp amp configure amp amp make amp amp make install SDL untar SDL 1 2 13 tar gz then
384. rted to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile Chapter 4 Reference 4 16 349 c lw6sys get map dir c lw6sys get map dir Wrapper on lw6sys get map dir 4 16 350 c lw6sys get map path c lw6sys get map path Wrapper on lw6sys get map path 209 C function exported to Guile C function exported to Guile 4 16 351 c lw6sys get memory bazooka eraser c lw6sys get memory bazooka eraser Wrapper on lw6sys_get_memory_bazooka_eraser 4 16 352 c lw6sys get memory bazooka size c lw6sys get memory bazooka size Wrapper on lw6sys get memory bazooka size 4 16 353 c Iw6sys get mod dir c lw6sys get mod dir Wrapper on lw6sys get mod dir 4 16 354 c Iw6sys get music dir c lw6sys get music dir Wrapper on lw6sys get music dir 4 16 355 c lw6sys get music path c lw6sys get music path Wrapper on lw6sys get music path 4 16 356 c lw6sys get prefix c lw6sys get prefix Wrapper on lw 6sys get prefix 4 16 357 c lw6sys get run dir c lw6sys get run dir Wrapper on lIw6sys get run dir 4 16 358 c lw6sys get script file c lw6sys get script file Wrapper on lw6sys get script file C function exported to Guile C function exported to Guile C function exported
385. rules xm1 directly is a good way to test things most of the time the other file hints xml contains more high level informations that do the job the right way A typicall example is speed See Section 4 11 Map rules xml page 100 3 1 13 hints xml This parameter is only used by the map loader The map itself contains none of these parameters they are only clues hints in fact on how to load the map which are passed to the loader Let s take an example speed This rules xml file has a rather easy to use speed parameter which will do all the job of finding the right resolution for your map the right rounds per sec and moves per round parameters in short it will set many other pa rameters to fit your needs As far as the map designer is concerned rules xml and hints xml could have been merged but so would have style xml but internally they are very different rules xml contains the real parameters the one used by the algorithm whereas hints xml contains only instructions which are used once when loading the map and then disappear The core algorithm has no idea of what was in hints xml once it s loaded See Section 4 12 Map hints xml page 135 3 1 14 style xml This is a simple XML file defining various appearance parameters It has absolutely no effect on gameplay These settings can ultimately be overriden by the player but the idea is that if the map designer thinks this level looks better with t
386. s ppt eene ae anna 89 LW6 CUSTOM PGDOWN sees 89 LW6 CUSTOM PGUP i e Rene sub dae Aer 89 LW6 CUSTOM RIGHT ieene me ehem emen 89 LWG CUSTOM UP RI Re t er RR 90 LW6 DANGER POWER nete Ais e RS 101 LWG DEBUG LAYER ID 161 LWG DEBUG TEAM ID iLzecm cdm eene 161 LWG DIALOG TIMEOUT lm memet 162 LW6 DTRTY READ Et pt mares senate 162 LNG DISPLAY BACKGRDUND 162 LNG DISPLAYT GONSOLE siccrisecccenis vereris es 162 LW6 DISPLAY CURSORS pirrer erranssa nesre 163 LW6_DISPLAY_DEBUG_GRADIENT 163 LW6_DISPLAY_DEBUG_ZONES 163 LW6 DISPLAY FIGHTERS esses 163 LW6_DUESPLAY ERR ae get S ier E 164 LWG DISPLAY HEURE e SE 164 LWG DISPLAY TEE 164 LW6_DISPLAY MAP ste EE 164 LW6 DISPLAY MENU ic ene n I e EELER 164 LW6_DISPLAY META eg Ri e Re REO ER 165 LW6 DISPLAY MOUSEL 165 LW6 DISPLAY MPS d n e nn e ER be 165 270 LW6_DISPLAY_PREVIEW nnunnnnnnnnsnnso 165 LW6 DISPLAY PROGRES 165 LWG DISPLAY SCORE 0 02 tiranas 166 LW6_DISPLAY_SPLASH 0 00 eee eeee 166 LW6 DISPLAY URL seme us 166 LW6 DOUBLE CLICK DEL N esses 90 LW6 DOWNSIZE USING BENCH VALUE 136 LW6 DOWNSIZE USING FIGHTER SCALE 136 LW6 EXECUTED AGAIN 0 ities 166 n 101 LW6_FIGHTER ATTACK erg EN RR beet hus 101 LW6 FIGHTER DEFENSE 0 00002 ce eeee 101 LW6_FIGHTER_NEW_HEALTH 102 LW6_FIGHTER_REGENERATE
387. s 190 CLv map param gert eee eee 190 c lw6map rules get default 190 c lw6map rules get int s 191 CLupmap rules getmax ss 191 c lw6map rules get min s 191 c lw6map style get default 191 c lw6map team color index to key 191 c lw6map team color index to label 191 c lw6map team color key to index 191 c lw6map team color list 191 c lw6map teams get default 191 c lw6map weapon index to key 191 c lw6map weapon index to label 192 c lw6map weapon key to index 192 c lw6map weapon list sess 192 cxlw6net 3nit i cos pepe DLP E 192 c lw6net quit c e iis ceti iori kou tees 192 c lw6p2p db default name 192 c lw6p2p db new e I cnn eee seas 192 c lw6p2p db reset 0 cece eee eee eee 192 c lw6p2p node calibrate 192 c lw6p2p node client join 192 Liquid War 6 C Lv p p node close cece eee eee 193 c lw6p2p node disconnect 193 c lw6p2p node get entries 193 c lw6p2p node get id 2 eee eee 193 c 1w6p2p node get local seq 0 193 c 1w6p2p node get local seq last 193 c lw6p2p node get next draft msg 193 c lw6p2p node get next reference msg 193 c 1w6p2p node get seq draft 193 c 1lw6p2p node get seq max
388. s a percentage of map height value between 0 and 100 114 Liquid War 6 4 11 56 start red x start red x lt value gt Command line option LW6_START_RED_X Environment variable start red x XML key Type integer Default value 10 Min value 0 Max value 100 X start position for the red team This is a percentage of map width value between 0 and 100 4 11 57 start red y start red y value Command line option LW6 START RED Y Environment variable start red y XML key Type integer Default value 10 Min value 0 Max value 100 Y start position for the red team This is a percentage of map height value between 0 and 100 4 11 58 start yellow x start yellow x value Command line option LW6 START YELLOW X Environment variable start yellow x XML key Type integer Default value 10 Min value 0 Max value 100 X start position for the yellow team This is a percentage of map width value between 0 and 100 4 11 59 start yellow y start yellow y value Command line option LW6 START YELLOW Y Environment variable start yellow y XML key Type integer Default value 90 Min value 0 Max value 100 Y start position for the yellow team This is a percentage of map height value between 0 and 100 4 11 60 team profile blue aggressive team profile blue aggressive value Command line option LW6 TEAM PROFILE BLUE AGGRESSIVE Environment variable team profile blue aggressiv
389. s peer connected 00 cece eee 194 c lw6p2p node is peer registered 0c cece eee eee 194 c Iw6p2p node is seed needed 0 0 c cece eee ees 194 c Iw6p2p node new 06 e eee eee eee eee 194 c lw6p2p node poll 2 cece eee cee eee ees 194 c Jew npnip node put Jocalmsg 0 cece 194 c lw6p2p node refresh peer 0 00 cece eee ees 194 c lw6p2p node server start 6 0 eee cece eee eee 195 c Iw6p2p node update info eee eee 195 c lw6pil bench 0 0 c eee eee eens 195 c lw6pil build pilot 0 0 cee cee eee eee 195 c lw6pil calibrate 0 0 cece ene eee 195 c Iw6pil commit 0 c cece eee 195 c lw6pil did cursor wWin 0 cece ee 195 c lw6pil dump command generate 0 00 e ee eee 195 c lw6pil execute command 0 cece eee ees 195 c lw6pil fix coords 0 eee ee 195 c lw6pil fix coords xX10 ccc 196 xix 4 16 220 4 16 221 4 16 222 4 16 223 4 16 224 4 16 225 4 16 226 4 16 227 4 16 228 4 16 229 4 16 230 4 16 231 4 16 232 4 16 233 4 16 234 4 16 235 4 16 236 4 16 237 4 16 238 4 16 239 4 16 240 4 16 241 4 16 242 4 16 243 4 16 244 4 16 245 4 16 246 4 16 247 4 16 248 4 16 249 4 16 250 4 16 251 4 16 252 4 16 253 4 16 254 4 16 255 4 16 256 4 16 257 4 16 258 4 16 259 4 16 260 4 16 261 4 16 262 4 16 263 4 16 264 4 16 265 4 16 266 4 16 267 c lw6pil get last commit seq cece cece 196 c lw6pil get
390. ses if negative the number of move attack defense tries for the purple team If set to a high value team will appear more mobile and do more things but it won t change its cruising speed It s not obvious to tell wether this is an advantage or not but it clearly changes the behavior 4 11 120 team profile purple vulnerable team profile purple vulnerable lt value gt Command line option LW6_TEAM_PROFILE_PURPLE_VULNERABLE Environment variable team profile purple vulnerable XML key Type integer Default value 16 Min value 5 Max value 2000 Defines how vulnerable the purple team is This is a percentage if set to 200 then team will be attacked twice as much as any other team with the default value Setting this to a high value clearly disadvantages this team 4 11 121 team profile purple weapon alternate id team profile purple weapon alternate id lt value gt Command line option LW6_TEAM_PROFILE_PURPLE_WEAPON_ALTERNATE_ID Environment variable team profile purple weapon alternate id XML key Type integer Default value 18 Min value 0 Max value 19 Id of the default alternate weapon for the purple team see the documentation about weapons to know what these ids mean 4 11 122 team profile purple weapon id team profile purple weapon id lt value gt Command line option LW6_TEAM_PROFILE_PURPLE_WEAPON_ID Environment variable team profile purple weapon id XML key Type integer Default value 11 Min value
391. set backtrace mode c lw6sys log set backtrace mode Wrapper on lw6sys_log_set_backtrace_mode 4 16 370 c lw6sys log set dialog timeout c lw6sys log set dialog timeout Wrapper on lw6sys log set dialog timeout 4 16 371 c lw6sys log set level c lw6sys log set level Wrapper on lw6sys log set level 4 16 372 c lw6sys megabytes available c lw6sys megabytes available Wrapper on lw6sys megabytes available 4 16 373 c Iw6sys openmp get num procs c lw6sys openmp get num procs Wrapper on lw6sys openmp get num procs 4 16 374 c lw6sys path concat c lw6sys path concat Wrapper on lw6sys path concat 4 16 375 c lw6sys path file only c lw6sys path file only Wrapper on lw6sys path file only 4 16 376 c Iw6sys path parent c lw6sys path parent Wrapper on lw6sys path parent 4 16 3771 c lw6sys path split c lw6sys path split Wrapper on lw6sys path split 211 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile 4 16 378 c lw6sys set memory bazooka eraser c lw6sys set memory bazooka eraser Wrapper on lw6sys set memory bazooka eraser C function exported to Guile 212 4 16 379 c lw6sys set memory bazooka size c lw6sys set memory bazooka size Wrapper
392. shouldn t change this but if you find the map resizing is too agressively pessimistic or if for some reason bench returns bogus values you can modify it 4 15 44 max local bench value max local bench value lt value gt Command line option LW6_MAX_LOCAL_BENCH_VALUE Environment variable max local bench value XML key Type integer Default value L WGLDR DEFAULT MAX LOCAL BENCH VALUE Even if your computer is very fast this parameter will be used to tame the optimism of the test and do not load maps in very high detail It s believed at some point it s best to keep your extra power to deal with unordinary situations rather than waste it on useless details Game should be fun with that setting but if you really want to use your shiny CPU at its maximum raise this 4 15 45 max network bench value max network bench value value Command line option LW6 MAX NETWORK BENCH VALUE Environment variable max network bench value XML key Type integer Default value L WGLDR DEFAULT MAX NETWORK BENCH VALUE On network games we need to be sure everyone can play in correct conditions there fore maps won t be loaded with more details than this by default You re free to increase this parameter but it can cause your games to be unjoignable by some peo ple 4 15 46 memory bazooka eraser memory bazooka eraser value Command line option LW6 MEMORY BAZOOKA ERASER Environment variable memory bazooka er
393. sions apply only to part of the Program that part may be used separately under those permissions but the entire Program remains governed by this License without regard to the additional permissions When you convey a copy of a covered work you may at your option remove any additional permissions from that copy or from any part of it Additional permissions may be written to require their own removal in certain cases when you modify the work You may place additional permissions on material added by you to a covered work for which you have or can give appropriate copyright permission Notwithstanding any other provision of this License for material you add to a covered work you may if authorized by the copyright holders of that material supplement the terms of this License with terms a Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License or b Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it or c Prohibiting misrepresentation of the origin of that material or requiring that mod ified versions of such material be marked in reasonable ways as different from the original version or Appendix E GNU GENERAL PUBLIC LICENSE 245 d Limiting the use for publicity purposes of names of licensors or authors of the material or e Declining to grant rights unde
394. splay mouse 000 e eee eee eens 165 4 15 28 display mps 0 cece eee eee e 165 4 15 29 display preview 0 cece cece e eee ee 165 4 15 30 display progregg 0 cece cece eee eee eens 165 4 15 31 displan acte 166 4 15 32 displan eplash 0 c cece eee eee eee 166 415 33 displayq urls 0c veteh hte weg eee dhe HERR UAR a 166 4 15 34 executed again 00 c cece ene eens 166 4 15 35 efv cpu usgge 0 eect eens 166 4 1530 gie debuisse ocres kerbRETe E er REY EXTR 167 Dk eet li e ge do mikes duke da pinkie MR ERE E ra 167 4 15 38 Ipeg oualtv e 167 4 15 39 loader sleep 0 cece eee ee eee ee 167 4 15 40 Joecal bench delta eee eee 168 4 15 41 log level seus Ren RR hne 168 4 15 42 log timeout iei escis merid e rh ENEE ax 168 4 15 48 magic number 00 cece cence eee 168 4 15 44 max local bench value 000 e cece eee 169 4 15 45 max network bench value 0 00 cece eee ee ee 169 Liquid War 6 4 15 46 memory bazooka eraser sess 169 4 15 47 memory bazooka size lesse eese 170 4 15 48 netslog hous eseeere hok Rue sana voce wed RET PERS du NR ERES 170 4 15 49 netoerger hh 170 4 15 50 network bench delta ununure 170 4 15 51 network reliability 000 0 ccc eee eee 171 4 15 52 open relay 0 c cece eee een eens 171 4 15 58 pilot lag v 02 ies te dii E ENEE AN ERA Re ge 171 4 15 54 quieksstarb sss siete d EEN du e bere ERR
395. st isolated pixels might become a thick wall There s no real garantee your wall or passage will always be present but it s a same bet to assume on a tunnel like level one needs to set grease to a low value and on a wide open level with few walls one needs to set grease to a high value 4 13 Map style xml 4 13 1 animation density animation density value Command line option LW6 ANIMATION DENSITY Environment variable animation density XML key Type float Default value 1 0 Min value 0 Max value 10 Density of the background animation that is for instance if the background anima tion is about displaying bubbles using a high value will display many bubbles A value of 1 0 corresponds to the default setting 142 Liquid War 6 4 13 2 animation speed animation speed value Command line option LW6 ANIMATION SPEED Environment variable animation speed XML key Type float Default value 1 0 Min value 0 Max value 10 Speed of the background animation that is for instance if the background animation is about displaying bubbles using a high value will cause bubbles to move very fast A value of 1 0 corresponds to the default setting 4 13 3 background color root bg background color root bg value Command line option LW6 BACKGROUND COLOR ROOT BG Environment variable background color root bg XML key Type color Default value 72000000 Defines the main backgr
396. t 4 16 182 c Iw6net init c lw6net init Wrapper on lwOnet init 4 16 183 c Iw6net quit c lw6net quit Wrapper on lw6net quit 4 16 184 c Iw6p2p db default name c lw6p2p db default name Wrapper on lw6p2p db default name 4 16 185 c Iw6p2p db new c lw6p2p db new Wrapper on lw6p2p db new 4 16 186 c lw6p2p db reset c lw6p2p db reset Wrapper on lw6p2p db reset 4 16 187 c lw6p2p node calibrate c lw6p2p node calibrate Wrapper on lw6p2p node calibrate 4 16 188 c Iw6p2p node client join c lw6p2p node client join Wrapper on lw6p2p node client join Liquid War 6 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile Chapter 4 Reference 193 4 16 189 c lw6p2p node close c lw6p2p node close C function exported to Guile Wrapper on lw6p2p node close 4 16 190 c Iw6p2p node disconnect c lw6p2p node disconnect C function exported to Guile Wrapper on lw6p2p node disconnect 4 16 191 c Iw6p2p node get entries c 1w6p2p node get entries C function exported to Guile Wrapper on lw6p2p node get entries 4 16 192 c Iw6p2p node get id c 1w6p2p node get id C function exported to Guile Wrapper on lw6p2p node ge
397. t c lw6hlp list Wrapper on lw6hlp_list 4 16 106 c lw6hlp list advanced c lw6hlp list advanced Wrapper on lIw hlp list advanced 4 16 107 c lw6hlp list aliases c lw6hlp list aliases Wrapper on lw6hlp list aliases 4 16 108 c lw6hlp list doc c lw6hlp list doc Wrapper on lw6hlp_list_doc Liquid War 6 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile Chapter 4 Reference 4 16 109 c lw6hlp list funcs c lw6hlp list funcs Wrapper on lw6hlp_list_funcs 4 16 110 c lw6hlp list graphics c lw6hlp list graphics Wrapper on lw6hlp list graphics 4 16 111 c lw6hlp list hooks c lw6hlp list hooks Wrapper on lw6hlp list hooks 4 16 112 c lw6hlp list input c lw6hlp list input Wrapper on lw6hlp list input 4 16 113 c lw6hlp list map c lw6hlp list map Wrapper on lw6hlp list map 4 16 114 c lw6hlp list map hints c lw6hlp list map hints Wrapper on lw6hlp list map hints 4 16 115 c lw6hlp list map rules c lw6hlp list map rules Wrapper on lIw6hlp list map rules 4 16 116 c lw6hlp list map style c lw6hlp list map style Wrapper on lIw6hlp list map style 4 16 117 c lw6hlp list map teams c lw6hlp list map
398. t id 4 16 193 c Iw6p2p node get local seq 0 c lw6p2p node get local seq 0 C function exported to Guile Wrapper on lw6p2p_node_get_local_seq_0 4 16 194 c Iw6p2p node get local seq last c lw6p2p node get local seq last C function exported to Guile Wrapper on lw6p2p node get local seq last 4 16 195 c Iw6p2p node get next draft msg c 1w6p2p node get next draft msg C function exported to Guile Wrapper on lw6p2p node get next draft msg 4 16 196 c Iw6p2p node get next reference msg c 1w6p2p node get next reference msg C function exported to Guile Wrapper on lw6p2p node get next reference msg 4 16 197 c lw6p2p node get seq draft c lw6p2p node get seq draft C function exported to Guile Wrapper on Iw6p2p node get seq draft 4 16 198 c Iw6p2p node get seq max c lw6p2p node get seq max C function exported to Guile Wrapper on lw6p2p node get seq max 194 4 16 199 c lw6p2p node get seq min c lw6p2p node get seq min Wrapper on Iw6p2p node get seq min 4 16 200 c Iw6p2p node get seq reference c lw6p2p node get seq reference Wrapper on lw6p2p node get seq reference 4 16 201 c Iw6p2p node is dump needed c lw6p2p node is dump needed Wrapper on Iw6p2p node is dump needed 4 16 202 c Iw6p2p node is peer connected c lw6p2p node is peer connected Wrapper on Iw6p2p node is peer connected 4 16 203 c Iw6p2p node is peer registered c lw6p2p node is peer registered Wra
399. t aliases Command line option List the keyword aliases These are here for convenience 4 2 7 list doc list doc Command line option List documentation related command line options These commands allow you to list all the keywords related to a given domain 4 2 8 list funcs list funcs Command line option List the C functions which are exported to Guile thus usable in scripts 4 2 9 list graphics list graphics Command line option List graphics options resolution fullscreen 70 Liquid War 6 4 2 10 list hooks list hooks Command line option List user modifiable hooks 4 2 11 list input list input Command line option List input AKA controls related options Use these to change keyboard joystick and mouse settingds 4 2 12 list map list map Command line option List map related entries excluding rules xml hints xml and style xml entries 4 2 13 list map hints list map hints Command line option List hints xml entries These parameters enable you to modify the behavior of the map loader 4 2 14 list map rules list map rules Command line option List options xml entries These parameters enable you to modify the gameplay 4 2 15 list map style list map style Command line option List style xml entries These parameters enable you to modify the aspect of the game 4 2 16 list map teams list map teams Command line option List teams xml ent
400. t all Simply edit a few files with an editor and your patch is running Once the binary base is set up hacking scripts on top of it is almost a piece of cake e forcing the program to use scripts to transfer informations from a module to another is a good way to avoid spaghetti code when modules cross use each other in an uncontrollable way Of course in some cases modules communicate directly especially when performance is important But for many tasks it s just very comfortable and safe to have module A send orders to module B through a high level script API Having Guile to implement high level stuff also decreases to some extent the need for object oriented features of C The big picture is low level code that require speed optimized data processing is written in C Code which is more high level and requires abstraction is written in scheme 3 3 2 Threading and SMP Liquid War 6 makes a heavy usage of threads Early versions of the game did not have this feature but starting with 0 0 7beta one can really consider the game is heavily threaded There s basically e a thread to handle the main control flow This thread runs scheme code which Guile It s not the most CPU greedy thread but when it s stalled there s no more interaction between the user and the program e a thread to handle the display Depending on rendering options this thread can con sume lots of CPU cycle On a single processor core system it can be
401. t c choose a category for it add the entry to src lib hlp hlp reference c give it a type documentation string and default values if needed to sort src lib def def list txt a common practice is to fill it with the output of liquidwar6 list once the program has been compiled and is aware of the new option Chapter 3 Hacker s guide 61 Unless this is done program won t accept the option Some options need more work for instance Any option which is a command line argument needs to be added to src lib lw6 options c Any option which is related to the build system to enable or disable some feature must be referenced in src lib sys build c and also src lw6 funcssys c to be callable from scripts Any option which changes the map rules any new rule impacts the game checksums so these ones need to be updated in src lib map map test c src lib ker ker test c src lib pil pil test c and src lib pil pil suite c 3 15 3 Add a new internal library This describes how to add a new libxyz internal library create a new src lib xyz directory The convention is to use 3 letters names and prefix every global identifier with lw6xyz copy Makefile am xyz h xyz test c and xyz testmain c from an existing internal library libnod is a good source it does not have complex dependencies edit Makefile am to fill requirements make necessary adjustments to other files many string replaces to make both lowercase and uppercase add t
402. t click fire and triple click is equivalent to middle click alternate fire 4 6 20 use esc button use esc button value Command line option LW6 USE ESC BUTTON Environment variable use esc button XML key Type boolean Default value true Decides wether to display an esc escape button in the interface This is usefull for people who control the game with the mouse only and have a single buttons or on a touchscreen 4 6 21 zoom step zoom step value Command line option LW6 ZOOM STEP Environment variable zoom step XML key Type float Default value 1 1 A value strictly greater than 1 which will be used when zooming The greater it is the more sensible the zoom is 4 6 22 zoom stick delay zoom stick delay value Command line option LNG Z00M STICK DELAY Environment variable 92 Liquid War 6 zoom stick delay XML key Type float Default value 1000 How long in msec the zoom will stick to its default value 4 7 Graphics options 4 7 1 capture capture value Command line option LW6 CAPTURE Environment variable capture XML key Type boolean Default value false Enables capture mode in which a BMP file is dumped on the disk in your user directory search for a capture sub directory 4 7 2 fullscreen fullscreen lt value gt Command line option LW6_FULLSCREEN Environment variable fullscreen XML key Type boolean Default value
403. t the player himself find the right settings for the right map The consequence is that no one ever used all those cryptic options in the advanced options menu and probably 9996 of the players ended up playing with default settings This is not that bad but given the fact that 28 Liquid War 6 changing a few parameters one can totally transform the gameplay it has decided been that in Liquid War 6 the map designer suggests the right options that matches his map This does not prevent the player from toying with options himself he can still do it There s also one important point to note all these options are technically implemented as integer parameters We certainly do not want any float here since and it is a Liquid War specific behavior the game must be 100 00 predictable and behave the same on every platform As there is nothing like exactness when speaking of floats those are forbidden here As for strings we are dealing here with low level internals and this section is not about telling a story They are technical options only Booleans are implemented with the usual false 0 and true 1 convention Note that other config files in Liquid War 6 might rely on floats strings and booleans with conventionnal true and false values but not this one rules xml is special This rules xml file is a direct image of the internal rules structure so it contains technical sometimes not very user friendly parameters While hacking
404. t txt ping txt MSG syntax round lt server id gt command lt argi gt lt argN gt COMMAND examples 2 1234abcdi234abcd REGISTER 3 1234abcd1234abcd ADD 5678 YELLOW 4 1234abcd1234abcd SET 5678 20 5 10 1234abcd1234abcd NOP 400 1234abcd1234abcd REMOVE 5678 1000 1234abcd1234abcd UNREGISTER Sig is a checksum on string lt from id gt lt to id gt lt serial gt lt i gt lt n gt MSG 3 15 Technical HOWTOs 3 15 1 Release check list Summary off all operations required for a release e check the value of LW6MAP_RULES_DEFAULT_EXP and default for skip network which might have been changed will developping 60 Liquid War 6 in src run indent sh in doc run gdoc update sh doxygen update sh and perf update sh edit NEWS file in both liquidwar6 and liquidwar6 extra maps Check ChangeLog is OK update the version history in doc liquidwar6 texi update debian changelog files in both main and extra maps packages run make distcheck at least build RPM package make C pkg rpm check yum install produces a working installa tion also check the rpm e command to verify uninstalling is OK too build exe main binary on Microsoft Windows then go back to GNU Linux and build exe installer nake C pkg installer go back to Microsoft Windows and test the installer there are often problems at this stage because of missing libraries or other files build dmg Mac OS X disk image check it works
405. t variable XML key Command line option Environment variable XML key Chapter 4 Reference 4 14 12 bot5 color bot5 color lt value gt LW6_BOT5_COLOR bot5 color Type string Default value magenta Color for bot number 5 4 14 13 bot6 ai bot6 ai lt value gt LW6_BOT6_AI bot6 ai Type string Default value follow AI engine for bot number 6 4 14 14 bot6 color bot6 color lt value gt LW6_BOT6_COLOR bot6 color Type string Default value orange Color for bot number 6 4 14 15 bot ai bot7 ai lt value gt LW6_BOT7_AI bot7 ai Type string Default value idiot AI engine for bot number 7 4 14 16 bot7 color bot7 color lt value gt LW6_BOT7_COLOR bot7 color Type string Default value lightblue Color for bot number 7 157 Command line option Environment variable XML key Command line option Environment variable XML key Command line option Environment variable XML key Command line option Environment variable XML key Command line option Environment variable XML key 158 4 14 17 bot8 ai bot8 ai lt value gt LW6_BOT8_AI bot8 ai Type string Default value idiot AI engine for bot number 8 4 14 18 bot amp 8 color bot8 color lt value gt LW6_BOT8_COLOR bot8 color Type string Default value purple Color for bot number 8 4 14 19 bot9 ai bot9 ai lt value gt LW6_BOT9_AT b
406. t you have problems running it Run the game from a terminal not from a Gnome or KDE launcher you need to see the console output In the HOME liquidwar6 directory you l find some files the main log file log csv and maybe dump txt or backtrace txt They might contain valuable information read them Note that while log csv is overwritten each time you start the game dump txt or backtrace txt are conserved until a new problem arises So check the date of these files to be sure you re analyzing the right ones Note that byt default on Microsoft Windows HOME liquidwar6 is replaced by C Documents and Settings lt username gt Liquid War 6 and on Mac OS X it is in Users lt username gt Library Application Support Liquid War 6 Run liquidwar6 defaults This will reset all options to defaults You might need to run this when upgrading from a version to another since some options might appear disappear or defaults values can change 14 Liquid War 6 Run liquidwar6 test This should run a complete test suite many functions in the game will be tested automatically and errors reported Run liquidwar6 show script file Are you really running the right code Game segfaults try make uninstall amp amp make clean amp amp make amp amp make install Many problems can come from using a wrong shared module You can also launch the game with the trap errors false switch this will disable the custom popup window and allow you
407. team profile yellow aggressive value t 130 team profile yellow fast value 131 team profile yellow handicap value 131 team profile yellow mobile lt value gt 131 team profile yellow vulnerable lt value gt 264 team profile yellow weapon alternate ide val e l nileeec c gg eae eR EP 132 team profile yellow weapon id lt value gt EEN 132 team profile yellow weapon mode lt value gt on etes sid id e eoe ad dun dope tide 132 url e C 68 total armies size lt value gt 132 total time lt value gt eee eee eee 133 trap errors value sees 173 trojan value esses eese 173 upsize using bench value value 140 upsize using fighter scale value 140 use cursor texture 4Xvalue 98 use double click lt value gt 91 use esc button value sss 91 use hints xml 4value s s ss 98 use music file value ssss 99 use rules xml 4value s ss 99 use style xml 4value ss 99 use team profiles value 133 use teams xml 4value ss 99 use texture value ssses ss 100 user dirs value 2 2 2 c p by ES 84 E EE 68 vertical move value suse 133 view color auto lt value gt
408. teams Wrapper on lw6hlp list map teams 4 16 118 c lw6hlp list network c lw6hlp list network Wrapper on lIw6hlp list network 185 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile 186 4 16 119 c lw6hlp list path c lw6hlp list path Wrapper on lw6hlp list path 4 16 120 c lw6hlp list players c lw6hlp list players Wrapper on lw6hlp list players 4 16 121 c lw6hlp list quick c lw6hlp list quick Wrapper on lw6hlp list quick 4 16 122 c lw6hlp list show c lw6hlp list show Wrapper on lIw6hlp list show 4 16 123 c lw6hlp list sound c lw6hlp list sound Wrapper on lIw6hlp list sound 4 16 124 c lw6hlp list team colors c lw6hlp list team colors Wrapper on lIw6hlp list team colors 4 16 125 c lw6hlp list weapons c lw6hlp list weapons Wrapper on lIw6hlp list weapons 4 16 126 c Iw6img screenshot c lw6img screenshot Wrapper on lw6img_screenshot 4 16 127 c lw6ker add cursor c lw6ker add cursor Wrapper on Joker add cursor 4 16 128 c lw6ker build game state c lw6ker build game state Wrapper on lwG6ker build game state Liquid War 6 C function exported to Guile C function exported to Guile
409. ternate jd 4v l e5 uas uu e e XR eae 124 EE 125 team profile orange weapon mode lt value gt EE 125 team profile pink aggressive lt value gt 125 team profile pink fast lt value gt 125 team profile pink handicap lt value gt 126 team profile pink mobile lt value gt 126 team profile pink vulnerable lt value gt 126 team profile pink weapon alternate jd 4value2 2 2 c Rx Ee ca ea Pales 126 team profile pink weapon id value 126 team profile pink weapon mode value EES 127 team profile purple aggressive value DEENEN 127 team profile purple fast lt value gt 127 team profile purple handicap lt value gt 127 team profile purple mobile lt value gt 128 team profile purple vulnerable lt value gt 128 team profile purple weapon alternate ide value2 ilscss ENTENTE Ne b ed 128 128 team profile purple weapon mode value Beles aang eben onde 128 team profile red aggressive lt value gt 129 team profile red fast lt value gt 129 team profile red handicap lt value gt 129 team profile red mobile value 129 team profile red vulnerable value 130 team profile red weapon alternate ide val e wee I ie period ERES 130 team profile red weapon id value 130 team profile red weapon mode value 130
410. the game used the other way of doing things black is transparent because this is technically the most obvious way to do things Black is 0 and transparent is 0 But for a human reader of the map this does not make sense One generally expects white to be the equivalent of undrawn or blank well if it s undecided void transparent whatever it s white When the Gimp flattens an image it becomes white not black So white is transparent Period 26 Liquid War 6 3 1 8 glue png and boost png If there s a glue png or boost png file in the map directory you can use one of them or both then they will be interpreted as follow e on areas where glue png and boost png are white nothing special happens fighters follow their default behavior e on areas where glue png is black fighters will be slowed down How slowish they will be depends on the glue power parameter If glue power is 3 then fighters will move three times slower e on areas where boost png is black fighters will behave faster How fast they will be depends on the boost power parameter If boost power is 2 then fighters will move two times faster e on areas where glue png or boost png are gray they will be slowed down less or speeded up less depending on how dark the grey is There can be at the same place some gray or black in both boost png and glue png How this will behave exactly is not really clear at this stage the
411. the only available backend was mod g11 it would display the game using 3D acceleration if available through the SDL library using its GL bindings As of 2012 other backends are begin developped the idea is that each backend can provide the user with enough visual feedback to play and convey input informations to the core engine The rest of the game is exactly the same this means playing with mod g11 you can do exactly the same things than with mod caca 3 6 2 List of backends e mod gll Liquid War 6 has a modular architecture which allows the programmer and the player to plug pretty much any rendering graphics backend provided this one is developped As of 2009 the only available backend is still mod g11 it will display the game using 3D acceleration if available through the SDL library using its GL bindings Additionnally versions available for Microsoft Windows and Mac OS X will probably never any other backends available For technical reasons those platforms do not have the flexibility of GNU Linux and do not allow graphical libraries to be loaded dynamically In practice both of them require hacks that override the standard main function Microsoft Windows has its WinMain instead and Mac OS X is even more pedantic requiring graphical functions to be executed in the main thread So mod g11 Chapter 3 Hacker s guide 37 is just linked statically in those versions and the modularity of the game is purely theoric
412. the program its homepage 4 3 35 show build host cpu show build host cpu Command line option Shows the host CPU as defined by host cpu in GNU Autoconf 76 Liquid War 6 4 3 36 show build host os show build host os Command line option Shows the host OS as defined by host os in GNU Autoconf 4 3 37 show build hostname show build hostname Command line option Shows the name of the host where the binary was compiled 4 3 38 show build includedir show build includedir Command line option Shows the includedir value as passed to the GNU Autoconf configure script when compiling the program Default is usr local include 4 3 39 show build ldflags show build ldflags Command line option Shows what value you should put in LDFLAGS environment variable if you want to link programs against libliquidwar6 4 3 40 show build libdir show build libdir Command line option Shows the libdir value as passed to the GNU Autoconf configure script when compiling the program Default is usr local lib This is the generic non Liquid War 6 specific library directory Dedicated Liquid War 6 modules are stored elsewhere usually in a sub directory see the mod dir switch for more information 4 3 41 show build license show build license Command line option Shows the license of the program GNU GPL v3 or later 4 3 42 show build localedir show build localedir C
413. ther This will allow lone fighters to regenerate a bit by hiding somewhere in the map This is typically a low value might even be 0 4 11 10 frags fade out frags fade out value Command line option LW6 FRAGS FADE OUT Environment variable frags fade out XML key Type integer Default value 100 Min value 10 Max value 100 When a player looses in deathmatch mode all player points will be multiplicated by this percentage for instance if it s 90 and player had 50 points then player will only have 45 points then points corresponding to the new death will be added substrated to its total This is to avoid players with thousands of points in advance and keep everyone in the race A low value will minimize the importance of game start This is only used in modes where frags are distributed in a proportional way 4 11 11 frags mode frags mode lt value gt Command line option Chapter 4 Reference 103 LW6_FRAGS_MODE Environment variable frags mode XML key Type integer Default value 2 Min value 0 Max value 3 Defines how points are calculated in deathmatch mode 0 is old school simple mode 1 is in a mode in which 1 point is attributed to every winner and looser looses all the corresponding points total is always 0 2 isproportional mode with a total of 0 kept constant that is loosers loose as many points as attributed to winners 3 is a mode in which at each death winners are attributed a number of poin
414. ther activities as well To convey a work means any kind of propagation that enables other parties to make or receive copies Mere interaction with a user through a computer network with no transfer of a copy is not conveying An interactive user interface displays Appropriate Legal Notices to the extent that it includes a convenient and prominently visible feature that 1 displays an appropriate copyright notice and 2 tells the user that there is no warranty for the work except to the extent that warranties are provided that licensees may convey the work under this License and how to view a copy of this License If the interface presents a list of user commands or options such as a menu a prominent item in the list meets this criterion 1 Source Code The source code for a work means the preferred form of the work for making modi fications to it Object code means any non source form of a work A Standard Interface means an interface that either is an official standard defined by a recognized standards body or in the case of interfaces specified for a particular programming language one that is widely used among developers working in that language Appendix E GNU GENERAL PUBLIC LICENSE 241 The System Libraries of an executable work include anything other than the work as a whole that a is included in the normal form of packaging a Major Component but which is not part of that Major Component a
415. things in a headless pure console environment 4 15 7 commands per sec commands per sec lt value gt Command line option LW6_COMMANDS_PER_SEC Environment variable commands per sec XML key Type integer Default value 10 Min value 1 Max value 1000 Defines the number of commands per second When a command is generated orders are actually sent to the game engine for instance this cursor moved there So this option will affect game responsiveness setting this to a high value will make the game more responsive but consume bandwidth on network games 4 15 8 cunit cunit Command line option Running the game with cunit is almost like running test the difference is that cunit will use CUnit interactive interface allowing the user to cherry pick some tests and avoid running the whole suite just for one test This can be usefull for debugging when individual test binaries are not available 4 15 9 daemon daemon Command line option Start the game in daemon mode this is typically used with the server mode if you want the process to be detached from the console and executed in the background 4 15 10 debug layer id debug layer id lt value gt Command line option LW6_DEBUG_LAYER_ID Environment variable debug layer id XML key Type integer Default value 0 Min value 0 Max value 6 A team id which will be used for debugging purposes for instance when displaying gradient 4 15
416. this License then your license from a particular copyright holder is reinstated a provisionally unless and until the copyright holder explicitly and finally terminates your license and b permanently if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation Moreover your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means this is the first time you have received notice of violation of this License for any work from that copyright holder and you cure the violation prior to 30 days after your receipt of the notice Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License If your rights have been terminated and not permanently reinstated receipt of a copy of some or all of the same material does not give you any rights to use it Appendix F GNU Free Documentation License 257 10 11 FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new revised versions of the GNU Free Documentation License from time to time Such new versions will be similar in spirit to the present version but may differ in detail to address new problems or concerns See http www gnu org copyleft Each version of the License is given a distinguishing version number If the Docu
417. thmic and works the way the audio decibels do That is 30 is 10 times greater than 20 10 is supposed to be a reference of a computer that can reasonnably run the game So if you get 40 you are 1000 times powerfull enough Negative values can technically show up on very slow computers 4 15 4 bench value bench value lt value gt Command line option LW6_BENCH_VALUE Environment variable bench value XML key Type integer Default value LW6LDR_DEFAULT_BENCH_VALUE Contains the current bench value of the computer running the game This is used internally to choose the right map settings You can override this value and use your own but use at your own risk Pretending you have a faster computer than what you really have can lead to confusion 4 15 5 bin id bin id lt value gt Command line option LW6_BIN_ID Environment variable bin id XML key Type integer Default value 0 The internal bin id value Note that this is not necessarly equal to the value returned by show build bin id When they are different it is assumed this is because of a software upgrade 4 15 6 check check Command line option Running the game with check is almost like running test the difference is that check will not run tests which involve graphics or sound backends so it s adapted Chapter 4 Reference 161 to pure console mode This can be usefull for automated checks on a build farm or if you want to check
418. tled Endorsements or to conflict in title with any Invariant Section Preserve any Warranty Disclaimers If the Modified Version includes new front matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document you may at your option designate some or all of these sections as invariant To do this add their Appendix F GNU Free Documentation License 255 titles to the list of Invariant Sections in the Modified Version s license notice These titles must be distinct from any other section titles You may add a section Entitled Endorsements provided it contains nothing but endorsements of your Modified Version by various parties for example statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard You may add a passage of up to five words as a Front Cover Text and a passage of up to 25 words as a Back Cover Text to the end of the list of Cover Texts in the Modified Version Only one passage of Front Cover Text and one of Back Cover Text may be added by or through arrangements made by any one entity If the Document already includes a cover text for the same cover previously added by you or by arrangement made by the same entity you are acting on behalf of you may not add another but you may replace the old one on explicit permission from the previous publisher that added the old one The author s a
419. to configure Chapter 4 Reference 75 4 3 27 show build enable paranoid show build enable paranoid Command line option Shows wether the game was build with paranoid memory management This is for de bugging purposes the default already includes some controls with turned it s really paranoid 4 3 28 show build enable profiler show build enable profiler Command line option Shows wether the game was build with Google Profiler support This depends on parameters passed to configure 4 3 29 show build enable valgrind show build enable valgrind Command line option Shows wether the game was build with valgrind later use in mind This depends on parameters passed to configure 4 3 30 show build endianness show build endianness Command line option Returns the endianness little corresponds to x86 like systems big to ppc like systems 4 3 31 show build gcc version show build gcc version Command line option Returns the version of the GNU C compiler which was used to compile the program 4 3 32 show build gnu show build gnu Command line option Returns 1 true if host OS is a GNU system or at least has been considered as such when compiling 0 false if not 4 3 33 show build gp2x show build gp2x Command line option Returns 1 true if host is a GP2X 0 false if not 4 3 34 show build home url show build home url Command line option Shows the URL of
420. to attach them to the start of each source file to most effectively state the exclusion of warranty and each file should have at least the copyright line and a pointer to where the full notice is found one line to give the program s name and a brief idea of what it does Copyright C year name of author This program is free software you can redistribute it and or modify it under the terms of the GNU General Public License as published by the Free Software Foundation either version 3 of the License or at your option any later version This program is distributed in the hope that it will be useful but WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE See the GNU General Public License for more details You should have received a copy of the GNU General Public License along with this program If not see http www gnu org licenses Also add information on how to contact you by electronic and paper mail If the program does terminal interaction make it output a short notice like this when it starts in an interactive mode program Copyright C year name of author This program comes with ABSOLUTELY NO WARRANTY for details type show w This is free software and you are welcome to redistribute it under certain conditions type show c for details The hypothetical commands show w and show c should show the appropriate parts of the General Publ
421. to be fixed While this is the standard GNU way of reporting bugs modern SPAM standards make it very hard to filter real bug reports from junk on this list It is more convenient to use a web interface the URL is http savannah gnu org bugs func additem amp group liquidwar6 and youtre really encouraged to use it instead of sending emails Please take a look at the bug list before submitting new bugs 2 1 4 IRC channel IRC can be an interesting alternative to mailing lists There s an open channel dedicated to Liquid War on freenode net you can access it on irc irc freenode net liquidwar that is channel liquidwar on irc freenode net 6 Liquid War 6 2 2 Getting the game 2 2 1 Download source Liquid War 6 can be found on e http ftp gnu org gnu liquidwar6 e http download savannah gnu org releases liquidwar6 e http www ufoot org download liquidwar v6 Downloading the latest file from this place and compile it yourself on your computer with a classical configure amp amp make amp make install is the recommended way to install Liquid War 6 2 2 2 Download binaries Some binary packages might be available Your mileage may vary GNU Linux based systems are supported through Debian deb and Red Hat RPM pack ages T here is also a Microsoft Windows installer However these binaries are not necessarly available for every single version of the game 2 2 3 GIT repository Latest work in progress versions c
422. to be under water when playing 4 13 53 x wrap x wrap value Command line option LW6 X WRAP Environment variable x wrap XML key Type boolean Default value true Defines wether the map should be wrapped on the x axis This is the companion of x polarity if no polarity is defined map can t be wrapped but in some cases one might wish to have a map with polarity but without wrapping if for instance textures do not tile nicely 4 13 54 y wrap y wrap value Command line option LW6 Y WRAP Environment variable y wrap XML key Type boolean Default value true 154 Liquid War 6 Defines wether the map should be wrapped on the y axis This is the companion of y polarity if no polarity is defined map can t be wrapped but in some cases one might wish to have a map with polarity but without wrapping if for instance textures do not tile nicely 4 13 55 zoom zoom value Command line option LW6_Z00M Environment variable zoom XML key Type float Default value 1 0 Defines the map zoom If lower than 1 0 map will occupy only a fraction of the screen if greater than 1 0 some areas will be outside the screen and the player will need to scroll through it 4 13 56 zoom max zoom max value Command line option LW6 ZOOM MAX Environment variable zoom max XML key Type float Default value 30 0 Defines the max map zoom If set to a high value you ll be ab
423. to use propagate modify or convey a specific copy of the covered work then the patent license you grant is automatically extended to all recipients of the covered work and works based on it A patent license is discriminatory if it does not include within the scope of its cover age prohibits the exercise of or is conditioned on the non exercise of one or more of the rights that are specifically granted under this License You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software under which you make payment to the third party based on the extent of your activity of conveying the work and under which the third party grants to any of the parties who would receive the covered work from you a discriminatory patent license a in connection with copies of the covered work conveyed by you or copies made from those copies or b primarily for and in connection with specific products or compilations that contain the covered work unless you entered into that arrangement or that patent license was granted prior to 28 March 2007 Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law No Surrender of Others Freedom If conditions are imposed on you whether by court order agreement or otherwise that contradict the conditio
424. transaction is characterized the Corresponding Source conveyed under this section must be accompanied by the Installation Information But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product for example the work has been installed in ROM The requirement to provide Installation Information does not include a requirement to continue to provide support service warranty or updates for a work that has been modified or installed by the recipient or for the User Product in which it has been modified or installed Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network Corresponding Source conveyed and Installation Information provided in accord with this section must be in a format that is publicly documented and with an implementa tion available to the public in source code form and must require no special password or key for unpacking reading or copying Additional Terms Additional permissions are terms that supplement the terms of this License by mak ing exceptions from one or more of its conditions Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License to the extent that they are valid under applicable law If additional permis
425. ts proportional to their fighters and loosers scores remain untouched 4 11 12 frags to distribute frags to distribute value Command line option LW6_FRAGS_TO_DISTRIBUTE Environment variable frags to distribute XML key Type integer Default value 100 Min value 10 Max value 1000 Defines how many points will be distributed when in deathmatch mode When a player looses this amont of points will be substracted to its total and the same amount of points will be distributed to other live players proportionnally to how many fighters they have on the battlefield 4 11 13 glue power glue power lt value gt Command line option LW6_GLUE_POWER Environment variable glue power XML key Type integer Default value 20 Min value 1 Max value 100 Defines how sticky and powerfull the glue is That is if on glue png it s pitch black and this parameter is set to 3 then fighters will take 3 steps to do what would normally take only one step 4 11 14 highest team color allowed highest team color allowed lt value gt Command line option LW6_HIGHEST_TEAM_COLOR_ALLOWED Environment variable highest team color allowed XML key Type integer Default value 9 Min value 3 Max value 9 Id of the greatest highest color one can use Normally you can leave this untouched the program will automatically fit this according to your exp Setting an artificially low value will just cause normally available colors
426. tworks but real wide online gaming How this will fit with Liquid War s rules is not totally decided but I already know of several way to achieve this I ll implement an anticipation system a la U61 This means that no matter if a remote player has a poor network connection things will behave as if everything was fine Internally the system keeps 2 images of the game One which is anticipated and displayed to the player and one which is validated but outdated kept internally It s a little hard to explain consumes twice as much CPU and memory but it works It happens that today the lacking ressource for playing Liquid War online is more on the network side than on the local CPU and memory aspects Dll take it to the next level and implement a peer to peer like network model in which any client can become a server The idea behind is that if a server quits the game then a client takes its role letting the game continue for hours This way one could virtually have a never ending Liquid War game which would last weeks I believe 232 Liquid War 6 this could be really cool I also believe no proprietary game will ever implement that for in this model there s no way to force people to access a centralized server this server usually being the major key in the business model of a company which sells proprietary software This third point will be the real enhancement of Liquid War with version 6 It s one of the very points whic
427. uce the bug whereas with this tool you have the information reported just when the problem happens Chapter 3 Hacker s guide 51 3 9 5 Private and public interfaces Each library exports a public interface and hides its internal Since Liquid War 6 uses standard C and no C there s no real standard way to handle public private features The convention used in Liquid War 6 is to show internal structures as opaque pointers void whenever some function needs to operate on a structure which has possibly private fields This way the caller function has no way to access the internals and we are sure that no reference to any internal implementation specific feature will appear Here s a code excerpt from src gfx setup c void lw6gfx quit LW6GFX CONTEXT context 1 Implementation here Leds void lw6gfx_quit void context _lw6gfx_quit _LW6GFX_CONTEXT context The function _lw6gfx_quit note the _ is internal declared in internal h whereas the function 1w6gfx quit is public and is therefore exported in gfx h This way functions in the program using lw6gfx quit do not know what is in the LW6GFX CONTEXT structure and they need not know it This does not mean it is not possible to have public structures only these structures must reflect some truely public accessible and safe to access structures 3 9 6 Commit policy Basic rules e commits should be as small as possible yet leave the cod
428. ufoot org liquidwar v6 doc coverage src lib gfx mod gles2 index html as there are many sub directories in this module please refer to the test coverage directory index for complete information 5 21 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html_node mod_002dgles2 html 5 22 mod soft 5 22 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib gfx mod soft index html as there are many sub directories in this module please refer to the test coverage directory index for complete information 5 22 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node mod 002dsoft html 5 23 shared sdl 5 23 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib gfx shared sdl index html as there are many sub directories in this module please refer to the test coverage directory index for complete information 5 23 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node mod 002dsoft html 5 24 mod caca 5 24 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib gfx mod caca index html as there are many sub directories in this module please refer to the test coverage directory index for complete information 5 24 2 API Online gdoc reference available
429. ui keyboard pop arrow up 181 c lw6gui keyboard pop key alt 181 c lw6gui keyboard pop key ctrl 181 c lw6gui keyboard pop key enter 181 265 c lw6gui keyboard pop key esc 181 c lw6gui keyboard pop key pgdown 181 c lw6gui keyboard pop key pgup 181 c lw6gui look get ccc eee eee eae 181 c lw6gui look set us ics creisis tenerent aes 181 c lw6gui look zoom in sss 181 CLupeui Look zoom out s 182 C Lv gui menu append sssr sssnnn nnno 182 c lw6gui menu close popup 182 c lw6gui menu enable esc 182 c lw6gui menu has popup 182 c lw6gui menu neWw senes 182 c lw6gui menu remove esses 182 c lw6gui menu remove all 182 c lw6gui menu scroll down 182 c lw6gui menu scroll up 182 c lw6gui menu select suus 183 c lw6gui menu select esc 183 c lw6gui menu set breadcrumbs 183 c lw6gui menu Sync esses 183 c lw6gui mouse get state 183 c lw6gui mouse poll move 183 c lw6gui mouse pop button left 183 c lw6gui mouse pop button middle 183 c lw6gui mouse pop button right 183 c lw6gui mouse pop double click 183 c lw6gui mouse pop simple click 184 c lw6gui mouse pop triple cl
430. uile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile Chapter 4 Reference 4 16 269 c lw6sys build get configure args c lw6sys build get configure args Wrapper on lw6sys build get configure args 4 16 270 c Iw6sys build get copyright c lw6sys build get copyright Wrapper on lw6sys build get copyright 4 16 271 c lw6sys build get datadir c lw6sys build get datadir Wrapper on lw6sys build get datadir 4 16 272 c lw6sys build get date c lw6sys build get date Wrapper on lw6sys build get date 4 16 273 c lw6sys build get docdir c lw6sys build get docdir Wrapper on lw6sys build get docdir 4 16 274 c lw6sys build get enable allinone c lw6sys build get enable allinone Wrapper on lIw6sys build get enable allinone 4 16 275 c lw6sys build get enable console c lw6sys build get enable console Wrapper on lw6sys build get enable console 4 16 276 c Iw6sys build get enable fullstatic c lw6sys build get enable fullstatic Wrapper on lIw6sys build get enable fullstatic 4 16 277 c lw6sys build get enable gcov c lw6sys build get enable gcov Wrapper on lIw6sys build get enable gcov 4 16 278 c lw6sys build get enable gprof c lw6sys build get enable gprof Wrapper on lw6sys build get enable gprof 201 C function exported to Guile C function exported to Guile C function exported to Guile
431. umbed get music path eee 176 4 16 20 c lw6cfg unified get user dir 0 0 e eee ee eee 176 4 16 21 cGJwpch zet backends eee eens 176 4 16 22 cGJw cns console zupport eese 176 4 16 23 c lw6cns init eens 176 4 16 24 cJhw cns poll eee eee 176 4 16 25 cGJw cns out eee ens 176 4 16 26 c lw6cns term support 0 00 eee eee e 176 4 16 27 c Iw6dsp get average fps 0 cece eee eee eee 176 XV xvi 4 16 28 4 16 29 4 16 30 4 16 31 4 16 32 4 16 33 4 16 34 4 16 35 4 16 36 4 16 37 4 16 38 4 16 39 4 16 40 4 16 41 4 16 42 4 16 43 4 16 44 4 16 45 4 16 46 4 16 47 4 16 48 4 16 49 4 16 50 4 16 51 4 16 52 4 16 53 4 16 54 4 16 55 4 16 56 4 16 57 4 16 58 4 16 59 4 16 60 4 16 61 4 16 62 4 16 63 4 16 64 4 16 65 4 16 66 4 16 67 4 16 68 4 16 69 4 16 70 4 16 71 4 16 72 4 16 73 4 16 74 4 16 75 c Iw6dsp get fullscreen modes c Iw6dsp get instant fps c Iw6dsp get last frame rendering time c lw6dsp get nb frames c lw6dsp get video mode c Iw6dsp new 20006 c lw6dsp release 045 c lw6dsp update c lw6gen create from seed c lw6gen seed new c lw6gen seed normalize c lw6gfx get backends c Iw6gui default look c Iw 6gui input reset c Iw6gui joystickl get move pad c Iw6gui joystick1 pop button a c lw6gui joystickl pop button b
432. un der this License Any attempt otherwise to propagate or modify it is void and will automatically terminate your rights under this License including any patent licenses granted under the third paragraph of section 11 However if you cease all violation of this License then your license from a particular copyright holder is reinstated a provisionally unless and until the copyright holder explicitly and finally terminates your license and b permanently if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation Moreover your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means this is the first time you have received notice of violation of this License for any work from that copyright holder and you cure the violation prior to 30 days after your receipt of the notice Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License If your rights have been terminated and not permanently reinstated you do not qualify to receive new licenses for the same material under section 10 9 Acceptance Not Required for Having Copies You are not required to accept this License in order to receive or run a copy of the Program Ancillary propagation of a covered work occurring solely as a conseque
433. unctions It enables the programmer to spots the ugly and dangerous parts of the program e http www ufoot org liquidwar v6 doc doxygen the Doxygen documenta tion gives an interactive access to the code the structures and functions and their dependencies 5 1 libliquidwar6 5 1 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib index html 5 1 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libliquidwar6 html 5 2 libbot 5 2 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage src lib bot index html 5 2 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node libbot html 216 Liquid War 6 5 3 mod brute 5 3 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage Src lib bot mod brute index html 5 3 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node mod O02dbrute html 5 4 mod follow 5 4 1 Overview View lcov test coverage results on http www ufoot org liquidwar v6 doc coverage Src lib bot mod follow index html 5 4 2 API Online gdoc reference available on http www gnu org software liquidwar6 manual html node mod 002dfollow html 5 5 mod idiot 5 5 1 Overview View lcov test coverage results on http
434. value Command line option LW6 DISPLAY DEBUG ZONES Environment variable display debug zones XML key Type boolean Default value false Set this to true to display the zones this is usefull to debug the core algorithm or understand how it works 4 15 20 display fighters display fighters lt value gt Command line option LW6_DISPLAY_FIGHTERS Environment variable display fighters XML key Type boolean Default value true Debugging option which can be set to false to disable the display of fighters when playing 164 Liquid War 6 4 15 21 display fps display fps lt value gt Command line option LW6_DISPLAY_FPS Environment variable display fps XML key Type boolean Default value false Set this to true to display the number of frames per second When this gets too low play a smaller map buy a new computer or contribute and hack Liquid War 6 so that it runs faster 4 15 22 display hud display hud lt value gt Command line option LW6_DISPLAY_HUD Environment variable display hud XML key Type boolean Default value true Decides wether the hud informations while playing should be displayed 4 15 23 display log display log value Command line option LW6 DISPLAY LOG Environment variable display log XML key Type boolean Default value true Set this to false to disable the display of error messages on the screen Mote that you can miss valuable inf
435. ven the same input For this reason Liquid War 6 never uses floating point numbers for its core algorithm it uses fixed point numbers instead It also never relies on a real random function but fakes random behavior by using predictable pseudo random sources implementation inde pendant such as checksums or modulos There are also some optimizations which are not possible because of the predictability requirement for instance one can not spread a gradient and move the fighters in concurrent threads or move fighters from different teams in different threads If you read the code you ll find lots of checksums here and there a global checksum not being enough for you never know where the problem happened The test suite uses those facilities to garantee that the game will run the same on any platform Not being able to rely on a predictable algorithm would require to send whole game states on the network and this is certainly way too much data to transmit A moderate 200x200 map has a memory footprint of possibly several megabytes so serializing this and sending it to multiple computers at a fast paced rate is very hard if possible at all even with a high bandwidth We re talking about Internet play here 3 6 Graphics backends 3 6 1 Modularity Liquid War 6 has a modular architecture which allows the programmer and the player to plug pretty much any rendering graphics backend provided this one is developped As of 2009
436. ves it only concerns the log engine One can for instance replace WARNING by ATTENTION e src lib hlp hlp credits c the credits which are displayed at game startup in the splash screen e src lib lw6 print c contains some messages printed on the console As a side note the file src lib hlp hlp reference c contains all the entries for the various configuration options anything that can be queried by liquidwar6 32 Liquid War 6 about keyword This is several hundred messages It might be interesting to translate them some day but it s obviously not a priority today 3 3 Architecture 3 3 1 C Guile Technically Liquid War 6 is a collection of C functions which are exported to Guile The main binary embeds a Guile interpreter which will run a Guile script This script calls the exported C functions and glues them together It should be possible to implement the game without using Guile at all using C code to make the various modules communicate together This might seem an easier way to go not involving several languages However using this script level is a good way to achieve several important goals e it s possible at any time to query the game about its internal state dump objects take actions That s what the console is about It s a bit like having an embedded debugger it s really a very convenient tool to develop make experiments and track problems e many hacks can be done without recompiling anything a
437. w6gui mouse pop button left Wrapper on lw 6gui mouse pop button left 4 16 96 c lw6gui mouse pop button middle c lw6gui mouse pop button middle Wrapper on lw6gui mouse pop button middle 4 16 97 c lw6gui mouse pop button right c lw6gui mouse pop button right Wrapper on lw 6gui mouse pop button right 4 16 98 c lw6gui mouse pop double click c lw6gui mouse pop double click Wrapper on lw6gui mouse pop double click 183 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile 184 4 16 99 c lw6gui mouse pop simple click c lw6gui mouse pop simple click Wrapper on lw6gui mouse pop simple click 4 16 100 c Iw6gui mouse pop triple click c lw6gui mouse pop triple click Wrapper on lw6gui mouse pop triple click 4 16 101 c Iw6gui mouse pop wheel down c lw6gui mouse pop wheel down Wrapper on lw6gui mouse pop wheel down 4 16 102 c Iw6gui mouse pop wheel up c lw6gui mouse pop wheel up Wrapper on lw6gui mouse pop wheel up 4 16 103 c lw6hlp about c lw6hlp about Wrapper on Iw6hlp about 4 16 104 c lw6hlp get default value c lw6hlp get default value Wrapper on lw6hlp get default value 4 16 105 c lw6hlp lis
438. write of Liquid War 5 The rewrite started in 2005 So a good question is was the rewrite worth it Here s a list of key improvements e appearance global rendering quality Call it the way you want Liquid War 6 simply looks nicer than any previous release Period e level features including multi layer allowing the map designer to create bridges and tunnels wrapping fighters disappearing on the left can reappear on the right Those really change the gameplay e deathmatch mode Give it a try it s now the default mode and definitely changes the rules e team profiles as well as special weapons which are tricks you can play on opponents e modularity overall code quality While this is not a user visible change the game is far less monolithic therefore hacking to revamp the graphics engine the algorithm whatever is easier The situation has changed from this is impossible to hack to OK how much time can this take So while one can t promise every idea will be implemented some day at least many more things become possible with the new codebase The most interesting change is still to come and concerns network games Stay tuned 1 2 3 Revision history Liquid War 6 releases are codenamed after famous historical real or mythical characters Here is a short revision history For details see the ChangeLog and NEWS files distributed with the game Additionnally there s an ever incr
439. xisting liquidwar6 binary in the path If there s such a binary it will run it and ask for its map path and use this value automatically 2 4 3 Raw install of extra maps all platforms Another solution which works on all platforms including Microsoft Windows and Mac OS X but also works on GNU Linux is to simply unpack the extra maps package unzip or untar in your custom map directory or in the system map directory There s nothing else to do to install these maps but simply put them on your hard drive in the right directory Typically on an Microsoft Windows system you would unpack the extra maps in C Program Files Liquid War 6 map system directory and on a Mac OS X system you would unpack the extra maps in Liquid War 6 app Contents Resources map system directory or HOME Library Application Support Liquid War 6 map user directory On a GNU Linux or POSIX system you would unpack them in HOME 1liquidwar6 map user directory Next time you run the game the maps should be browsable If you can t see them run liquidwar6 audit and check that the place where you unpacked the files is actually searched by the binary 2 5 Troubleshooting Chapter 2 User s manual 13 2 5 1 Compilation problems A quick survival guide Check that you have all dependencies installed Also check their version number Double check that you have devel packages installed not only run time binaries Read carefully the output of configu
440. yboard pop key enter 4 16 73 c Iw6gui keyboard pop key esc c lw6gui keyboard pop key esc Wrapper on lIw6gui keyboard pop key esc 4 16 74 c Iw6gui keyboard pop key pgdown c lw6gui keyboard pop key pgdown Wrapper on lw6gui keyboard pop key pgdown 4 16 75 c Iw6gui keyboard pop key pgup c lw6gui keyboard pop key pgup Wrapper on lw6gui keyboard pop key pgup 4 16 76 c lw6gui look get c lw6gui look get Wrapper on lw6gui look get 4 16 77 c lw6gui look set c lw6gui look set Wrapper on lw6gui look set 4 16 78 c lw6gui look zoom in c lw6gui look zoom in Wrapper on lw6gui_look_zoom_in 181 C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile C function exported to Guile 182 4 16 79 c lw6gui look zoom out c lw6gui look zoom out Wrapper on lIw6gui look zoom out 4 16 80 c Iw6gui menu append c lw6gui menu append Wrapper on lw 6gui menu append 4 16 81 c Iw6gui menu close popup c lw6gui menu close popup Wrapper on lw6gui menu close popup 4 16 82 c Iw6gui menu enable esc c lw6gui menu enable esc Wrapper on lw6gui menu enable esc 4 16 83 c Iw6gui menu has popup c lw6gui menu has popup Wrapper on lw6gui menu has popup 4
441. ymore The fighter scale is now a minor parameter which is used to upsize maps if they are too small In 99 996 of the cases the map is first upsized by fighter scale for this parameter is by default set low 1 0 then downsized by bench value for real life personnal computers can t handle 1600x1200 maps in real time Not yet There are a bazillion options to control map size including min map surface They are here because it s important that ultimately people can do whatever they want with the game But for map design this is another story Don t use them Rely on bench value and just care about game speed This is achieved by changing the speed parameter 3 1 17 Music It is possible to store your own custom music file within the map directory You can call it whatever you want you can keep its original name which is something music authors 30 Liquid War 6 usually appreciate even if there s no strong attribution clause on the license it can be considered fair use not to fiddle to much with the name you just have to place it in the same directory than the other files like map png or texture jpeg The following formats are known to work with the default SDL_mixer based mod_ogg backend e ogg Ogg Vorbis files e wav e midi extensions mid and midi should both work e mod s3m and xm files AKA modules To be more precise here s how things work e step 1 the game tries to fin
442. ze lt value gt Command line option LW6_CURSOR_SIZE Environment variable cursor size XML key Type float Default value 1 0 Min value 0 Max value 10 Size of the cursors on the map 1 is the default setting it to a higher value will make cursors bigger a lower value will make them smaller 4 13 16 hidden layer alpha hidden layer alpha lt value gt Command line option LW6_HIDDEN_LAYER_ALPHA Environment variable hidden layer alpha XML key Type float Default value 0 1 Min value 0 Max value 1 Whenever players are supposed to be hidden behind a wall for instance if they are in layer 2 and layer 1 is filled with walls it s still possible to see them but with a low alpha value almost transparent This parameter allows you to trick this value 0 will make these players absolutely invisible 1 will make them totally opaque like if they were on layer 1 4 13 17 hud color frame bg hud color frame bg value Command line option LW6 HUD COLOR FRAME BG Environment variable hud color frame bg XML key Type color Default value 72000000 Defines the background color for the hud frame Ignored if hud color auto is set Can be ZRGB RGBA RRGGBB or ZRRGGBBAA 146 Liquid War 6 4 13 18 hud color frame fg hud color frame fg lt value gt Command line option LW6_HUD_COLOR_FRAME_FG Environment variable hud color frame fg XML key Type color Default value cccccc Defines the

Download Pdf Manuals

image

Related Search

Related Contents

Liebert eXM 10-40kVA UPS, 50/60Hz, User Manual    logFaces User Manual  Bedienungsanleitung Selectivia  JVC Car Audio User Manual  Whirlpool SF114PXSB2 User's Manual  L`Hyper N°433/14  Drill Masters Eldorado Tool Welder 93420 User's Manual  

Copyright © All rights reserved.
Failed to retrieve file