FLY8-102, GAMES, Flight Simulator under X window DESCRIPTION This program is a flight simulator. It puts more emphasis on the dynamics than on the cosmetics: just wire-frame. It can run on any machine but a 386DX is the minimum for any decent performance. A fast video controller is a boon as the pro- gram, when running on a 386DX/40Mhz, spends 70-80% of its time pushing pixels. On non-intel machines you can try and see if it is fast enough... The program was written for fun. I borrowed ideas from everywhere and hope to hear some more. The basic design is based on a program I wrote more than 20 years ago at uni (the Technion). I had an excellent coach (Danny Cohen) and I still have fond memories of those times. But now my computer has more than 24Kbytes of memory! so Fly8 is written in C (Fly8 was the name of the last version of the original pro- gram dated 12-JAN-1974, it was written in PDP15 assembly - macro15 - for a VT15 graphics processor). The actual purpose of the program was to give me an opportu- nity to experiment with various aspects of flight simula- tion, but mostly with (1) the HUD symbology (or, more gener- aly, with man-machine interaction) and (2) the studying of basic aerodynamics (as well as general real time simulation techniques). This explains why there are so many HUD options and such a proliferation of flight dynamics models, as well as why the simulation parameters are user definable as input files at run time. Of course, the experimental nature of the program means that it must be distributed in source form. On the PC the basic screen drawing uses the standard Microsoft graphics library. It is OK but not very fast; the main advantage is that it will support most video adapters. The fast graphics driver was built from the routines from DJGPP with much personal additions. The flight dynamics was influenced by an SGI program I saw and ACM. The timer rou- tines come from a microsoft journal article, the user-input routine (notice how you can use arrow keys etc? use up-arrow to retrieve history.. I will document it one day) comes from DDJ (or was it CUJ? author name is Bob Bybee). Well, I avoid re-inventing wheels unless it is fun. The program compiles with Microsoft C, Borland C, gcc on a friends Amiga, Sun and Linux and I hope on other platforms; it is written to be portable. It runs under MSDOS, MSWindows, Amiga and unix/X- Windows... and now on OpenVMS !! What? what? WHAT? you want to see some action? OK. just skip to the next chapter then come back. The full set of commands is detailed in the 'commands' chap- ter. Here we will look at the program areas in general. There are two rather distinct kinds of commands that one uses: commands that drive (fly) the game and commands that configure, set options and so on (which are used with less urgency). It was attempted to get the important commands into the keyboard (a one keystroke command) while the others go into the main menu system (accessed with the Esc key). Some of the urgent commands may bring up a menu which you may ignore if you know the keystokes. The urgent commands will control the vehicle flight and the other subsystems (radar, HUD, HDD, weapons etc.). You will notice early that the program lacks the traditional instru- ment panel: it is intended to be driven from the HUD and other digital displays. The vehicle is also driven by a pointing device (a mouse or, preferably, a joystick). It will run off the keypad when you have no such device. The pointer is used only for steering control although the buttons can be mapped to auxiliary functions (by default both 'fire'). The display area is typicaly divided into the main view and a number of secondary Head Down Displays (HDD). The design has a dozen or so on board instruments that generate visual data; you select which ones should be displayed on which HDD. The main view is what you see through the cockpit. The HUD can be overlaid onto this view (as is the case with a real plane). Other data may also be shown here for conve- nience. One other instrument is designated as an alternate main view (use the 'v' command to see it). The 'windows' menu handles the screen format and configuration. The program generates various messages as it goes along, these will appear at the bottom of the main view and stack up. Each message has a time-out for deletion but you can use 'c' to clear the lot. When the program needs user input it will open a prompt line at the very bottom of the main view (in magenta color) where your data will show. You can use the normal editing keys while entering data here - previous entries are accessible with the up/down arrows. See 'input line editing' later. You may find some of the commands/options strange (if not outright insane); this will be related to my taste or (mostly) to much history and quick fixing that did not com- pletely settle yet. I have looked at other programs (like F3, JF2, ACM and SGI f.s.) but this was after the first ver- sion of this program was finished, so some good ideas missed the bus this time. In the future I hope to polish the user interface (especialy after other people get to use it and express an opinion). Being as the program is still evolving you will find some areas less complete than others. I hope that there is enough of it to make it useful. I expect to see contributions (of ideas and code) from other people; I will continue to develop the program (at least for a while) and would like to see it take it's own path in life [heavy stuff :-)]. QUICK_START In this chapter the symbol '@' is used to denote the Enter key. This will give you a quick feel for what the program is like. With the program installed, type $ fly -z5 This starts the program in a demo setting and is useful to see if all is OK and also great as a screen blanker :-) If the fly.ini options are correct then your plane will take off and start looking for action. Some messages are dis- played during startup - these will disappear after a short while. The screen will show a simple view of the runway, a ground grid (in gray) and an overlaid HUD. To exit hit 'Esc' 'x' and 'y'. Author Eyal Lebedinsky (eyal@ise.canberra.edu.au)