Skip to content
This repository has been archived by the owner on Jul 24, 2020. It is now read-only.

Spile Design Information #1

Open
34 tasks
zorbyte opened this issue May 6, 2020 · 0 comments
Open
34 tasks

Spile Design Information #1

zorbyte opened this issue May 6, 2020 · 0 comments
Assignees
Labels
enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed

Comments

@zorbyte
Copy link
Owner

zorbyte commented May 6, 2020

NOTE: This issue is messy, I simply dumped my thoughts into words as fast as I could.
Some of the things mentioned here do not reflect what is currently happening in the repository as this was written prior to the Deno rewrite.
I will rewrite it and split it into separate issues for readability.

Spile is gonna be a lot of stuff to do... So, I need to figure out a lot of details before it is too late, these are some of those ideas just dumped into an issue.

Easy to use file layout, I hate hyper-focusing on this but when I get it right it makes life so much easier.

Prioritise power over ease of setup. Don't get me wrong, a good user setup experience is nice but this is intended for people who want something fast. Thus I'm going to make redis extensively.

Use FFI with rust... At first I was just considering this, but now I know I should definitely learn rust and use it here.

Other random considerations I thought of: Using elixir for TCP related stuff, its high concurrency is great for handling a lot of players at one time... Or maybe balerina, since it is great for micro-services and supports Java (great for compatibility with existing solutions).

Quick Note: Spile uses SemVer. Anything pre-1.0.0 is volatile and is subject to change at any time, thus the public API can change at any time.

Something worth mentioning: We are using Deno now.

Stuff:

  • Make Spile an importable module, and make the the end user executable another
    project.
  • Try and use more functional programming which utilises objects instead of using
    them for functionality.
  • A nice packet parsing pipeline that makes use of es6 proxies, type safety
    maybe event emitters.
  • An error API which forwards errors to a GUI, where maintainers may select errors
    to send to this repo or something.
    • Sentry for maintainers might be cool.
  • rcon client, I'm not integrating a console into this, the less I/O work, the
    better.
  • CLI to bundle the server, rcon client and error GUI into.
    • Commands called like spile server [opts] [config]
  • A neat monorepo setup.
  • A worker thread thing setup.
  • Usage of cluster.
  • Plugins, cross platform using gRPC or something... Also allow first class JS
    plugins (recommended)
    • Support for Spigot API through a Java Lib written using the plugin API.
    • Dedicated plugin worker_thread or cluster worker, with fast communication.
  • Terrain generation (WASM only, in this project through rust)
    • With support for custom ones that fit a spec.
  • Github Actions
  • i18n
  • Pretty much everything Notchian
  • Plugins with that.
  • Probably a lot more than this.

Game:

  • Terrain Generation (See above)
  • Redstone
  • Physics
    • Explosions
    • Fluid dynamics
  • Anvil Storage
  • Lighting
  • Mobs
    • Path finding

Worry about this later:

  • Bungeecord like thing
    • spile occy [server_ips...] [config file (probs with that)
    • Also support env vars in that cmd (and security keys???).
    • Probably call this project occystrap or occy, because it's slang for
      bungee cord in Australia.
    • Probably where elixir might be useful.
    • IDK about this, but k8s???
  • Docker Configs
  • Logo
@zorbyte zorbyte self-assigned this May 6, 2020
@zorbyte zorbyte added the enhancement New feature or request label May 6, 2020
@zorbyte zorbyte changed the title The Checklist for v0.1.0 The Checklist for v1.0.0 (or earlier, idk) May 6, 2020
@zorbyte zorbyte changed the title The Checklist for v1.0.0 (or earlier, idk) The Checklist for v1.0.0 May 6, 2020
@zorbyte zorbyte pinned this issue May 6, 2020
@zorbyte zorbyte added help wanted Extra attention is needed good first issue Good for newcomers labels May 8, 2020
@zorbyte zorbyte changed the title The Checklist for v1.0.0 Was that the bite of '87? (v1.0.0 Checklist) May 8, 2020
@zorbyte zorbyte changed the title Was that the bite of '87? (v1.0.0 Checklist) Was that the bite of '87!? (v1.0.0 Checklist) May 8, 2020
@zorbyte zorbyte changed the title Was that the bite of '87!? (v1.0.0 Checklist) Spile Design Information Jun 13, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

1 participant