Feel free to join the discord: https://discord.gg/EA2Sg3ar74
One of our single-area load tests - 150 clients constantly moving. Click to watch.
Our in-world "Build Mode".
Our Sprite Editor, used to draw 3D bounding boxes on sprites.
(Not all implemented yet, see Status section)
- Easily create isometric, sprite-based virtual worlds.
- Start from a template and have a full working world, including client, server, text chat, and account management.
- All needed networking is built-in, and adding new messages for your custom features is extremely easy.
- Load tested with 150 clients in 1 area or 1000 clients in groups of 10, all sending 4 inputs/second.
- Targeted for use on relatively low-spec hardware (tested on a $30/mo rented server).
- Live, in-world map editing. Use permissions to let players build things, or restrict it to your developers.
- Implement, load test, and optimize the netcode.
- Implement tile maps, iso rendering, and figure out architecture between the sim/rendering/UI.
- Build minimal UI library.
- Build sprite editor. (lets you add 3d bounding boxes to sprites for draw order and collision calcs)
- Import sprite bounds data into engine.
- Implement world map persistence.
- Implement chunk and tile update streaming (live, in-world map editing).
- Implement spatial partitioning grid for entities.
- Implement interest management system.
- Refactor UI library (spatial grid, nice event propagation).
- Implement world editing UI.
- Implement collision (simple placeholder).
- Further netcode load testing (get ready for users).
- Split single repo into engine and project repos.
- Build simple reference project.
- Implement text chat, chat server.
- Implement sprite animation.
- Implement login server, account db, account validation.
- Implement web server, account creation.
- MVP is done.
To join the demo world and play with other people, you can download the latest release and follow the instructions in the README.
Currently, the client application is hardcoded to connect to a server ran by Net_.
- Run
Scripts/Windows/InstallDependencies.bat
, passing it the path you want to install the dependencies to. - Open CMakeLists.txt in Visual Studio (
Open
->CMake
). - Update CMakeSettings.json (in this repo) to point at the various SDL folders in your installation path.
- You'll leave this file dirty. Don't try to commit it back upstream with your personal paths.
- You can optionally enable
AM_BUILD_SPRITE_EDITOR
to build the sprite editor.
Project
->Generate CMake cache
(or just let it run if you have auto-config on).Build
->Build All
For MSYS2/MinGW, we don't have a dependency install script. Here's the list:
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-make mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja mingw-w64-x86_64-gdb mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_image mingw-w64-x86_64-SDL2_mixer mingw-w64-x86_64-SDL2_ttf mingw-w64-x86_64-SDL2_gfx mingw-w64-x86_64-SDL2_net mingw-w64-x86_64-catch
Then, build through the Eclipse project or follow the linux instructions for a command line build.
Had to update to Ubuntu 21.04 for g++ 10.3.0 (older versions didn't have support for some C++20 features I needed.) I haven't yet locked down an SDL2 or CMake version, we'll see where it ends up.
- Run
Scripts/Linux/InstallDependencies.sh
, then build through the Eclipse project, or: - (From the base of the repo)
mkdir -p Build/Linux/Release
cd Build/Linux/Release
cmake -DCMAKE_BUILD_TYPE=Release -G Ninja ../../../
- You can optionally add
-DAM_BUILD_SPRITE_EDITOR
to build the sprite editor.
- You can optionally add
ninja all
Bug reports and fixes are always welcome. Feel free to open an issue or submit a PR.
Unsolicited feature PRs will not be reviewed. Please ask about the feature plan before working on a feature.
Collaboration is very welcome! That being said, there is a fairly solid vision for the near-future of this engine. If you would like to contribute expertise or take ownership over a feature on the roadmap, please make a post on the discussion board.