Register for your free account! | Forgot your password?

Go Back   elitepvpers > Conquer Online 2 > CO2 PServer - Discussions / Questions
You last visited: Today at 18:48

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


Chimera Private Server Development

Reply
 
Old   #1
 
elite*gold: 12
Join Date: Jul 2011
Posts: 7,084
Received Thanks: 3,396
Chimera Private Server Development


Introduction
Chimera is a Conquer Online private server project written in Go. Roughly half a decade ago when I first began programming in a managed language, I grossly underestimated the requirements for developing such a project. I was unprepared for developing a server which could meet the performance requirements of my planned systems. Half a decade later, I look back at my old prototypes and miss the development scene. I have challenged myself again with the same goals for developing a high-performance Conquer Online server, though a lot as changed in regards to my design and choice in technology.

Where to read more
If you're interested in this project, check out for more information about my server architecture and packet system. I put a lot of work into this already, and I'm really excited to get back into development again. If you have questions, please don't hesitate to ask or make conversation; however, bashing on the Go language will not be welcomed criticism. There is no benefit to starting argumentation on language preference (there's a section for that here, and this is not the section).

Blog Link:
Thanks, and I'll be posting about more development soon.



Spirited is offline  
Thanks
7 Users
Old 10/22/2016, 02:18   #2
 
elite*gold: 12
Join Date: Jul 2011
Posts: 7,084
Received Thanks: 3,396
Account Server Completed
I recently completed the account server, and will be moving on to the game and map server shortly. In this post, I mostly discuss how Chimera protects users, deals with passwords, and authenticates players for the game server. I also recently reviewed my plans for the game server, and expanded on a few definitions for how the map server will interact with the game server. I'll be working on that next. You can read more about authentication here:


Spirited is offline  
Thanks
2 Users
Old 11/01/2016, 17:05   #3
 
elite*gold: 0
Join Date: May 2006
Posts: 92
Received Thanks: 50
Super nice to see you around buddy - even if we are both looking to run a new project.
EliteMagus is offline  
Thanks
1 User
Old 11/02/2016, 08:45   #4
 
elite*gold: 12
Join Date: Jul 2011
Posts: 7,084
Received Thanks: 3,396
Login Sequence Designed
I decided to create a quick flowchart this evening to define how the game server and map server interact with the login sequence. This was just a brainstorming exercise for helping me commit to my originally proposed server architecture (ensuring that it should work in practice).

See the flowchart on my blog:


Quote:
Originally Posted by EliteMagus View Post
Super nice to see you around buddy - even if we are both looking to run a new project.
Thanks, I'll do my best to keep up with project development.


Spirited is offline  
Thanks
1 User
Old 11/02/2016, 14:42   #5
 
elite*gold: 200
Join Date: Sep 2011
Posts: 189
Received Thanks: 85
I've been following this on your board =P

Best of luck !
Nyorai is offline  
Thanks
2 Users
Old 11/04/2016, 06:51   #6
 
elite*gold: 12
Join Date: Jul 2011
Posts: 7,084
Received Thanks: 3,396
Quote:
Originally Posted by Nyorai View Post
I've been following this on your board =P

Best of luck !
It's not my board, but thank you. I'm glad I'm not working in C anymore like I was before. It's a great language, but definitely not for a large distributed system. Modern languages like Go really shine in this case, and I've really enjoyed working on the project so far. Hopefully I'll get to work on this more once midterms are over.
Spirited is offline  
Thanks
1 User
Old 11/04/2016, 12:41   #7
 
elite*gold: 200
Join Date: Sep 2011
Posts: 189
Received Thanks: 85
Quote:
Originally Posted by Spirited View Post
It's not my board, but thank you. I'm glad I'm not working in C anymore like I was before. It's a great language, but definitely not for a large distributed system. Modern languages like Go really shine in this case, and I've really enjoyed working on the project so far. Hopefully I'll get to work on this more once midterms are over.
I know the feeling. Thankfully I won't have more midterms ever again =P Just my thesis dissertation left to do (dunno which is worse tho) !

Anyways, keep it up ! I'll be checking the progress every now and then !
Nyorai is offline  
Thanks
1 User
Old 12/07/2016, 05:59   #8
 
elite*gold: 12
Join Date: Jul 2011
Posts: 7,084
Received Thanks: 3,396
Go in Server Development
I was requested to discuss some of the advantages I saw with using Go in server development. I had some time taking a break from finals and decided to finish the article. It primarily talks about my decision and considerations for using the language. Just to clarify, this thread is not about Go in specific, so please don't post argumentation here. PM me or post on the article and I'd be happy to reply.

