Keraforge ========= A game engine for top-down 2D RPG games. [Warning] Keraforge is still a work-in-progress. Expect breaking changes! Motive ------ There's already a large number of quality game engines and frameworks in the wild, so what does Keraforge do differently? Design: Keraforge is designed with a specific kind of game in mind: top-down, story-driven, handcrafted RPGs. If your dream game fits in this category, then Keraforge aims to help make it a reality. Simplicity: Game engines and frameworks always have a learning curve. Keraforge is no exception. What I can aim for, though, is keep the learning curve from being exponential and overwhelming users. I want Keraforge to allow anyone to share their story with an engine that gives them the ability to pour love into their work. Cost: Keraforge is 100% free (BSD 3-Clause), zero royalties, no up-front costs, and no paywalls. I want to give people the chance to create something beautiful, not to take their money. It's also important to discuss the cons of Keraforge. It's going to be fundamentally different from any other engine since it's made for a very specific style of game. This means that if your game does not fit this style, you might have more trouble. Usage ----- Pre-built binaries are not *yet* distributed. I'll start publishing binaries once the engine reaches a stable state. For now, you can compile it yourself. See the section on development below. If you want to see my development progress, see . Develop ------- Libraries (Debian): Raylib: libasound2-dev libx11-dev libxrandr-dev libxi-dev libgl1-mesa-dev libglu1-mesa-dev libxcursor-dev libxinerama-dev libwayland-dev libxkbcommon-dev Keraforge: liblzma-dev Initialise a development environment: `sh run.sh init` Build "system" is contained in a folder of shell scripts, `scripts`. You can run these with the `run.sh` script to run multiple tasks in order. Generally: `sh run.sh build run` is all you'll need to run while developing. Please note that I will be hesitant to accept PRs to this codebase. I am very nitpicky with my code style and if your PR does not match it (or if it goes out-of-scope, adds useless/redundant functions, further pollute global scope, etc), then I will likely decline the PR or request a number of changes. Ideally, please communicate with me before submitting a PR just for it to get closed. You can find my contact information on my website. I don't want you wasting your time or effort! Additionally, please read through before attempting to contribute. It'll make your life much easier if you understand my style *before* attempting a PR. License ------- BSD 3-Clause, see .