Hello everyone, the holidays are coming with new projects and ideas for SmoothStep2D. First of all, you must know that I’m doing a game! I don’t know when this game will be finished, or even if the final version will be implemented in javascript, today it’s a prototype that I implemented really fast thanks to SmoothStep2D, and at the same time, doing a project like this, make me know about some bug corrections, and possible improvements that can be added to SmoothStep2D Framework. There are at least three important pending tasks that I want to plan at some point in the future, and if possible, find someone that helps me:
– First, remove the multiplayer layer from SmoothStep2D core and develop it as a separate project/plug-in, that can even be used with other frameworks. This way a lot of unused code will be removed from the framework, not only for non-multiplayer games, there is a default implementation for serialization, unserialization and state interpolation in some Built-in game entities (Quad, Sprite, Container), and in a 99% of cases, you will override this default implementation by your own to optimize the information you send in each package. More important, in a 100% of cases, you will hate to send large JSON strings thru the WebSocket, and that’s another change in the multiplayer protocol, it must use Binary data (ArrayBuffer) instead of JSON strings. Providing this functionality in various ways other than the current “real time scene state snapshot interpolation”, will be also good for example, in turn based games, where user actions and scene state doesn’t need to be updated continuously thru the WebSocket.
– Continuing with the topic of removing unused code, the entire box2d library is embedded into SmoothStep2D, and this functionality claims to be in a plug-in, cause not every game need those realistic physics. There are no dependencies between SmoothStep2D collision detection utilities and box2d, so it can be completely removed and the classes that use it, can be presented as a plug-in. An addition to this change could be provide an interface to hook box2d events, right now the ss2d wrappers for box2d only let you emulate realistic rigid body physics and create a single joint to move it with the mouse or the finger. You need to extend or even override those wrappers with box2d if you want callbacks for collisions or other box2d events, so, an interface to facilitate this task or make it easy to extend and create those event listeners will be a good feature for sure.
– Last but not least, the current implementation for ss2d.SkeletalSprite must be updated with the generic javascript runtime provided by Esoteric Softwre. The current implementation was done from scratch based on the Spine specification and built on top of SmoothStep2D scene objects. In fact, ss2d.SkeletalSprite it’s a “mini scene”, cause the requirements for bone tree transformation are the same that SmoothStep2D scene already provide. Using the official runtime we gain some missed features like “curved” interpolation (right now, only linear interpolations are implemented). This implementation doesn’t require a lot of design decisions, in fact it’s only a matter of time.
For sure I will not be able to do all this changes in Holidays, and as I said, I expect to find people interested in actively contribute to the project. I’m focused on the game project and the needed improvements in SmoothStep2D to make it run as smooth as possible, so, the framework will be updated and improved anyway.
For the ones interested in what other people is doing with the framework, there is a Japanese guy that has been doing things with SmoothStep2D, you can find a demo of a space ships game in his repository here and the blog entry about his experience with SmoothStep2D here.
Thanks to the people that are talking about the framework in his blogs, and that are making suggestions and reporting bugs via mail, remember that you can also report those things via GitHub Issues panel, letting others know about your ideas and contributions.