You can read the article here:

In addition, I've been working on some RPC servers and clients between the servers (and between studying), and I refactored some of my code involving big integers (adding big numbers as a byte ordering rule for my NetDragon packet encoder). More development is coming soon - I love working on this project and can't wait to be done with the fall quarter.
Spirited is offline  
Old 03/07/2017, 07:53   #9
 
elite*gold: 12
Join Date: Jul 2011
Posts: 7,084
Received Thanks: 3,396
Just a small update before I post a larger update in a month or two...
Things are slow due to academic project work.. I don't know why I took on 3 project courses this quarter.

I completed server routing for transferring player data to the map server. When a player logs in, the account server sends a request to the game server for character information and routing. Once the character is pulled from the database and a route is determined for the respective map server, it generates a cryptographically safe random token and sends it to the account server and map server for login. The token is validated on the map server, and the first packet is received (I have cryptography and the DH key exchange working). And now I'm working on the new role screen. I also rewrote the project to match a lot of go's expected package structuring. More to show soon... after this winter quarter is done.
Spirited is offline  
Old 04/07/2017, 15:23   #10
 
elite*gold: 0
Join Date: Apr 2014
Posts: 13
Received Thanks: 5
Are you about to open a server?
iHeisenberg is offline  
Old 04/07/2017, 18:05   #11
 
elite*gold: 12
Join Date: Jul 2011
Posts: 7,084
Received Thanks: 3,396
Quote:
Originally Posted by iHeisenberg View Post
Are you about to open a server?
No. Chimera is a development and will be for a long time.
It's nowhere close to being a public server.
Spirited is offline  
Old 04/07/2017, 18:07   #12
 
elite*gold: 0
Join Date: Sep 2011
Posts: 8
Received Thanks: 2
Interesting.
the way you think or code is much alot different from what i have known or seen in 7 years wasted in playing co or pservers dev/edit till now.
[V.I.P]Coder[PM] is offline  
Thanks
1 User
Old 04/08/2017, 11:33   #13
 
elite*gold: 12
Join Date: Jul 2011
Posts: 7,084
Received Thanks: 3,396
Quote:
Originally Posted by [V.I.P]Coder[PM] View Post
Interesting.
the way you think or code is much alot different from what i have known or seen in 7 years wasted in playing co or pservers dev/edit till now.
I wouldn't call it wasted time, as long as you enjoy the time you're putting into it.
Spirited is offline  
Thanks
1 User
Old 10/14/2017, 05:20   #14
 
elite*gold: 12
Join Date: Jul 2011
Posts: 7,084
Received Thanks: 3,396
Introduction
Without going into excuses about my extended absence, I completed the login sequence for Chimera a few months back and then left it "as-is". This post is just to let you know that I started development on Chimera again. After speaking with a member of the development community, I got some revived interest in developing a Conquer Online server, for better or for worse.

Revision
When I left off, I had a serious performance problem with the packet system that I was struggling to find a clean solution for. When decoding client data, I used reflection and TQ's byte ordering rules to populate a packet structure. This resulted in roughly 300 ns per decode. My plan is to replace the reflection system with a stream system to reduce this time (will retest). Decoding would then be as simple as accepting a byte.Buffer as a packet.Reader, and then using methods to manually decode the structure. Something like this:

Code:
// Reader encapsulates a byte buffer, used by packet structures to dynamically
// decode client data using TQ Digital's byte ordering rules. The base buffer
// can be assigned directly from the client's data response.
type Reader struct {
    bytes.Buffer
}
I'd use the same interfaces that I did before, but have it pass the bytes.Buffer down from the server events rather than passing the byte array. When encoding, I'd do the same thing - returning a bytes.Buffer rather than an array (just to create another byte.Buffer again). Hopefully that makes sense.

Conclusion
Point being that I have interest to keep this project going and to make it more performant before really developing up Conquer's subsystems. I want to make this project as easy to develop for and understand as possible, and work with others in the community to develop tools and resources needed for Conquer development. The wiki is also back up if you'd like to contribute. Cheers.
Spirited is offline  
Old 10/14/2017, 06:14   #15
 
elite*gold: 0
Join Date: Jul 2009
Posts: 7
Received Thanks: 1
how long it takes untill we see your project in beta or alpha


ahmedali10 is offline  
Reply



« [Help]About Scoreboard Arena! | A question to anyone who used Go programming language »



All times are GMT +1. The time now is 18:48.


Powered by vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Abuse
Copyright ©2018 elitepvpers All Rights Reserved.