Xerosigma / Booma.Server

Phantasy Star Online: Blue Burst server emulator implementation based on Booma/Booma.Proxy emulation library using GladNet4.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Booma.Server

Booma.Server is a C#/.NET Phantasy Star Online: Blue Burst server emulator backend implementation based on the Booma emulation library called Booma.Proxy.

Utilizing GladNet4 and the powerful FreecraftCore.Serializer allows the project to be written productively and at a high-level when compared to traditional emulation.

Services


Patch

Patch Service: TCP Server Application that defaults to running on port 11000. Protocol based on Booma.Packet.Patch. See the documentation for valid message/packet types.

This service is unfortunately low priority and of low usefulness and so minimal emulation for the PSOBB patching protocol will be implemented. It's suggested a non-emulated patching solution be utilized for patching the client instead.


Login

Login Service: TCP Server Application that defaults to running on port 12000. Protocol based on Booma.Packet.Game. See the documentation for valid message/packet types.

This service is redirected to by the Patch Service and acts as a TCP endpoint for PSOBB clients to initially authenticate through. The process for logging into a TCP service on the PSOBB backend is the same across almost all services, this process is not exclusive to the Login Service. The client sends a Login93 packet after the Welcome Packet from the service is sent. These two packets are critical to establishing a valid session from the server and PSOBB client. They initialize the crytography for the session and authenticate the user.

The Login Service exists only to validate the credentials of the user or send them back to the Titlescreen. If authentication is successful it will Redirect them to the Character Service. This login process happens across all services and the Login Service itself does not actually perform the authentication of the session. The Auth Service does this.


Auth

Auth Service: A stateless scalable ASP Core HTTP API for OAuth/JWT authentication and authorization. Based on the Glader.ASP.Authentication library.

This service is responible for actually authenticating a user based on credentials provided. Issues JWT (Java Web Tokens) for authorizing against other authorization required services. Services that require Authentication should send requests to this service. Login processses across all backend services depend on this service.


Service Discovery

Service Discovery Service: A stateless scalable ASP Core HTTP API for discovering named services and routing. Based on the Glader.ASP.ServiceDiscovery library.

This service is responible for allowing the backend services to discover eachother by service type/name. For example, the Login Service asks the Service Discovery Service the endpoint for the Auth Service so it can perform authentication. It acts as the "Service Registry" as described by NGINX's article Service Discovery in a Microservices Architecture.


Character

Character Service: TCP Server Application. Protocol based on Booma.Packet.Game. See the documentation for valid message/packet types.

This service is responible for serving the the PSOBB client data about: Parameter Structures, Characters and the account Guild Card data. It is a proxy for the PSOBB server to access character data to generate the character list as well as create a character. However the actual actions and data are not handled on this service. That is handled on the Character Data Service.


Character Data

Character Data Service: A stateless scalable ASP Core HTTP API for RPG character data. Based on the Glader.ASP.RPGCharacter library.

This service is the service actually responsible for character data. Allowing the backend to create, modify, enumerate and query data about characters. In PSOBB the character data is global but this is not encoded into the design of the Character Data Service. The service can run as either a global service or within a GameServer cluster.


Game Server List

Game Server List Service: TCP Server Application. Protocol based on Booma.Packet.Game. See the documentation for valid message/packet types.

This service is responsible for delivering the Game Server (Ship in PSOBB terminology) list to the client. It utilizes the global Service Discovery Service to enumerate all known Ship endpoints and delivery them to the PSOBB client. It acts just as a TCP proxy for SHIP ServiceType service discovery.


Credits

This project is built on top of 20 years of reverse engineering work done by many in the PSO community. Much was learned and owed to some of the following projects such as: Sodaboy's proxy, Sylverant's opensource C++ DC/BB/GC server implementation and one of the most recent public Tethella releases.

Special thanks to @Soly for implementing and explaining the cryptography involved and his continued contributions to the underlying library that powers this server emulator found at: Booma.Proxy

A complete list of people who helped make this possible can be found here: Contributors.md

License

Contributions including pull requests, commits, notes, dumps, gists or anything else in the repository are licensed under the below licensing terms.

AGPL 3.0 with a seperate unrestricted, non-exclusive, perpetual, and irrevocable license also granted to Andrew Blakely

About

Phantasy Star Online: Blue Burst server emulator implementation based on Booma/Booma.Proxy emulation library using GladNet4.

License:GNU Affero General Public License v3.0


Languages

Language:C# 100.0%Language:Batchfile 0.0%