Apricots-0.2.6

Overview Apricots is a game I've been writing in my spare time. Despite the name, it has nothing to do with apricots. It's a game where you fly a little plane around the screen and shoot things and drop bombs on enemy targets, and it's meant to be quick and fun.
History The original version of the game dates back to around 1991. The very first version of the game was written on an Amiga, using the AMOS language, and the game was called 'Planegame'. This was a very simple affair with simplistic landscapes, no guns or shrapnel, and very limited computer AI. It was also dreadfully slow. The AMOS compiler improved things somewhat at a later date. A couple of years later I obtained the BLITZ language for the Amiga, and ported 'Planegame' carefully over to that, resulting in a huge speedup. Impressed by the capabilites of BLITZ, in 1995 I proceeded to rewrite the game entirely from scratch, even using completely new graphics and sound. The result was 'Planegame2', which, for various reasons also got dubbed 'Apricots'. This new version of the game added anti-aircraft guns, shrapnel, trees, towers, water, better airbases and a huge improvement on graphics, sound, and intelligent computer AI. Slightly later, in 1996, the Draks were added as a bit of amusement. The result was a highly playable game, which I distributed to a few of my friends. A few years later and I now use a PC, which can run Linux. Having learnt C++ by this time, at the beginning of 2002 I felt ready enough to port 'Apricots' cross platform from BLITZ on the Amiga to C++ on a Linux PC. What you see here is work in progress on that port. The game has been tweaked slightly while being ported over, so is not identical to the Amiga version.
Authors Project Leader: Mark Snellgrove (Original concept and game coding)
Co-author: Mark Harman (First Windows port and SDL conversion)
Additional contributor: Judebert (Configuration file)
Status The game is still under development. Apricots-0.2.6 is a beta release using the SDL library. Despite this, it is highly playable. Please mail apricots@fishies.org.uk any bug reports, upgrades or comments. Graphics for new planes/buildings exceedingly welcome, but ask first - I can provide guidelines.
Licence Freely distributable under the terms of the GPL.
C++ Compilers

Apricots is known to successfully build under the following OS/Compiler configurations

  • Linux - gcc (reported by Mark Snellgrove)
  • OpenBSD - gcc (reported by Johan Luff)
  • Windows - Borland (reported by Mark Harman)
  • Windows - Visual C++ 6.0 (reported by Mark Snellgrove)
  • Windows/Cygwin - gcc (reported by Judebert)
It may build successfuly on other platforms, but this has not been tested. Let me know!
Requirements
Download apricots-0.2.6.tar.gz (sourcecode and data)
Installation
(Linux)
The following command uncompresses the archive file:
  • tar zxvf apricots-0.2.6.tar.gz

This will create the apricots-0.2.6 directory. Change to this directory. First configure the Makefile by running the configuration command:

  • ./configure

This will create the Makefile. The sourcecode is located within the apricots subdirectory. Change into this directory. To compile the code simply use the following command:

  • make

If compilation isn't successful, make sure you have the required libraries. If everything appears in order yet it still refuses to compile, please let me know. Assuming successful compilation, switch to root and use the command

  • make install

This will install Apricots to the location specified in the Makefile. Once installed you can play Apricots simply by typing the command

  • apricots
