An ID Tech 2 Engine modernization project.
Method 1 - Release build:
- Make sure the Quake2Sharp files are next to your baseq2 directory.
- Run
Method 2 - Building from source:
- Install latest .NET SDK
- Run (replace win-x64 with your target platform. Examples: linux-x64, osx-x64, osx-arm64, ...)
dotnet publish -c Release --self-contained true -p:PublishReadyToRun=true -p:PublishSingleFile=true -p:PublishTrimmed=true -p:IncludeNativeLibrariesForSelfExtract=true -p:DebugType=None -p:DebugSymbols=false -r win-x64 -p:TargetPlatform=win-x64
- Get the output files from Quake2Sharp/bin/Release/<.NET version>//publish/
- Follow method 1
Method 3 - Running from IDE:
- Install latest .NET SDK
- Make sure the baseq2 directory lies in the project root directory.
- Open the solution file and run
- The codebase should be raised to modern c# standards
- The engine should be highly moddable
- Provide a good base for custom games
- The repository should contain a fully compatible Quake2 gamecode
- Get the codebase running on any technically possible platform
Refactor the whole codebase
Split project into multiple projects
Quake2Sharp.Engine
This project should contain all core engine code. Its output will be a library only. At this level, platform specific dependencies should not be allowed, to ensure runnability on all platforms. The engine itself should include game detection and loading mechanisms.
Quake2Sharp.Game.Quake2
This project should contain the actual Quake 2 game implementation for the engine to load. Its output will be a library only. At this level, platform specific dependencies should not be allowed, to ensure runnability on all platforms. Other games might ofcourse decide to use platform specific dependencies.
Quake2Sharp.Server
This project should produce the dedicated server executable and its starting mechanism. It will load up the engine, make sure the game is loaded and spawn a dedicated server for people to play on.
Quake2Sharp.Client
This project should produce the client executable. Its should also implement the platform loader. Upon starting, it should check the available platforms, initialize the preferred one and provide a frontend to interact with the engine (menu, playing the game).
Quake2Sharp.Platform.OpenTk
This project should contain all platform specific implementations.
Rendering
- Switch to Silk.Net
- Implement Silk.Net OpenGL 4.6 renderer
- Implement Silk.Net Vulkan renderer
Moddability
- Support .png textures
- Support .glb models
- Support trenchbroom .map maps
Other
- Implement powerful ui system for more complex menus and uis
- Implement Doom3-style ui textures
- ID Software for releasing their Quake 2 source code https://github.com/id-Software/Quake-2
- Bytonic for their Java port https://bytonic.de/html/jake2.html