Register for your free account! | Forgot your password?

You last visited: Today at 01:40

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Shaiya Genesis Development

Discussion on Shaiya Genesis Development within the Shaiya PServer Development forum part of the Shaiya Private Server category.

Reply
 
Old 08/04/2016, 11:07   #31


 
Cups's Avatar
 
elite*gold: 152
Join Date: Mar 2015
Posts: 149
Received Thanks: 1,274
Quick little update, had a day off work today, so got stuck into figuring out the stat packets more in-depth, as well as identifying the appearance packet. My next short term goal will be to identify the skill packets, and then tackle inventory/equipment.

Cups is offline  
Thanks
16 Users
Old 08/04/2016, 17:36   #32
 
elite*gold: 0
Join Date: Oct 2015
Posts: 156
Received Thanks: 54
Good job . nothing else to say.
ShaiyaOld is offline  
Old 11/15/2016, 02:15   #33
 
elite*gold: 0
Join Date: Nov 2016
Posts: 17
Received Thanks: 4
Looks fantastic.

If i could only code
Mencher is offline  
Old 11/29/2016, 07:20   #34
 
vstgv's Avatar
 
elite*gold: 0
Join Date: Aug 2009
Posts: 2
Received Thanks: 0
Amazing job mate
vstgv is offline  
Old 02/26/2017, 19:32   #35


 
Cups's Avatar
 
elite*gold: 152
Join Date: Mar 2015
Posts: 149
Received Thanks: 1,274
As you've probably noticed, development on this sort of stumbled. I actually went through a stage of not wanting to finish it (I've tried to quit this game many times, and keep coming back to it).

As some of you know, the original version was a single application, which the game, login, and database servers running together. While this worked, it wasn't a scalable architecture. So if one wanted to host the database and game servers on seperate databases, it wasn't supported.

In the past week I've gotten stuck back into programming on my days off from work, and this time, I wanted to do it right. The modern Shaiya Genesis is written in C++, designed as a CMake project, which makes it very easy to build, regardless of the platform. I'm currently working on it and committing the changes to a private repository of mine on GitHub, and it'll be made public as soon as the game server is developed to an acceptable level.

The project is split into 4 components: the common library (contains code shared by multiple servers), the database server (accepts connections from the authentication and game servers, and asynchronously processes database requests, and responds with the database), the authentication server (connects to the database server, processes login requests, etc), and the game server (retrieves definitions and player data from the database server, and handles all game related activities). This project is designed to be fully scalable, so all these servers can be run independently. This means it's very easy to add multiple game servers using the same database/auth server.

It's still in early stages, but just today I've managed to finish designing the cross-server communication. The authentication server submits a request to the database server, and provides a block of code to execute when it is completed. These requests are tracked through a request id, which is randomly generated for each request. The database server then provides the response for said request id, and the authentication server executes the code block with the data returned.

There's still a lot of work to be done, but stay tuned!

Cups is offline  
Thanks
10 Users
Old 03/06/2017, 07:15   #36


 
Cups's Avatar
 
elite*gold: 152
Join Date: Mar 2015
Posts: 149
Received Thanks: 1,274
Authentication server is finished, and works 100%, so I no longer need to worry about that. I've made a decent start on the game server, it currently supports choosing your faction, loading characters for the database, showing the characters for your account in the character list, and character creation.

Next up on the to-do list for the game server is to allow players to delete their characters/change faction when all characters are deleted, and then begin working on having the game server request definitions from the database (for things like item defs, quests, npc defs, mob defs, skill defs, etc). After definition loading from the database has been completed, I'll work on allowing the user to enter the game world, interact with other players, and make a start on the Ruby scripting system!

Cups is offline  
Thanks
16 Users
Old 03/06/2017, 17:33   #37
 
elite*gold: 0
Join Date: Oct 2012
Posts: 173
Received Thanks: 28
Wow, a hard and long work of yours, can I marry your brains
nick4ever is offline  
Thanks
1 User
Old 03/16/2017, 19:41   #38
 
Bura69's Avatar
 
elite*gold: 0
Join Date: Jul 2015
Posts: 28
Received Thanks: 29
Im proud of you sir Glad to hear that you didnt stoped it. Ohh boy... Maybe it's time to come back haha xD
Bura69 is offline  
Thanks
1 User
Old 03/18/2017, 20:54   #39
 
