By Cuba Giesbrecht and Aiden Waring
The goal of this project is to write a minecraft server client focused around being high performance and multithreaded. The server will be written in C++ to give the performance of a compiled language while also utilizing the performance of explicit memory management (no garbage collection). The server client will allow vanilla java edition player clients to connect to the server seamlessly.
(We will be targeting Minecraft Java version 1.20.2 as our working version to start.)
- Handle Java edition TCP handshakes.
- Recreate all Vanilla gameplay mechanics.
- Multithread common performance issues in the vanilla Minecraft server client (Multithreading certain tasks may cause vanilla gameplay interactions to not perform as they usually do, we will decide which interactions can be preserved versus performance).
- Chunk loading/generation
- Lighting
- AI pathing
- Entity handling
- Create Java wrapper functions to allow for plugins to be written in Java just as traditional Java edition server clients do (i.e. Bukkit and Spigot).
- Create Java wrapper functions for mods to be written with an API similar enough to Fabric that it would allow existing mods to be easily or seamlessly ported to our server.
- Offload work to a GPU array (see CUDA Programming).
This project is aimed at being a Linux(x86-64) server client as this is the primary operating system for server hosting.
To build this project you just have to run:
make
and it will create the bin
folder containing the binary.
To remove the build files and executable run:
make clean
Note: This is being designed for the x64 Linux platform
To run:
cd bin/
./MinecraftServer
Note: You may attempt to build with these other options if you so wish
This option has not been thouroughly tested at the moment, but is available:
make fast
If you are having issues I may ask for you to build with:
make debug
So that I can help diagnose the issue.