Reldens - MMORPG Platform
dpastorini last edited by dpastorini
V3 of my project Reldens was released! Hope you like it!
Features list: https://github.com/damian-pastorini/reldens/wiki/Features
The demo: https://dev.reldens.com/
I would love to get any feedback! Thanks!
Just to bring some updates on the platform I've been working on.
V4 is coming! I've stopped adding any new features in favor of clean up the code structure which will make everything easier for everyone.
Below you will find some of the big differences between v3 and v4:
- A full folders restructure, everything is been moved into a "src" folder and split in modules which are called from server or client.
- A "Managers" structure was implemented in the code which are used to handle different stuff. Everything will be documented in time, but for example we have the Config Manager or the features Manager to load and handle all the saved values in the storage.
- A lot of name conventions are been followed to make everything easier to find (but this may still change).
- Almost all the Promises were replaced by async/await and a small fix for Parcel (to include Babel plugin-transform-runtime), was introduced to handle the async/await on the client side.
- All the hardcoded queries were removed and Objection JS was implemented to handle all models. If you are not related to Objection JS I've strongly recommend you to check on it, it is not an ORM but like they claim an "enhanced query builder" and is based on Knex JS so if you know Knex you will love Objection: https://vincit.github.io/objection.js/
- The migrations system was re-implemented as well using Knex migrations, so now everything is under the same module.
- All the hardcoded HTML code is been removed and replaced by templates. Mustache was implemented for this matter in combination of Phaser DOM and the scenes preload, this way we were able to preload the templates and then parse it with Mustache before render.
- Almost all the TODO's related to configurable values from the database were completed, and the plan is to clean up all the ones related to issues that were avoided with some "code hack".
- The database structure was fully modified, all the JSON type fields were removed, and all the data was split in several related tables.
- The introduction of users / players difference was implemented to prepare the platform to allow users have multiple players created in the future.
- Players "status" now has it's own schema and players "stats" are handled in a private way using room messages.
- Physics module is now are prepared to handle multiple collisions and not only players-walls.
- Chat module was implemented as feature and it can be enabled/disabled from the config now.
- All the code is been commented and documented.
- Colyseus and Phaser are been upgraded to each available last version (as for this post Colyseus 0.11.15 and Phaser 3.19.0).
Thought this is still a work in progress you can find the code in the v4 branch: https://github.com/damian-pastorini/reldens/tree/v4.0.0
And the example database: https://www.dwdeveloper.com/media/reldens/reldens-install-v4.0.0-2019-09-30.sql
- After finish with the full refactor (a lot of client side is still old), the idea is to implement a lot of custom callbacks (beside the ones you can already use from Colyseus or Phaser), in order to make the platform work as package.
- Implement the most basic important pending features: password recovery, NPC and enemies, collisions between players-enemies-NPC's, and add some basic examples for animations in the maps.
- And after these items then continue with the road map: https://github.com/damian-pastorini/reldens/wiki/Road-Map
As you can see V4 will be basically fully incompatible with the priors, it will be a fresh start but if you have any custom maps already created those will still work as the same in v3, you will only need to push the proper values in the database since the structure changes.
I hope you like it! Any feedback will be welcome!
Hello everyone! I'm here with some news!
I've pushed a new v4-NPM-ready branch:
I still didn't merged it into the main v4 branch since I'm not sure about if it is the right approach, it still need some work to make the process easier, and also because in any case we will need quite more events to be fully useful that way.
I've also created an example doc here:
The doc shows how to use npm link to make it work as if you really installed through npm and not locally.
The part that I'm not sure about is the way the client part has to be installed and how it's been build, also I don't really like the idea of copy base files from the node_modules folder.
I would really appreciate if anyone could give me some input here.
Another idea was to create a separated skeleton branch that would be ready-to-run, and that users could clone it in the project root, but that would be adding more steps that won't change much how it's now.
I'm really trying to re-think this but is been quite hard so far, so any thoughts will really help!
I've got reported that the registration wasn't working :( it seems that was going for some time by now, I've just fixed and it is working again, feel free to give a try!
The current deployed version is a bit old though, all the last upgrade are been implemented in v4.
There’s also an NPM ready branch and some instructions if you like to try it:
- DB ready-to-dump: https://github.com/damian-pastorini/reldens/blob/v4.0.0-npm-setup-v1/migrations/production/reldens-install-v4.0.0.sql
- Instructions: https://github.com/damian-pastorini/reldens/wiki/V4-NPM-Ready
- The last features in that branch are objects with animations:
Hope you like it! Progress is been done and ideally I would have v4 before the year ends.
Player move Player is about to be pushed on v4 branch!
Considering how much behind the v3 was getting I've decided to do a beta release for v4!
This version is available on NPM:
And the installation is easier than before:
For that matter I've created an Skeleton repository:
The dev server was updated as well http://dev.reldens.com
And between all the huge refactor now you will find:
- Almost everything now works based in events, so this will allow you implement a lot of customizations without need to rewrite almost anything.
- In any case there are still some configuration files and the idea of having a "game-theme" was implemented, so you could easily use the skeleton theme for start.
- At the same time a lot more stuff is now configurable just by changing some values in the database.
- Maps animations were implemented (in the skeleton example you can see the river moving).
- Objects with animations are also available in both public (broadcast), and private (for single client). For example: the doors will open > the player will change the room > but for the other users that are seeing the door open, a few seconds later the door will be closed.
- A basic NPC was implemented. NPC's are used like another object type that will just respond on specific actions. In the skeleton example you can click on the NPC (the guy with the hat) and it will show a message.
- Targets System was implemented, you can click on any player or NPC, and the target will be selected.
- With targets, short distance attacks are now available, if you are close enough to a player and click on it, then you can click on the action button or press the space bar to attack (for now we only have that action).
- Related to attacks, the stats are now affected, atk and def are (for now) simple compared to validate the attack, and when the attack success (for now always since the atk and the def are the same for all the players), the HP will be reduced.
- And for last! Now we have the Game-Over event when a player that die will be kicked out! Sorry, that was the quickest thing I was able to come up with.
In terms of roadmap, issues and progress tracking I've started to complete the project board with all the tasks: https://github.com/damian-pastorini/reldens/projects/2
Hope you like all the new improvements, I'll keep adding new stuff and fixing the parts that can be improved.