A virtual set of games and display libraries that can be switched at runtime!
This project aims at creating a set of abstractions that allows for the development of games and display libraries without having to worry about the underlying implementation details of the core program.
Interopability is achieved by using a common set of interfaces shared across other groups who also develop the project.
This project requires the following tools and libraries to be installed.
| Dependency | Runtime dependency | Version | Description |
|---|---|---|---|
| CMake | ❌ | 3.27+ |
The build system used to build the project |
| GCC | ❌ | 13.2.x+ |
The C++ compiler used to compile the project |
| SDL2 | ✔️ | 2.30.1+ |
For the SDL2 display library - image, gfx and mixer modules required |
| SFML | ✔️ | 2.5.1+ |
For the SFML display library - graphics, window and audio modules required |
| termios | ✔️ | N/A |
For the terminal/ncurses display library - UNIX-like system required |
Do note that older version of the libraries may work, but the versions listed are the ones that have been tested with.
To get the source code, clone the repository using the following command:
git clone git@github.com:TheodoreBillotte/Arcade.gitYou should now have a directory named Arcade containing the source code of the project.
To build the project, follow the steps below.
-
Create a build directory at the root of the project, so that the source directory is kept clean:
mkdir build
-
Run CMake to configure the project:
cmake --source . --build buildNote: You can pass additional options to CMake to configure the project. By default, the project will compile for a release build. To compile for a debug build, pass the
-DCMAKE_BUILD_TYPE=Debugoption to CMake. Have a look at the official CMake documentation for more information regarding the use of CMake. -
Build the project using the generated build system:
cmake --build build --parallel $(nproc)Note: The
--paralleloption is used to build the project in parallel. This can speed up the build process significantly. -
The compiled binary and libraries will be located at the root of the source directory.
A binary named arcade will be generated in the root of the source directory. To run the project, execute the binary
along with the path to the display library you want to use:
./arcade ./lib/arcade_sfml.soThe project will then run using the specified display library.
You may switch between display libraries at runtime by pressing the P key. The same goes for games, you may switch between them at runtime by pressing the O key. To go back to the main meny at any time, use the M key.
To develop a game or display library, you will certainly have to have a read through the documentation to understand how the project is structured and how to interface with the project.
That documentation is available in the doc/content directory:
- Arcade — overview of the core program and how the pieces fit together
- Display — how to write a display (graphics) library
- Game — how to write a game library
For this project, we shared our structure and interfaces with other groups. You can find the email address of the group owners below:
