A toy implementation of the FusionFall Packet Protocol in Go
Go to file
2023-03-27 17:02:13 -05:00
config major refactoring: db.Player is now core.Player 2023-03-22 00:30:58 -05:00
core server/shard: added UpdatePlayer(), which should be used whenever player struct state needs to be updated to prevent race conditions 2023-03-26 21:08:13 -05:00
login server: split login/ and shard/ 2023-03-27 17:02:13 -05:00
shard server: split login/ and shard/ 2023-03-27 17:02:13 -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
build.sh server: split LoginServer, new Server interface 2023-03-07 14:47:49 -06:00
go.mod update module name to reflect repo 2023-03-10 01:02:28 -06:00
go.sum major refactoring; started DB 2023-03-09 01:48:13 -06:00
main.go server: split login/ and shard/ 2023-03-27 17:02:13 -05:00
README.md server: split login/ and shard/ 2023-03-27 17:02:13 -05:00

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.

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.