CI/CD name | Build status |
---|---|
GitHub Actions | |
Azure Pipelines |
- 📖 ÖbEngine's Wiki
- 🔗 ÖbEngine's Website
- 📄 ÖbEngine's Documentation
- 💬 ÖbEngine's Discord
- 🛠️ ÖbEngine's Development Boards
- 🎮 ÖbEngine's Examples
ÖbEngine is a free and open-source 2D game engine ! It focuses on making game development accessible and fun. ÖbEngine is not only a framework, it is a fully-fledged engine with everything you might need including a map editor, a plugin system and so much more !
And by the way, it is pronounced | ˈɒb ˈendʒɪn |, the umlaut on the Ö is just there because it looks like a surprised face, it doesn't influence the pronounciation.
-
You will need SFML 2.5.1 (Display, Input, Network, Sound and much more)
-
You may also need alsa-lib (if you're on Linux)
There are other third-party libraries but they are included in the repository (extlibs/
folder).
Check this tutorial to learn how to build ÖbEngine : Building ÖbEngine
Library | Description | License |
---|---|---|
11zip | minizip wrapper based on Vili Petek's work | MIT License |
Catch2 | Test Framework | Boost Software License |
dynamicLinker | Dynamic Libs wrapper | MIT License |
fmt | Formatting library | BSD 2-Clause "Simplified" License |
Sol | C++ binding library to Lua | MIT License |
Lua 5.4 | Scripting language | zlib License |
RichText | sf::Text extension | MIT License |
spdlog | Logging library | MIT License |
Vili | Homemade Data language (YAML-like) | MIT License |
zlib & minizip | zip archives | zlib license |
Library | Description | License |
---|---|---|
debugger.lua | Embeddable Lua debugger | MIT License |
inspect.lua | Human-readable representation of Lua tables | MIT License |
You can do everything with it as long as it's in 2D. ÖbEngine doesn't handle 3D (maybe partial 3D support in a future update). You can do some platformers, RPGs, 2D racing games, visual novels, roguelikes, metroidvanias, etc..
If you want to check out games made with ÖbEngine, you can check out those open-source projects !
Yes it is, completely free ! There is no premium, in-app purchase, forced splashscreen or anything. You can sell your game made with ÖbEngine with no royalties either ! Since the engine is based on the MIT license, you can modify the sources, do anything you want with the engine as long as you keep the original license file somewhere. We rely exclusively on donations so if you want to support the development you can find the sponsor page right here !
ÖbEngine has been tested on the following platforms :
- Windows XP, 7, 8, 10
- Linux (Debian, Arch)
- MacOS
ÖbEngine will have export for Android, iOS and HTML5 available in a future update.
Here you go :
- Event-based scripting (with Lua)
- Neat map editor
- Animations
- Native plugins (You can extend the engine with C++ with automatic bindings and documentation generator)
- Canvas (You can draw stuff using a simple API)
- Network support
- Scene / GameObjects system
- Projects and Packages system
- Layering system with parallax support
- Polygonal Collisions with full collision detection support
- Integrated CLI to manage your project
- Custom package manager with online repository
- Gamepad support
- Bindable actions with support for complex key combinations
- Shader support
- Audio with many formats supported (OGG, MP3, WAV, FLAC and much more)
- 3D support
- 2D skeletal animations
- Collaborative map editor
- Light & particle system
- Script the engine with the langage of your choice
- Multiple windows
- Android, iOS and HTML5 export
- Tiled Map Editor support
Each major release will have a name based on a translation of the word "Eggplant".
ÖbEngine just follows semver rules which means any version will be tagged (X.Y.Z) with X: Major, Y: Minor and Z: Patch.
Version number | Version name | Word origin | Release date | Description |
---|---|---|---|---|
1.0.0 | Melanzana | Italian | ? | First production release of ÖbEngine |
Sure ! For now we use GitHub Project system as a planning / roadmap tool which is available here.
Sure, here are some simple GameObjects :
This one is really simple, it just prints "Hello World" in the console
---@class HelloWorld
local HelloWorld = GameObject();
function HelloWorld:init() -- Called when object is created
print("Hello World");
end
Every GameObject can have a Sprite associated (it's cooler when your object appears in the game right ?).
Let's imagine you want to create a rotating goat in your game, no problem :
---@class RotatingGoat
local RotatingGoat = GameObject();
function RotatingGoat:init()
-- Set the animation for when the goat is flying to the right (You can imagine it already right ?)
self.components.Animator:set_animation("GOAT_FLYING_LEFT");
end
function Event.Game.Update(evt) -- Event.Game.Update is a function called every loop and dt is the DeltaTime
self.components.Sprite:rotate(evt.dt * 45); -- Rotate of 45 degrees each second (You multiply with the DeltaTime here)
end
The engine includes a Canvas
lib to draw stuff in real time and using it is really straightforward !
---@class PongScoreboard
local PongScoreboard = GameObject();
function PongScoreboard:init()
local canvas = obe.canvas.Canvas(400, 400); -- Creating a 400x400 canvas
canvas:Rectangle("background") { -- Dark grey background
layer = 2, x = 0, y = 0, width = 250, height = 100,
color = { r = 50, g = 50, b = 50},
};
canvas:Text("firstPlayer") { -- First player's score label
text = "Player 1 : 0 points", size = 22
};
canvas:Text("secondPlayer") { -- Second player's score label
text = "Player 2 : 0 points", size = 22, y = 50
};
canvas:Circle("green") { -- Small green circle
color = "0F0", -- Green color
radius = 7, x = 200, y = 5
};
canvas:Circle("yellow") { -- Small yellow circle
color = "FF0", -- Yellow color
radius = 7, x = 217, y = 5
};
canvas:Circle("red") { -- Small red circle
color = "F00", -- Red color
radius = 7, x = 234, y = 5
};
canvas:render(self.components.Sprite); -- Drawing all the stuff !
end
Check the Wiki for more examples !
Interested in contributing to ÖbEngine ? Great ! We always need help on various tasks !
A good first step would be to join the ÖbEngine's Discord server to chat with us and discuss how you could contribute depending on your preferences and skills.
Not talkative ? We understand ! You can also check the ÖbEngine issues and more particularly those tagged with "Good first issue" or "Help wanted".
If you are thinking about contributing to ÖbEngine, we highly recommend you to check out the Code of Conduct and the Contibuting pages for more details.
If you noticed a bug, want to ask for a feature or anything else you can always open an issue.
If you want to go even further you can fix the bug yourself by forking ÖbEngine and making a pull request. We will review every pull request opened.
Those are the core contributors of ÖbEngine, you could become one too !
Sygmei ✍️💻 |
PierrickLP 💻 |
Darnagof 💻 |
ÖbEngine would not be the same without the helpful contributions from the following awesome people !
Skealz 💻 |
TeddyTrqt 💻 |
Arthapz 💡💻 |
LePatissier 💻 |
Tzupy 💻 |
mjopenglsdl 💻 |
julio-b 💻 |
ZanyMonk 💻 |
Mari0nV 💻 |
TerensTare 💻 |
AugustasV 💻 |
eXpl0it3r 💻 |
kevle 💻 |
nfarid 💻 |
A big special thanks to my sponsors who are allowing me to spend more time on this project !
Orness ❤️🏢 |
GitHub ❤️ |
Gitcoin 🪙 |
JetBrains ❤️🧠 |
DigitalOcean ❤️🦈 |
Viva64 ❤️🦄 |
Mari0nV ❤️❤️ |
GuillaumeCailhe ❤️🍆 |
Uriopass ❤️🚗 |
Nowyce ❤️🎃 |
Want to become a sponsor ? Please check out the GitHub Sponsor and the ÖbEngine OpenCollective