Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork54
2D Game Engine with Lua Scripting made on top of SFML !
License
ObEngine/ObEngine
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
| 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 needSFML 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 onVili 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 thoseopen-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 pageright 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 followssemver 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 availablehere.
Sure, here are some simple GameObjects :
This one is really simple, it just prints "Hello World" in the console
---@classHelloWorldlocalHelloWorld=GameObject();functionHelloWorld:init()-- Called when object is createdprint("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 :
---@classRotatingGoatlocalRotatingGoat=GameObject();functionRotatingGoat: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");endfunctionEvent.Game.Update(evt)-- Event.Game.Update is a function called every loop and dt is the DeltaTimeself.components.Sprite:rotate(evt.dt*45);-- Rotate of 45 degrees each second (You multiply with the DeltaTime here)end
The engine includes aCanvas lib to draw stuff in real time and using it is really straightforward !
---@classPongScoreboardlocalPongScoreboard=GameObject();functionPongScoreboard:init()localcanvas=obe.canvas.Canvas(400,400);-- Creating a 400x400 canvascanvas:Rectangle("background") {-- Dark grey backgroundlayer=2,x=0,y=0,width=250,height=100,color= {r=50,g=50,b=50}, };canvas:Text("firstPlayer") {-- First player's score labeltext="Player 1 : 0 points",size=22 };canvas:Text("secondPlayer") {-- Second player's score labeltext="Player 2 : 0 points",size=22,y=50 };canvas:Circle("green") {-- Small green circlecolor="0F0",-- Green colorradius=7,x=200,y=5 };canvas:Circle("yellow") {-- Small yellow circlecolor="FF0",-- Yellow colorradius=7,x=217,y=5 };canvas:Circle("red") {-- Small red circlecolor="F00",-- Red colorradius=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 theCode of Conduct and theContibuting 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 theGitHub Sponsor and theÖbEngine OpenCollective
About
2D Game Engine with Lua Scripting made on top of SFML !
Topics
Resources
License
Code of conduct
Contributing
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Packages0
Uh oh!
There was an error while loading.Please reload this page.



