Flame is RPG game engine written from scratch in Go.
The main goal is to create simple, flexible, extensible and completely modular game engine.
Flame is able to create all game objects from textual data, this guarantees that game data is easy to modify and extend.
This repository contains engine core API, which allows to load game module data from textual format, create and modify game objects, and export game module data back into textual format(i.e. basic game flow load game -> play -> save game).
Easiest way to create a game with Flame is to download some graphical or textual fronted(like Mural or Burn Shell) and create module or use some existing one.
Flame modules are available for download here.
The project idea is based on Senlin game engine.
Flame as a project consists with many different repositories, some of them are independent and can be reused in other projects:
- Flame - engine core API
- Burn - commands interpreter with it's own scripting language Ash for creating cutscenes etc.
- Fire - TCP server that enables creating multiplayer games
- Ignite - AI program for the Fire server
- Burnsh - textual fronted(CLI)
- Mural - graphical fronted(2D GUI)
- MTK - simple graphical toolkit
- Stone - simple library to render Tiled maps
- Arena - example Flame module
Simple demo game based on Arena module with Mural GUI support.
Download: Linux, macOS, Windows
2D Game that recreates the Elwynn Forest area from WoW, with multiplayer support.
Download: Linux, macOS, Windows
Repository: GitHub
You can find usage examples in example package.
Modules contain all game data in the form of textual files. Modules are divided into chapters, that's contains chapter-specific data.
Modules are stored by default in data/modules
directory.
Module data are available across all chapters, data files are placed in sub-directories(/items
, /characters
, etc.) in the module directory.
Chapter data are available only when a specific chapter is active, data files are placed in sub-directories(/characters
, /dialogs
, etc.) in chapter directory(in [module]/chapters
).
Translation files are placed in /lang
directory both for modules and chapters.
The example module is available here.
Source code documentation can be easily browsed with go doc
command.
Documentation of configuration files and data structures in the form of Troff pages is available under doc
directory.
You can easily view documentation pages with man
command.
For example to display documentation page for character data structure:
man doc/characters
Note that documentation of data structures is still incomplete.
You are welcome to contribute to project development.
If you looking for things to do, then check TODO file or contact maintainer([email protected]).
When you find something to do, create a new branch for your feature. After you finish, open a pull request to merge your changes with master branch.
- Isangeles <[email protected]>
Copyright 2018-2024 Dariusz Sikora <[email protected]>
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.