This document is under active development and discussion!

If you find errors or omissions in this document, please don’t hesitate to submit an issue or open a pull request with a fix. We also encourage you to ask questions and discuss any aspects of the project on IRC. New contributors are always welcome!

1. What is Fifengine?

Flexible Isometric Free Engine (FIFE) is a multi-platform isometric game engine written in C++. It comes with Python bindings allowing users to create games using Python as well as C++. The engine is extendable and enables you to add any feature you can imagine to your project.

It’s a very flexible game creation framework and not tied to any genre, but geared towards an RTS or RPG using an isometric or top-down view style.

This manual describes how to use FIFE to power your game.

1.1. Features

This chapter describes all the features the engine currently supports in the master branch. Features are organized into categories for easy reference.

As we continue to add features to FIFE, we will update this list to keep it up to date.

Just because a feature is listed here does not mean that feature is 100% bug free. You may from time to time stumble upon a bug. Please file any bugs you find using our Issue Tracker on Github.
Audio
  • Supported Formats

  • Large file streaming

  • Looping

Development Helpers
  • Logger

    • Module specific logging functionality

    • Logging according to priority levels

    • Logging output to file and stdout

Editor tools
  • Map Editor

    • Multi Map Interface (edit multiple maps at the same time)

    • Object Selector

    • Deleting instances from map layer

    • Loading existing maps

    • Placing instances on map layer

    • Saving maps

    • Undo/Redo support for instances

    • Object Editor plugin

    • Light Editor plugin

    • Camera Editor plugin

  • Image Atlas Creator

    • Create/Edit image atlases

    • cross-platform

    • written in C++ using the Qt framework

Event handling

The following event types are supported and can be bound to scripting functionality:

  • Mouse events

  • Keyboard events

  • Widget events

  • Custom commands

Fonts

Support for following font formats:

Graphical User Interface
  • Ingame console with support for executing Python code / scripts

  • Fully customizable GUIs via

Graphics
  • General

    • Support for all formats implemented by SDL_image:

      • BMP, GIF, JPEG, LBM, PCX, PNG, PNM, TGA, TIFF, WEBP, XCF, XPM, XV

    • Color key support

    • Take ingame screenshots via hotkey

    • Pooling of image resources, resulting enhanced performance and reduced memory consumption

    • Image atlases (many images contained in one file)

  • Animations

    • Multiple definable key frame animations per object

  • Effects

    • Lighting (OpenGL renderer only)

    • Fog of War (OpenGL renderer only)

  • Maps

    • 3D geometry definition (defined by tilt, rotation and scale)

    • Support for different tile and object grids with independent geometries

    • Multiple layers per map

    • All variations of square and hex shape geometries

    • Multiple cameras / views per map

    • Custom XML-based map file format

  • Pathfinding

  • Exchangable pathfinding backends:

    • Route path finder

Scripting
  • Python based scripting system (out of the box)

  • Scripts be can executed from the console

Renderer
  • Support for different renderers (RendererBackends):

    • SDL

    • OpenGL

  • Various resolutions

  • Bit-depth (16, 24, 32bit)

  • Window mode (fullscreen & windowed)

SDL
  • Colorkey for fast transparency effects

OpenGL
  • Transparency for tiles & objects

  • Colorkey for fast transparency effects

  • Lighting effects

  • Fog of War

View
  • Custom Isometric views defined by angle and tilt of camera

  • Top down/side views

  • Correct z-order sorting of map instances

  • Support for different renderers:

    • Blocking renderer

    • Cell selection renderer

    • Coordinate renderer

    • Floating text renderer

    • Grid renderer

    • Instance renderer

    • Quadtree renderer

    • Light renderer (OpenGL only)

  • Static layer support which renders an entire layer as one texture

Virtual file system
  • Support for reading files on platforms with different byte orders

  • Read support for ZIP archives

  • Lazy loading of files for decreased load times

1.2. Games using Fifengine

The following projects are using Fife as their engine.

We work closely with both Unknown Horizons to continue to improve fife.

Unknown Horizons

A realtime strategy game with economy simulation. This project is in very active development.

Zero-Projekt

A turn-based post apocalyptic RPG. Check out some videos from Zero-Project here (development ceased).

PARPG

A post-apocalyptic roleplaying game inspired by Fallout, Planescape: Torment & Arcanum (development ceased). PAPRG Blog

FIFE RPG

Rewrite of PARPG. Build with the intention to create an RPG framework, which helps create new RPG games.

Jagged Alliance 2 - Fife Demo

A small game demo for using the Jagged Alliance 2 assets in FIFE engine.

If you are developing a game with Fifengine and want it posted here, please let us know!

1.3. Media

You’ll find various media items in this section, including screenshots and videos.

1.3.1. Screenshots

There is a media page that can be found here: http://www.fifengine.net/media.html

Also check out some screenshots on our archived wiki here: http://archivewiki.fifengine.net/Screenshots

1.3.2. Videos

Unknown Horizons
Steamfolk Tales
Zero Project
Jagged Alliance 2 - Asset Demo

1.4. License

The source code (*.cpp, *.h & *.py) of Fifengine is licensed under the GNU LESSER GENERAL PUBLIC LICENSE Version 2.1.

Can I use FIFE to make a commercial product?

You can create commercial games with FIFE without needing to pay us any fee.

The following basic rules apply concerning the used LGPL:

You can use proprietery libraries in combination with FIFE if you don’t integrate their code directly into the FIFE C++ core or the FIFE Python scripts.

Third-Party Content Licenses

Third-party content, such as assets, images, and sounds might come from different sources.

Therefore each client directory comes with a separate LICENSE file that states the origin of the content, the author and the actual license it was published under.

2. Getting started

2.1. Installation

This chapter explains how to install fifengine.