Skip to content

Isangeles/flame

Repository files navigation

Introduction

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

Example games:

Arena

Simple demo game based on Arena module with Mural GUI support.

Download: Linux, macOS, Windows

OpenElwynn

2D Game that recreates the Elwynn Forest area from WoW, with multiplayer support.

Download: Linux, macOS, Windows

Repository: GitHub

Usage

You can find usage examples in example package.

Modules

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.

Documentation

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.

Contributing

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.

Contact

License

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.

Releases

No releases published

Packages

No packages published

Languages