Code Monkey home page Code Monkey logo

fifengine's Introduction

FIFE LOGO

FIFE

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.

Website #fife on Freenode Changelog Releases Source Code (zip)
Continuous Integration Linux Mac Windows
Build Status Travis Build status Travis Build status Appveyor Build status
Development Releases - - All artifacts
Documentations
Overview Developer Manual C++ API Python API

Fifengine is also already available from the following package repositories:

Packaging status

Table of contents

  1. Features
  2. License
  3. Tests
  4. Python Demos
  5. Python Tutorials
  6. C++ Tutorials
  7. Troubleshooting
  8. Feedback

1) Features

A complete list of the features that FIFE offers can be found in the user-manual.

2) License

  • The source code (*.cpp, *.h & *.py) is licensed under LGPL v2.1 or newer.
  • Files in /engine/core/util/utf8/ are under BSL license
  • Content was taken from a lot a lot of different 3rd party 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.

3) Tests

The test tool can be found within the <FIFE>/tests/fife_test directory. You can launch it by running run.py. Open the console with F10. To run a test enter run and the test name like PathfinderTest.

4) Python Demos

The Python based editor tool can be found within the fifengine-editor repo. You can launch it by running run.py. It is used to edit map files for the Rio De Hola demo. Other clients extend it and use it to edit their maps.

Rio de hola is a technology demo showing off many of the FIFE features. It is located in the rio_de_hola directory and can be launched by running run.py. Once started as an example game, it's now a playground for developers to test their code. It serves as a good starting point for own game developments.

The Shooter demo was an attempt to show the versatility and flexibility of FIFE. It is a simple side scrolling shooter that has a main menu, one level and an end boss. Try your luck and see if you can defeat the boss!

There is an example client residing in pychan_demo that shows how the pychan GUI library works. You may start the GUI demo application by running pychan_demo.py.

Configuring the Editor and Demos

The engine utilizes special settings files for configuring FIFE. This file is called settings.xml and resides in the ~/.fife directory (in <User>\Application Data\fife for Windows users). The Shooter Demo and the PyChan demo are exceptions. They both store their settings.xml file in their root directories.

NOTE that the settings.xml file is auto generated and wont be there until you run the demos for the first time. FIFE automatically fills the settings file with default values. You find more information on FIFE settings in the Developer-Manual.

Our Python tutorials demonstrate how to use the engine when working with Python.

There is also a set of C++ tutorials demonstrating the usage of the engine, when working with C++.

7) Troubleshooting

Video Card/Driver Issues

There are some known driver/card combinations that exhibit some problems with FIFE. Users have reported seeing blank screens or fuzzy images. If this is happening to you please report it on our issue tracker.

Please include your Card/Driver/OS information in your post. Currently the fix is to modify your settings.xml file and set both GLUseFramebuffer and GLUseNPOT to False (they are True by default).

Audio

Win32 users tend to suffer from problems with the OpenAL drivers. If you don't hear sound while running a FIFE client, run oalinst.exe that ships with the Win32 FIFE Development Kit. This is the latest OpenAL driver for Win32.

8) Feedback

We appreciate every kind of feedback concerning the release, the project in general and the bundled techdemo. Feedback is a great way to help us to improve FIFE. If you would like to get in contact with us and provide feedback you can either visit our IRC channel: #fife on freenode.net.

fifengine's People

Contributors

ashen-cz avatar beliar83 avatar bentley avatar chrisoelmueller avatar drakekin avatar geoffsalmon avatar gravitystorm avatar grindhold avatar helios2000 avatar ignatenkobrain avatar ikarusdowned avatar jakoch avatar jamesbondski avatar jmdejong avatar jthickstun avatar kaeebonrai avatar ko2fan avatar markushackspacher avatar masterofjokers avatar niektory avatar nihathrael avatar prock-fife avatar reluctanthobo avatar s172262 avatar tankos avatar tomhey avatar totycro avatar undernorthernsky avatar vladu avatar vtchill avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fifengine's Issues