Trayne01's Avatar
 
elite*gold: 0
Join Date: Feb 2015
Posts: 473
Received Thanks: 1,093
Hello Cups,
I wouldlike to ask you a little point about your project. As I'm having less and less time for developing my , And as you are alone with your Genesis project (I also think that your project seems to big for someone who works alone),
What about making a common community project that would be hosted on git ?

Also,
Here is the network plan of my Shaiya Extended projects:



As you can see, rewriting all the game server is not needed... All we have to do is to detour both client side and server side packets. Then, we'll get client-side, and server-side plugin system. (I'm now using IronRuby... Instead of IronPython as I did in ShaiyaServerExtended 1.X)

Client-side plugins will be able to draw in game using a little DxOverlay API that would use a simple .xml format to draw 2d shapes & pictures. Using ruby, you can quickly edit vars in the xml.
Using ruby you will also be able to use Memory injection (for minor things, server-side is much more recommanded)

Server-side plugins would be much more powerfull, simply look at the "needed function" in the picture. Using what you discovered, and all your work about game packets, and using a network plan like this one, I'm sure that we can make a nice community project. The plugin system would also replace the CheatEngine in the most case, using the OnStartup() event and the built-in memory injection method.

It's been a while, Cups.. I'm glad to see that you are still around.

Best Regards,
Trayne01 is offline  
Thanks
2 Users
Old 03/19/2017, 17:20   #40


 
Cups's Avatar
 
elite*gold: 152
Join Date: Mar 2015
Posts: 149
Received Thanks: 1,274
Quote:
Originally Posted by Trayne01 View Post
Hello Cups,
I wouldlike to ask you a little point about your project. As I'm having less and less time for developing my , And as you are alone with your Genesis project (I also think that your project seems to big for someone who works alone),
What about making a common community project that would be hosted on git ?

Also,
Here is the network plan of my Shaiya Extended projects:



As you can see, rewriting all the game server is not needed... All we have to do is to detour both client side and server side packets. Then, we'll get client-side, and server-side plugin system. (I'm now using IronRuby... Instead of IronPython as I did in ShaiyaServerExtended 1.X)

Client-side plugins will be able to draw in game using a little DxOverlay API that would use a simple .xml format to draw 2d shapes & pictures. Using ruby, you can quickly edit vars in the xml.
Using ruby you will also be able to use Memory injection (for minor things, server-side is much more recommanded)

Server-side plugins would be much more powerfull, simply look at the "needed function" in the picture. Using what you discovered, and all your work about game packets, and using a network plan like this one, I'm sure that we can make a nice community project. The plugin system would also replace the CheatEngine in the most case, using the OnStartup() event and the built-in memory injection method.

It's been a while, Cups.. I'm glad to see that you are still around.

Best Regards,
I wish you the best of luck with your projects, however I think you are misunderstanding the intention I have, and the goals I have with Shaiya Genesis. It indeed is a large project, but I'm dedicated to working on it in my spare time in between work and real life, and will slowly get it completed. If others want to help along the way, they are more than welcome to contribute to the repository, which should be in the next upcoming weeks as I get the groundwork done for the game server.

The idea I have for Shaiya Genesis is so much more than just being able to write plugins for new content, the idea is to encourage developers to actually... develop. I want developers to be able to download the entire source code for a Shaiya server, read through it, learn how it works and what it does, and then decide how they want to change that. I understand it'd be easier to write hooks for the existing server files, and detour packets and whatnot, but I honestly don't see the point in the long term. When I first started programming, it was with a private server of a different game, and I loved being able to go through the forums, read tutorials on code, experiment with it myself, and create something I was proud of. That's the feeling I want to bring to this forum.

There are a lot of things that could be improved upon in the Shaiya server files. One of the biggest flaws is it's use of threads. Shaiya servers currently create a new thread for each connection to the server, and while this works, it is very expensive on memory, and is not ideal, and can cause noticeable performance issues when reaching a high number of players, without the proper hardware. Contrary to this, in Genesis, connections are handled through a thread pool, and actions are executed asynchronously through a dedicated worker, which will allow the game server to scale much better with large amounts of players (think ~1k players on a standard Linux server with 4gb ram). Current Shaiya servers process all the action synchronously - if something is slowing the server down, it slows the processing of everything down, rather than just that single event.

