Giter VIP home page Giter VIP logo

peace's Introduction

PEACE

osu! server development framework ๐Ÿš€

Rust

Description

Make it easy for developers to build their desired osu! server or project

This framework provides a series of capabilities, including but not limited to: osu! bancho, osu! lazer, api v2, pp calculation, bancho packet read & write...

Welcome to Peace

Not "re-implementation"

Unlike other "re-implementation" projects for Bancho, this project is starting completely from scratch and will focus on scalability and composability. Moreover, implementing Bancho is just a small part of the process, as the ultimate goal is to achieve Lazer.

Microservice architecture

The biggest feature of "Peace" is its use of a microservice architecture. It consists of a group of services, which can be either remote or local. You can split any service and start each service independently, or you can combine all the services together to form a whole and start them separately. Alternatively, you can split any service as needed and run them on different servers.

Logic and State separation

Due to its distributed architecture, Peace can implement logic and state separation, allowing you to update the logic without restarting the service and without losing user sessions and all states. This means that you do not have to stop and restart the server every time you make an update.

Language is not limited

Moreover, the language is not limited, which gives developers great freedom. For example, you can use Python to write a flexible gateway service and then integrate it into the gRPC service written in Rust to handle Bancho logic. You can also write a Node.js service to replace the default Rust implementation. You just need to implement the RPC interfaces defined in the .proto file, and the switch can be seamlessly done.

Multiple databases supports

Peace supports multiple databases, including MySQL, PostgreSQL, and SQLite, giving you the freedom to choose your preferred database. With the support of SQLite, you can easily develop, debug, and run Peace locally.

xxx

This project is still in the development stage, and the architectural design is still in progress. Many of the logic has not been implemented, and the code structure may undergo major changes at any time. It is not guaranteed that the code you download will be usable.

Current status

WIP

Community

Discord

peace's People

Contributors

pure-peace 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

peace's Issues

Could not compile peace_dal with ambiguous name error

Compiling peace_dal v0.1.0 (/home/ubuntu/peace/frame/dal)
error[E0659]: `sea_orm` is ambiguous
 --> frame/dal/src/db/peace/migration/versions/create_seed_data.rs:1:5
  |
1 | use sea_orm::DbBackend;
  |     ^^^^^^^ ambiguous name
  |
  = note: ambiguous because of multiple potential import sources
  = note: `sea_orm` could refer to a crate passed with `--extern`
  = help: use `::sea_orm` to refer to this crate unambiguously
note: `sea_orm` could also refer to the crate imported here
 --> frame/dal/src/db/peace/migration/versions/create_seed_data.rs:2:5
  |
2 | use sea_orm_migration::prelude::*;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  = help: use `self::sea_orm` to refer to this crate unambiguously

error[E0659]: `sea_orm` is ambiguous
 --> frame/dal/src/db/peace/migration/versions/init_tables.rs:1:5
  |
1 | use sea_orm::DbBackend;
  |     ^^^^^^^ ambiguous name
  |
  = note: ambiguous because of multiple potential import sources
  = note: `sea_orm` could refer to a crate passed with `--extern`
  = help: use `::sea_orm` to refer to this crate unambiguously
note: `sea_orm` could also refer to the crate imported here
 --> frame/dal/src/db/peace/migration/versions/init_tables.rs:2:5
  |
2 | use sea_orm_migration::prelude::*;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  = help: use `self::sea_orm` to refer to this crate unambiguously

warning: unused `#[macro_use]` import
 --> frame/dal/src/lib.rs:1:1
  |
1 | #[macro_use]
  | ^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: unused import: `sea_orm::DbBackend`
 --> frame/dal/src/db/peace/migration/versions/create_seed_data.rs:1:5
  |
1 | use sea_orm::DbBackend;
  |     ^^^^^^^^^^^^^^^^^^

error[E0119]: conflicting implementations of trait `sea_orm::TryFromU64` for type `PpVersion`
   --> frame/dal/src/db/peace/entity/sea_orm_active_enums.rs:125:1
    |
125 | impl TryFromU64 for PpVersion {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: conflicting implementation in crate `sea_orm`:
            - impl<T> sea_orm::TryFromU64 for T
              where T: sea_orm::ActiveEnum;

error[E0119]: conflicting implementations of trait `sea_orm::TryFromU64` for type `sea_orm_active_enums::RankingType`
   --> frame/dal/src/db/peace/entity/sea_orm_active_enums.rs:136:1
    |
136 | impl TryFromU64 for RankingType {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: conflicting implementation in crate `sea_orm`:
            - impl<T> sea_orm::TryFromU64 for T
              where T: sea_orm::ActiveEnum;

error[E0119]: conflicting implementations of trait `sea_orm::TryFromU64` for type `sea_orm_active_enums::ChannelHandleType`
   --> frame/dal/src/db/peace/entity/sea_orm_active_enums.rs:149:1
    |
149 | impl TryFromU64 for ChannelHandleType {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: conflicting implementation in crate `sea_orm`:
            - impl<T> sea_orm::TryFromU64 for T
              where T: sea_orm::ActiveEnum;

Some errors have detailed explanations: E0119, E0659.
For more information about an error, try `rustc --explain E0119`.
warning: `peace_dal` (lib) generated 2 warnings
error: could not compile `peace_dal` due to 5 previous errors; 2 warnings emitted

Rijndael-cbc-256 in Rust currently not implemented

Rijndael-cbc-256 is used to decrypt the submit-modular score data sent by the client

e814598: add Python3 (Temporary rijndael decryption)

Because Rust does not have an implementation of the rijndael algorithm, it is temporarily solved with the built-in python3 interpreter.

This problem is temporarily solved by embedding the python3 interpreter in peace,
In the future, I may use Rust to implement this algorithm and remove python.

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.