pal based brightness code

The current brightness code with the hardware gamma creates some problems. Its hard to set up a proper looking screen as the color control just darkens and lightens the whole screen and this looks unnatural.

It seems that the original Fallout games calculated brightness from the pal files. Hopefully there is a way to integrate a pal-based brightness control so the screen looks natural like in Fallout.

We’ll need to find a way to get this stuff working for pure sdl and opengl rendering.

Docs about pal files and the brightness code © TeamX:
- http://members.fifengine.de/docs/pal_processing.html

frames per second counter & toggle key

The user should be able to let the core display a frames per second counter that shows the current fps.

This feature will be needed anyway if we want to know if the current system is fast enough and will be the only way to prove if an optimation worked.

The user should be able to toggle it on / off using the “f”-key.

Global brightness adjustment

The current maploader does already work but it displays the tiles with the lowest brightness available.

The renderer needs a brightness control so the user can increase / decrease the global brightness of the whole SDL-screen by pressing + / -

Add MacOsX support in scons

Tesseract and Roger already added the scons support for MacOsX.

It does already compile (even the OpenGL version!) but we need to find a way to get a dat tool working on Mac before we can really test the compiled file.

Fallout 2 maploader

We’ll need a maploader that can load the existing fallout 2 maps. That includes:
- floor tiles
- roof tiles
- objects
- critters

Animate loaded critters (.frm animation)

After ticket #30 has been resolved we could animate the loaded critters.

Docs about the .frm file format and how animations work can be found here © TeamX:
http://members.fifengine.de/docs/frm_1.html

and here

http://members.fifengine.de/docs/frm_2.html

Walk on object coordinates

After the tickets #30 and #31 have been resolved we should combine the results to create an alter ego that can walk on the object coordinates.

The starting point for the alter ego (object / hex coordinate) can be read from the .map file. While walking it should display the walking animation for the alter ego.

Map file docu:
- http://members.fifengine.de/docs/map.html

Object / hex coordinate docu:
- http://wiki.fifengine.de/index.php?title=Fallout%27s_map_geometry

Create annotations for the core component.

This issue was reported by phoku

Create API documentation for this component.

Details: Way to many singletons in here:
- TimeManager
- Engine
- InputManager
- SettingsManager

Also some util classes/files:
- Log
- Exception and derived
- Debugutils

All InputManager infrastructure
- InputListener
- InputListenerRaw
- Events

Integrate blockers

Blockers are special map object that block something. There are different kinds of blockers for different purposes.
- FULL blockers so you can’t run through a wall
- WALK blockers will block walking on this hex field but you can still shoot there. E.g. Windows use this blocker type
- Scroll blockers are the ones that ensure that you don’t scroll outside of the map; these blockers shouldn’t be integrated into FIFE IMO

Docs about the blockers:
- http://members.fifengine.de/docs/map.html
- http://members.fifengine.de/docs/falloutEd.pdf

Automated Doxygen Documentation Creation

This issue was reported by phoku

Figure out a way to update the documentation regulary with an automated script.
This script should be run daily.

If this is not possible, please describe the reasons shortly.

Integrate runtime key binding

We’ll need a way to modify key bindings @ runtime.

I suggest to create a new “bindings” file (just similar to the already existing “settings”) and save the key bindings there.

The console should be able to bind one and even more than one function to a key. You should always be able to modify the “bindings” file with a simple txt editor as there are some problems with the console key under windows.

This way the users could simply edit it and bind the console key to a key that works with Windows XP.

Support for .pal based animations

The current code does not support the displaying of animations that are based on palette files.

See the “burning” barrels (flames are white here as we don’t suppor the animation ATM) in this screenshot:
http://screens.fifengine.de/prototype1_007.jpg

The following objects use pal based animations:
- fast fire
- slow fire
- monitors
- slime (goo, radioactive waste, etc.)
- costal water / shoreline
- flashing red alarm

Docs about .pal files and the animations © TeamX:
http://members.fifengine.de/docs/pal_processing.html

