Jump to content

ASOE - Asynchronous Online Engine (ALPHA)

Recommended Posts

It's a silent wall of text that tries to tell us...


The cat's out of the bag!

Hear me, Indie game developers of the world: Ever dreamt of adding online features to your rpgmaker games? Your wait is finally over. Based on Efeberks ODS script - Malagar (my humble self) - has been working on a script to please your needs. After countless hours of development, I proudly present you a very first alpha version of:


ASOE - the asynchronous Online Engine for Rpgmaker VX Ace



1. Download

First, the important stuff. The download itself. You can grab the ZIP file containing both client and server code from my mediafire account:




2. Requirements

Here is a list of stuff you will need in order to use this engine properly. Please keep in mind that ASOE is not intended for beginners. It's an advanced script that requires knowledge of both: the rpgmaker as well as PHP/MySQL enviroments.


  • Full version of RPGMaker VX Ace
  • A webserver (host) capable of executing PHP files and storing a MySQL database
  • A FTP client to upload files as well as a good text editor (Notepad++ is recommended)
  • Know how to create a mySQL Database as well as populate it via a MySQL dump
  • Enter correct credential into both: your PHP config file as well as your VXA project
  • Nerves of steel


3. Installation & Documentation

Please check out the blog articles prepared a while ago that will lead you through the installation process and provide interested developers with a basic knowledge how ASOE works:




4. A final word

I want to keep this one short, as Im too tired ATM for lengthy anthems.


ASOE is based on Efeberks original ODS (online database) script, it is not entirely the work of my own. I neither crown myself the new emperor of the VX empire nor do I bath in the work of others. Efeberk did all the hard work creating the foundation to ASOE. I merely fixed, organized and expanded his script.


Until today, about 50 critical bugs of the old ODS version have been fixed. At least two dozen of new features have been added and about 350 minor modifications have been made to the engine. ASOE is the result of several month of hard work (on and off), done in my spare-time - before and after work. Even after long month's it is far from finished and some bugs still have to be addressed as well as features added.


This is merely a foundation, intended for other programmers - the real code-slingers out there to take the engine and push it further. Just like the way I tried to do with Efeberks script. Because this is the true and only meaning of open-source software.


I will try my best to address the remaining bugs and adding new features. But, being older than most other people on there - Im stuck between my family, my job and my real-life commitments. Please don't push me into bug fixes and modifications, childish "do this / do that" posts won't accelerate future development. Stuff will be done, but it will take it's time.


Every bit of time invested into this project is handed over to the community of RPGMaker users around the world for free, the only thing I am asking for in return: Do not assault me with unrealistic requests. Show initative, learn and try to solve basic problems with the script yourself!




Share this post

Link to post
Share on other sites

Oops, already found a bug:


The achievement system is currently not working as it seems.


When talking to the horse (counts as a major achievement…) there should be a popup window that tells you about the achievement.


This does not happen at all. There have been some changes that broke this part of the engine, I will do my best to fix it - but i was not able to locate the bug yet.

Share this post

Link to post
Share on other sites

Hello there!

Thanks for trying the project. I am currently not able to re-produce your error. You need to do 2 things:



1. create actors in your RPGMaker Project (in Database)

2. add to server Configuration (PHP file) the ID numbers of the actors


You have to change the following line in asoe_core/asoe_core_config.php to show exactly the ID numbers of actors you want to make available as starting actors for your game:

define("ASOE_STARTING_ACTORS", "1:2:3");

Seperate with :


In this case it would be Actor IDs 1, 2 and 3. And take care that these actors are actually available in your game projects database.


hope this helps!

Share this post

Link to post
Share on other sites

Thanks Turt, especially for all your feedback and heads-up throughout the project!


I dropped you a line regarding your questions.


