Skip to content

vimontgames/vgframework

Repository files navigation

VGF boy

VGFramework 0.45

Yet another work-in-progress game and graphic engine project.

Demo

Table of contents

Build status
Getting started
Licence
Extern libs
Assets
Misc

Build status

Configuration ARM64EC DirectX 12 ARM64EC Vulkan Win64 DirectX 12 Win64 Vulkan
Debug ARM64EC DX12 Debug Status ARM64EC Vulkan Debug Status Win64 DX12 Debug Status Win64 Vulkan Debug Status
Development ARM64EC DX12 Development Status ARM64EC Vulkan Development Status Win64 DX12 Development Status Win64 Vulkan Development Status
Release ARM64EC DX12 Release Status ARM64EC Vulkan Release Status Win64 DX12 Release Status Win64 Vulkan Release Status
Final ARM64EC DX12 Final Status ARM64EC Vulkan Final Status Win64 DX12 Final Status Win64 Vulkan Final Status

Getting started

You have two options depending on whether you want to build from source or use the provided executables:

Using precompiled binaries (users)

  • Run Editor.exe to launch the editor.
  • Run Game.exe to start the game.

Building from sources (programmers)

By default, VGFramework uses the precompiled binaries: Editor.exe, Game.exe, and the DLLs located in the bin/ folder.

When you build locally, executable files will be created in your build/ folder.
The program will use these locally built files if they are present; otherwise, it will fallback to the precompiled binaries.

To build from sources:

  • Sync the depot.
  • Install the required SDKs and configure the environment variables.
  • Open the vgframework.sln solution in Visual Studio 2022 Community IDE.
  • Build & Run

Debug and Release versions will start with the editor: Press F5 to enter game mode and F11 to maximize game view and press ESC to go back Editor mode.

Final versions are compiled without the editor, they will start directly in game mode and maximized.

First run might take a few seconds because files are cooking.

Command-line args

Name Type Description
attachDebugger bool MessageBox at application start to let attach a debugger
breakOnErrors bool Break on graphics API errors (debugDevice required)
breakOnWarnings bool Break on graphics API warnings (debugDevice required)
debugDevice bool Enable the graphics API debug layer (default for Debug builds)
editor bool Enable editor (default for Debug and Release builds)
fullscreen bool Start application with game view maximized (default for Final builds)
play bool Start application with play mode running (default for Final builds)
profileStart int Profile the 1st N frames

Keyboard shortcuts

Name Description
A Toggle snap
F Focus Selection
H Toggle HDR modes (None, HDR10, HDR16)
V Toggle VSync mode (None, 1 VBL, 2 VBL, 3 VBL, 4 VBL)
UP Move editor camera forward
LEFT Move editor camere left
DOWN Move editor camera backward
RIGHT Move editor camere right
F1 Start/stop profiler capture
F2 Rename selected Object
F6 Hot reload shaders
F7 Hot reload resources
F5 Enter Play mode
Shift-F5 Restart Play mode
PAUSE Pause/resume Play mode
F11 Maximize Game view (fullscreen)
ESCAPE Exit Play mode and go back to Editor mode
DELETE Delete selected objects
Ctrl+Mouse Wheel Toggle Translation/Rotation/Scale gizmo
Ctrl+D Duplicate selected objects ✨
Ctrl+S Save
Ctrl+U Save Prefab & Update
Ctrl+Shift-Q Quit application

✨ You can keep shift pressed while moving objects to duplicate them.

IDE

VS Studio 2022 Community
https://visualstudio.microsoft.com/fr/vs/community/

To compile the solution you will need the following components if they are not already installed:

  • MSVC v143 - VS 2022 C++ x64/x86 build tools (latest)
  • C++ ATL for latest v143 build tools (x86 & x64)

You will also need if you want to build the ARM64EC versions:

  • MSVC v143 - VS 2022 C++ ARM64/ARM64EC build tools (latest)
  • C++ ATL for latest v143 build tools (ARM64/ARM64EC)

Screenshot

Solution Configuration

Use the 'Configuration' combo to select build configuration:

Screenshot

Config #define Runtime Optimization Inlining Edit & Continue Assert
Debug VG_DEBUG /MDd /Od /Ob0 Yes Yes
Development VG_DEVELOPMENT /MD /Od /Ob0 Yes Yes
Release VG_RELEASE /MD /O2 /Ob2 No Yes
Final VG_FINAL /MD /O2 /Ob2 No No

Solution Platform

Use the 'Platform' combo to select target architecture and graphics API:

Screenshot

Also don't forget to set the working directory to $(SolutionDir).

SDKs

The SDKs are not included with the sources. You need to install them.

Name Version
Win10 SDK 10.0.22621.0
Vulkan SDK 1.3.290.0

✨ Only required to build Vulkan version. $(VULKAN_SDK) should point the Vulkan SDK installation dir (e.g., C:\SDK\Vulkan\1.3.290.0).

Extern libs

The external libraries are included with the sources for convenience. Follow the link for details about the licence used.

Name Version
D3D12 Memory Allocator
D3D12 HDR Sample
Dear ImGui 1.91.2
DirectX Shader Compiler August 2023
Dirent 1.23.2
fmt 10.1.1
FXAA 3.11
hlslpp 3.5.3 4dd067b
IconFont CppHeaders
ImGuiFileDialog 0.6.7
ImGuizmo 1.83
JoltPhysics 5.0.0
meta_enum_lite
optick 1.3.1
px_sched
SoLoud August 2024
stb 2.30
tinyXML2 10.0.0
UFBX 0.14.3
Vulkan Memory Allocator 3.0.1
WinPixEventRuntime 1.0.231030001

✨ You can download the binaries for optick 1.3.1 from https://github.com/bombomby/optick/releases/tag/1.3.1.0

License

Code

The code in src folder is licensed under the MIT License. Please refer to LICENCE.md for more details.

External libraries in the extern folder use permissive licenses. Please refer to the Extern libs section for details about the licenses used.

Data

Most assets are using permissive licenses, while some are restricted to use only within the context of VGFramework development. Please refer to the Assets section for more details about the licenses used.

Assets

Assets with usage restrictions

The assets in the following folders are licensed under the Creative Commons Non-Commercial (CC BY-NC 4.0) License, with the additional restriction that they may only be used within the context of VGFramework development.

Please refer to the ASSETS_LICENSE.md for more details.

Asset folders Author
data/Meshes/GJ
data/Textures/GJ
JOYxt
data/Meshes/VGF_Bo
data/Textures/VGF_Boy
JOYxt
data/Meshes/GrosCovid
data/Textures/GrosCovid
JOYxt

Other assets

The following assets are provided under permissive licenses. Please follow the provided links for details about those licenses:

Fonts

Name Info
Font-Awesome 6.x
Rowdies
RubikMonoOne
UbuntuMono 1.0

Models

Name Info
3D Football prabath-weerapana
Baseball Bat sepandjahrominejad
FootBall american orsbone
Katana samurai sword kizaru
Luigi Anthony Yanez
Traffic Cone hinndia
Soccergoal NorbertVarga

Environment maps

Name Info
Free HDR Map 779 hdri-skies.com

Sounds

Name Info
FX - Swoosh - normal bolkmar
Large sword swing Luis0413
Tally Dub Brotheration Records
Chainsaw pblzr

Misc

These tools are not mandatory but can be useful for development.

Name Info
Radeon Developer Panel GPU debugging & profiling
RenderDoc GPU debugging