Coder Social home page Coder Social logo

damian-pastorini / reldens Goto Github PK

View Code? Open in Web Editor NEW
414.0 19.0 55.0 27.41 MB

Reldens - You can make it - Open Source MMORPG Platform

Home Page: https://demo.reldens.com/

License: MIT License

JavaScript 91.96% HTML 4.27% SCSS 2.46% TypeScript 1.30%
colyseus phaser mmorpg game multiple-colyseus-rooms html5-game phaser3 phaser-game mmorpg-server mmo

reldens's Introduction

Reldens - GitHub - Release


Welcome to Reldens, the MMORPG Platform designed to empower developers in creating multiplayer games.

With a wide array of features, Reldens enables developers to craft a rich gaming experience without grappling with the complexities usually associated with making a multiplayer game secure and efficient over any network.

Built with popular development tools such as NodeJS, Parcel, Colyseus, Phaser, and Firebase, integrated with various database engines, and following robust development practices, the platform ensures security, ease of use, and high customization for developers.

While the current stage of the platform is tailored for developers, ongoing improvements to the administration panel aim to make game creation accessible to non-developers in the future.



First to mention, if the feature you need is not available, you can request a feature here: https://www.reldens.com/features-request

As for the latest version released the platform will provide you with the following features.

  • Installation GUI: Easy to install through the web.
  • Administration Panel: Manage every single aspect of your game through the panel. Hot-plugs are a key feature and a work in progress.
  • Trade System: Between Players (trade) and NPCs (buy and sell).
  • Full In-game Chat: Global, by room, and private messages between users with chat types and split in tabs.
  • Player Stats: Fully configurable stats! HP? MP? Magic? Stamina, you can set up as much as you need for your game logic.
  • Items System: Based on @reldens/items-system, create all kinds of items (usable and equipment).
  • Attacks, PVP, and PVE: Based on @reldens/skills, you will be able to create all kind of skills, attacks, bullets type (can be dodged), target type (can't be dodged), fight with other players or just with NPCs.
  • NPC's, Enemies, and Respawn Areas: Setup NPC's with different options to interact and create respawn areas.
  • Teams and Clans System: Create, join, dismantle teams and clans, bonus based on clan level, and more.
  • Drops and Rewards: NPCs can drop rewards, and it can be configured to be split among team members.
  • Physics Engine and Pathfinder: Authoritative server with a physics engine and pathfinder.
  • Gravity World: Setup your rooms with or without gravity to get totally different kinds of gameplay.
  • Sounds System: Configurable multiple sounds categories for any animation or scene.
  • In-game Ads: Integrated with CrazyGames and GameMonetize to show ads in-game.
  • Minimap: Optional configurable minimap.
  • Configurable Visible Players Name and Life-bars.
  • Terms and Conditions: Ready to be set up as you need.
  • Users Registration: Continue playing later and double login invalidation.
  • Multiple Players Creation
  • Registration and Login Integrated with Firebase.
  • Database Ready: With multiple drivers for different storage or using MySQL by default all you need will be saved.

Please follow the Installation Guide: https://www.reldens.com/documentation/installation.


We use this demo to show how many features are available.

To access you can register in the following link (the basic registration will require email, user and password, but none real data is required here):

Your email is required to access the server admin:


Contact us

Join our Discord channel: https://discord.gg/HuJMxUY or contact us by email [email protected].

Support us! :)

Ko-fi Patroen Paypal

If you like to contribute in any way or donate to support the project please also feel free to contact me at [email protected].

Contributors

Lucio Vicentini
Lucio Vicentini

๐Ÿ’ฌ ๐Ÿ’ป
Damian Pastorini
Damian Pastorini

๐Ÿ’ป

Reldens - NPM - Release Reldens - GitHub - Stars Reldens - Discord Reldens - Licence - MIT


License

FOSSA Status


reldens's People

Contributors

damian-pastorini avatar dependabot[bot] avatar fossabot avatar lgtm-migrator avatar luciovicentini avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

reldens's Issues

[Bug] - Installation - Invalid Version: undefined.

If you get the message: "Invalid Version: undefined." while trying to install, as a work around you can go and manually downgrade parcel from 1.12.4 to 1.12.3, it seems the new version has some issues with babel preset.
For reference: parcel-bundler/parcel#5943
As temporal fix tomorrow I'll push the downgrade on the Reldens package.

