unknown
d7445e0f0f
- loginMetadata is passed to shards through redis now - shards announce they're alive via redis.AnnounceShard() which just populates a hashset keyed 'shards' - login servers grab the 'shards' hashset and randomly picks a shard to pass the player to (for now) - ./service shard && ./service login - Many new environment variables, check config/config.go for more info. or for a tl;dr just read the Dockerfile for the required ones - Shard and login services now run in different processes ! (and containers?? wooaaah) |
||
---|---|---|
cmd | ||
config | ||
core | ||
login | ||
shard | ||
tools | ||
.gitignore | ||
build.sh | ||
compose.yaml | ||
Dockerfile | ||
go.mod | ||
go.sum | ||
README.md |
gopenfusion
A toy implementation of the Fusionfall Packet Protocol written in Go.
Landwalker demo
An implementation of a landwalker server is located in login/
&& shard/
. This includes a functional login server and a dummy shard (supporting the minimum amount of packets necessary). The DB implementation in core/db/
matches the OpenFusion 1.4 SQLite tables, which the login server uses. There's no support for NPCs nor other players, and is liable to softlock the client.
Startup the environment using
$ chmod +x ./build.sh && ./build.sh
$ docker compose up
login server is hosted at 127.0.0.1:23000
, just join from your favorite client
Generating structures
Dump and decompile the Assembly - CSharp.dll
assembly from the fusionfall main.unity3d, using a tool like ilspycmd. The full output source can then be passed to genstructs.py
script located in tools/
, which will handle scraping constants and calculating structure padding. See the script for details on usage.