Giter Club home page Giter Club logo

centuria's Introduction

Build License: GPL v2

Centuria

Centuria is a work-in-progress server emulator for the now-defunct MMORPG Fer.al. Developed by a group of developers from the Fer.ever project, Centuria is a fan-run server designed to bring back the MMO game that recently shut down.

Building Centuria

To build Centuria you will need to have Java 17 JDK installed. Centuria is build using gradle.

Building on Windows

On windows, run the following commands in cmd or powershell::

Download dependencies:

mkdir deps
git clone https://github.com/SkySwimmer/connective-http deps/connective-http

Set up a development environment (optional):

.\gradlew eclipse

Build the project:

.\gradlew build

Building on Linux and OSX

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

Configure permissions:

chmod +x gradlew

Download dependencies:

mkdir deps
git clone https://github.com/SkySwimmer/connective-http deps/connective-http

Set up a development environment (optional):

./gradlew eclipse createEclipseLaunches

Build the project:

./gradlew build

After building

After building, you can find the compiled server in build/Installations, you can run the server by starting centuria (either the shell or batch script depending on your OS)


Note about self-hosted servers

Due to the lack of a easy-to-use launcher, hosting a server yourself may prove difficult. You will need to edit your client's Fer.al_Data/sharedassets1.assets and swap out the server endpoints, however this can be tricky, you may run into string length issues. (a guide will be made in the near-future)


Built-in Client mods

Centuria comes with a few client mods in its main repository.

Module org.asf.centuria.client.plugin

This module is designed by Owen to swap out the game asset URLs, its still a bit untested here and there but seems to work.

Building this Client Mod:

(written by Owen) You will need a unhollowed version of the fer.al game assembly (Assembly-CSharp.dll) to build / run the client mod. The hollowed version of the fer.al assembly is generated by the BepinEX client when first ran, in "client\build\BepInEx\unhollowed". Place it into the "clientmods\org.asf.centuria.client.plugin\lib\feral" in this repository to be able to build the client mod.

I have plans to write the plugin to be able to self-retrieve the assembly when ran. But in order to build it, you MUST manually obtain and move the fer.al game assembly.

Installing this Client Mod

After building the client mod, you should find the dll in bin/Debug/netstandard2.1, copy the dll to a folder named org.asf.centuria.client.plugin in the bepinex plugins folder and it should load.

centuria's People

Contributors

cpeers1 avatar joey743 avatar skyswimmer avatar sweetfox86 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

centuria's Issues

Java --> C# Conversion?

I need to think if I want to stick with Java, or switch over to a more comfortable language in C#.
C# is fer.al's native language and one I personally prefer, but there's already a lot of work on it in Java.
Worth investigating sometime, curious to know people's thoughts

Refactor Sanctuary Systems

I want to redo how the code works with sanctuaries.
Currently it uses an accessor, which I don't like since it doesn't follow OOP.
OOP says the sanctuary should have an object itself that you can call methods on.
I have the idea of making the sanctuary component item from the new component system the new sanctuary 'objects'.
Its just a matter of moving methods onto them.

Make Player Privacy Setting Class

As a Developer, I would like to access player vars more easily then the current implementation, so that I can work with them easier in other classes and functions.

AC:

  • A player privacy settings class is created, that can access and set player privacy settings.
  • The player class has a reference to this player privacy settings class.

Add a Password Field for Registration

Users get confused about what their password should be.
I think there should be a password field during registration that sets your password.
It also stops the scary notion of someone stealing your account by logging into it with a p/w before you set it

Sanctuary Item Limit Corruption

When exceeding the max amount of items placeable in a sanctuary, it doesn't stop you from placing the item, but instead refuses to load your sanctuary if it has too many items in it. This needs to be fixed by adding a new feature where it checks when placing an item into a sanctuary to see if theres room to add it or not.

  • Add check upon sanc update to ensure item limit isn't being exceeded by this update call.
  • Add sytem for trimming sanc update list to fit within the limit
  • Add a external tool that will check and auto resolve players sanc item counts that can be run during release (to fix people who have the issue already, it should just cut the excess items)

