Project: Cross Data System (RPG Maker MZ)

Artille

Veteran
Veteran
Joined
Jul 23, 2012
Messages
52
Reaction score
40
First Language
French
Primarily Uses
RMMZ
Project : Cross Data System
by Artille & Geonidas


What is "Cross Data System(CDS)"?
CDS is our take on making remote data accessible to any RPG Maker MZ game.

We decided to take on this adventure and came up with a powerful solution.

We named it : "the cross data system". (Might be subject to a renaming though :kaoblush: Tell us what you think)


The main objective of this feature is to provide... well... cross data capabilities to the RPG Maker MZ software,

enabling you to gather and share data from and to all the users (players) of a single (but not limited to) game.



Did you ever think :

It would be nice to actually know where my players are?

Where do they fail or succeed the most?

What part of the game is the easiest or the hardest?

How many people actually found my hidden rooms?

How long do my players play before reaching certain spots?

Did they actually complete my sidequests?

Or many, many other questions which simply can't get an answer other than by getting actual feedback?

(This is not to say feedback is a bad thing, please don't shoot me...)



Well, look no further!

CDS enables any RPG Maker MZ game to "track data", "save data" and even "share data" from and to all the players.

It even allows you to control said data and modify them at any time AND in real time.

This means you can create events and control how they behave according to gathered data, or change their behaviour at any time by simply changing the values of gathered data.


How does it work?
How CDS work has changed quite a few times!

However, at current state it works with a combination of RPG Maker MZ software, plugins and backend server (nodejs, websocket, php, mysql, etc...).


To put it simply :


- The player runs RPG Maker

- RPG Maker runs the plugin

- The plugin tells the server (NodeJS) what it should do based on the input it received from the plugin command (get data, save data, edit data, delete data, etc...)

- The server then applies whatever should be applied.


Since we work with websocket, these actions are done (close to) instantly and generate no lag ingame.

Although we do need to tweak a few things before we manage to get the best possible results.


What can you do with it?
There are close to no boundaries to the actual possibilities of this feature when it comes to tracking data.

The main purpose of CDS is to track data, but with a little bit of imagination and creativity, you can add multiplayer features to your game (should you want that).

However, to give you some insight, here are a few examples we tested and managed to pull of ourselves.

Remember : since data is stored in a database, you can access said database to modify any value in it.


Real Time translations
For this example we created a table in which there are multiple columns,

some of them are reserved for ingame text only.

(Note that any textcode can simply be retrieved by the software, so you can write

your text as you normally would in RPG Maker MZ)

By editing any fields, you can update any textarea the game will

retrieve, thus enabling you to translate any part of your game

on the go, even while your players are playing!




Leaderboards
Maybe the most obvious feature you can create with this is a

leaderboard system.

You can create a minigame in which the player gets a specific score,

When updating the leaderboard, you can retrieve its current status,

update it accordingly (IE the player ranked in your TOP) and make it

availble for any other player to beat.




Surveys
Why not make a survey in an original way?

Now this is possible!

Create your survey as you wish with events, ask your players questions,

then send their answers to the database.

(Not all data "needs" to be shared, some can be used for intel purposes)




World Bosses
Maybe you'd like a world boss?

Although current state of CDS does not support complexe RPG Maker MZ features

such as the battle system, it does allow you to create graphical events that

can easely simulate a world boss!




Server/Admin Messages
Maybe you would like to share a message to all your players at some point.

Maybe it can be a simple "Hello world!", or it would be... a special hint for your

top secret puzzle game no one has found yet!

We will leave the imagination to you! :kaopride:




Event Tracker
You want to know for sure if anyone reached that one hidden treasure chest?

You want to know who, where and when they reached that hard to reach NPC?

This is now very simply achieved!




Access keys
Did you ever want to have control over specific areas of your game?

Maybe you would want your players to use an access keys that enables

them to access a certain spot in your game?

Maybe you'd like to create a weekly access key to give your players weekly rewards.

Nothing easier than this!




What is the current state of CDS?
I guess we could say it reached its infant stage at this point!

There are surely alot of things we need to work on in order to make this an "as userfriendly as possible" tool for RPG Maker MZ users!



Some of the things we will be working on are (although not limited to) :



- Re-think the way the commands are called and values affected.

Right now it's a little bit gibberish as ALOT (and I'm not exagerating that...) of test have been made.

