Skip to content

C++20, SDL2, & Vulkan on Windows 11 64-bit

License

Notifications You must be signed in to change notification settings

mikesmullin/cpp20-win11-x64-sdl2-vulkan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Game 5

This is a prototype as I explore programming language, libraries, and tech stack viability for future game titles.

My intent for this work is:

  • to achieve a high degree of control and autonomy over the entire tech stack
  • to further refine my skill and appreciation for the engine layers (system level software, and hardware)
  • to impart a path for differentiation through innovation and discovery in unusual and unconventional approaches
  • to manifest independent game production and portfolio expansion
  • to realize my desire to create, self-actualize, and contribute back to the industry that I love
  • to help others do the same

Related work:

  • Game 6 explores this topic in C17 language, instead of C++20.

Prerequisites

Screenshot

screenshot

Video

video

Test files:

Building

on Windows

  1. Start > Run... > "cmd.exe"
  2. Build with Node.js script (uses clang++)
    node build_scripts/Makefile.mjs all
    

on Linux

# Install Vulkan SDK
wget -qO- https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo tee /etc/apt/trusted.gpg.d/lunarg.asc
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-jammy.list http://packages.lunarg.com/vulkan/lunarg-vulkan-jammy.list
sudo apt update
sudo apt install vulkan-sdk vulkan-tools vulkan-validationlayers-dev spirv-tools

# Install SDL2
sudo apt install libsdl2-dev

# Install Lua
sudo apt install liblua5.4-dev

# Install Clang compiler
sudo apt install clang

# Install Protobuf 25.2
sudo apt install libstdc++-12-dev # if nvidia-driver-* package is installed on Ubuntu, this may be necessary
mkdir -p vendor/protobuf-25.2/nix/src
git clone --branch v25.2 https://github.com/protocolbuffers/protobuf.git vendor/protobuf-25.2/nix/src
cd vendor/protobuf-25.2/nix/src
git submodule update --init --recursive
cmake . -Dprotobuf_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_CXX_STANDARD=20
cmake --build . --parallel 10
cmake --install .
cd -

# Install Node.js
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
cd build_scripts/
nvm install
npm install
cd ..

# Build
node build_scripts/Makefile.mjs all

on Mac

# Install Vulkan SDK
https://sdk.lunarg.com/sdk/download/1.3.275.0/mac/vulkansdk-macos-1.3.275.0.dmg

# Install SDL2
brew install sdl2

# Install Lua
brew install [email protected]

# Install Protobuf 25.2
mkdir -p vendor/protobuf-25.2/mac/src
git clone --branch v25.2 https://github.com/protocolbuffers/protobuf.git vendor/protobuf-25.2/mac/src
cd vendor/protobuf-25.2/mac/src
git submodule update --init --recursive
brew install cmake
cmake . -Dprotobuf_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_CXX_STANDARD=20
cmake --build . --parallel 10
cmake --install .
cd -

# Install Node.js
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
cd build_scripts/
nvm install
npm install
cd ..

# Build
node build_scripts/Makefile.mjs all

Debugging

  • Can use VSCode (see .vscode/tasks.json), or;
  • Can debug with gdb

Dependencies

References

Beginner:

Intermediate:

Advanced:

Collaborate

TODO

  • publish to iOS and Android mobile (although possible, GLES3 has better support; will probably end up with a wrapper)