RMMV MMO Devkit with Nodejs + Socket.io

SirMcPotato

Javascripted Potato
Member
Joined
Oct 26, 2015
Messages
18
Reaction score
36
First Language
Potato


 


Hi there!


I wanted to introduce you my MMO devkit for RPG Maker MV, built under NodeJs & Socket.io.


I had this project idea when I saw that RMMV would run JavaScript as scripting engine.


I thought it will work with the javascript V8 engine (the same as google-chrome), but when I understood that the game would run under the WebKit engine, I definitively choose to use NodeJS as game server and socket.io as communication solution :)


What's special about your MMO devkit?


My devkit is special due to the use of sockets. Basically, a classic web server communicate using HTTP requests. The client issue a command to the server, and the server send a result to the client. It's a simple question/answer.


But through the use of sockets, the server don't wait for a question. He can issue of his own some commands and send new informations to the client.


Like when your bank sent you your account statement by mail : You didn't asked it, but the bank wanted to inform you about the new data :)


This kind of communication model is better than classic HTTP requests, and easier to implement :)


What did you planned to implement?

  • Secure authentication (Maybe using Passportjs)
  • Relocation of saves on the server instead of local.
  • In-game chat
  • User interactions (Show, trade, friend system, battles, etc...)
  • Groups & Guilds
  • Action RPG combat system [OPTIONAL]
  • Instanced zones & dungeons (So you can see your allies walk and act around you)
  • NPC shops
  • Auction House
  • Premium currency integration (A bit like 'gold' earned in forums)
  • Stuff crafting
  • Server side mob IA
  • Map streaming (Deliver your maps from the server)
  • Game updater/patcher
  • Achievements
  • PvP & leaderboards
  • NodeJS web api [And maybe PHP too] (Used on a website, to register accounts, get list of user achievements, set/get premium currency etc...)
And almost everything we can imagine!

But about the security layer? I heard it's easy to analyse and alter Javascript code...


I'm constantly thinking about that. I'm on my way to implement a secure authentication system trough Socket.io with the help of Passportjs and a strong handshake. In that way, your connection to the server will be secured.


In the other way, all non-graphics processing will be done server-side, so any vital data cannot be altered.


Will you share your sources? Both client and server?


Yes! I do!


I'll make it open-source, and planned to create a GitHub repository to allow people to fork it!


How many time until a first working demo?


I'm quite busy with a customer actually, working on a big web application, so i work on the MMO Devkit on my spare time, be patient please ^^" 


However, at every new feature, I'll post a message here (and maybe with a WIP pic!) so you can follow its advancement :)


I want to be a contributor! Can I help you?


Yes, of course!


But if you want to develop on it, you need to be fluent with Javascript and know how NodeJS works!


Writers, Game designers, Level designers, Sound artists, Pixel-artists,you can contribute you too!


I'll love to have a part of the community contributing to the creation of an MMO game under my devkit, through its developement <3


Every helping hand is welcome :)


That's all for today, thanks for your time!


I hope I'll get your support, and some helpful contributors!
 
Last edited by a moderator:

SirMcPotato

Javascripted Potato
Member
Joined
Oct 26, 2015
Messages
18
Reaction score
36
First Language
Potato
Which one? Server side or client side? Both i presume  ;)  Let me some time to add some more features, tidy the code and push it on github :)
If you're making a devkit on the same model than me, i'd love to see it by the way =w=
 

Kane Hart

Elmlor.com
Veteran
Joined
Jun 27, 2014
Messages
656
Reaction score
166
First Language
English
This is quite the ambitious project. 

Are you planning to have it modular so you can enable and disable certain features?

I really like the idea of say Map Streaming so you can provide live updates to the clients and even create server side events or things just change dynamically sort of in the world. 

The dungeon instancing is really cool. I always like the idea of seeing others but not being able to effect their game play. I always wanted a game where was mostly nothing but ghosts from another parallel universe. 

How you planning on keeping the hacking down? Sadly with so many features and so many interaction features people will tend to ruin the game quite a lot. It's one the reason I kept looking for a more tamed Multiplayer because security at times can be rough to deal with.

It's one thing if someone is duping, warping, etc. But it's another if their ruining the gameplay for others through trade or auctions etc. 
 

ConkerMich

Veteran
Veteran
Joined
Oct 14, 2015
Messages
308
Reaction score
162
First Language
English
Primarily Uses
N/A
I will offer my pixel art services for free to see this completed. :)  
 

??????

