Chimera Open Source, Patch 5615

03/10/2017 07:58 Spirited#1
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.

[Only registered and activated users can see links. Click Here To Register...]

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.
03/10/2017 16:00 Hacker.#2
There pushed Version C# ?
03/10/2017 17:11 pro4never#3
Quote:
Originally Posted by Hacker. View Post
There pushed Version C# ?
Its written in the go programming language, not C#.
03/10/2017 21:40 Hacker.#4
Quote:
Originally Posted by pro4never View Post
Its written in the go programming language, not C#.
I know that, but language C# best
03/10/2017 22:48 LupusOverflo#5
Epic. Always awesome to see sources in a different language than C#.
03/10/2017 22:54 pro4never#6
Quote:
Originally Posted by Hacker. View Post
I know that, but language C# best
There is no such thing as a best languages. Different languages have diff strengths and weaknesses.

C# is a great multi purpose language but is more of a hack of all trades thing vs excelling in any particular area
03/10/2017 23:46 Spirited#7
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.
03/11/2017 01:58 killermale123#8
Great Job.
03/11/2017 02:27 Spirited#9
Quote:
Originally Posted by killermale123 View Post
Great Job.
Thank you, sir.
03/11/2017 02:47 Super Aids#10
Quote:
Originally Posted by Hacker. View Post
I know that, but language C# best
If it's the best, can it do this without shitty reflection performance issues?

[Only registered and activated users can see links. Click Here To Register...]

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.
03/11/2017 03:24 Spirited#11
Quote:
Originally Posted by Super Aids View Post
If it's the best, can it do this without shitty reflection performance issues?

[Only registered and activated users can see links. Click Here To Register...]

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: [Only registered and activated users can see links. Click Here To Register...]
Using C# is like dragging your dead grandmother up the street.
03/11/2017 03:51 pro4never#12
Quote:
Originally Posted by Super Aids View Post
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.
03/11/2017 03:55 Hacker.#13
Quote:
Originally Posted by Super Aids View Post
If it's the best, can it do this without shitty reflection performance issues?

[Only registered and activated users can see links. Click Here To Register...]

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# :cool:
03/12/2017 15:02 Best Coder 2014#14
Quote:
Originally Posted by Super Aids View Post
If it's the best, can it do this without shitty 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.

...

As long as you can't do stuff like that in C# then it's not really a language to clap your hands for.
[Only registered and activated users can see links. Click Here To Register...]

Quote:
Originally Posted by Hacker. View Post
Are you better off than C++ does not print, but the ease in handling is C# :cool:
Please stop fucking posting.
03/12/2017 23:49 Spirited#15
Quote:
Originally Posted by Money | Specials View Post
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.