Trading Placed Funiture = BAD

I'm not sure what will happen but it will be ugly
Need placed funiture's tradeable flag to be false
or something similar

Create Database For Centuria

There's a lot to do to move over to a proper database model for centuria:

(DEPENDENT ON #33 )

  • Research + Choose Database To Use
  • Create DB schema scripts
  • Create something that makes Centuria DB from blank db
  • Create code that uses the DB
  • Create migration scripts for transfering JSON over to the DB

Create Installer Package for Launcher

The launcher should be installed using a installer. There should be different compiled installers for various os's, minus linux, since linux needs to use wine to run the fer.al client.

Implement AddItem Command

Player focused implementation of a chat command that will give items. Needs to accept item names and translate them to def id's. Should only be available in creative servers.

Chat Command to Reset Sanctuary

A chat command that wipes and resets a players sanctuary and sanctuary upgrade progression / saved looks.
Useful for if players have corrupt sanctuary data.

Populate ReadMe with Information

Need:

  • Installation Guide
  • Configuration Guide
  • Everything needed to know about hosting your Own Centuria Server
  • Q+A
  • Contribution Guidelines
  • ???

Create Backend API for Registration

I need to host some sort of API endpoint for registering accounts with Fer.alRewritten. That way, I can host a front end site to accept registration requests instead of using the discord bot.

Implement Lockpicking

Planned implementation of lock picking:

  • System for spawning lockpicking chests
  • Lockpicking minigame should function
  • Lockpicking should give proper rewards

Sanctuary Build Times

Sanctuary build times currently don't function properly. All sanctuaries stages/upgrade build instantly.
There is some research into why this happens, and what can be done to solve it, and then implementation work into actually making it work.

Implement Trading Functionality

  • Create Packet Handlers for Trade System
    • Implement Packet Handler for TradeInitiate
    • Implement Packet Handler for TradeInitiateReject
    • Implement Packet Handler for TradeInitiateCancel
    • Implement Packet Handler for TradeInitiateAccept
    • Implement Packet Handler for TradeAddRemoveItem
    • Implement Packet Handler for TradeReady
    • Implement Packet Handler for TradeReadyAccept
    • Implement Packet Handler for TradeReadyReject
    • Implement Packet Handler for TradeExit
  • Create Packet Handlers for Trade List System
    • Implement Packet Handler for TradeList
    • Implement Packet Handler for TradeListUpdate
  • Create class that represents a trade.
    • Needs methods for Adding + Removing Items.
    • Needs to be connected to the trading players.
    • Needs methods for accepting, rejecting, exiting, etc..
  • Create classes/storage for player's trade lists.

Create Troubleshooting Tools for Centuria Client

There should be a troubleshoot tool for the Centuria/Feral.Rewritten Client that will check connectivity to the servers and that there are no blockers to the process, and provide appropiate feedback so support members can help with issues.

'Phantom Player' issue - Room Syncing Issue

Some players are reporting seeing 'phantom players' - likely a result of room syncing failures?
Seems to mostly happen inside of Sanctuaries espically
Some further research is needed into the exact cause of this

Social Lists Don't Do Paging Properly

The current implementation for social lists doesn't properly do paging.
This results in weird problems with the social lists.

  • Implement Paging for Following List
  • Implement Paging for Followers List

Research DB options for Centuria

I want to move over our current data storage system to use a database of some sorts.
I'm willing to look at both NO-SQL and SQL options.

  • Research database options for Centuria
  • Create pros and cons for each
  • Choose a recommendation
  • Present to Devs

Improve Login Process

I need to think of ways to improve the login process since people are having issues logging in.
The goals should be:

  • Reduce Login Strain + Time on Server
  • Maybe(Somehow) Provide better feedback for login failures (Is it possible to send custom login fail messages to the client?)

Chat Room Joining/Leaving Issues

People are reporting being able to hear chat from other places in game.
There must be a gap in teleportation / transition logic somewhere allowing this.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.