Game engine / framework / support library written totally in C for classic Amiga hardware. Lightweight, flexible and hackable. ACE uses Amiga hardware features directly, aiming for as much speed as possible. The code is OS-friendly, allowing running from and exiting to Workbench gracefully.
Current feature set is OCS-oriented, although produced code should work on AGA just fine.
For build instructions basic how to and contributing guidelines, refer to docs.
ACE is best if you want to:
- Learn how to code on Amiga - the only skill you need is familiarity with C language. ACE Provides very thin hardware abstraction layer, which aims to be as documented as possible. Lack of documentation is treated as a bug, so feel free to report it in an issue!
- Code a high performance game/demo but don't want to do it entirely in assembly. Use stock ACE functions to make the code work, trim it down for maximum performance. Or just write the assembly by hand for parts which really require it.
- Provides slim HAL for audio, blitter, copper, keyboard and mouse.
- Provides view and viewport system which work in similar manner to Amiga OS, but in less bloated way.
- Has lots of runtime error checks when building in debug mode, which are completely gone in release builds.
- Disables OS for maximum performance, but allows re-enabling it when needed - e.g. for file access, memory allocation, etc.
- Provides optional framework which helps in organizing games and reducing boilerplate code.
- Provides code for scrolling large tilemaps in memory-efficient way.
- Requires only kickstart 1.3, but provides OS2.0+ features, like functions using taglists, interleaved bitplane modes, etc.
- A Game Maker experience - you need to code game logic and most of the engine yourself.
- Elaborate sprite management.
- Functions for direct data read from floppy sectors.
Most of those features were deliberately omitted because they can be done in very different ways depending on the game/demo. Still, the list of open source games is increasing, so you can copy and modify most building blocks from them to suit your needs.
In alphabetical order:
- ami-invaders
- AMIner
- Atarenium Falcon
- CastleHack
- Chaos Arena
- Flappy Ace
- GermZ
- Goblin Villages
- Impsbru
- OpenFire
- Squared
In alphabetical order:
Unless otherwise stated, the code is licensed under Mozilla Public License 2.0. The exceptions are:
- The ptplayer module is based on ptplayer by Frank Wille (Public Domain)
- the mini_std library is based on 3rd party code:
- mpaland/printf (MIT)
- strtoul from Libnix (Public Domain)
- DeidaraC/ctype (MIT)
qsort()
replacement: noporpoise/sort_r (Public Domain)