Skip to content

Commit

Permalink
Merge pull request #44 from Skullians/rewrite/v3
Browse files Browse the repository at this point in the history
modify rewrite/v3 readme & roadmap (basic)
  • Loading branch information
Sweattypalms authored Sep 16, 2024
2 parents 8177bb8 + 5313210 commit 37b4320
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 56 deletions.
16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# FerrumC rewrite v3
# Ferrumc Rewrite [v3]

> [!WARNING]
> FerrumC is going through a major rewrite. This branch contains all of the new code.\
> To view the original code, go to the [dev branch](https://github.com/ferrumc-rs/ferrumc/tree/dev).
This is the FerrumC branch for the rewrite version 3.

If you want to visit the original versions:

https://github.com/ferrumc-rs/ferrumc/tree/dev
or
https://github.ferrumc.com
# Roadmap
To view the roadmap, see [plans.md](assets/plans/plans.md)

> [!IMPORTANT]
> Use pull requests instead of direct pushes.
101 changes: 53 additions & 48 deletions assets/plans/plans.md
Original file line number Diff line number Diff line change
@@ -1,67 +1,72 @@
# FerrumC rewrite v3
<img style="width: 100%" src="https://github.com/ferrumc-rs/ferrumc/blob/dev/README/assets/header.svg?raw=true" alt="FerrumC Header">

### Plans:
# Ferrumc Rewrite
> [!WARNING]
> FerrumC is going through a major rewrite. This branch contains all of the new code.\
> To view the original code, go to the [dev branch](https://github.com/ferrumc-rs/ferrumc/tree/dev).
plugins
- basic api right away
- wasm
- extism??
> [!IMPORTANT]
> Use pull requests instead of direct pushes.
events
- nice and clean events system
- runtime registration (to allow plugins to work)
- extremely fast (a lot of systems would heavily rely on this )
- cancellable events
## Roadmap (subject to change):

ecs
- basic stuff like components
- excellent iterators
- with tokio? optimized stuff?
- [ ] Plugins
- [ ] Basic API (right away)
- [ ] WASM
- [ ] [Extism???](https://extism.org/)

chunks
- better format? throw away generation status and stuff
- only read the necessary data (tapes) ; simdnbt?

network encoding
- helpful derive macro like `#[derive(NetEncode)]` and `#[derive(NetDecode)]`
- support encoding options (omit packet size, compressed, and shit like that)
- [ ] Events
- [ ] Clean & Nice impl
- [ ] Runteim registration (for plugins)
- [ ] Light and efficient (heavily relied on)
- [ ] Cancellable Events

nbt
- custom tapes based reader and writer + GPU accelerated parsing
- implement methods for nbt to be network encoded, since i forgot that the first time

database
- lmdb (k/v store)
- hash(key) => value
- [ ] ECS
- [ ] Basic impl (components, etc)
- [ ] Excellent iterators
- [ ] [Tokio](https://github.com/tokio-rs/tokio) for better optimisation?

packet
- have a nice API (current way for parsing if fine, with derive macros)
- use events to handle them
- allow plugins to listen / interact with packets. cancel them etc
- both in and out
- server handles event on priority u8::MAX/2
- support compression (handled by network encoding)
- auto initialized with "reflections", read through every file basically
- support multi versions directly. map versions packet id and shit

redstone
- compile redstone and make it fast and accurate
- [ ] Chunks
- [ ] Better format?
- [ ] Only read necessary data (tapes) - simdnbt?


misc
- horizontal scaling?
- [ ] Network Encoding
- [ ] Helpful derive macro like `#[derive(NetEncode)]` & `#[derive(NetDecode)]`
- [ ] Support encoding options (omit packet size, compression, etc)


encryption
- mojang authentication and stuff
- [ ] NBT
- [ ] Custom tapes based read + writer
- [ ] Implement methods for nbt to be network encoded


error handling
- actually consistent error handling
- [ ] Database
- [ ] [LMDB](https://en.wikipedia.org/wiki/Lightning_Memory-Mapped_Database) (K/V Store)
- [ ] Hash(key) => Value

organization
- use workspaces

- [ ] Packets
- [ ] Functional API
- [ ] use Events system for handling
- [ ] Server handles on priority u8::MAX/2
- [ ] Plugin support (listening, interacting, canceling, etc)
- [ ] Auto init with reflections
- [ ] support multiple versions (map versions packet id etc)


Tips:
- Pull request instead of direct pushings.
- [ ] Redstone
- [ ] Compile redstone, lightweight impl (fast & accurate)


- [ ] Misc
- [ ] Horizontal Scaling?
- [ ] consistent error handling
- [ ] use workspaces (organisation)


- [ ] Encryption
- [ ] Mojang Auth etc

0 comments on commit 37b4320

Please sign in to comment.