Open-source game backend. Add multiplayer, leaderboards, cloud saves, and more to your game. No backend code required.
Elements is a self-hosted, open-source game backend platform built on Java 21. Free as in speech, and free as in beer.
- 🎮 Game developers: get multiplayer, leaderboards, cloud saves, and payments running in your Unity, GameMaker, or Godot game without writing a single line of backend code.
- 🔧 Plugin developers: build and publish server-side add-ons using Java, Kotlin, or any JVM language.
A complete, playable Unity multiplayer game built on Elements. Features matchmaking, P2P networking via WebRTC, leaderboards, cloud saves, and user accounts, with zero backend code written outside of Unity. Clone it, run it, and see exactly what Elements can do for your game.
Elements runs in Docker. No Java installation required to get started.
git clone https://github.com/NamazuStudios/docker-compose
cd docker-compose
docker-compose upThe Elements server and CMS will be running at http://localhost. From here you can create your first application, explore the dashboard, and install add-ons.
Elements ships with a comprehensive set of built-in features:
- User accounts, authentication & profiles
- Matchmaking & lobbies
- Leaderboards
- Digital inventory & economy
- Cloud saves & character data
- Quests & dailies
- Social features
- LiveOps CMS
| Engine | SDK | Example Project |
|---|---|---|
| Unity | unity-codegen-plugin | Pong Example |
| GameMaker | Coming soon | |
| Godot | Coming soon |
Elements is built to be extended. Custom server logic runs in isolated ClassLoader environments with no dependency conflicts and no "Jar Hell." Any JVM language works.
// The simplest possible Element
@ElementDefinition(recursive = true)
package com.mystudio.mygame.api;
import dev.getelements.elements.sdk.annotation.Element;Starting with Elements 3.7, open-source authors can publish Elements directly to Maven Central. ELM-based artifacts published to Maven Central can be deployed and installed directly into any Elements instance with no manual packaging required.
Custom code guide → Example starter project →
| Option | Guide |
|---|---|
| Local / development | Docker Compose |
| AWS (one command) | Community Edition on AWS |
Elements is licensed under AGPLv3.
Your game code stays yours. If you build plugins using the Elements SDK (dev.getelements.sdk and subpackages), you are not required to open-source your game or server code. This exemption is built into the license.
We also offer a commercial license for studios that need a more permissive option. Contact us →
Elements is actively migrating its build pipeline to GitHub Actions from Bitbucket Pipelines. In the meantime, builds are managed through our internal CI system. Local builds use Maven.
First, always do an initial build skipping tests:
mvn -Darchetype.test.skip=true -DskipTests --no-transfer-progress -q installTo run the full test suite:
mvn install⏱ Tests take approximately 30 minutes to complete. We recommend only running them if you are planning to actively contribute to the project.
All dependent services run in Docker. See the getting started guide for prerequisites.
Contributions are welcome and deeply appreciated. Please submit via pull request. All contributions should remain open and available to the community.
If you want to work on the Elements core codebase, see HACKING.md for build instructions, module architecture, and internals documentation.
- GitHub Actions migration: we're currently on Bitbucket Pipelines and actively working to migrate to GitHub Actions. If you can figure this out, you will be a friend of this project forever. Seriously.
- UI enhancements and fixes: improvements to the CMS and admin dashboard are always appreciated.
- Bug reports: if you find something broken, open an issue. Clear reproduction steps go a long way.
- Write or improve documentation: good docs are the #1 thing that helps new developers succeed with Elements.
- Build and share example projects: a working game using Elements is worth more than any marketing copy. Share what you build.
- Publish open-source Elements to Maven Central: starting with 3.7, you can publish add-ons directly. The more quality add-ons available, the stronger the ecosystem for everyone.
- Answer questions on Discord: helping other developers get unstuck is one of the most valuable contributions you can make.
- Improve test coverage: the test suite is always a work in progress. New tests for edge cases and untested modules are welcome.
- Engine SDKs: GameMaker and Godot SDK contributions are on the roadmap. If you're familiar with either engine, we'd love to collaborate.
- 🌐 Website
- 📖 Documentation
- 💬 Discord
- 📧 [email protected]