[BUG] - World collisions

  • When you collide with a wall your character's direction is flipped.
  • When you collide with the NPC your direction is flipped and your character will continue to walk in the opposite direction until it collides with an object.

This is because the world physics configuration, need to:

  • Change to avoid the rebound between bodies.
  • Force the player to keep the animation in the direction that is been sent.

lagging when switching rooms

in the demo when you go through a door or to a new room, the character continues to walk for a few seconds until the screen transitions.

in general the overall demo feels laggy, i can't quite put a finger on it but there is a noticeable delay when the character starts walking and stops from my input.

is it possible to support character moving to a specific coordinate based on a mouse click?

also can reldens be used to support 3d environments?

what is the support/release schedule? when can we expect the rest of the roadmap to finish? would be great if there could be regular updates.

be happy to sub to patreon if it means frequent updates. how much would you need to finish development?

[BUG] - Scene change movement

  • If you are holding the "down" arrow when leaving a house and then release it after the town loads your character will continue to walk down.

This is happening in general after change the scene/room, to fix this we need to prevent the movement until the player view is ready.

[Bug] - Players position at top.

When the players reach the window top you can see your player in full but other players will be cut-off because the sprite goes over the edge. This probably because the player offset is not been considered.

[BUG] - Player body size and collisions

  • The player body is larger than a single tile so the bounding box need to be adjusted to the player feet.
  • In beta.7 that is also not been considered by the pathfinder so when you click on a point to go, the player head could be hitting objects and stopping the path.
  • In beta.8 this is also affecting bullets hit.

[BUG] - UI not running when changing scene

  • Go to any other scene and go out from the Town.
  • Log out / login.
  • Go to the town, click to speak with Alfred.

The popup UI will not open because the even that should create them is not running after changing scenes.

Fix in progress.

Docker-compose quickstart

Hey there, very cool project. I stumbled over it a couple of times reading articles and also talking to you over at the Phaser3 discord channel. After trying out your game I wanted to take a quick look at it locally but found it involves quite a few steps to get started, namely having a MySQL server available.

Now a quick idea I had was to have a docker-compose file coming with your repository so that anyone wanting to give it a try merely would need to run:

cd LOCAL-GIT-CLONE
docker-compose up

and it would setup a default MySQL (+ your demo dump) and a node container starting your game with a nodemon filewatcher or the likes to run whats behind npm start

Fix background audio

Whenever we move, the game's sound resets leaving us annoyed with the audio and trying to turn off the music.
Could you fix the asynchronous audio call to prevent any interaction on the map causing the music to restart?
I'm new to the project and it would take me a long time to understand how this works to the point where I have the way to fix it myself.
Taking advantage, have you thought about using a non-relational database? I'm thinking about using rethinkdb for this project because I've noticed a certain lag in it and I believe that a real-time database like RethinkDB can solve our problem a lot on the server side.
I will contribute to the project where I can =D

[BUG] - Pathfinder on narrow paths.

Since the current pathfinder implementation is not following a precise path but reaching each tile and going to the next, when the body has to move in a path that's of the same size, what could happen is that the body may not be perfectly centered on the available path and because of that it will be hitting the walls/objects at the sides.
In order to fix this I need to improve the speedToNext() method in the PhysicalBody to make it hit the center of the tile while moving on a path.

[BUG] - Bullets issues on beta.8

  • When a player shoot a bullet to another player the damage is not been calculated.
  • When a bullet hit a player the physics bullet body is making the player body been pushed (this should be optional).

Browser should not render server state

Hello there, I posted on HTML5GameDevs but my post is awaiting confirmation, so I'm just going to post it here instead :

I understand the server authority in terms of movements and action, but shouldn't it follow the "typical" MMORPG model ?

Wouldn't it be more fluid to "lag compensate" after server verification, instead of taking in all the inputs, processing them, then returning the result on the client-side ?

On a typical online game, the client renders what is called a "temporary state" which is right inbetween the client state and the server state : This state allows the client to experience no input lag, it is a far better user experience ! For example, if the player is pressing key thats fires a spell after a cast time of 1.5sec , the cast bar would be directly displayed (instant feedback), but he cast would be finally delayed for (cast time + latency), making it 1.6 or 1.7sec in the end, but without the frustration of having the latency between the keypress and the network transit.

If the movement was click based I wouldn't mind, but the way this is intended to be played (movement buttons and key presses) makes it really frustrating; And I can't imagine your model doing well with 50+ CCU, more users means more latency overall, and at some point having so much input lag will make it unplayable (and I mean no offence at all).

