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