Diabolical Codemaster
Veteran
Joined
May 11, 2012
Messages
6,271
Reaction score
2,330
First Language
Binary
Primarily Uses
RMMV
Which one? Server side or client side? Both i presume  ;)  Let me some time to add some more features, tidy the code and push it on github :)

If you're making a devkit on the same model than me, i'd love to see it by the way =w=
It depends on how you are structuring things. I personally prefer php for interacting with my things, but I am open to new ideas :)

Side note:

I have already implemented In-game chat(an UBER simple version) and leaderboards without using raw sockets :p
 
Last edited by a moderator:

Kyuukon

主人公
Veteran
Joined
Aug 22, 2013
Messages
2,217
Reaction score
1,076
First Language
Spanish
Primarily Uses
RMMV
This looks like an awesome project o.o

The most skilled scripters from this community should totally team up to make some cool (and secure) online system. I wish scripting was my forte but I have so much to learn T.T

Please, keep it up! Totally looking forward to it :D !
 
Last edited by a moderator:

Amy Pond

Veteran
Veteran
Joined
Mar 17, 2012
Messages
669
Reaction score
1,362
First Language
English (UK)
Primarily Uses
I have a rival :o

This is actually quite interesting though. You are going about it in a completely different way to me. Once completed, the community will see the boons and downfalls of each option. There are many differences.

One hint though: you mention saves being transferred to the server. I presume you don't mean just storing the files there. Otherwise it's a big gap for hacking. It's better to store each thing in a database, that way you can add checks in each stage to see if anything malicious is being done. It will also make trading easier and more secure if items are stored in a database.
 

ConkerMich

Veteran
Veteran
Joined
Oct 14, 2015
Messages
308
Reaction score
162
First Language
English
Primarily Uses
N/A
Like you said earlier, competition is a good thing. I also offer my pixel art services for your MMO Dev Kit if you need me Amy Pond. 
 

SirMcPotato

Javascripted Potato
Member
Joined
Oct 26, 2015
Messages
18
Reaction score
36
First Language
Potato
I have a rival :o


This is actually quite interesting though. You are going about it in a completely different way to me. Once completed, the community will see the boons and downfalls of each option. There are many differences.


One hint though: you mention saves being transferred to the server. I presume you don't mean just storing the files there. Otherwise it's a big gap for hacking. It's better to store each thing in a database, that way you can add checks in each stage to see if anything malicious is being done. It will also make trading easier and more secure if items are stored in a database.
Of course not! Actually, the saves are stored in the "Local storage" of the browser. I've planed to remove the "local storage" and store every data in the server database :)

It depends on how you are structuring things. I personally prefer php for interacting with my things, but I am open to new ideas :)


Side note:


I have already implemented In-game chat(an UBER simple version) and leaderboards without using raw sockets :p
I usally use PHP too, but it's not adapted to this kind of project ^^
Maybe for basics thinks like Achievements system or Auction house, but not with real-time processing :s


I assume you achieved that using AJAX queries, maybe on a CRUD pattern :p

This is quite the ambitious project. 


Are you planning to have it modular so you can enable and disable certain features?
I planned to create an API with a full working game & server as example :)
With this API, everyone can choose which feature he want to use, and event add his own :)

How you planning on keeping the hacking down? Sadly with so many features and so many interaction features people will tend to ruin the game quite a lot. It's one the reason I kept looking for a more tamed Multiplayer because security at times can be rough to deal with.


It's one thing if someone is duping, warping, etc. But it's another if their ruining the gameplay for others through trade or auctions etc.
For that, I rely on strong security around the sockets. Note that everything is computed server side, so the client can only request the server for actions. Each actions requested by the client are checked and processed. If the server detect an anomaly, he'll return an error code/message to the client :)

I will offer my pixel art services for free to see this completed. :)
Thank you :)
 
Last edited by a moderator:

Kane Hart

Elmlor.com
Veteran
Joined
Jun 27, 2014
Messages
656
Reaction score
166
First Language
English
I like competition but I hope both or all the projects are on github so other scripters in the community can help contribute. I don't like that idea having so many projects only because one unified project by the community could go a lot further. 
 

SirMcPotato

Javascripted Potato
Member
Joined
Oct 26, 2015
Messages
18
Reaction score
36
First Language
Potato
Like said Amy, it's a good thing in the way that many servers can match many technical requirements :)
 

Kane Hart

Elmlor.com
Veteran
Joined
Jun 27, 2014
Messages
656
Reaction score
166
First Language
English
Like said Amy, it's a good thing in the way that many servers can match many technical requirements :)
Yeah true. Well I wish you all the best of luck. I wish I can use them all the same time but maybe overtime I will find a reason to use each one :)  
 

