A toy implementation of the FusionFall Packet Protocol in Go
Go to file
CPunch 70e42b5d79 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
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
server 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
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
README.md 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
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 major refactoring: db.Player is now core.Player 2023-03-22 00:30:58 -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 server/. 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 located in 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.