gopenfusion/README.md

30 lines
1.8 KiB
Markdown
Raw Normal View History

2023-03-07 00:39:41 +00:00
# gopenfusion
<p align="center">
<a href="https://github.com/CPunch/gopenfusion/actions/workflows/tests.yaml"><img src="https://github.com/CPunch/gopenfusion/actions/workflows/tests.yaml/badge.svg?branch=main" alt="Workflow"></a>
<a href="https://github.com/CPunch/gopenfusion/blob/main/LICENSE.md"><img src="https://img.shields.io/github/license/CPunch/gopenfusion" alt="License"></a>
<br>
<a href="https://asciinema.org/a/625524" target="_blank"><img src="https://asciinema.org/a/625524.svg" /></a>
</p>
2023-03-07 00:39:41 +00:00
2023-12-02 23:04:06 +00:00
A toy implementation of the [Fusionfall Packet Protocol](https://openpunk.com/pages/fusionfall-openfusion/) (see: `cnet/`) and accompanying services, written in Go.
2023-03-07 18:39:12 +00:00
## Landwalker demo
2023-03-10 06:58:29 +00:00
2023-08-23 23:05:03 +00:00
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). There is minimal support for NPCs, and minimal support for player interaction (chat & player movement being mostly it).
2023-03-10 06:58:29 +00:00
2023-06-20 07:12:15 +00:00
Startup the environment using
```sh
$ chmod +x ./build.sh && ./build.sh
$ docker compose up
```
2023-08-23 23:38:14 +00:00
The environment consists of a shard service, login service, redis && postgres containers. redis is used to pass login metadata between the login and shard services, while postgres is just used to store player accounts and characters.
2023-06-20 07:12:15 +00:00
login server is hosted at `127.0.0.1:23000`, just join from your [favorite client](https://github.com/OpenFusionProject/OpenFusion/releases/latest)
2023-03-07 18:39:12 +00:00
## Generating structures
2023-06-20 07:12:15 +00:00
Dump and decompile the `Assembly - CSharp.dll` assembly from the fusionfall main.unity3d, using a tool like [ilspycmd](https://www.nuget.org/packages/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.