SirMcPotato

Javascripted Potato
Member
Joined
Oct 26, 2015
Messages
18
Reaction score
36
First Language
Potato
Hi!
For today, a little WIP of my "almost done" secured authentication system.
 

If you check the console, you can see that we need to solve the handshake before any other actions.
If a client issue any command before the handshake is solved, that command will be considered as an illegal action and will result as an immediate disconnection.

I've also done a feature that automatically disconnect any active connection on your account when you log in.
In that picture, I've run two instances of the game.
Firstly, I logged in into my account on the client on the right, and after it was accepted I did the same on the left one.
The right client was disconnected and got an error. (code  + reason/msg)
I think i'm done with the auth system for a while, i'll put my hands on a basic character selection/creation system and all the character's mechanics behind that ;)
 
Last edited by a moderator:

Kane Hart

Elmlor.com
Veteran
Joined
Jun 27, 2014
Messages
656
Reaction score
166
First Language
English
Thank you for putting so much details into your reports and updates :)

Looking forward to the future.
 

gRaViJa

Veteran
Veteran
Joined
Mar 16, 2012
Messages
783
Reaction score
282
First Language
Dutch
Why not work together with AmyPond and Dekita to make a kickass Devkit together? Since you're all planning to do the same thing? :)
 

??????

Diabolical Codemaster
Veteran
Joined
May 11, 2012
Messages
6,271
Reaction score
2,330
First Language
Binary
Primarily Uses
RMMV
I am watching this topic, and I am also liking what I am seeing so far. So hopefully the code is as nice as the previews :)
 

Amy Pond

Veteran
Veteran
Joined
Mar 17, 2012
Messages
669
Reaction score
1,362
First Language
English (UK)
Primarily Uses
Why not work together with AmyPond and Dekita to make a kickass Devkit together? Since you're all planning to do the same thing? :)
I suspect SirMcPotato is a lot more professional and experienced than I am and so it would be difficult to work together.

Also, these are going to wind up two different kits at the end of it.

My kit is state based. You perform an action, send some data to the server, the server sends some back and defines what action you do next.

With this kit on the other hand there is a constant stream both ways, the server sending data without prompts.

This kit therefore would be good for mass player versus player battles, epic multiplayer scenarios, and generally busy games.

Mine on the other hand, because it sends less requests and is less taxing on the server, can send more data, less times. This makes it well suited to the kind of game I want to create where the world is shaped on the actions of the players. Sure, you don't see players live and have a lot of action going on over the server, but more goes on in the actual world building and interactivity in that way.

Does that make sense?

So I believe both kits have their pros and cons, and both have different kinds of games they're suited for.

This kit will doubtless be more professional, while mine is based on a proven implementation of my own dodgy methods (my game's been going well for five years, so it works, but might be an unconventional way of going about it).

In short:

If you need the server to be active in the game, looking at what's going on and sending you data based on that, use this kit.

If the server can be passive, idling until you specifically ask it a question, then use my kit. (Or this kit anyway, but still.)

I think mine will make more sense than it does at the moment when it's actually implemented. I may have sucked at explaining the majority of its features.
 

RogdagoR

Veteran
Veteran
Joined
Oct 1, 2015
Messages
127
Reaction score
29
First Language
Italian
I think(take my words lighely since i don't have enough knowledge about this stuff) Amy Pond kit is more suited for mobile games, for less traffic usage of your plan, and SirMcPotato one is better for desktop games(or mobile if you have a flat traffic plan or you play under wifi connection :D ).

Atleast this is wat i understand....feel free to correct me if i'm wrong :)
 

Jenza

Veteran
Veteran
Joined
Oct 25, 2015
Messages
40
Reaction score
7
First Language
English
Goodness me this sounds like it would be complicated to manage, not only in terms of an ambitious plugin but for the game designer as well! 

Will events delete after someone used them for the first time, how will cutscenes be managed... there is a lot to think about!
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

There a thread out there that tells us the best way to open an RPG that isn't 'the protag gets out of bed'?
Updated my state Stacker Script on itch.io, github is down for some reason (probs just me).
Wife watching Locke and Key. This show is so bad!! You can't just acclimate to discovering magic or magical worlds in less than 60 seconds.
I think I still prefer RPG Maker over Dreams. Been playing around with it, and the controls are really the biggest flaw for me.

Forum statistics

Threads
94,332
Messages
919,999
Members
124,087
Latest member
OrdinaryOne
Top