|
You last visited: Today at 14:10
Advertisement
any new technology or techniques for private servers development?
Discussion on any new technology or techniques for private servers development? within the CO2 Private Server forum part of the Conquer Online 2 category.
09/25/2014, 15:37
|
#1
|
elite*gold: 0
Join Date: Jun 2014
Posts: 69
Received Thanks: 13
|
any new technology or techniques for private servers development?
i'm about to start writing a new server from scratch (going to release source code), also would be on current patch to get it to replace trinity ****** edits
so i was wondering if there is a new technology or techniques out there that anyone would like to share/discuss
i've always rushed or even skipped code architecture which leads to bad design (one time was fatal) so im taking my time on this one
any better database system than mysql with nhib ? or what about flat db with or without binary or xml serializing objects maybe ?
any better socket system than the async. one that everyone uses ?
should i use lazy loading for heavy parts ?
what about a phyton or even db scripts for npcs and others ?
what about tq binary db style with actions ?
what you think of the performance of dmap handler solutions that been released ? tiny maps maybe?
i think you know where this is going (i throw couple of questions we all ask at some point but you may talk about anything in general about private servers development techniques and technologies ), please keep ideas and discussion coming, and lets keep it clean
just put in mind that complexity doesn't matter to me as much as performance does
|
|
|
09/25/2014, 17:45
|
#2
|
elite*gold: 12
Join Date: Jul 2011
Posts: 8,283
Received Thanks: 4,191
|
There's a source I released that nobody seems to want to look at because it's only a  , and written in C++. It has some small bugs since it was never really heavily unit tested, but it's a starting point for newer and better handling ideas. CptSky also has  written in C++ using QT. Finally, I have a  I released that also has good performance and ideas that sources don't use.
|
|
|
09/25/2014, 17:55
|
#3
|
elite*gold: 0
Join Date: Jul 2009
Posts: 943
Received Thanks: 408
|
I highly recommend the Phoenix Project from Spirited, i've been working on his Socket, since i don't know how to handle multiple servers yet (Login, Msg, Map etc). But my project is using his Socket and Security System and it looks pretty cool. Also the cq_action style you can get from Exodus Binaries that has already been released, i have my edited copy of that one too with the NPCs packets being handled the right way, if you need, i may share, it makes use of cq_action, cq_npc and cq_task.
|
|
|
09/25/2014, 18:04
|
#4
|
elite*gold: 0
Join Date: Jul 2008
Posts: 874
Received Thanks: 238
|
I recommend the Phoenix Project of Spirited.
as it is the only one the look forward for cross server and has brilliant structure.
or CSV3
both has a brilliant stuffs that u should consider in yours
|
|
|
09/25/2014, 18:21
|
#5
|
elite*gold: 12
Join Date: Jul 2011
Posts: 8,283
Received Thanks: 4,191
|
I appreciate the recommendations towards Phoenix, but the socket system isn't an optimal design. It sacrifices quite a bit of performance (though still very high performance) to readability. A split receive socket design is not optimal. The most optimal approach would be to use pointers (which I know, isn't everyone's favorite).  (use as only an example, I've modified this to fix certain bugs since then). I'll probably post the new design on my blog and in the other conquer community in a few days.
|
|
|
09/26/2014, 02:30
|
#6
|
elite*gold: 67
Join Date: Aug 2014
Posts: 1,323
Received Thanks: 928
|
I'd like to see proper use of SAEA and the threadless Async/Await pattern. Other than that maybe a WCF Database server using Named Pipes. Basically everything XioOnline uses. I like to compare my stuff with others
By the way: Flat files are ******* nice. I'm getting so much hate for using ini files but honestly with a cached implementation which writes to a ramdisk, asynchronusly, it outperforms mysql every. single. time. Unless its the In memory mysql database type thingy, that **** is fast.
|
|
|
09/26/2014, 04:12
|
#7
|
elite*gold: 0
Join Date: Feb 2006
Posts: 726
Received Thanks: 271
|
Quote:
Originally Posted by Xio.
I'd like to see proper use of SAEA and the threadless Async/Await pattern. Other than that maybe a WCF Database server using Named Pipes. Basically everything XioOnline uses. I like to compare my stuff with others
By the way: Flat files are ******* nice. I'm getting so much hate for using ini files but honestly with a cached implementation which writes to a ramdisk, asynchronusly, it outperforms mysql every. single. time. Unless its the In memory mysql database type thingy, that **** is fast.
|
I will always choose a DBMS like MySQL or mssql every time.
While flat files may offer a slight performance advantage.
I personally think you lose management efficiency, readability and output quality that greatly outweighs any slight performance advantage.
There's a reason that RDBMS are the standard these days.
What happens if you decide to add a field to the character table.
Let's also say you have 1000 characters created.
Are you going to manually edit each one? Write a program to update them all?
It is by far more efficient to use SQL to handle this.
I don't think we need to get into the ability to write queries in seconds in order to generate some form of report like all characters that are reborn.
These are just examples but in my opinion the extendability of the DBMS will always win over flat file in a server application like conquer.
Some may disagree but that's how I feel
|
|
|
09/26/2014, 04:24
|
#8
|
elite*gold: 0
Join Date: Feb 2014
Posts: 397
Received Thanks: 205
|
Quote:
Originally Posted by Xio.
I'd like to see proper use of SAEA and the threadless Async/Await pattern. Other than that maybe a WCF Database server using Named Pipes. Basically everything XioOnline uses. I like to compare my stuff with others
By the way: Flat files are ******* nice. I'm getting so much hate for using ini files but honestly with a cached implementation which writes to a ramdisk, asynchronusly, it outperforms mysql every. single. time. Unless its the In memory mysql database type thingy, that **** is fast.
|
How the **** did I know that line was coming?
|
|
|
09/26/2014, 04:57
|
#9
|
elite*gold: 12
Join Date: Jul 2011
Posts: 8,283
Received Thanks: 4,191
|
Xio doesn't know what he's talking about. Please ignore him and listen to the knowledgeable developers (I know I'm being harsh Yuki, but sharing bad practices with new developers isn't helping anyone). MySQL and SQL are both very good, high performing relational database managers. If for some reason you're really into flat-files... you should look into NoSQL (Not Only SQL). You shouldn't be creating your own database management system, or looking into databases. MySQL is very air-tight. What's not is this community's programming. Focus on how we talk to MySQL, how we talk to players (the socket system), and how we handle their data (packet processing).
|
|
|
09/26/2014, 09:55
|
#10
|
elite*gold: 0
Join Date: Jul 2006
Posts: 2,216
Received Thanks: 794
|
I really really really really recommend everyone interested in the topic to check out the TrinityCore source (no, not that Trinity).
This is the hearth and soul of many WoW servers, and is implemented fairly well, it scales well, and makes use of modern technologies, such as boost::ASIO. Obviously you have to blast through lots of stuff that isn`t CO related, but the core of the server is worth analyzing. 9/10, would recommend.
As far as the "threadless async/await" goes, it is not a great idea for the server core. Your socket system will be limited because of it, I benchmarked the classic BeginX API, the async implementation and the SAEA implementation, and to be fair, BeginX is almost as good as SAEA and will yield better structure and readability. Plus, you don`t really want super high performance in the case of CO, since you won`t have more than 1-2k concurrent connections (TOPS) anyways.
|
|
|
09/26/2014, 13:22
|
#11
|
elite*gold: 0
Join Date: Jul 2014
Posts: 402
Received Thanks: 540
|
Quote:
Originally Posted by Xio.
I'd like to see proper use of SAEA and the threadless Async/Await pattern.
|
What do you mean by "threadless"?
|
|
|
09/26/2014, 18:32
|
#12
|
elite*gold: 0
Join Date: Dec 2012
Posts: 1,761
Received Thanks: 950
|
New technologies? What about languages that uses "new technologies" ??
D or Rust?

vibe.d would probably be one of the best solution for the core.
|
|
|
09/26/2014, 21:35
|
#13
|
elite*gold: 67
Join Date: Aug 2014
Posts: 1,323
Received Thanks: 928
|
Quote:
Originally Posted by Best Coder 2014
What do you mean by "threadless"?
|
Not using "await Task.Run()" ... since that is just using the threadpool to do it. I've seen my fair share of "wanna-be asynchronus" programming.
Xio doesn't know what he's talking about. Please ignore him and listen to the knowledgeable developers (I know I'm being harsh Yuki, but sharing bad practices with new developers isn't helping anyone)....You shouldn't be creating your own database management system, or looking into databases.....
And fang, looks whos talking. I shouldnt create my own shit? I cant do it because you think its bad or useless? Dude your fuckin phoenix mess uses encrypted inter process comunication... now thats fucking useless imo. It works fine for me, no issues so far. I like to create everything I use myself. Co2 is a hobby not a job.
Plus, you don`t really want super high performance in the case of CO, since you won`t have more than 1-2k concurrent connections (TOPS) anyways.
I don't want top performance for conquer because I will only have 1-2k connections max? Who cares, if you can improve parts of it why wouldnt you if you got the time for it? I mean whats wrong with having it?
As far as the "threadless async/await" goes, it is not a great idea for the server core.
Wasnt talking about the sockets to be honest, for example, we use it for the skills. Its a nice way to make the skill delay work in one line. await Task.Delay(Skill.IntoneDuration); <- thats one of many reasons we picked the async await model on skills. Our saving / loading uses async/await IO, packets are processed the same way.
|
|
|
09/26/2014, 22:24
|
#14
|
elite*gold: 20
Join Date: Mar 2006
Posts: 6,126
Received Thanks: 2,518
|
Quote:
Originally Posted by Xio.
Not using "await Task.Run()" ... since that is just using the threadpool to do it. I've seen my fair share of "wanna-be asynchronus" programming.
|
You don't understand what the threadless async/await methodology is about.
This is correct, because you don't have to use a thread waiting for that task to complete because you are using await, to say that you can go beyond that and not have a thread running while executing code isn't possible.
All that changes is that the calling thread is freed up and can be used for other uses in the mean time instead of blocking, the code still has to execute somewhere.
|
|
|
09/26/2014, 23:57
|
#15
|
elite*gold: 0
Join Date: Jul 2014
Posts: 402
Received Thanks: 540
|
Quote:
Originally Posted by Xio.
Not using "await Task.Run()" ... since that is just using the threadpool to do it. I've seen my fair share of "wanna-be asynchronus" programming.
...
Its a nice way to make the skill delay work in one line. await Task.Delay(Skill.IntoneDuration); <- thats one of many reasons we picked the async await model on skills.
|
The  uses the thread pool as well, I don't think I see your point.
|
|
|
Similar Threads
|
Looking For game development & web designer for private servers project
11/10/2011 - SRO Private Server - 0 Replies
looking to team up with game development & web designer for private servers project investment ready need ppl has exp in this if you interested on opening private server good one for many games send me msg to my inbox thanks.
Belly.
|
All times are GMT +1. The time now is 14:11.
|
|