Jump to content
  • 0
JohnRaiden

Some Fundamental Questions

Question

Greetings everyone,

 

Long-time casual RO player here. After playing in a lot of private servers just to see them shut down and starting over again, also following these "rumors" that gravity has started hunting down private servers, I have decided to try and create my own customized server.

First of all, I would like to thank the community for their continued efforts in keeping the emulators and translations alive after so many years, allowing me to have a hope in experiencing my own RO server.

I have been lurking around for a full week non-stop and I was able to get both a pre-re and a renewal server running locally.

I'm not really familiar with computer science and my background is that I only know the basics about programming from my Electronics bachelor's degree.

Therefore I have a lot of fundamental questions; if you would be so kind to help.

 

  1. What is the relation between a full client and an exe? Is it okay if their release dates don't match? Can I update the client through the original exe or for example, download 211124 full client and use 20200115 exe? Why are exe's usually seperate downloads?
  2. As I understand, Hercules is a "server" emulator, which accepts connections from clients and we use mySQL or mariaDB as "storage" for the server data. Is this understanding correct? Why do we need to "emulate" something that is used to run on PC's anyway?
  3. It seems that GRF's contain the main game files the client uses and we translate the language or customize items/textures by GRF editors. How do they come together with NPC's and scripts?
  4. As all the database is actually in the GRF's, do we "enable" or "disable" them on the server end through emulators and/or mariaDB?

 

I want to understand generally how things work before diving deeper into server modification. I would really appreciate the explanation.

 

Furthermore, I would like to talk about the kind of server I want to create in order to determine if it is doable, or not possible to create in current circumstances. Features would be as follows:

 

  1. RO Zero random options system
  2. RO Zero refinement UI and system
  3. RO Zero mvp card changes
  4. Pre-renewal level caps, monster spawns, equipment, starting area, monster exp being irrelevant to player level and jobs.

 

These are just a few items to give the idea that I would like to mix RO Zero and Pre-Renewal in some way. Would it be possible to add RO Zero mechanics to a Pre-Renewal server or would it be better to have a RO Zero based server and modify it?

I tried to get a RO Zero server running but it seems that it is less supported than Pre-RE and Renewal alternatives, I am currently having trouble with translations.

 

I would appreciate the feedback on the feasibility, as I would rather not go in a wild goose chase. However the latest server I have played on, Asgard Legends, seemed to have done it quite successfully.

 

Looking forward to becoming a part of this community.

 

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 1
20 hours ago, JohnRaiden said:

What is the relation between a full client and an exe? Is it okay if their release dates don't match? Can I update the client through the original exe or for example, download 211124 full client and use 20200115 exe? Why are exe's usually seperate downloads?

A full client will normally contain the KRO files you need for an Exe to work. You will most likely need to do some trial and error since not all files of a certain full client date will be compatible with the exe version you want to use. usually you will need some compatible lua files to your exe. And they seperate it most likely so you can choose which exe you want to use. And for lua files, there's no version seperation like exe, but you can try doing things like downloading an old version of the repo(based on commits messages related to your exe version support) if the latest one doesn't work with it. Some also have wiki guides you can check to know which versions are supported etc.

 

20 hours ago, JohnRaiden said:

As I understand, Hercules is a "server" emulator, which accepts connections from clients and we use mySQL or mariaDB as "storage" for the server data. Is this understanding correct? Why do we need to "emulate" something that is used to run on PC's anyway?

I think you understand this correctly. You emulate the server because the client can't do all the backend stuffs it needs such as those connections, plus its made for multiplayer so it needs a centralize thing to manage all the data it needs to make it work, there's  probably a way to make it not do that but it may not be the best way to do it . I think if its some sort of offline game that does not need a server, you won't need to emulate something. not sure if that makes sense.

 

20 hours ago, JohnRaiden said:

It seems that GRF's contain the main game files the client uses and we translate the language or customize items/textures by GRF editors. How do they come together with NPC's and scripts?

npcs and scripts are done on the server emulator side such as hercules. But if you eg. want to add an npc with a custom sprite/looks you will need to add its files on the client side, and add the file names and its npc ID(so you can call it on server side) on client side files as well. Basically you have some functions on server side that can call some client side functions such as displaying effects, showing cutin images etc. And you use these functions/commands to make up an npc or event etc.

 

20 hours ago, JohnRaiden said:

As all the database is actually in the GRF's, do we "enable" or "disable" them on the server end through emulators and/or mariaDB?

 

GRFs contains mostly things the client will display, not really database if you mean things like player stats and stuff. If you remove a certain function on emulators that calls or use eg. an interface displayed by the client, that interface may not work properly so i gues you do can disable(probably not all). There are some configs on the emualators that will make certain client side stuffs not work, theydon't necessarily exist on grf alone, but in the exe and the exe calls files related to it from the grf if needed.

 

20 hours ago, JohnRaiden said:
  • RO Zero random options system
  • RO Zero refinement UI and system
  • RO Zero mvp card changes
  • Pre-renewal level caps, monster spawns, equipment, starting area, monster exp being irrelevant to player level and jobs.

I'm not sure if latest herc already have random option system but there are option system files available. You can try to eg. use the terms "herc.ws random option system" to see if its available for download if its not in the files or config hercules and go from there.

For refinement UI its already suppported as far as i could remember, given you use a client version that is compatible with it.

I have no idea what zero mvp card changes are but if they're effects changes its possible to create them. 

For prenewal and others as long as you have the correct information relative to your expected result it can be done.

Most of these things can be done as long as you have the time, it'll take a lot of it but if you persist you can do it. You can learn whatever it is you need to accomplish these things. Sometimes all you need to do is the right google keyword for some of it too, if you need to do some src changes learn C(or c++ for rathena), if you need to get better at scripting you read the script_commands.txt , inspect all the files to get a grasp of where each things go.

 

Share this post


Link to post
Share on other sites
  • 0

Thank you very much for the information.

4 hours ago, Happy said:

You will most likely need to do some trial and error since not all files of a certain full client date will be compatible with the exe version you want to use. usually you will need some compatible lua files to your exe. And they seperate it most likely so you can choose which exe you want to use.

So full clients could not be completely backwards compatible, therefore theoretically same thing goes for the lua files. Would there be a specific reason why I would want to use older clients or exes? I assumed that latest would always be better.

 

5 hours ago, Happy said:

GRFs contains mostly things the client will display, not really database if you mean things like player stats and stuff. If you remove a certain function on emulators that calls or use eg. an interface displayed by the client, that interface may not work properly so i gues you do can disable(probably not all). There are some configs on the emualators that will make certain client side stuffs not work, theydon't necessarily exist on grf alone, but in the exe and the exe calls files related to it from the grf if needed.

If we were to make an example for a knife[4] then,

 

  • The sprite and sfx of a knife is stored in the GRF files
  • Emulator side handles the stats of the knife (damage, slots, effects, bonus stats etc)
  • In case of a drop, player acquisition is stored into sql database by the server
  • The player equips the item and player stats (atk, bonus stats) are calculated by the client using the item info from the server
  • Player attacks are calculated(player atk, monster def, status effects etc) and handled (animation, sound effects) by the client though the item info taken from server.

 

Would this flow be correct? If so, where exactly do the lua files fit in?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.