In order to make this more user friendly, we will need to restructure that.



- Create seperate plugins for new features.

Again, as of now, everything is mashed into a Core plugin and a second plugin that does all the data stuff.

Seeing how we can interact with these via different plugins, we could very well create some of the above features as add-ons in seperate plugins.


- Anything related to the RPG Maker infrastructure

We aren't even close to using all the possibilities of CDS, as of now, we only focused on making RPG Maker communicate with a remote database.

In the future we plan on adding a variety of possibilities such as working with sprites, collisions, maps, events, etc...


- Generate and secure connexions for anyone who ends up using CDS

Because people will need some place to access their data, we are building a platform that will allow just that.

The hard work will be done by us, all you will need to do is create!



- Improve current architecture and make it more secure

You can never make a system to efficient or secure.





How long will it take before it becomes publicly availble?

This is a very hard question to answer actually!

We are sorting all kinds of problems as we encounter them in order to make this as public friendly as we can.

However, making this available to the wider audience may be a challenge of its own!



We will definitely keep you updated on further plans! :kaopride:


Backstory :

If you would like to know how this all came into existance, here is a little backstory!
If not, this section is not important and you can just skip it!

It all began with my very own and first game on MZ.

When MZ came out, I really wanted to give it another try and I decided I would give it a go!

This time going full force, I figured, since MZ is using javascript, there had to be a way we could somehow make it communicate with a server.



So I teamed up with a programmer (Patrice) and began conceptualising the idea.



Our first goal was to be able to get data from the game and store it on our server!

Seems easy enough, but proved to be quite a challenge as Patrice had little knowledge about RPG Maker MZ and I have little knowledge about programming (I have basics though :kaophew:)



After a few days of work, we were able to get the first results!

Data could be gathered from RPG Maker MZ and stored successfully into a .txt file on our server.



Now, we had to be able to send that data back to RPG Maker, which also took us a few days of thinking.



With this first big step taken and crossed, we came upon security issues, aswell as some other issues such as, storing data in a txt file is going to grow that file pretty big, pretty fast, meaning the game would be slower and slower.

We decided to go all-in and create a backend in php aswell as storing data in a database (SQLite).