Sourcecode of a windows palette viewer:
- http://www.teamx.ru/srcs/Fallout2_Palette_src.rar
- http://www.teamx.ru/srcs/PALView_src.rar

Integrate ACM sound support

Add support for the Fallout 1/2 .acm sound format. Using the libACM library seems to be the best option:
http://libacm.berlios.de/

Dat archive reading support

We’ll need a .dat archive reader that can retrive files from the Fallout .dat files and pass them to the core.

The .dat reader should run on Linux, Windows and MacOsX and we need to find a way to cope with the filename / .lst case problem under case sensitive platforms.

Documents about the .dat format can be found here:
http://members.fifengine.de/mvbarracuda/dat.html
(copyright: TeamX)

basic audio framework

This issue was reported by rwilco

It would be nice to have at least some basic support for audio playback in our prototype.

roof & floor tile displaying

The prototype needs to load the floor & roof tile ids from a map and convert them into the name of the gfx file. After he got the filename he needs to load the file and render the tile to the correct position.

The user should be able to switch roof tile displaying on and off using the “r” key.

Create a new gfx format for FIFE

We’ll need to create a custom 2d gfx format for the project so we can support new features like the easy ingame recolouring of sprites.

This includes defining the format and creating documents that describe the format

Suggested svn location:
HEAD/contrib/doc/gfxformat

selectable display resolutions

The renderer should be to change the display resolution.

This could be done by using a command line argument and passing it to the core.

E.g.
prototype maps\test.map 800 600

→ the prototype loads the map “test.map” and displays it with a resolution of 800×600

Integrate SDL_console into FIFE

We should integrate the SDL_console library into FIFE so we’ve got an ingame console for script triggering and testing.

Without an ingame console, the whole scripting integration can’t start IMO.

Download: http://sdlconsole.sourceforge.net/wiki/

Console doesn't work on Mac

This issue was reported by tesseract

When starting testproj on the Mac this error is displayed on the console:

```
ERROR in DT_drawtext.c:DT_LoadFont(): Cannot load file
: Couldn’t open lib/fonts/ConsoleFont.bmp
ERROR in SDL_console.c:CON_Init(): Could not load the font
" for the console!Font.bmp
```

The file in question is in the correct location, and giving the full path in the settings file does not help. The console cannot be activated in the program. Also, the framerate display does not appear. Choosing a different renderer makes no difference.

critter drawing bug (transparent corrupt or missing image)

This issue was reported by skybound

For example see denbus1.map; roughly in the middle is a street corner with a “stop” sign; two of the yellowish critters flicker – are only draw sometimes.

Furthermore on the same map in lower left corner (entrance, guard in armor and yellow critter, also flickering) there seems to be a drawing problem: critter partially overdrawn by wall.

Load critter information from the map file and display the critter gfx

The critter information should be loaded from the Fallout 2 .map files and the corresponding critter .frm file should be displayed.

After the displaying of the critters works, we could think about animating them by adding code for .frm files with multiple frames.

Docs about the map format: © TeamX
http://members.fifengine.de/docs/map.html#MAP%20Objects

Test FIFE under Mac OS X

After we added .dat support we should give running FIFE on Mac OS X a go.

The current code does already compile fine on Mac but there is no .dat extraction utility that works (neither emulation nor native).

I’ll contact Tesseract and ask if he got time to test the newest version after .dat support has been added.

Render not existing tiles black

If you scroll with the error keys outside the map, the not existing tiles will get overdrawn by existing one. This effect is quite irritating.

Every tile outside the map borders should be black and get drawn black if you scroll over them.

Set the svn:eol-style=native property for all source code files.

This issue was reported by phoku

The problem has schown up that we get line ending pollution,
if we don’t use this property. So this property should be set
for all source code files. This is marked as defect, since
svn problems will show up otherwise.

This applies for all components.

Set it with:

```
svn propset svn:eol-style native filenames
```

Get the properties with:

```
svn proplist —verbose filenames
```

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.