I wish you the best of luck with your project if you are still going to be pursuing it, but I personally would prefer to work on Shaiya Genesis
Cups is offline  
Thanks
15 Users
Old 03/19/2017, 20:45   #41
 
Trayne01's Avatar
 
elite*gold: 0
Join Date: Feb 2015
Posts: 473
Received Thanks: 1,093
Quote:
Originally Posted by Cups​ View Post
I wish you the best of luck with your projects, however I think you are misunderstanding the intention I have, and the goals I have with Shaiya Genesis. It indeed is a large project, but I'm dedicated to working on it in my spare time in between work and real life, and will slowly get it completed. If others want to help along the way, they are more than welcome to contribute to the repository, which should be in the next upcoming weeks as I get the groundwork done for the game server.

The idea I have for Shaiya Genesis is so much more than just being able to write plugins for new content, the idea is to encourage developers to actually... develop. I want developers to be able to download the entire source code for a Shaiya server, read through it, learn how it works and what it does, and then decide how they want to change that. I understand it'd be easier to write hooks for the existing server files, and detour packets and whatnot, but I honestly don't see the point in the long term. When I first started programming, it was with a private server of a different game, and I loved being able to go through the forums, read tutorials on code, experiment with it myself, and create something I was proud of. That's the feeling I want to bring to this forum.

There are a lot of things that could be improved upon in the Shaiya server files. One of the biggest flaws is it's use of threads. Shaiya servers currently create a new thread for each connection to the server, and while this works, it is very expensive on memory, and is not ideal, and can cause noticeable performance issues when reaching a high number of players, without the proper hardware. Contrary to this, in Genesis, connections are handled through a thread pool, and actions are executed asynchronously through a dedicated worker, which will allow the game server to scale much better with large amounts of players (think ~1k players on a standard Linux server with 4gb ram). Current Shaiya servers process all the action synchronously - if something is slowing the server down, it slows the processing of everything down, rather than just that single event.

I wish you the best of luck with your project if you are still going to be pursuing it, but I personally would prefer to work on Shaiya Genesis
I didn't know that you were as involved in your project. Then I wish you all the best! Its in fact a briant idea. I would be glad to share you my packets analyses. As this would be one of the main parts of our both projects.

All the best for your project, that seems much more future proof.

Trayne.
Trayne01 is offline  
Old 03/21/2017, 14:56   #42


 
Cups's Avatar
 
elite*gold: 152
Join Date: Mar 2015
Posts: 149
Received Thanks: 1,274
"Welcome, to the wonderful world of Teos!"

Cups is offline  
Thanks
16 Users
Old 03/27/2017, 07:34   #43


 
Cups's Avatar
 
elite*gold: 152
Join Date: Mar 2015
Posts: 149
Received Thanks: 1,274
I haven't been able to get as much done as I'd like these past few days, due to work, but I've made a respectable start on the scripting engine. Very similar to my previous Scala implementation, though I've opted for Lua as it has much better interoperability with C++ types (actually it's MoonScript, which is compiled down to Lua).

Here's what happens when a Game Master would enter the command:
Code:
/notice "hello"
Of course, the message is bloated for example purposes and won't end up like that, but it shows how easily a command can be added or edited in Shaiya Genesis. I've still got to finish the event handling for the scripting engine, which will be called on certain actions that can be listened to (ie player_death, player_login, on_skill). After that, my next big project is making a start on the multiplayer aspect (currently multiple players can connect of course, but they can't yet see or interact with each other).

Cups is offline  
Thanks
9 Users
Old 03/27/2017, 17:33   #44

 
elite*gold: 150
Join Date: Apr 2007
Posts: 2,372
Received Thanks: 6,628
Ive started basicly the same Project 2 years ago~
but i stopped after the loginserver already due to not even
finding people for packet analisys. You are a crazy dude if
you are gonna complete this solo However if you dont have
a list of most packets already be sure to checkout the Packetdata
tool i released, there are a lot of Packets added with detailed explanation
wurstbrot123 is offline  
Thanks
1 User
Old 04/02/2017, 16:22   #45
 
elite*gold: 0
Join Date: Nov 2011
Posts: 20
Received Thanks: 17
This is very interesting, good luck!
Preatch is offline  
Reply




All times are GMT +2. The time now is 01:40.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.