Installation
(Windows)
No automated install at present. Unzip the archive file. The source code is located in the subdirectory apricots-0.2.6\apricots and should be compiled manually.
Compilation options
-DAP_PATHSet directory where apricots looks for its data files. Defaults to current directory if unset.
-DAP_AUDIO_OPENALTurns on audio, using OpenAL. Off by default.
Instructions
CONTROLSPLAYER 1PLAYER 2
ROTATE LEFTCURSOR LEFTZ
ROTATE RIGHTCURSOR RIGHTX
ACCELERATE / STEALTHCURSOR UPS
DROP BOMBCURSOR DOWNX
FIRE SHOTRETURNLEFT CTRL
Gameplay is fairly common sense to work out. Stay alive, and shooting enemy targets gains you points, whereas being shot down or shooting the wrong things lose you points. You have infinite planes, and are competing against the other computer planes (or other player!). First to a certain score wins once they land at base. Simple!
Play Options At present there is no option screen. Options can be changed by editing the configuration file /etc/apricots/apricots.cfg (on UNIX systems this will probably require root access, user configuration files will be added soon in a future release). The number and type of planes can be varied, along with the airbases, as can 1/2 player game be chosen. The number of anti aircraft guns and scenery can be selected. Draks can be turned on or off, and a different condition for winning the game can be chosen.
Known Bugs
  • BUG1 - Static and glitches in audio output from OpenAL library used in Linux (reported by Mark Snellgrove).
    Status: Unconfirmed. May be a bug in my desktop configuration, as running apricots through artsdsp with the KDE sound buffer set to 2048 fixes the problem. But I shouldn't need to use arts.
  • BUG3 - Multiple monitors causes SDL_FULLSCREEN to do odd things (reported by Nathan Fritz).
    Status: Unconfirmed. Possibly a desktop configuration setting?
  • BUG4 - On my box, the Linux version runs about 3 times slower than the Windows version (reported by Mark Snellgrove).
    Status: Uncertain. This is in fact very unlikely to be a bug in apricots, as the same code and same hardware are used. I'm just mentioning it here to see if anyone else has similar problems, or if it's just a Linux graphics driver problem on my box (I'm using a Sis305 on RedHat 9).
If you can help me sort out any of the above problems, or confirm/eliminate the bug on your machine please mail apricots@fishies.org.uk. Should you encounter a bug not mentioned here, do let me know!
To Do
More planes and buildings!

SDL audio using SDL_Mixer.

Write an options screen.

Make game re-playable.

Multiplayer over LAN.
        
ChangeLog
* 13/08/2003 Mark Snellgrove 0.2.6

- Version 0.2.6 released

* 08/08/2003 Mark Snellgrove

- Sanity check on configuration options now applied
- Configuration from /etc/apricots/apricots.cfg extended to all options at runtime
- Portability Bugfixes applied to getConfig()
- Mouse pointer now hidden during game
- Major code cleanup in sampleio class. Looks tidier, but BUG1 still present
- BORLAND specific options in apricots.cpp found to be redundant - Removed.
- Game speed now properly regulated by TICK_INTERVAL parameter (Fixes BUG2)

* 01/08/2003 Judebert

- Limited Configuration read at runtime from /etc/apricots/apricots.cfg
- Windows port of OpenAL audio routines in sampleio class
- Cygwin compiler flag now checked on main

* 30/07/2003 Mark Snellgrove 0.2.5

- Version 0.2.5 released
- File configure.in now checks for OpenAL (thanks to Jens Thiele)
- Now using ANSI-C++ standard includes
- Header cstdlib included in SDLfont.h
- Functions max() and min() replaced by limit() in function draw_dither()
- Windows specific options _WIN32 changed to Borland specific BORLAND in apricots.cpp
- Several loop variables renamed to allow for evil non-ANSI scoping rules in MSVC++
- Hardware surfaces now used (SDL_HWSURFACE) replacing software surfaces
- New struct smoketype declared in apricots.h
- Smoke list now changed to be of type linkedlist < smoketype >
- Bugfix so smoke now obeys GAME_SPEED parameter correctly
- Bugfix so bomb y-velocity now obeys GAME_SPEED parameter correctly
- AI modified to account for change in bomb trajectory due to above
- Bugfix now inputs font file with ios::binary flag set
- Options in init_gamedata() function are now fully commented
- Global parameter GAME_SPEED reduced to 0.2

* 26/07/2003 Mark Snellgrove 0.2.4

- Version 0.2.4 released
- Audio via OpenAL reactivated (via conditional compiler option)

* 24/07/2003 Mark Snellgrove 0.2.3

- Version 0.2.3 released
- SDLfont palettes and masks pre-rendered for speedup

* 17/07/2003 Mark Snellgrove

- SDLfont class for rendering fonts in SDL implemented (slow)

* 13/07/2003 Mark Snellgrove 0.2.2

- Version 0.2.2 released
- Existence of apricots.shapes file checked
- Airbase constructor included (required by Borland compiler)
- Several minor bugs fixed in shape class
        
* 09/07/2003 Mark Snellgrove 0.2.1

- Version 0.2.1 released
- Airbase constructors modified
- Bugfix in shape constructor
- Palette bluescale modified for dithering (SDL uses 5 bit blue palette)
- Player 2 controls altered and reactivated
- Player 2 playfield fixed
- Compilation warnings from implicit casts fixed
- Compilation warnings in null building definition fixed

* 06/07/2003 Mark Snellgrove 0.2.0

- Version 0.2.0 released (SDL version)
- Fixed up some Linux/Windows portability issues
- rand() now used as random number generator
- Font routines temporarily disabled (portability problem)

* 21/06/2003 Mark Harman

- Windows port using the SDL graphics library
- OpenAL Audio temporarily disabled (portability problem)
- Controls for player 2 disabled.

* 13/09/2002 Mark Snellgrove 0.1.0

- Version 0.1.0 released (SVGALIB/OpenAL version)

* 26/03/2002 Mark Snellgrove

- SVGALIB/OpenAL version of apricots in playable form.