hematite_server icon indicating copy to clipboard operation
hematite_server copied to clipboard

Basic functionality roadmap

Open toqueteos opened this issue 9 years ago • 9 comments

If you want to contribute to hematite_server this roadmap might help you! Order is relevant.

  • [x] Login (online-mode=false). Done in #40! :tada:
  • [ ] Implement concept of world. Dimensions ticking in sync! Example: http://is.gd/oGH1Yr (this is example code, a real version wouldn't clone every world on every tick ofc)
  • [ ] Keep track of entity positions. Just the player's position with some simple checks (moving too fast, send Disconnect packet) should be enough to get going. Example: HashMap<String, Position> which will come handy when we start adding more entities.
  • [ ] A working chunk loader. Once we know where the player is we can load and unload his/her surroundings.
  • [ ] Chat. Basically just echoing back whatever the player writes. This would allow people to start working on commands.
  • [ ] Time handling. Having /time working would be great, also time being updated accordingly every now and then just to keep players in sync.
  • [ ] Basic inventory handling. Moving items around in their inventory, including bottom bar.
  • [ ] Digging mechanics. This involves actually breaking blocks and spawning entities so the player can pick them up. Quite a milestone.
  • [ ] Dropping items. We already had the inventory working and know how to spawn entities, should be easy.
  • [ ] Illumination. If we start breaking blocks, we should update lighting accordingly?

toqueteos avatar Dec 20 '15 01:12 toqueteos

I suggest adding/agreeing upon an 'api' to allow concurrent development.

Such as defining what arguments the chunk-loader will take, what it's responsibilities are, and what it returns.

Also so no needs to wait for another to be implemented

RichardlL avatar Dec 20 '15 01:12 RichardlL

@RichardlL There a ton of components to be defined, being so few people actually developing I think the best workflow is submitting proposals (pseudocode or working code), discussing them until quorum is met and merging. Otherwise we'll waste too much time.

Regarding the chunk loader feel free to send in your proposal for review!

/cc @fenhl

toqueteos avatar Dec 20 '15 01:12 toqueteos

I'd like to get started on world management.

I would like to implement it based on my proposal in #97, henceforth named Allocater / Worker as requested by @fenhl #100,

So implement

  • 1.9 world format
  • Requests based on channels, while abstracted by regular functions for ease of use
  • public function chunk_send()
  • Internally, Possibly Incorporating hematite base's chunk loader

public funtion `chunk_send`` to take

  • A slice of Tuples, each a (i32,i32) x z coordinate for chunks,
  • A mutable reference to a TcpStream Returning Error if unable to generate map or unable to send.

RichardlL avatar Dec 20 '15 01:12 RichardlL

@toqueteos Bump

RichardlL avatar Dec 23 '15 16:12 RichardlL

Hello, I'm interested in getting invovled! On this list what isn't being tackled by anyone yet?

JamesLaverack avatar Jan 26 '16 22:01 JamesLaverack

@JamesLaverack I think everything is free but the first two and chat. /cc @fenhl

toqueteos avatar Jan 26 '16 23:01 toqueteos

I'm not currently working on or tracking anything on this list.

fenhl avatar Jan 27 '16 00:01 fenhl

@toqueteos Who's working on chat? Is there a branch for it somewhere?

JamesLaverack avatar Jan 27 '16 23:01 JamesLaverack

@JamesLaverack https://github.com/PistonDevelopers/hematite_server/pull/106 contains some changes to the Chat type. There's also some related issues opened. Knowing that you can also work on Chat without problems.

toqueteos avatar Jan 28 '16 13:01 toqueteos