I didn't really take the time to explore the entirety of your code, but I think you should just replicate the inputs on the client side and verify that they are valid afterwards.

This will force you to also replicate a client-side map in order to check events (collisions, NPC events, etc.) on the client. The server will still have authority, for example, battle checks (damages, etc.) will only be done server-side, but for player movement and UI interactions, the browser should not render the server state or everything can become extremely laggy if the user has a mediocre internet access or if there are a lot of players connected.

EDIT : Oh, and also, amazing work ! I am digging the project ! Expect me to give you a hand on it soon :)

[BUG] - Lower Right corner of "Forest"

Player runs in place, server crashes, and logs show:

TypeError: Cannot set property 'g' of undefined
at AStarFinder.findPath (/home/ubuntu/reldens-skeleton/node_modules/pathfinding/src/finders/AStarFinder.js:67:17)
at PathFinder.findPath (/home/ubuntu/reldens-skeleton/node_modules/reldens/packages/world/server/path-finder.js:31:32)
at PhysicalBody.moveToPoint (/home/ubuntu/reldens-skeleton/node_modules/reldens/packages/world/server/physical-body.js:194:48)
at RoomScene.onMessage (/home/ubuntu/reldens-skeleton/node_modules/reldens/packages/rooms/server/scene.js:155:28)
at RoomScene._onMessage (/home/ubuntu/reldens-skeleton/node_modules/colyseus/lib/Room.js:420:18)
at WebSocket.emit (events.js:198:13)
at Receiver.receiverOnMessage (/home/ubuntu/reldens-skeleton/node_modules/ws/lib/websocket.js:801:20)
at Receiver.emit (events.js:198:13)
at Receiver.dataMessage (/home/ubuntu/reldens-skeleton/node_modules/ws/lib/receiver.js:427:14)
at Receiver.getData (/home/ubuntu/reldens-skeleton/node_modules/ws/lib/receiver.js:366:17)
INFO - ON-DISPOSE Room: chat
INFO - ON-DISPOSE Room: ReldensForest
INFO - Game Server is going down.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: node .
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! /home/ubuntu/.npm/_logs/2020-03-22T13_24_35_990Z-debug.log

[BUG] - Player attacks not working

  • Select a player target.
  • Move away from the target.
  • Click on the action button to attack the target.
  • Nothing will happen since the attack is out of range.
  • Get close to the target and attack again.
  • The attack is not working now because the first out of range attack blocked the action and the attack delay timeout is never executed.

[Feature request] Use firebase for authentication

Proposition : use Firebase for authentication. It is easy to integrate, always free, trustworthy and secure (as it is made by Google using the same systems as Google.) It would be useful/easier for you and guarantee security and easiness for every user.

[BUG] - Build process consuming memory

For some reason the Parcel build process is taking a lot of memory, we need to analyze why and fix it.
An option here could be split the process, make the build first and then start the server using the dist version instead of use Parcel middleware.

ER_BAD_FIELD_ERROR: Unknown column 'skills_levels_modifiers.level_id' in 'where clause'

root@iZrj90s90xr5ub5kvqyojpZ:~/game/node_modules/reldens/migrations/production# npm install knex -g
npm WARN deprecated [email protected]: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated [email protected]: https://github.com/lydell/resolve-url#deprecated

changed 177 packages, and audited 178 packages in 6s

2 packages are looking for funding
run npm fund for details

found 0 vulnerabilities
root@iZrj90s90xr5ub5kvqyojpZ:~/game/node_modules/reldens/migrations/production# npm run install-db

[email protected] install-db
knex migrate:up --env production

Working directory changed to /game
Using environment: production
Batch 1 ran the following migrations:
20190923181825_v4.0.0.js
**root@iZrj90s90xr5ub5kvqyojpZ:
/game/node_modules/reldens/migrations/production# cat 20190923181825_v4.0.0.js**
const fs = require('fs');

exports.up = function(knex) {
let sql = fs.readFileSync(__dirname+'/reldens-install-v4.0.0.sql').toString();
return knex.raw(sql);
};

// eslint-disable-next-line no-unused-vars
exports.down = function(knex) {
// nothing to do in the first version.
};
root@iZrj90s90xr5ub5kvqyojpZ:/game/node_modules/reldens/migrations/production# cd ~
root@iZrj90s90xr5ub5kvqyojpZ:
# cd game/
root@iZrj90s90xr5ub5kvqyojpZ:~/game# npm start

