/******************************* kf_news7.txt ******************************\ * * * Module : Kf_news7 * * Descript : KiteFlight Newsletter * * Project : KiteFlight * * Modified : 14-Apr-1996 (Sun 15:41) * * * * (c) 1996 by Peter van den Hamer * * * \***************************************************************************/ KITEFLIGHT NEWSLETTER #7 by P. van den Hamer 14-Apr-96 This is the 7th issue of a newsletter with information about the PC program KiteFlight. The newsletter contains information for current users and others interested in KiteFlight. Old issues of this Newsletter can be found on the KiteFlight home page on Web (see below). Contents of this issue: 1. What's KiteFlight? 2. What's the current version? 3. How to get updates 4. Review of KiteFlight 2.0 by Highlife's Peter Leclercq 5. A file from the year 2022 6. Odds and ends 1. What's KiteFlight? --------------------- KiteFlight (KF) is an MS-DOS program which can simulate the movements of dual-line stunt kites or stunt kite teams. The movements of the kites are controlled by control files written in a kite simulation language called KF1. KF is useful both for visualizing existing routines and as a tool for developing your own routines. The commercial floppy ("Kite 2.0") with KiteFlight also contains software (Plot and Sputnik by Peter Ruinard) for printing and customizing kite plans from the books by Servaas van der Horst and Velthuizen ("Stunt Kites..." and "Stunt Kites II..."). Plot and Sputnik are meant to be used without the book(s). KiteFlight, however, can be used without owning the books. 2. What's the current version? ------------------------------ Latest version: 2.07 (latest complete version in my own possession) Latest release: 2.06 (demo version available on Internet by ftp, see below) Latest release: 2.01 (on 1.44MB floppy in CD Box via shops/magazines) Compulsories : 2.2 (available on Internet by ftp) Web home page : 2.07 (below http://www.win.tue.nl/win/cs/fm/pp/kites/) 3. How to get updates --------------------- If you buy and register the commercial Kite 1.0 diskette, you can get free upgrades up to KF 1.18 via Internet. Although you can register even if you don't have any form of access to Internet, you will not be able to get updates (but maybe your nephew can help out with the Internet part). If you buy and register the commercial Kite 2.0 diskette, you can get free upgrades to KF 2.xx. You can register (free) by sending an E-mail message to the author (vdhamer@msn.com) stating your address, which version you own and where you bought it. You then receive a reply explaining how the update procedure works. Non-registered users can obtain free copies of the demo versions of KiteFlight (e.g. KFCD 2.06) from the rec.kites archives on Internet: ftp://ftp.uni-bremen.de/pub/kites/simulation/kfd/kfcd_206.zip (Germany) ftp://kites.its.Hawaii.Edu/pub/kites/simulation/kfd/kfcd_206.zip (USA) The demo version is able to run all STACK/AKA/AJSKA compulsories, but not the full length animations. The demo version has a less sophisticated/powerful user interface than the commercial version. 4. Review of KiteFlight 2.0 by Highlife's Peter Leclercq -------------------------------------------------------- [The following review was written by Peter "Pan" Leclercq, a member of the Belgian team Highlife. The text will probably be submitted to a kite magazine for publication. Team Highlife has represented Belgium at European and world championships for quite a few years now. At the 1995 European championships, Peter "Pan" Leclercq earned 8th place (in a field of 19 competitors) for his individual ballet and 4th place (in a field of 8) for his individual freestyle. Peter can be contacted via E-mail at pleclerc@zorro.ruca.ua.ac.be] INTRODUCTION This review of KiteFlight describes my experiences programming a full-sized team routine. I will described the techniques I used as well as the problems I encountered. By "full-sized", I mean a routine which lasts roughly 5 minutes. Note that persons creating much smaller routines (e.g. compulsories) probably will not encounter most of the problems described here. As a pioneer KiteFlight user, I had promised to write a demo routine which could be distributed along with the KiteFlight software. My initial attempts to write a full-sized routine using KiteFlight 1.0 failed because of difficulties in writing transitions between the various segments in a routine. Because these transitions typically require speed changes and complicated flight paths, they were virtually impossible to program without the Speed and Sync commands which later became available in KiteFlight 2.0. Once KiteFlight 2.0 became available, I had the tools I needed to proceed. PROGRAMMING TECHNIQUES The design of a team routine is a non-trivial activity which involves lots of iterations. My technique for programming a full-sized team routine involves first making a storyboard with one diagram per section of the routine. If you draw each diagram on a grid like that used by the STACK compulsories, you can immediately determine the kites' coordinates as needed to create a KiteFlight script. I incidentally believe that a program like KiteFlight can be a useful tool to visualize a routine, especially in the period in which the team members do not know the routine by heart yet. In our experience, many flyers have difficulty mentally visualizing a storyboard as an actual routine. This visualization step is obviously even more difficult for novice flyers. Tools like KiteFlight are the only practical solution for this problem. I used a new KiteFlight segment for each diagram in the storyboard. This simplifies the mapping between the storyboard and the animation (e.g. allowing you to automatically stop the animation at the end of a particular diagram via the settings in the Animation Options menu). It is important to write the routine in such a way that it can be easily maintained and extended. One way of achieving this flexibility is to use relative coordinates instead of absolute coordinates where possible. I cannot claim that I have really experienced the benefits of this approach myself yet because our routine was programmed after it had become stable. SKIPPING SEGMENTS I tend to regularly check my KF1 routine while I am writing it. One thing about KiteFlight which annoyed me, is that (in the current version) you always have to run a routine from the very beginning. It would be much more convenient to be able to have the program animate a range of segments (e.g. segments 5 to 10). Peter van den Hamer told me that he has plans to add this feature in the future. In fact, the user interface in KF 2.06 (available to registered users via Internet) is already adapted to accommodate this future feature. I was able to partly solve this problem myself by splitting the routine into 2 or more parts during the development. You should choose a convenient place to split the routine (e.g. an interim landing of all kites). When the development work is done, the parts can be pasted together to create the complete routine. I later learned of an alternative technique (described in KiteFlight's KF1.DOC file) in which the first sections of a file are accelerated by means of the "Speed 100" and "EndSpeed" commands. This makes the stable parts of the routine pass by in "fast forward" mode (100x normal speed). KiteFlight's documentation claims that this acceleration does not result in any loss of precision whatsoever as long as the speed changes are placed in "safe" spots in the routine. MAXIMUM ROUTINE SIZE My 5 minute routine for our 4 person team is quite long: it consists of about 1550 individual commands grouped into 56 segments. Unfortunately, during the final stages of the routine development, I discovered a previously unknown bug or limitation in KiteFlight. The number of individual commands in a KF1 routine is limited to about 1500 commands due to the maximum size (64 Kbytes) of a dynamic data structure used internally within the program. Attempts to reduce the number of instructions failed. Although Peter van den Hamer provided me with a temporary version of KiteFlight which was able to pack more instructions into the 64 KB space, this version has certain other disadvantages. Peter stated that the problem would be given high priority and would be fixed in a future upgrade of KiteFlight. REVERSE LANDINGS The final difficulty which I encountered is the lack of support for reverse flight (e.g. the final moments of a two point landing). One work-around is to create a series of KF1 instructions which progressively reduce the altitude of a kite by "manually" repositioning it (with a short delay to ensure that the landing takes a finite amount of time). This technique takes about 20 instructions per landing: For 1 ; code for kite 1 KitePos 0 5 "^" ; place kite at y= 5 with nose up Wait 1 ; short delay KitePos 0 4 "^" ; place kite at y=4 with nose up Wait 1 ; short delay : ; etc. KitePos 0 -5 "^" ; done! EndFor The routine I wrote for our team Highlife includes a total of 11 landings, which implies about 200 extra instructions just to make these landings smooth. You can shorten this by using just the final KitePos 0 -5 "^" instruction, but this means that the kites suddenly "jump" down to ground level instead of landing gradually. An alternative work-around for reverse landings involves using a "Repeat ... EndRepeat" loop to reduce the number of instructions: For 1 2 3 4 ; all kites Repeat 10 ; repeat 10x Speed 100 ; temporarily increase speed KiteDH 1 "v" ; fly down one unit (fast!) EndSpeed ; restore old speed KiteDH 0 "^" ; turn nose up again Wait 1 ; briefly wait in this position EndRepeat EndFor On my machine this technique caused a flickering image because the kite is sometimes displayed "nose down" and sometimes "nose up". One can debate how serious this flaw is: on the one hand I like to have a flawless simulation of my routine, but on the other hand landings only take a few seconds within a five minute routine. I currently use the "jump" solution because I needed to reduce the number of instructions. Although hardly elegant, any kite flyer will immediately recognize what was really intended. The KiteFlight documentation incidentally lists this problem in it's list of "Top 10 Complaints". Peter van den Hamer told me that the problem will be solved by extending the KF1 language in the future. Work on this issue is complicated because Peter wants to provide support for quad-line kites using the same language extensions. CONCLUSIONS It is widely known that KiteFlight is a fine and powerful tool to visualize team- and individual routines on a computer screen. The program proved to be surprisingly reliable. Unless you make a programming error, you should never encounter any real problems. If you do make a programming error, the compiler gives you the exact location and a recognizable description of your error. In order to create a routine in KiteFlight, you occasionally need to do some elementary geometric calculations (mainly using the Pythagorean Theorem to calculate ratios of distances in order to determine appropriate speeds). The Sync instruction introduced in KiteFlight 2.0 further reduces the amount of manual calculations by automatically determining the delays needed to get kites synchronized. Although full-length routines require quite some perseverance, the results are extremely valuable to visualize and memorize a kite routine. In fact, the time needed to create a KiteFlight version of a routine is only a small fraction of the time needed to design the routine using pencil and paper and the time needed to learn the routine using practice sticks. All-in-all, I found KiteFlight to be a marvelous tool to transform your kite routine into an on-screen animation. It can particularly benefit teams during the learning phase of a new routine. The limitations described above and the many hours spent in creating our routine are outweighed by the final results: even after having seen my own routine 100 times, it is still a joy to see the little kites sweep across the screen in impeccable precision! Don't walk, just fly... KiteFlight ! Peter "Pan" Leclercq 5. A file from the year 2022 ---------------------------- A minor bug in the installation program (INSTALL.EXE) used in Kite 2.0 causes the file Kite20/Plot/Data/SPUNTIK4 (used by Plot) to have a corrupt time. You can see this by simply viewing the directory listing (e.g. October 12th 2022!). This is *not* a real problem because the file's contents is correct; only the date of this one file is incorrect. The reason to mention it at all here is that some disk checking programs display a warning if they encounter a file with an bad date. These disk checking programs (e.g. Windows 95's ScanDisk with advanced option "Check files for invalid date and time" set) typically offer to repair the problem. I recommend having ScanDisk solve this problem if you ever encounter it. Alternatively, you can load SPUTNIK4 into an ASCII editor (e.g. the built-in editor in KiteFlight), making a small change and undoing this change and then writing the 'changed' file back to disk (thereby changing the date). The Norton Disk Doctor for Windows 95 also detects the bad date but only gives a general error message ("invalid entry" in Kite20/Plot/Data). The cause of the problem is incidentally a bug in the freeware INSTALL.EXE program which apparently messes up the time/date (of the 128th file?) in its compressed file archive. I have not been able to contact INSTALL's author, but can work around this problem in any future releases of the Kite diskette. 6. Odds and ends ---------------- * Author's E-mail address ----------------------- I now have E-mail at home (vdhamer@msn.com). This is now my preferred address. I check my mailbox on a daily basis. * Compiler upgrade problems ------------------------- KiteFlight is written using Borland's C++ 4.5 compiler. I have recently purchased an upgrade to Borland C++ 5.0 because it promised certain benefits. Unfortunately, Borland has now apparently dropped its support for some hard-core DOS features which KiteFlight uses: the Turbo Vision user interface library and the 16-bit DOS extender used in KF32. Turbo Vision will not be a problem because I have a copy of the Turbo Vision source code. The lack of support for Borland's DOS extender is, however, a problem because the DOS extender is a complex piece of software and certain planned features in KiteFlight rely heavily on the ability to access enough memory. At present, I haven't decided what the best route ahead is. The worst case scenario is that I stick to using the 4.5 version of Borland's C++ compiler instead of the fancier 5.0 version. * Indoor Kite Gala ---------------- KiteFlight was demonstrated at the Indoor Kite Gala in Someren in the South of Holland. Highlights for me were flying a borrowed Weldon kite and discussing KiteFlight with a number of users (duo "Toxic Twins" from the neighborhood of Paderborn, Germany). -=-=-=-