This would allow us to enhance the way data travels and make requests much faster aswell as have virtually no storage limit (other than our server's hard drive).



After a few weeks of tweaking, we managed to get a full fledged plugin with almost all features we currently have, although we came across a major issue!

Since we were using a combination of Ajax, Jquery, Javascript and PHP, we had an issue with the way data traveled.



Rpg Maker was not developped with this feature in mind and thus, whenever we shared data, the way it happened was :



RPG Maker gets a "POST" command

It opens the plugin to read what it should do

The POST command sends data to the server

The server sends data to the database

The server gets an OK

The server sends an OK to the plugin

The plugin continues running after the OK.



Meaning, during that process, RPG Maker has no clue what it should do and simulates that by a freeze.

We tried tweaking as much as we could to reduce the data travel to as little time as we could, but we never managed to go below half a second.

This resulted in the game freezing every now and then for half a second (or more) every time communication had to be made from or to the database.



This is when I came across Alpha Net MZ and realised websocket was actually the solution.

Both Patrice and I, having no knowledge of websocket at that time, decided to give it a shot.

And boy were we surprised!



Not only is it much faster, it's actually so fast the server now has to wait for the game to catch up!

Whenever we write data into an RPG Maker variable, we need to ask RPG Maker to catch up with the server (This is actually something we are still working on to see how this can be fixed).



After a few tests and alot of work, we were able to recreate our first plugin with a now fully functionnal dedicated server that runs nodejs and websocket listening in on any RPG Maker event that requires a plugin action.



It was quite a trip (total of over 3 months of work), but we surpassed every obstacle and managed to find a road to a very stable plugin.



End of story :kaothx:


1v1 Minigame :
Here is a 1v1 minigame made using CDS, you can download the APK on this url : https://s3.amazonaws.com/gonativeio/static/6103e8b8388c284111cbef1c/app-release.apk(Not working correctly for all users)

Since this is a demo, it has not been licensed on the google store.
Feel free to send us feedback. :kaopride:


Support us :
As you might have guessed, this project is pretty expensive to build.

Although we are nowhere near to be able to have a public release yet we decided to share this project with the community.



This has two purposes :



1. We are eager to hear about your feelings concerning this project.

Do you think it is a good idea? Or on the contrary, do you think it lacks something crucial?

It is always a nice thing to have multiple points of views, and so any suggestion or argument you might have will be taken seriously and will help us have a better understanding of the community's expectations.



2. Although I hate to say this, we are short on ressources.

Money isn't our primary objective, but in a more realistic world, we need it to sustain ourselves while working on this project.

And thus, rather than going through multiple roads and explaining **** and stuff people normally do when they go for support, we have a simple question for you :

Would you consider donating to this project?


Right now, nothing has been made to make any donation possible, however, should this raise any kind of interest, we might apply the needed changes to make it possible.


Whatever the outcome, we are having alot of fun building this project and we will keep working on it. With, or without support. :kaophew:

End Message :

We are very hyped to share this feature with you today!

We would very much appreciate your feedback and ideas about this project as this will

surely help us make better decisions towards creating the best possible remote data tool.



Feel free to ask us any questions you might have aswell!​
 
Last edited:

ShadowDragon

Realist
Veteran
Joined
Oct 8, 2018
Messages
4,426
Reaction score
1,686
First Language
Dutch
Primarily Uses
RMMV
I dont use MZ or online server, but it looks really cool.
I also like the name, so I wont change it though.

but keep up the nice work, which can help others that aim
for online server and game play.
 

geonidas

Warper
Member
Joined
Apr 20, 2021
Messages
1
Reaction score
0
First Language
français
Primarily Uses
N/A
Je n'utilise pas MZ ou serveur en ligne, mais ça a l'air vraiment cool.
J'aime aussi le nom, donc je ne le changerai pas.

mais continuez votre beau travail, qui peut aider d'autres qui visent
pour le serveur en ligne et le jeu.
thanks:smile:
 

Artille

Veteran
Veteran
Joined
Jul 23, 2012
Messages
52
Reaction score
40
First Language
French
Primarily Uses
RMMZ
Update main post :

1v1 minigame APK link added.
Create online features with CDS is possible! :kaoblush:
 

Latest Threads

Latest Profile Posts

seems absolutely WILD to me now all the hundreds of hours of work I used to do in 2k(3) over a decade ago with a resolution of 320x240. that seems so insanely TINY now, seemed so normal at the time!
Playing Aroma Indosiar theme song.
Aroma is an Indonesian TV show about cooking. :)
Working on a characteeer! (Why is it so hard to color hair?) ;-;
Silly-Sketches.png
Just finished eventing a couple simple puzzles in RMMV, for my very first game "Sample Quest." Just messing around, throwing things together, and calling it a story XD On a non-RM note, got my hair cut today!
I feel the need to inform everyone on the forums NOT to go with Web Hosting Canada for your hosting needs. It is by far the worst customer service and just overall experience I have ever had with hosting and I am Canadian...

Forum statistics

Threads
115,372
Messages
1,089,347
Members
150,067
Latest member
GutterRat
Top