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.
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.
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.
-
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.
-
If you do not have a Fer.al client, you can download it from https://emuferal.ddns.net/feraldownloads/win64/b444802d2ab386d50f57f641ff74422471910210fc9ef1faf3631404a8401630.7z
-
After downloading, extract the
.7z
file and the client should be in the folder namedbuild
. -
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.
-
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.
-
Run the client, it should generate the assemblies for the game, note that first startup always takes a very very long time.
-
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 toferaltweaks/lib/feral
(you may need to create this folder) -
Create the folder
run
inferaltweaks
, 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... -
Run the following command in the root of the project
dotnet build
- You can find the built mod at
feraltweaks/run/FeralTweaks/mods/feraltweaks
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.
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.
Each server module project is built with Gradle, you will need Java 17 on your device for this.
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
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
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.
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.