(Documentation still needs to be expanded on the various topics of this engine, but i just can't do everything at once)

Share this post

Link to post
Share on other sites

Hm Im not sure if I understood the question.


If you mean using a save file at the same time: Yes it is.


Just go to Script Editor, search for ASOE_Overwrites and locate the line that disables the Save option.


But you have to take great care when creating a project like this. I don't really know what weird stuff could happen.

Share this post

Link to post
Share on other sites

This is a fantastic script. I just want to make sure that I have understood this correctly as I have read all of the documentation and this post will basically summarize the capabilities of this script. Please correct me if I am wrong.



This script is not like that of Vlad (vampyr Coders) from RPG Maker VX where it is a real time system, much like the WhiteRose. This script is Asynchronous which essentially means you have the same features of online play like Live News Feed, Mail, Leaderboard, etc. Hopefully I am correct so far?



- Does this script provide usage of online vendors? For example updating the inventories of merchants via your website so players in game see new items populate this list? Is that handled via database on your webserver? Now I am sure with some PhP code you are able to create an interactive webstore for your game in which items are purchased and "mailed" to your character correct? But can the game itself actually update from your webserver?


- I was reading and I saw you stated the game is self-saving in that every minute it stores the data in the database on your webserver but I was not understanding if all of the files are also pulled from the database? (I.E. your map files, event files, scripts, etc.) Essentially I guess the basis of the question is can this game update Asynchronously by adding in a new map or a new item, armor, etc. And then after the minute has passed where the data is sent back to the game that map is now in the client folder. Ideally players can be waiting for a new dungeon to release at midnight. At 11:59 you add in the new dungeon to your server file and by 12:00 the clients update with the new map file and the new event transfer so they can get right into it. Or is this a system where they would be required to download a whole new client?


Usage of the System:

- Am i right in assuming that with a system like this player can play a dungeon crawler type game which store the kill count or the highest floor they reached as a variable. That variable number via the system is uploaded to the server and you can have a real time PhP script constantly updating the leaderboards. (just as an example)



That is my basic understanding of the system (I love the Online RPG Maker Systems, I had made an awesome game back on VX with the Vlad system that me and my friends loved, so I am familiar with it). So is that a correct breakdown of the system and is there more I am missing? Regardless I think it is a fantastic system but I want to know it limits I guess you can say.

Share this post

Link to post
Share on other sites



Please check the documentation linked in the very first post. I strongly recommend NOT to combine online with offline content. One example: You have to set up NPCs using special functions when making a online game. These functions won't be available in a offline environment. I won't give you support on this, although it is possible to do.




thank you. here is some feedback regarding your questions:


1. Basics

Correct. Its not a realtime environment, hence the name asynchronous. Its for turn-based games like strategy games, card games, board games AND for adding News Feed, Leaderboard to your game. Yes. But not an action/realtime MMO.


2. Vendor

Yes and No. Vendors are in, but only In-Game. Selling via website is not supported yet. And yes: Its possible. if you are capable of writing PHP, its absolutely possible. This script is very open, so you can virtually add everything to it. Right now you can put your players inventories into shops, the shop is saved in the database and others can buy it. You can even set your price and the like.


Note: I think there is still a bug left in one of the gold calculations when buying/selling stuff via the Vendor system. Will be fixed later.


3. Database

No, it only saves player data, account data and has the possibility to save switch and variable data as well. Saving the whole database would break the system as it requires way too much stuff to be transferred via network. So updating the map is not possible and it would create crazy synchronization errors.


Note: There is a system to download a whole new client. Use this one instead. You can update your game quite easily using that system. Just not in realtime.


Note: Map modifications and shared maps wont be possible, not even in the future. But see-ing the other players online will, although you wont see them move at real-speed. just wait for this feature, im already working on it. but, this will take a while. I want to take the engine a whole step further in the far future.


4. Usage

Yes, exactly, although you have to provide the leaderboard code yourself currently, I might add this one later (actually I could need some help, this is a huge project). But there is more: Shared achievements, Unlocking of Badges, Highscore Lists, Player Clans with Clan Achievements, Player based crafting + selling as a base for player based economy, friend-lists, social gaming, "sharing" your characters with other players, fighting other players (AI-controlled) etc. etc. the possibilities are virtually endless. there are just two caveats:


1. It has to be asynchronous (not in realtime).

2. Someone has to add it to the codebase (this requires both RGSS and PHP/MySQL knowledge).


5. Conclusing

See above. Check out the current mobile games on the market. Almmost all of them have online features. Thats all asynchronous online features as well. This engine - ASOE - does exactly the same. It mimics those online features where you can play "together" without the requirement to be online at exactly the same time and day.


PS: I really honor the work that Vlad and White Rose projects have achieved. But thats way beyond my skills ATM. I also don't think that their systems are based on VXAce and there are not open-source either. ASOE is.




-Malagar (aka the Mortar: Spewing out scripts one at a time!)

Edited by Malagar

Share this post

Link to post
Share on other sites



Too much, I recommend that you use Vlad's or the White Rose system instead. My script was NOT concipied for realtime.


@Sissel Cabanela


Theoretically, but you have to add the required code to it. All the base-code is there, but someone has to build on top of it.


Its really a asynchronous system, not a real MMO system. Just take a look how the modern mobile phone games do it. its exactly the same way. You have to get a bit creative in order to use this system correctly. Here is a "somewhat" creative example of whats possible (also requires you to add code):


Each player plays the game "alone" but can exchange messages using in game email and there is a leader board. Now, the players can enter dungeons and beat bosses and unlock special "dungeon stages". When those stages are unlocked, they can be made available to your "friends". Your friends are now also allowed to enter that special stage. Each friend that enters such a stage grants himself and you a bonus to gold/exp.


This means essiantally, each player is playing "alone", but you can work together in a social way to advance in the game.


To boil it further down, what this engine does is:


Allows an unlimited amount of single-player RPGMakerVXAce projects to exchange data with each other. This data can either be account data, actor data, variables or switches. The rest is up to your and your imagination (especially when using variables and switches in a multiplayer environment properly).


Thats the core principle of asynchronous games.


Check out: Summoner's War, Clash of Clans, Battle Beach, Boom Beach, This means War!, Astro Lords, Shadow Kings, Mighty Quest for Epic Loot, Empire, Goblin Keeper, Castle Clash, Jungle Heat, Kingdoms of Zenia: Dragon Wars, Huge Troll Wars, Battle Dragons, Dino on Fire, Samurai Siege, War of Mercenaries, Galaxy Life: Pocket Adventures, Goblin Legion HD, Ninja Kingdom etc. etc. etc. ….. *fingers break due to typing*


they all do it exactly the same way!

Edited by Malagar

Share this post

Link to post
Share on other sites

@Malagar - Thanks a lot for the information. That is exactly how i thought it operated. I have just set up a nice fresh install and am going to be fiddling with it. Unfortunately my Ruby Scripting is limited but I enjoy PhP scripting quite a bit so I look forward to working with this on my spare time. Outstanding release, I look forward to the future updates and will be following this thread. I also would be more than happy to show off some scripts that I create on the PhP end of things.


 I do have a question though. Do you know which data file all of the switch and variable names are stored in. So when setting up a new project with this system you can copy and paste the data file that contains the switch and variable names in it so you don't have to manually reassign and rename every switch? And my other question is how do you nudge the actor drawings on the character select screen down a few pixels? I am using XP size sprites and their heads get shaved off a bit. so I kind of need to have them nudged down a bit so the whole sprite gets drawn,


And a third question that maybe I am missing. Can you not battle NPC troops? I have run into numerous slimes in my forest area regions as expected and as soon as the battle starts it ends in 3 seconds. And I also notice that the timer at the top right corner of the screen stays on 1 sometimes and doesn't count all the way down? I doubt its a configuration issue as I created my character and my account and login just fine and transfer over to the start map very easily.

Share this post

Link to post
Share on other sites

Hey, if you come up with anything useful (PHP for example) - I would be more than happy to add it to the engine!


1. Hm don't know, there should be a file within the data folder. But I never understood how those files are organized. You can always select a whole page of vars/switches and then multi-copy their names. This way you can copy 25 of them at a time, makes work a tad easier.


2. Just go to the Script Editor and look for the CharacterSelection Scene. There is either a variable that defines the height of each character right on top of the script. or there is a function Draw and I hardcoded the height, should be relatively easy to locate.


sorry for the vague info, im not at my comp right now :-)

