This is a 3D vehicle game prototype inspired by the gameplay and feel of the dune buggies in Jak 3.
Progress videos, newest to oldest:
- Development tools, featuring dear ImGui integration
- Split-screen and better “AI” (the top screen is the AI follower)
- First “AI” driver. WIP Procedural terrain can be seen in the far background
- Drivetrain and engine audio
- Objective system and audio, plus improved camera and skybox
- First video of air control (applying arbitrary torque to the car in-air)
- First public video, featuring free cam and time step scaling
I created a reference video so I could emulate the Jak 3 behavior. It gives you an idea what the inspiration and goal behavior is
Clone and init submodules for dependencies:
git clone --recurse-submodules https://github.com/makuto/spargus-vehicle-prototype
Jam is used to build the project. Install Jam:
sudo apt install jam
You will also need Blender 2.8 to build the 3D assets. For Ubuntu, 2.8 is not yet in the repository, so you should download it directly.
If you have a system install of Blender which is <2.8
, you need to add sBLENDER=/path/to/blender2.8
to Build.sh
and Build_Debug.sh
jam
invocations.
Spargus uses several libraries:
- Bullet 3: Physics, raycast vehicle
- SFML: 2D graphics, debug 3D graphics, audio, input, window
- Horde3D: 3D graphics
- dear ImGui: Debug GUI/editors
- glm: Math
- tinyobjloader: .obj loading, for collision meshes
- tracy: Profiling
Currently, SFML relies on system installs for its dependencies:
sudo apt install libopenal-dev libvorbis-dev libflac-dev libglew
Build the rest of the dependencies from source:
cd spargus-vehicle-prototype
./BuildDependencies.sh
./BuildDependencies_Debug.sh
Finally, build Spargus. This builds both code and data assets.
./Build.sh
./Build_Debug.sh
spargus_vehicle_prototype
should be run in the root directory of the repository.
SFML is used for graphics, window, and input. I used my old base2.0 library to wrap SFML if I ever want to switch to SDL.
Running BuildDependencies.sh
will build base2.0, which builds SFML from source. Currently, SFML relies on system installs for its dependencies:
sudo apt install libopenal-dev libvorbis-dev libflac-dev libglew
Spargus Vehicle Prototype uses Bullet3 for physics.
Build bullet3:
cd spargus-vehicle-prototype
./BuildDependencies.sh
Optional: Test the examples:
./Dependencies/bullet3/build_cmake/examples/ExampleBrowser/App_ExampleBrowser
This will build the assets only if necessary.
Collada is used by Horde3D to display the mesh, while the Obj is used to create the collision mesh. The meshes can differ if desired (e.g. for a low-poly collision mesh). On export, ensure Triangulate Mesh and Apply Modifiers are checked.
It takes many programs to make a game. This list serves as a working set of everything needed to create Spargus (with the exception of low-level operating system etc.).
Versions are in Italics. They indicate the last working version I used. It is not necessarily required to have the exact same version.
In order to create models, textures, and audio effectively, you need the following programs:
- GIMP (2.8.22): Textures are created in GIMP and stored in GIMP’s
.xcf
format - Blender 2.82: Models and animations are created and stored in
.blend
. Make sure Collada.dae
and Wavefront.obj
exporting are enabled - Audacity: Audio creation/editing
Source to executable toolchain (Linux x86_64):
- ClangFormat 6.0.0-1: Code format
- Jam 2.6: Build system. Builds both code and assets
- clang++ 6.0.0-1: C++ compiler/linker
- GNU ar 2.30: Library archive creation (e.g.
.a
) - CMake 3.10.2: Dependency project generation (Spargus itself does not use CMake)
These tools aren’t necessary for creating assets, building or running the game, but they are useful for inspecting the game as it is running.
Some of these are included in the Dependencies
directory.