1=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 2Nighthawk V3 Install Copyright (C) 1997-2004 Jason Nunn et al 3 Head Designer/Maintainer: Eric Gillespie 4 http://night-hawk.sourceforge.net 5=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 6 7 83rd (OpenGL) revision notes (June 2004) 9--------------------------------------- 10 11Well, it's been almost 8 years since 1st release. I didn't think i would 12be revising this. It has been commited to void in wake of the linux game 13revolution. 14 15Looking back at my coding, my state design, event handling and data 16management seem amateurish... but it does the job anyway. I certainly 17don't write code of this grade anymore.. we all evolve and improve... 18and of course, 8 years before that (1989) my code was even worse ;). 19 20Eric revitualised this project about a year ago, creating a domain on 21sourceforge and heads a band of testers. He came to me (nagged me for a 22year ;) to port Nighthawk to a more modern GUI capable of screen 23scaling. 24 25Out of SDL and GTK, I chose OpenGL. There's no urguement really. SDL is 26no better than Xlib in my opinion (infact Xlib has more graphical 27features than SDL). Also, I have lots of experience with OpenGL from a 28demo I developed 4 years ago called "Small Precludes" (check my web page 29if you are interested). 30 31Anyway, I've done the port to OpenGL. Although nothing flash (It's the 32same basic feel with a few alpha FX).. however, with OpenGL, some nice 33nifty effects are now possible... and of course there's now no limit to 34your window size ;). 35 36(With a OpenGL port, there is even the prospect of a auuhhh.. Windows 37version.. Fuck me dead) 38 39With this new basic frame work implemented, Eric has now got his shit 40cut out for him. He can now revamp the sprites and font and generally 41bruse it up and add new effects etc (no heavy programming stuff). So, I 42submit my revisions for him to finish off ;). 43 44Unfortunately, I have ripped out the sound and music. This is another 45project cycle to port that.. and I don't have any desire to complete it. 46There's many more things that need improving with the game before sound 47is considered IMO. Of course, if somebody *really* wants it in there, 48then me my guest ;). 49 50I suggest that you convert the Funk module to a MP3 file and use an 51existing library/operating system facility for the channelled playback 52of sound. For any interested parties, I'm happy to give you a hand with 53the MP3 conversion of the music. 54 55The star wars FX have been deleted (to remove any distribution 56violation). 57 58Other contributions for this revision are- Rafael Laboissiere's cascade 59mode and Tanel Kulaots level continuence patch. These patches were 60emailed to me some years ago. Better late than never ;). 61 62Lastly on testing this game, I can only get up to Esperence before 63dieing. I used to be able to play it right up to Tobruk.. but there 64again, some of the game timing has been changed. Eric has to tune this 65up. 66 67 68Changes-- 69 70 - OpenGL port 71 - Being an OpenGL creature, you can have any window size you like. 72However, here are some extra command line options- 73 74 -3 320x200 mode 75 -6 640x480 mode (but you can change these by dragging out 76 -1 1024x768 mode the window) 77 -f full screen mode like god intended (keeewwl...) 78 79 - If you use the -u command line option, you can change the refresh 80(frames per second) rate... but i would just leave it at it's default. 81 82 - The "-g" god mode command line parameter has been added... no damage 83no score. Primary used to walk though levels for testing. 84 85 - You only have to move over power bays to be recharged now (just like 86the original game). 87 88 - Headup toggle removed... it's now comes up automatically when 89messages are added, and then fades. 90 91 - When a floor is cleared, it fades to dark (just like original). This 92wasn't possible to do under Xlib (or the version I developed Nighthawk 93on). 94 95 - In the game, if you hit "f", you get a FPS display on the bottom of 96the screen. 97 98 - Added 'r' key for reduced sprites toggled at run time rather than 99compile time. 100 101 - The 'q' key quits you out of current game, then program. the ESC key 102ends program immediately. 103 104 - You'll also notice some alpha texturing happening there (keeewwl..). 105Nb/ that it uses the most basic OpenGL facilities. No Z-buffering or 106transformations are done. Everything is flat 2D orthogonal... so fast 107software rendering is hopefully possible on the slower machines still in 108use. 109 110 - Added 2 patches (mentioned above) 111 112 - Removed demo (sorry. it's a dead duck -- Due to randomisation and 113timing didosynchronisy problems between libc's). 114 115 - Removed sound and music (As explained above). 116 117 - Eric's mouse patch not ported... but should be easy to port over 118though... I haven't really looked into it.. as I'm running out of time 119now... Eric. 120 121 - There was a 816 droid (non-existant class) in the last level. Fuck 122knows how it got past my testing stages in May 1999... but anyway, I've 123changed this to a 810. 124 125 - Timing is slightly different from last version due to real time 126calculations being calculated differently (the way OpenGL likes it)... 127also the low update rate of the background timer in older versions looks 128bad on a bigger screen. I've done most of the tuning, but Eric (and 129team) probably needs to do some fine tweaking. 130 131 - I've added an Xlib key rate function to decrease keyboard delay... 132this is to stop that delay when you move the arrow key. This is really a 133hack... technically, I should write proper keydown/keyup detection of 134arrow keys... but fuck it. This should do for now (this is the one 135advantage of using SDL as it has a good keyboard handling mechanism). 136 137Nb/ If you are compiling for another OS, or you are having 138problems, then you can remove this code and the game will still 139run. Comment out instances (and associated code for function 140XkbGetAutoRepeatRate() and XkbSetAutoRepeatRate(). Also uncomment 141-lX11 in config.user, and #include <GL/glx.h> 142 143 - I've also rerranged, tidied up code a little bit. Modular bits have 144been placed in seperate files etc. 145 146Finally, Eric now heads this project. For any patches or interests to 147contribute, please contact him... although, I'm happy to receive general 148feedback about the game. I may take a peripheral role in this project 149now... maybe i'll find time to do further developments with Eric. We'll 150see. 151 152Cheers ;) 153 154 155:Jason Nunn 156Sat Jun 12 01:02:25 CST 2004 157 158 159########################################################################## 160 161Synopsis 162 163Nighthawk is a tribute to one of the most playable and contagious games 164ever written- Paradroid by Andrew Braybrook. It was so good, it was worthy 165of my attention span for 6 straight months, and was the subject of 166conversation at school for many months as well. It was quite amazing seens 167that i've never really been into "playing games", the only other game that 168lifted my skirt was 3D-Wolfenstein (the pre-cursor to DOOM). 169 170It all started when i was in year 10 (1987). A friend of mine gave me a 171copy of Paradroid on a cassette tape (that was the common media for C-64's 172among my friends at the time), and that was it!, i was hooked. 173 174Nighthawk was named after the second ship (level) of the original game. It 175was extremely difficult to get to this level. If you could slate the 176Paradroid level AND Nighthawk level (let alone the other dozen levels), 177you were very good, and would have been highly regarded among the 178governing pimply faced C-64 evanglist aristocrary at my school (BTW, does 179anyone know the full set of ship names in the original game?). 180 181(Nb/ Here is a bit of useless but interesting trivia for you. Adrian 182Bridgett, the Debian maintainer for this distribution noted to me that 183Paradroid was also very similar to Quazatron for the Z80 Spectrum, one of 184his favourite games. There's also an Amiga variation, and the acclaimed 185Paradroid-90 on the Atari-ST). 186 187In October 92 (during the end of my degree i was doing at the time), i 188attempted to write a Messydos PC game like this, but didn't have enough 189technical knowledge about real time programming and PC's etc. Four years 190later, in October 96, started working on this game. Over a period of a 191year, i worked on it on and off, to produce 1.0 that was released in 192December 97. 193 194Nighthawk has been exclusively written for the Unix/Linux X-Windows GUI, 195and have choosen it because it's the most popular, stable, and oldest GUI. 196Also, X-windows games are now very fashionable. Some say that 197Linux/Xwindows is the game developers preferred choice! (i think i read 198that in the Walnut Creek 1998 catalogue?), but i won't go that far yet 199anyway ;). 200 201 202Enjoy.. 203 204:Jason Nunn 205 (19/12/97) 206 207 * * * * 208 209Installation 210------------ 211 212Requirements-- 213 214 - OpenGL, GLU and glut libraries (I use Mesa 5.0.1) 215 - linux (plus others) 216 217 218Procedure-- 219 220 - Extract tarball 221 222 - Distribution comes with pre-compiled binary which can be run from 223directory. it will assume you have a /var/tmp directory for the scores. 224You can try running this program if you like to see if it works. 225 226 - If not (or if you want a permanent home) then-- 227 228 - Edit config.user (namely the INSTALL_DIR and SCORES_FILE defs). You 229may have to add extra library parameters in the LIB_FLAGS defination. 230If you still only want to sample game, then leave INSTALL_DIR as is, and 231just compile. 232 233 - make 234 235 - make install 236 237 - done 238 239 - to run the game: type "/usr/local/game/nighthawk/nighthawk" (or 240./nighthawk) depending on where executable is. 241 242 - to see your options: type "nighthawk -h" 243 244 245 * * * * 246 247 248How to Play (By Jason Nunn & Expanded by Adrian Bridgett) 249 250 251 252Nighthawk - Paradroid Chapter II - The rescue from Vega 253======================================================= 254 255The Earth forces have ambushed an enemy fleet transporting captured Earth 256vessels bound for Vega. While crews were boarding these ships for repairs, 257surviving Vegarian crew destroyed each ships warp core. This has made the 258ships very radioactive, causing many of the droids on board these ships to 259go 'rogue'. Our last contact with the crew indicated heavy loss of life. 260All attempts at contact or rescue have proved futile. We can only fear the 261worst.. 262 263..However, we have depatched a Class 002 Paradroid. Improved over the 001 264class, the 002 will teleport to each ship and annihilate all droids. 265 266 267Game play 268--------- 269 270The mission is simple- Slate all droids. 271 272You start out as a 002 Paradroid. In the original game, you controlled a 273001 Influence device. They differ in the way they control their hosts. 274The 001 droid was basically a helmet that fitted over the host droids 275head, and could control it for a certain length of time. The 002 droid 276however actually transfers it's programs over to the new host, effectively 277'becoming' it, and destroying the old host it occupied. 278 279There are good and bad points to this. The good point is that you can 280occupy the host droid for an unlimited length of time, the bad point is 281that you are stuck with the new hosts weaponary, speed and shields. 282 283 284Key Summary 285------------ 286 287cursor keys - move 288left click - fire 289right click - panic fire 290space - activate (lift, computer, boost) 291t - toggle transfer mode 292c - toggle cascade mode 293h - toggle headsup mode (off by default). 294s - display status 295p - pause 296q - quit 297 298 299Movement 300-------- 301 302Use the cursor keys to move around each map. To open a door, either shoot 303it (see below) or move into it. Doors will close after a short time. 304 305To move around the ship, you must use the lifts (these look like squares 306with a cross through them, you normally start on one). To use a lift, move 307over it and press space. A map of the ship will appear, showing all the 308lifts and a square dot which represents your droid. Press up or down to 309the level you want to go to, and then press space to exit the lift. 310 311 312Attacking 313--------- 314 315To shoot, click the left mouse button at the target you are aiming at. A 316right mouse click does a burst fire which sprays shots in all directions. 317 318The spin speed of a droid indicates how charged the shields of the droid 319are. At full spin, the droid is fully charged. When a droid has less than 3201/4 shields green lights flash, and when they have less than 1/8 shields 321red lights flashes instead. To recharge shields, move over a recharging 322point (they have swirly bits in them) and press space. 323 324 325Transferring 326------------ 327 328You won't get very far in nighthawk unless you learn to transfer to 329different droids. To transfer to a different droid, press "t" (white 330lights will start flashing and you will be unable to shoot) then click on 331a nearby droid (even one on the other side of a wall). The two droids will 332"negotiate" (what a euphemism!) to see which one lives. During 333negotiations, neither droid can shoot. 334 335During the negotiations a bar will appear - the green part represents your 336droid and the blue bar represents the enemy droid. The relative amounts of 337these bars will change as the droids battle each other. When the bar has 338turned one color, that droid wins. The negotiation will be broken off if 339the two droids move too far apart. 340 341As a general rule, don't negotiate with a droid that is more than two 342classes above you - e.g if you are in a 423, negotiating with a 606 is 343okay, but a 713 will probably kill you. 344 345 346Status 347------ 348 349Pressing "s" will display the number of shields you have left and the 350number of droids left on the ship (assuming headsup is on). When something 351interesting happens, a status message will appear. Here are some: 352 353shields=10 you have 10 shields left 354droids=9 there are 9 droids left to kill 355002 d 107 002 droid destroyed 107 droid 356002 h 423(8) 002 droid hit 423 droid (who now has 8 shields left) 357600 captured started negotiating with 600 droid 358lost contact stopped negotiations (droids move too far apart) 359boost=15(+3) shields were reacharged by 3 to 15 360 361 362Computers 363--------- 364 365To find out information about your droid, go to a computer in the wall and 366press space. Use the cursor keys to look at different droids, you can find 367out: 368 369Type - droid number 370Name - title of the droid 371Entry - "negotiation" skills 372Height - 373Weight - can it 374Brain - intelligence of the droid 375Arm - weapon (armament) 376Shield - current and maximum number of shields 377Speed - how fast the droid can move 378Attack - agressiveness of the droid 379 380 381Scoring 382------- 383 384Recharging shields -10 385Hit droid entry level 386Destroyed droid 25 x entry level 387Transferring 50 x entry level 388 389You get points for hitting/destroying a droid even if it was another droid 390that did the shooting! 391 392 393Weapon types 394------------ 395 Speed Damage 396Linarite 8 4 397Crocoite-Benzol 10 10 398Uvarovite 12 20 399Tiger-Eye Quartz 9 50 400 401 402Droid types 403----------- 404 4050xx - Prototype Class 406 407These droids are prototype/ experimental class that vary in function 408considerably. Approach with caution. 409 410 4111xx - Cleaning Droids 412 413Mindless, slow, low shielded, unarmed droids that clean the ships. 414Harmless. 415 416 4172xx - Logistic/Servant Droids 418 419Again, brainless droids that do various tasks. These type can vary in 420shield and strength. This class is harmless as well. 421 422 4233xx - Messenger Droids 424 425Mindless, but very fast. Low shield rating, and are not armed. 426 427 4284xx - Maintenance Droids 429 430Designed to repair the ships. Vary in shield and speed ratings. Sometimes 431armed. 432 433 4345xx - Medical Droids 435 436These droids have a high entry level, and are difficult to crack. All of 437them are armed, but are not hostile. However, they will shoot at any 438droids that attack them. 439 440 4416xx - Sentinel Droids 442 443These droids 'guard' certain important area's of the ships like lifts, 444power bays and other droids. They vary in shield rating, speed and fire 445power, but all are armed and will attack. Approach with caution. 446 447 4487xx - Battle Droids 449 450This class of droid 'hunts'. When confronted, any will attack. They 451vary in speed, shield rating and weaponary, but all are extremely 452dangerous. 453 454 4558xx - Crew Droids 456 457These are armed droids that control the ship. These like the 5xx class 458are not hostile, but will become hostile to any droids that attack them. 4598xx's are armed with Uvarovite lasers, and pack a rather powerful wallop. 460 461 4629xx - Command Cyborgs 463 464Each ship will have one of these. They command the ships. Extremely 465armed, extremely shielded, often very fast, and very deadly. 466 467 468Ships 469----- 470 471Ship Type Difficulty 472------------------------------------------- 473Haldeck Fleet Support Very easy 474Seafarer Cargo Vessel Moderate 475Anoyle Attack Frigate Difficult 476Esperence Battle Cruiser Tricky/Very difficult 477Ophukus Medical Frigate Moderate (lots of 5xx's) 478Mearkat Scout Ship Tricky/Difficult 479Friendship Destroyer Class Tricky/Difficult (lot's of 6xx's) 480Discovery Scientific Frigate Difficult (lots of 8xx's) 481Zaxon Battle Cruiser Tricky/Very difficult (lots of 7xx's) 482Tobruk Flag Ship EXTREMELY difficult (but not impossible) 483 484 485To start at a particular ship, run nighthawk like this: 486 487 nighthawk -c <ship-number 0-9> 488 489Note that the high score table will treat this as cheating. 490 491 492Game tips 493--------- 494 495If possible, create 'friendly fire'. This is very easy to do. Get 496inbetween any two armed droids. If one of them preemptively attacks, 497simply duck at the last minute (if not, then just shoot at one). Their 498laser fire will/should/hopefully hit the other droid. The other droid will 499then fire back at the droid that accidently attacked it. When the 500attacking droid is hit, it will fire back at the droid firing at 501it....hence a shoot out will occur. The result is either two destroyed 502droids, or one left staying with a reduced shield. 503 504Another good thing about friendly fire is that it's an excellent 505distraction. Any 6xx,7xx, 9xx droids involved in one, won't be concerned 506with you at all; they will be too busy blowing away their mate. 507 508Always duck for cover when fired upon, and when you shoot a droid fitted 509with weapons, be ready to duck for cover. Don't just take it. Armed 510droids will always return fire immediately with an equal or greater rate. 511 512Get into the habit of firing a 4-6 round volley, then ducking behind a 513wall, door, storage unit... or even another droid. 261's are excellent to 514hide behind. These droids are industrial cargo movers. Being heavy 515machinery, they have a very high shield rating and can buffer many laser 516blows. Medical Droids (5xx series) are another good example. Medical 517droids are armed but passive. They won't attack anyone unless fired upon. 518When an attack droid is firing at you, duck behind a medical droid. If 519the attacking droid hits the medic, then the medic will fire (one shot) 520back at the attacking droid (yet another 'friendly fire' example). The 599 521Surgeon droids are fitted with the powerful Uvarovite lasers, and will 522cheerfully sodomise any minor class 6xx's or 7xx's that accidently attack 523it. 524 525This game requires lots of lateral thinking. Simply blasting everything in 526sight is not going to get you very far (maybe the first and second ship if 527you're lucky). You have to rely on transferring to higher order droids 528inorder to conquer droids with more fire power than yourself or to go 529through walls. You have to shoot smart. Hostile droids will always attack 530with an equal or greater rate. With "head-on" shoot outs (that most 531newbies will tend to do), it's only a matter of who has the bigger shields 532and lasers who will win. Some droids are simply too risky to confront, 533like 799's, and 9xx's. It's far better to transfer to them through a wall 534(where you can't get shot at). In Ship "Zaxon" you are forced to confront 5357xx's head on as there are so many of them. 536 537On some ships, be selective with droids to destroy. You may need to 538transfer back through a wall inorder to return to the place you started. 539 540(Game tip: In the Hull of SS Esperence, leave the 368 droid till last. 541This driod goes from one end of the Hull to the other, and you are able 542to transfer (through wall) back to the other sections of the ship if you 543have forgotten to kill droids in those areas). 544 545As a general rule, if a 6xx is shooting at you, don't shoot back, instead 546duck for cover, even if you sustain some hits doing it. Don't stand your 547ground and fire back. However, with 7xx's & 9xx's, because of their 548unpredictable behaviour and rapid fire power, the above tactic may not 549work. 550 551Nb/ that there is a systematic "knack" to completing the levels, and if 552people are having difficulty, i'll publish a guide on how to complete each 553level. 554 555 * * * * 556 557Contacts 558 559Project Head Designer/Maintainer: 560 Eric Gillespie (The Viking) 561 Email: viking667@users.sourceforge.net 562 http://night-hawk.sourceforge.net 563 564 565Original Author: 566 Jason Nunn 567 http://jsno.leal.com.au 568 569 C/- Jason Nunn 570 PO Box 15 571 Birdwood SA 5234 572 Australia 573 574 (Nb/ I no longer distribute my email address (spam control). This is 575the only way to contact me). 576 577 578Acknowledgements 579 580Version 3 581 582Eric Gillespie.............. Head Designer/Maintainer 583Rafael Laboissiere.......... "Cascade" mode 584Tanel Kulaots............... Level continuence 585 586 587Version 2 588 589Vincent Voois............... Rescue from Vega song 590Nelson Minar................ some small code mods in 2.2. 591Eero Tamminen............... Did up the manual. 592Wolfgang Scherer............ vulcanised build scripts in 2.2, added 593 autoconf support. 5944-matt of anarchy........... Introtune song (used in demo) 595 596 597Version 1 598 599Adrian Bridgett............. Modifications and Debugging in 1.x 600 Redid instructions etc. 601 602 603 ooo0ooo 604