Share this post

Link to post
Share on other sites

No problem. I tweaked it up a bit and it seems to be working fine. I noticed a couple of things. Here is a short video snippet showing some of my issues. 


1- is the battles ending almost immediately upon starting them

2- is the timer in the top right corner not ever disappearing

3- The save option is still lit up even though it shouldn't be? Although i don't recall if you said you re-enabled that or not purposefully



Share this post

Link to post
Share on other sites

ah, you should really use the sample project as a base. do not try to copy all the stuff into a new project. there are some internal tweaks to make it work.


but, you can do if you want to do the extra work:


1. you have to stop all timers before entering a battle, better call RaiseFlag before battle and LowerFlag afterwards using a event-script-command

2. in the sample project its gone, I think its in the script called ASOE_overwrites

3. in the sample project this point is gone as well, again in ASOE_overwrites


I cannot stress the RaiseFlag / LowerFlag issue enough. check out the documentation and how the sample NPCs are set up.


before each important part (this includes battles) use a event command that makes a script call to RaiseFlag and after the important part (battle) use LowerFlag


I have to expand the documentantion on this, its a bit vague. the whole reason is security stuff and timing stuff

Share this post

Link to post
Share on other sites

Ahh, alright. I wasn't aware that there were some internal tweaks. I'm usually meticulous when it comes to copying things over from other projects so I thought I grabbed everything. Not a problem. Matter of fact this little project i'm working on has only two maps in it and my configs are already set up so it won't be difficult to move things into the project at all. Thanks for the tip. As for stopping the timers and calling the RaiseFlag LowerFlag. Is it possible to have this trigger automatically by adding it into the Scene_Battle itself (unless you already tweaked this in the project file) as opposed to making NPCs roam around the world and then on touch have the event Raise the flag call the Battle Processing event and then at the end lower it. I would have no problem adding it in on my own I would just need the snippet you would use to do that. 


And that would probably be my last question as in testing the system everything seems to work wonderfully on my end. 

Share this post

Link to post
Share on other sites

yes thats absolutely possible, you just have to add it to the specific script sections


either you alias the specific battle classes or just add it to the original maker scripts. should no biggy in such a small project.


I noted this one down, might add it to the next version to get rid of manually adding Raise/Lower Flag. good point!

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.