Home

Awesome

The Amalgam Engine - An engine for easily creating virtual worlds

For more information, visit worlds.place.

If you'd like to get involved, please join the Discord: https://discord.gg/EA2Sg3ar74

Vision

(Not all implemented yet, see Roadmap or more detailed Task Board)

Template Projects

Repose

Repose is our first template project. If you'd like to make a world, you can fork Repose and use it as a fully-functioning starting point.

Check out the project and download the latest playable release here.

Building

Note: You rarely need to build the engine by itself, this section just provides canonical instructions. Instead, see the Template Projects section.

Windows

Visual Studio (MSVC)

  1. Open CMakeLists.txt in Visual Studio (Open -> CMake).
  2. (Optional) Open CMakeSettings.json (in this repo) and enable AM_BUILD_RESOURCE_IMPORTER to build the Resource Importer.
  3. Project -> Generate CMake cache (or just let it run if you have auto-config on).
  4. Build -> Build All

Note: The Resource Importer should be built within your project, since it relies on config values from your project's Override/SharedConfig.h.

MinGW

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.

Linux

Note: This is only tested on Ubuntu 20.04. If you have experience in multi-distro builds, please get involved!

  1. Run Scripts/Linux/InstallDependencies.sh, then build through the Eclipse project, or:
  2. (From the base of the repo) mkdir -p Build/Linux/Release
  3. cd Build/Linux/Release
  4. cmake -DCMAKE_BUILD_TYPE=Release -G Ninja ../../../
    1. You can optionally add -DAM_BUILD_RESOURCE_IMPORTER to build the Resource Importer.
  5. ninja all

macOS

Note: AmalgamEngine requires GCC to build on macOS. Clang / Apple Clang does not yet support C++ features required by this project (as of Apple Clang 14 / Clang 15).

  1. Use the Homebrew package manager to install dependencies: brew install gcc make cmake ninja sdl2 sdl2_image sdl2_mixer sdl2_ttf sdl2_gfx sdl2_net
  2. (From the base of the repo) mkdir -p Build/macOS/Release
  3. cd Build/macOS/Release
  4. CC=gcc-NN CXX=g++-NN cmake -DCMAKE_BUILD_TYPE=Release -G Ninja ../../../. Replace the NN in gcc-NN and g++-NN with the version of GCC that you installed with Homebrew. This is important, as using gcc without a version number will alias to clang.
    1. You can optionally add -DAM_BUILD_RESOURCE_IMPORTER to build the Resource Importer. Resource Importer doesn't currently build on macOS due to GCC not being able to build with Apple SDK headers which use certain Objective C extensions.
  5. ninja all

Packaging

Note: You rarely need to package the engine by itself, this section just provides canonical instructions. Instead, see the Template Projects section.

To package the applications in a way that can be shared, first run the desired build. Then, run:

// Assuming you're at the base of the repo.
cmake --install Build/Windows/Release --prefix Packages/Windows

where 'Build/Windows/Release' is your desired build to package, and 'Packages/Windows' is your desired output directory.

On Windows, you can use Visual Studio's developer terminal (Tools -> Command Line -> Developer Command Prompt) for easy access to CMake.

Contributing

Contributions are very welcome! Feel free to work on features or bugfixes and submit PRs, they'll all be promptly reviewed. If you're looking for ways to contribute, check the Task Board.

There's a fairly solid vision for the near-future of this engine. If you would like to work on a larger feature, please make sure it's on the roadmap, or join the discord and discuss it before getting started.