A toy implementation of the FusionFall Packet Protocol in Go
Go to file
unknown d7445e0f0f Switched to redis/postgres, major refactoring
- 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)
2023-06-22 01:53:38 -05:00
cmd Switched to redis/postgres, major refactoring 2023-06-22 01:53:38 -05:00
config Switched to redis/postgres, major refactoring 2023-06-22 01:53:38 -05:00
core Switched to redis/postgres, major refactoring 2023-06-22 01:53:38 -05:00
login Switched to redis/postgres, major refactoring 2023-06-22 01:53:38 -05:00
shard Switched to redis/postgres, major refactoring 2023-06-22 01:53:38 -05:00
tools refactoring; moved client to protocol package 2023-03-07 17:04:57 -06:00
.gitignore removed test.db 2023-03-09 15:33:39 -06:00
Dockerfile dockerfile: switch to scratch 2023-06-20 18:33:29 -05:00
README.md started docker image 2023-06-20 02:12:15 -05:00
build.sh Switched to redis/postgres, major refactoring 2023-06-22 01:53:38 -05:00
compose.yaml Switched to redis/postgres, major refactoring 2023-06-22 01:53:38 -05:00
go.mod Switched to redis/postgres, major refactoring 2023-06-22 01:53:38 -05:00
go.sum Switched to redis/postgres, major refactoring 2023-06-22 01:53:38 -05:00

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.