Skip to content

jackssrt/pengui-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pengui-server

a rust rewrite of yno-server, aiming to be a drop-in replacement while also being faster and more stable.

production

setup

these instructions can also be adapted to run the original go implementation, since that doesn't have any setup instructions

  1. start downloading the game you want to host
  2. generate a preshared key for the client and server and place it in /key.bin
  3. build with: just build
  4. look in /target/release, that's where the pengui-server executable is
  5. get an instance of mariadb initialized with /sql/init.sql or use your already existing ynoserver database
  6. create a config.yaml where you're running the executable following the development config in the root of the repo
    ie if running ./pengui-server in /target/release create /target/release/config.yaml
    or specify path to config using --config
    right now it contains all the fields from ynoserver, most of which aren't used yet just leave them empty or with the bogus values from the development config
  7. run the produced executable
  8. use or create an nginx config that routes traffic to the created socket in /sockets/{game_name}.socket
    where {game_name} is the game_name field of the config
  9. optional - accept docker and just start using that please

development

setup

  • symlink a copy of yume 2kki to /2kki
    • so the map (*.lmu) files are directly in /2kki/*.lmu
  • generate or grab the key.bin from the ynoengine wasm binary which your testing client(s) use and put it in /key.bin

running

  1. docker compose up -d
  2. just run

useful commands

  • check: just check
  • format: just fmt
  • fully reset database: just devdb
    • this will delete the entire database and rebuild it from scratch using /db/init.sql
    • when the entire database has been reverse engineered we will switch to proper sqlx migrations

license

this project is bound by the AGPL-3.0 license because it contains a lot of ported code from the original go implementation. even though most rust projects are dual licensed under the MIT license and the Apache-2.0 license, this project is still licensed under the AGPL-3.0 because of its restrictions on derivative works.

progress

  • room websocket
    • client handler
      • message signing
    • switch room (partial)
    • movement
    • facing direction
    • flashing
    • tone
    • transparency & visibility
    • system graphic
    • sound effects
    • battle animations
    • changing sprites
    • pictures (experimental)
    • syncing switches (partial)
    • syncing variables (partial)
    • syncing events
    • these sync events require a lot of supporting infrastructure, which i haven't made yet
    • animation commands
  • session websocket
    • client handler
    • player count
    • setting name
    • chat messages
    • expeditions
    • setting private mode
    • player info
    • ...
  • api (partial)
    • friends
    • parties
    • badges
    • admin
    • player info
    • save syncing
    • reporting
    • notifications
    • events
    • screenshots
    • ...
  • infrastructure
    • database, ask for newer schema dump?
    • current player registry
    • router
    • authentication middleware
    • moderation middleware
    • minigames (needs a refactor)
    • ipc
    • config
    • command line
    • assets
    • production docker file
    • documentation
    • ...

other projects

also check out pengui-ball, the rust rewrite of the frontend.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages