/server

Next-gen server for Yukon

Primary LanguageTypeScriptMIT LicenseMIT

Puffle Server

Puffle is a next-gen Yukon-inspired "any game" private server.

⚠️ Puffle is under development and one or more features of Yukon may not yet be available.
You can check the current status on the Projects tab.

🃏 Features

  • TypeScript: Uses TypeScript instead of JavaScript, getting all the benefits of the language.
  • Validation: Strong validation of all user input thanks to ajv.
  • Multi-threaded: Each world/server runs in its own node.js process efficiently.
  • Cache Manager: Various ways of storing the cache (like Redis). (Not yet implemented).
  • ORM: Thanks to Prisma, it is possible to use several types of databases.
  • Fastify: Uses the high-performance Fastify as a web server.
  • Configurable: Highly configurable through the use of JSON-based config files.

🚀 Deploy

⚠️ This code has breaking changes that make it incompatible with the Yukon client. A modified client can be found here.

The easiest way to deploy is by using Docker!
For your convenience, we have a repository with recommended Docker images and scripts to run a full copy of the client and server.
Jump to the Docker repository

🛠️ Develop

This repository has VSCode dev containers, making it possible to run the code effortlessly.

  1. Install Docker and the VSCode's Dev Containers extension.
  2. Start the container and install the Node dependencies inside the container (pnpm i).

You may need to edit the configuration file (config/config.json) to make Fastify run on any interface.

📝 Changelog

Read the commits for a comprehensive list of changes.

👍 Acknowledgements

  • wizguin - For creating Yukon and making this project possible.

📜 License

Licensed under MIT License.