Haddock link: pg
Ultimate goal:
- Leverage STM and linear typing to fundamentally shut out item / block duplication bugs.
- Use STM observer pattern so that users can directly observe changes in the environment rather than relying on a predefined set of events.
- Have a standalone working server as well as let library be used as a framework. Support both subtractive and additive modes of server-building.
- Fundamentally concurrent; have global clock for game logic, but do not rely on a central event loop.
- Make it very easy to program a server using a proper effect system.
- Being ported from an old, working project with vast code improvements.
- Networking code nearing first finished draft.
- Has "working" collision detection and resolution system.
- Immediate goal: let players join, get tab list working, hit each other.
- Then: authenticate with Microsoft.
- Will post updates soon.
X/Twitter: @axionbuster
On all operating systems, you need the development version of OpenSSL installed. There may be more dependencies.
Use the system-specific instructions below to install all needed dependencies.
Once all the necessary dependencies have been installed, run:
stack build
Since this project uses Stack, and Stack comes with its own MSYS2 environment, you should install it like this:
# first, update the package index
# (do this many times until it stops updating)
stack exec -- pacman -Syu
# now, install OpenSSL
stack exec -- pacman -S mingw-w64-x86_64-openssl
On Ubuntu or Fedora, OpenSSL is found in libssl-dev
and openssl-devel
, respectively. Download these packages, first.
On Ubuntu, you need to install libgmp-dev
. On Fedora, install gmp-devel
.
You also need zlib
: zlib1g-dev
on Ubuntu, zlib-devel
on Fedora.
You also need a working C compiler and pkg-config
. pkg-config
is found in the Ubuntu package pkgconf
and the Fedora package pkgconf-pkg-config
.
Well project is kind of less than well-documented and there's no working entry point but here's something I might need help with:
- Review the C OpenSSL adaptor for problems.
- Review the AI-generated packet formats for errors / omissions.
- Parse "paletted container" format for chunks.
- Add a packet state registry (packet type <-> (who's talking * numeric packet code * protocol state)) that is decoupled from the actual packet types so that I can reuse the same packet types if there's not been significant changes between versions.
- Architect a way to make the observer pattern easy to understand / program in. Target demographic for programmers is teenagers and young adults with minimal (initial) knowledge of Haskell or FP in general.
Algorithms for collision detection and resolution contains portions and adaptations from the Minestom project.