[email protected] start
node .

INFO - [ 'Project root:',
'/root/game',
'Module root:',
'/root/game/node_modules/reldens/packages/game/server' ]
INFO - [ 'DataServer Config:',
{ host: 'localhost',
port: 3306,
database: 'reldens',
user: 'reldens',
password: 'reldens',
connectionLimit: 0 },
{ min: 2, max: 10 },
'mysql://reldens:reldens@localhost:3306/reldens' ]
INFO - Objection JS ready!
Server starting...
INFO - Starting Server Manager!
INFO - [ 'Mailer Configured:', false ]
INFO - Enabled feature: chat
INFO - Enabled feature: respawn
INFO - Enabled feature: inventory
INFO - Enabled feature: firebase
INFO - Enabled feature: actions
INFO - Enabled feature: users
INFO - Events test reldens.serverConfigFeaturesReady success!
INFO - Loaded game room using stored configuration.
INFO - Loaded extra room: chat
INFO - Loaded room: ReldensHouse_1
INFO - Loaded room: ReldensHouse_2
INFO - Loaded room: ReldensTown
INFO - Loaded room: ReldensForest
INFO - Total rooms loaded: 5
INFO - Listening on http://localhost:8080
ERROR - Server error: { DBError: select skills_levels_modifiers.* from skills_levels_modifiers where skills_levels_modifiers.level_id in (1, 2, 3, 4, 5, 6, 7) - ER_BAD_FIELD_ERROR: Unknown column 'skills_levels_modifiers.level_id' in 'where clause'
at wrapError (/root/game/node_modules/db-errors/lib/dbErrors.js:19:14)
at handleExecuteError (/root/game/node_modules/objection/lib/queryBuilder/QueryBuilder.js:1489:32)
at QueryBuilder.execute (/root/game/node_modules/objection/lib/queryBuilder/QueryBuilder.js:670:20)
at process._tickCallback (internal/process/next_tick.js:68:7)
name: 'DBError',
nativeError:
{ Error: ER_BAD_FIELD_ERROR: Unknown column 'skills_levels_modifiers.level_id' in 'where clause'
at Query.Sequence._packetToError (/root/game/node_modules/mysql/lib/protocol/sequences/Sequence.js:47:14)
at Query.ErrorPacket (/root/game/node_modules/mysql/lib/protocol/sequences/Query.js:79:18)
at Protocol._parsePacket (/root/game/node_modules/mysql/lib/protocol/Protocol.js:291:23)
at Parser._parsePacket (/root/game/node_modules/mysql/lib/protocol/Parser.js:433:10)
at Parser.write (/root/game/node_modules/mysql/lib/protocol/Parser.js:43:10)
at Protocol.write (/root/game/node_modules/mysql/lib/protocol/Protocol.js:38:16)
at Socket. (/root/game/node_modules/mysql/lib/Connection.js:88:28)
at Socket. (/root/game/node_modules/mysql/lib/Connection.js:526:10)
at Socket.emit (events.js:198:13)
at addChunk (_stream_readable.js:288:12)
--------------------
at Protocol._enqueue (/root/game/node_modules/mysql/lib/protocol/Protocol.js:144:48)
at Connection.query (/root/game/node_modules/mysql/lib/Connection.js:198:25)
at /root/game/node_modules/knex/lib/dialects/mysql/index.js:134:18
at new Promise ()
at Client_MySQL._query (/root/game/node_modules/knex/lib/dialects/mysql/index.js:128:12)
at Client_MySQL.query (/root/game/node_modules/knex/lib/client.js:168:17)
at Runner.query (/root/game/node_modules/knex/lib/runner.js:151:36)
at /root/game/node_modules/knex/lib/runner.js:40:23
at client.acquireConnection.catch.then (/root/game/node_modules/knex/lib/runner.js:277:24)
at process._tickCallback (internal/process/next_tick.js:68:7)
code: 'ER_BAD_FIELD_ERROR',
errno: 1054,
sqlMessage:
'Unknown column 'skills_levels_modifiers.level_id' in 'where clause'',
sqlState: '42S22',
index: 0,
sql:
'select skills_levels_modifiers.* from skills_levels_modifiers where skills_levels_modifiers.level_id in (1, 2, 3, 4, 5, 6, 7)' },
client: 'mysql' }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.