https://github.com/rxn7/fif
Lightweight 2D Game Engine, with an editor, lua scripting and much, much more
https://github.com/rxn7/fif
game-engine-2d lua opengl
Last synced: 4 months ago
JSON representation
Lightweight 2D Game Engine, with an editor, lua scripting and much, much more
- Host: GitHub
- URL: https://github.com/rxn7/fif
- Owner: rxn7
- License: other
- Created: 2023-04-14T02:40:36.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2024-06-24T09:00:39.000Z (over 1 year ago)
- Last Synced: 2024-06-24T10:25:12.766Z (over 1 year ago)
- Topics: game-engine-2d, lua, opengl
- Language: C++
- Homepage: https://maciejniziolek.xyz/#/project/fif
- Size: 15.8 MB
- Stars: 5
- Watchers: 1
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Fif
Fif is a 2D game engine with an editor (fifed).
Trello board
# Table of contents
- [Features](#features)
- [Modules](#modules)
- [Building](#building)
- [Contributing](#contributing)
- [Dependencies](#dependencies)
# Features
- Engine Editor (fifed)
- ECS
- Batched 2D renderer
- Lua scripting
- Scene System (changes made in play mode will not be saved, like in unity)
- Resource Manager (UUID based)
- Native (C++) scripting (not supported in the editor yet)
## Components
- TransformComponent
- SpriteComponent
- CircleComponent
- QuadComponent
- LabelComponent
- LuaScriptComponent
- NativeScriptComponent (not supported in the editor yet)
# Modules
Fif is split into core module and other independent modules:
- gfx
- input
- imgui
- lua_scripting
- native_scripting
# Building
- ```./scripts/configure.sh``` - configure the build targets (needs to be called first and after creating a new source file to update the globs)
- ```./scripts/run-debug.sh``` - compile and run a debug build
- ```./scripts/run-release.sh``` - compile and run a release build
- ```cmake --build build/debug``` - compile a debug build
- ```cmake --build build/release``` - compile a release build
# Contributing
Fif is open to contributions, make sure to format your code with clang-format before submitting a pull request though
# Dependencies
The dependencies are used as submodules:
* If you already cloned the repo, run ```git submodule update --init --recursive```
* To clone the repo with submodules ```git clone https://github.com/rxn7/fif --recurse-submodules -j8```
## Libraries
- [glm](https://github.com/g-truc/glm) ([MIT license](https://github.com/g-truc/glm/blob/master/copying.txt))
- [glfw](https://github.com/glfw/glfw) ([zlib license](https://github.com/glfw/glfw/blob/master/LICENSE.md))
- [glad](https://github.com/nitrix/glad/) ([UNLICENSE](https://github.com/nitrix/glad/blob/master/UNLICENSE))
- [ImGui](https://github.com/ocornut/imgui) ([MIT license](https://github.com/ocornut/imgui/blob/master/LICENSE.txt))
- [entt](https://github.com/skypjack/entt) ([MIT license](https://github.com/skypjack/entt/blob/master/LICENSE))
- [lua-cmake](https://github.com/lubgr/lua-cmake) ([MIT license](https://github.com/lubgr/lua-cmake/blob/master/LICENSE))
- [sol2](https://github.com/ThePhD/sol2) ([MIT license](https://github.com/ThePhD/sol2/blob/develop/LICENSE.txt))
- [stb_image](https://github.com/nothings/stb/blob/master/stb_image.h) ([Public Domain license](https://github.com/nothings/stb/blob/master/stb_image.h))
- [tiny file dialogs](https://sourceforge.net/projects/tinyfiledialogs) ([zlib license](https://sourceforge.net/p/tinyfiledialogs/code/ci/master/tree/README.txt#l1))
- [yaml-cpp](https://github.com/jbeder/yaml-cpp) ([MIT license](https://github.com/jbeder/yaml-cpp/blob/master/LICENSE))
- [freetype](https://gitlab.freedesktop.org/freetype/freetype) ([FreeType Project LICENSE](https://gitlab.freedesktop.org/freetype/freetype/-/blob/master/docs/FTL.TXT))
## Fonts
- [Cozette](https://github.com/slavfox/Cozette) ([MIT lIcense](https://github.com/slavfox/Cozette/blob/main/LICENSE))