My thoughts on the library, from the consumer side.
See original GitHub issueone of my problems with colyseus is that although it might be small, theere are many intricacies regarding handling room events, different kinds of messages (as in emit vs state change), what is the EXACT behavior to expect, and so on.
I’ve started a unity game, and used colyseus. First thing’s first - the colyseus unity client is not something I would gladly recommend someone to use… the apis are uncomfortable, code is outdated… I mean - just opening visual studio and looking at the amount of errors shows you what’s going on.
Second of all - handling game state. I think the idea behind the game state patches is good - long as it is for netcode.
Handling these changes in the client side is not something you’d want to deal with, but instead, I’d rather have the framework deal with it - sorta reduce style:
state = func(prevState, patch)
.
And have the client side framework inform you of changes in a more user friendly way.
When I thought about all the code I’d have to maintain to be able to just scale my game in terms of how much types of data I pass, I was getting nauseous…
That and - there has to be a full, thorough tutorial to using the framework - client side and server side.
Most of the development felt like trial and error. Especially on the client side.
This framework has a lot of potential, it’s so elegant and at first, it feels like you can get some really nice stuff done with it. But eventually it all came down(for me) that the development experience on the client side, especially with Unity, felt downright horrible.
I’m not giving up on using the library, I’ll definitely try to make some cool JavaScript based game(I imagine the client side is much simpler in js).
I would love to discuss more about this. I don’t want to just come and rant about this being a shitty framework, because it isn’t.
Issue Analytics
- State:
- Created 5 years ago
- Reactions:4
- Comments:8 (7 by maintainers)
@endel @seiyria Could be worth considering having a Discord Server for Colyseus? I know we have a Gitter, but Discord has many more benefits (More people use it, free VOIP servers etc.), could prove useful in areas like this for the (bright) future. Sorry if I’m going off-topic now, just getting a few ideas from the ideas flowing in this issue.
Thanks for taking your time to share your experience @gioragutt!
I totally agree with you - the C# client is very painful to use. It’s necessary to typecast every single value coming from the server, which is unproductive. The same problem would be true for an eventual C/C++ client.
I’m currently researching some alternative concepts for patching, like flatbuffers and avro, which are suitable for statically typed languages. This is also a big change, as in https://github.com/gamestdio/colyseus/issues/176#issuecomment-449371515
This year was great to receive some feedback - like yours - and more use cases. Hopefully next year it will be the time to prepare tutorials. It requires a lot of effort to carefully make and write them, though. (I’m not a native english speaker, and it takes a lot of thought to write anything, even this post 😯)
❤️