Notice: This is a pre-release and is not a stable server. Do not use this server with the expectation of starting a private server. I will continue to improve the server, but this is simply for feedback and learning purposes.
New: Just a heads up for people reading the source, I'm planning to replace a large amount of code / restructure packages / clean up quite a bit. If you're using this as a template to start a server from a clean base, I recommend holding off until I release the new version.
Introduction
Chimera is an open source distributed systems project, targeted at the Conquer Online game client at patch 5615. Use of this project with the game client is purely academic, and cannot be used legally for profit or public server operation. It's authored in Go for the purpose of multi-processor computation of mass network traffic from connected game clients. It achieves this by design and implementation: both in architecture of the server mesh, and implementation of the mesh through routines, channels, and remote procedure calls.
Server Architecture
Chimera is separated by three server roles: the account server, game server, and map servers. The account server acts as gatekeeper for verifying and authenticating clients for the game and map servers. The map servers individually control a region or zone of the game, and mesh to form the entirety of the game world. Map servers are given their region on startup, but allow transfer of roles between map servers for rebalancing in real time (not yet implemented at this phase). Finally, the game server acts as a glue for the map servers, giving the world of Conquer Online a backbone that connects the zones of the world together and routes players between the zones.
Conclusion
I'll be updating this thread as I continue releasing new versions. If you have questions, please don't hesitate to ask or make conversation. If you're interested in my private version's development (which mirrors this one currently), you can find updates using the link below. Thanks again for your interest and support.
Answered Questions
Q: Is there a C# version?
A: No. The project is written in Go.
Q: How do I set up the server?
A: Instructions are in the readme.
That's right, and the purpose of Go is writing maintainable distributed systems. It excels in networking and parallelism. That was what ultimately led me to choose the language.
If it's the best, can it do this without ****** reflection performance issues?
The answer is nope, because there is no compile-time. Which is probably the first step towards a good language, until then it's just mediocre at best.
So what's the advantage of that?
Settings values of one object to another where members match. The code is generated at compile-time and thus it would operate as if X.x = Y.x; was written manually.
As long as you can't do stuff like that in C# then it's not really a language to clap your hands for.
That's just one example of a language (The D language) that does things much better than C# in some areas.
Other languages that mostly beat it too are Rust, Nim and so on, most of all those new languages.
C# is pretty irrelevant in this time and age. Really it is. It's only worth knowing for jobs.
If it's the best, can it do this without ****** reflection performance issues?
The answer is nope, because there is no compile-time. Which is probably the first step towards a good language, until then it's just mediocre at best.
So what's the advantage of that?
Settings values of one object to another where members match. The code is generated at compile-time and thus it would operate as if X.x = Y.x; was written manually.
As long as you can't do stuff like that in C# then it's not really a language to clap your hands for.
That's just one example of a language (The D language) that does things much better than C# in some areas.
Other languages that mostly beat it too are Rust, Nim and so on, most of all those new languages.
C# is pretty irrelevant in this time and age. Really it is. It's only worth knowing for jobs.
In Go, you just use anonymous structures and equate the structs.
Example:
Using C# is like dragging your dead grandmother up the street.
C# is pretty irrelevant in this time and age. Really it is. It's only worth knowing for jobs.
That in and of itself makes it relevant.
If you're learning a language with the goal of getting a job, C# is a great option because there's a million uses of the language with a ton of companies hiring. There's always better options but until the point when they have such huge market saturation and versatility, there's less reason for learning them in a general job seeking education sense.
Maybe I'm sheltered in the communities I browse but the number of job postings I've seen for C# related programming jobs in the last few years has skyrocketed.
If it's the best, can it do this without ****** reflection performance issues?
The answer is nope, because there is no compile-time. Which is probably the first step towards a good language, until then it's just mediocre at best.
So what's the advantage of that?
Settings values of one object to another where members match. The code is generated at compile-time and thus it would operate as if X.x = Y.x; was written manually.
As long as you can't do stuff like that in C# then it's not really a language to clap your hands for.
That's just one example of a language (The D language) that does things much better than C# in some areas.
Other languages that mostly beat it too are Rust, Nim and so on, most of all those new languages.
C# is pretty irrelevant in this time and age. Really it is. It's only worth knowing for jobs.
Are you better off than C++ does not print, but the ease in handling is C#
What is your specific goal with this release?
Are you trying to get people interested in other programming langues besides c#?
Are you just expanding your own knowledge and sharing it with the public?
As you stated out this source is far from complete, will there ever be a fairly complete stable public version or are you not certain about that yet?
The goal of a pre-release is to gain early feedback. For example, I already received feedback about the "Title" offset in the MsgUserInfo packet being wrong and I was able to fix that. I spoke to a discord group about the binary encoder/decoder for packets and what I'll replace it with. It's generally just good for the community to gain exposure with other programming languages and fun knowing what people are working on. We don't all work on the same patches or with the same languages, and we don't all have the same backgrounds. So, I have some gain in making this public and so does the community in a way. And yes, I hope to improve this over time.
PS: I'll ask whatever discussion is going on above this to stop. It's giving me a tumor.
[Open Source]ServerManager (Open Server files is Closed) 04/16/2015 - SRO PServer Guides & Releases - 10 Replies Hello Since a guy called "nevetS" Afraid of sharing he's source code i decided to write a similar program with better features
first of all flame is not allowed any flame comments will be reported
this program made in less than 10 minutes (not so special)
Features :
when you open the program you will see a form similar to this one