/Centuria-Modding

Modding repository for the Centuria project

Primary LanguageC#GNU General Public License v2.0GPL-2.0

FTL Loader Build (Win64) FTL Loader Build (OSX)

The Centuria Modding Project

This is the repository for the official Centuria modding project. This repository contains client modding code and server modules designed to patch up and modify parts of the original game.

Centuria is a work-in-progress server emulator for the now-defunct MMORPG Fer.al. The main server project can be found here. Centuria is developed by a group of developers from the Fer.ever discord. The software was originally released by the AerialWorks Software Foundation (SkySwimmer's small organization) but is now owned Owenvii.

Note that this project is a HEAVY WIP and subject to change. Currently the android mod is not yet functional, only the desktop mod, launcher and server module PARTIALLY work.


Building the client mods

The project is split up into multiple parts, feraltweaks, feraltweaks-bootstrap (FTL modloader), the launcher and the server modules needed for the mod handshake and mod download system.


Building the Desktop client mod (feraltweaks)

Feraltweaks is a FTL mod, in order to build it you will need .NET cli installed. You will also need to have a original fer.al client in order to mod it.

  1. Firstly, you need a Fer.al client, you can download it yourself from the EmuFeral servers or by using the one downloaded by the EmuFeral launcher.

  2. If you do not have a Fer.al client, you can download it from https://emuferal.ddns.net/feraldownloads/win64/b444802d2ab386d50f57f641ff74422471910210fc9ef1faf3631404a8401630.7z

  3. After downloading, extract the .7z file and the client should be in the folder named build.

  4. After that, you will need to install the FeralTweaks loader, you can download it from the github workflows, select your platform and select the latest build.

  5. Extract the zip in the fer.al client, after extracting you should have the Fer.al exe, FeralTweaks folder and Fer.al_Data folder and some other files in the same folder.

  6. Run the client, it should generate the assemblies for the game, note that first startup always takes a very very long time.

  7. After the first run, FTL will have generated the proxy assemblies in FeralTweaks/cache/assemblies. These are the client assemblies, which are needed to build the mod, copy the contents of that folder to feraltweaks/lib/feral (you may need to create this folder)

  8. Create the folder run in feraltweaks, and copy your client to it (make sure to include FeralTweaks while copying), it should end up looking like this:
    -- feraltweaks
    --- lib
    ---- feral
    ----- Assembly-CSharp.dll
    ----- Assembly-CSharp-firstpass.dll
    ----- etc...
    --- run
    ---- CoreCLR
    ---- Fer.al_Data
    ---- FeralTweaks
    ---- Fer.al.exe
    ---- winhttp.dll
    ---- etc...

  9. Run the following command in the root of the project

dotnet build
  1. You can find the built mod at feraltweaks/run/FeralTweaks/mods/feraltweaks

Using the Desktop mod

After putting the mod folder in the FeralTweaks/mods folder of your client (you may need to create this directory), it should load automatically as long as you have FTL installed. Note that the client mod doesn't have content, content is streamed (or will stream) from the server.

You can however change client-specific options in FeralTweaks/config/feraltweaks/settings.props which contains some settings you may find useful. Note that client settings are overriden by the server when playing on a feral-tweaks enabled Centuria server.


List of server modules

Here is the list of server modules that are a part of the project:

  • feraltweaks-server-module: core server logic required for some features of the client mod. This module provides required handshake logic for chat and game bindings and provides a way for servers to keep client mods up-to-date.
  • gcs-for-feral: group chats for Fer.al, technical side functions like DM conversations which is why thet are vanilla-compatible. GCs are created via commands and work on both vanilla and modded clients, modded clients distinguish GCs from DMs and separate them into two tabs.

Building the server modules

Each server module project is built with Gradle, you will need Java 17 on your device for this.


Building on Windows

On windows, run the following commands in cmd or powershell (inside a module subdirectory):

Set up a local server to build against:

.\createlocalserver.bat

Set up a development environment (optional):

.\gradlew eclipse createEclipseLaunches

Build the project:

.\gradlew build

Building on Linux and OSX

On linux, in bash or your favorite shell, run the following commands in a module subdirectory: (note that this requires bash to be installed on OSX, most linux distros have bash pre-installed)

Configure permissions:

chmod +x createlocalserver.sh
chmod +x gradlew

Set up a local server to build against:

./createlocalserver.sh

Set up a development environment (optional):

./gradlew eclipse createEclipseLaunches

Build the project:

./gradlew build

Installing the modules on a Centuria server

After building, modules will be placed in build/libs (of the module subdirectory), simply copy the jar file into the modules folder of a Centuria server.

Exception to this build directory

Apart from centuria-discord, all modules build in build/libs, however the Discord bot module has more dependencies. After building, you should copy the contents of build/moduledata to the server directory. This directory includes all dependencies of the module.