CO Community Project

04/05/2010 08:23 pro4never#16
Quote:
Originally Posted by zTREME View Post
Yea, i never used the coemu, so i can't tell what there is, but after reading your post i probably get the problem and yea thats might why he released it, but about tanels LOTF, they are both some really crap. I dont know, is the new source more stable or same?
I've never been a fan of lotf and not used either one. From what I've herd it does use a different socket system though.

Quote:
Originally Posted by ChingChong23 View Post
so CoEmu uses thread per player model, hmmm. What does hybrid's use? saved me time downloading it and checking. Thread per player model can work, my guess is that it's all thread synchronization problems in CoEmu, ill take a further look soon though. Also whats the version got to do with the stability of the server? and what server runs 5165? the version is just a number.

Hybrid uses his own socket systen (hybrid socket) that he wrote that from what I've heard is very effective and his source is bug free... it just needs to have features coded/path upgraded (unless you wanna run a 5017 server)

Problem with coemu is it doesn't throw any errors (at least with my version) or crash the server, it just stops responding to clients, doesn't even disconnect them).

The version is just the client patch number so that has to do with what features the server can support. The encryption and packets change some between versions so you basically wanna decide beforehand what version you want the server to run because it will change a large amount of your coding.
04/05/2010 08:36 ChingChong23#17
CoEmuv2 5095 is what ill be running, once i finish downloading the client ill do some tests, when you say they stop responding to clients, is that after a certain amount of time? after a certain amount of users? after a specific event etc? any information would help me a lot thanks.

I can add a ton of debugging info, however id need someone to host it and 'make it stop responding'
04/05/2010 08:45 pro4never#18
Quote:
Originally Posted by ChingChong23 View Post
CoEmuv2 5095 is what ill be running, once i finish downloading the client ill do some tests, when you say they stop responding to clients, is that after a certain amount of time? after a certain amount of users? after a specific event etc? any information would help me a lot thanks.

I can add a ton of debugging info, however id need someone to host it and 'make it stop responding'
I've been having it happen with a modified version of coemu so it's possible it's due to the 'upgrades' in the various versions I combine to create my source.

It doesn't seem to happen at any particular time although it happens much more often when there are more people online and especially if they are active in pvp such as guild war.

I'm thinking it could be something to do with foreach loops running through all connected clients while someone is connecting/disconnecting as that could create some problems (although I would think using a lock statement would fix most of that up)


When it does occur no connected clients are disconnected, they can stay connected indefinitely without being kicked or showing any error msgs in the server... the server just stops sending new info to them (so the client is jumping around but never receives any updates such as mobs/npcs/players)

Any players trying to connect it will show being authenticated and logging in on the server but will never actually complete loading into the game so it would seem there is a problem creating the new client thread and actually spawning them into the world.


I can probably think of some more stuff if you can be more specific with what is missing/what you need but that's what I can think of off the top of my head. Personally my project is on hold till I'm done exams at the end of the month and then I'm going to hopefully re-work alot of my code... personally I just don't have the interest, time, patience or knowledge to completely re-code the client socket system from scratch and at that stage I'd be better off working on a fully custom source for the rewards I'd get out of that much work...

Hopefully some handy lock statements, code optimization and using the BASE coemu and building on it will make a big difference though (the modified coemu versions have features but have alot of problems. I strongly suggest using them as reference materials only!)
04/05/2010 09:03 ChingChong23#19
I'm going to rewrite the core (3 threads). first thread will listen for new connections, second one will receive data from all asynchronous socket's, then the data will be handed to the main game engine thread, which will process the data.

edit: actually ill use 2 threads, and put tanelipes code [Only registered and activated users can see links. Click Here To Register...] to good use.

Will be no threading issues here.
04/05/2010 10:24 ~Yuki~#20
I was hoping uŽll use Tanels source... CoEmu is a mess, including a headache.
04/05/2010 10:37 ChingChong23#21
interesting, CoEmu has ninjas, definitely will add the ability to disable classes (as i would never host a server where theres ninjas)

Theres a few things that need cleaning up, such as when logging in you get a dialog, some unwanted text and what the hell is with them guard reviver? id like to make it as close to CO as possible.
04/05/2010 10:53 Kiyono#22
This seems like an interesting project but weren't you busy with Jonquer?
04/05/2010 10:57 ~Falcon#23
Thread synchronization is one of the root problems within just about all public released sources, people really sure research the framework or language they are developing in, before they develop in said language;

Monitor Class (Enter/Exit);
Lock Keyword
Mutex
Critical Section's

I really wish sources would try something different for once also, using stored procedures with MySql, quadtree's etc.

My message is not directed at everyone, and I know a few people are using different and 'unique' methods, just the community having no access to such valuable resources means they are learning from the same old crap and then repeating the same old practices. If you really wish to make an impact on the community and bring out a "community" project, at least make it worthwhile and beneficial. By all means if you can convert that god awful source into something respectable, be my guest, I really do hope you succeed, but your going to have a lot of work to do.
04/05/2010 11:10 ChingChong23#24
Quote:
Originally Posted by Kiyono View Post
This seems like an interesting project but weren't you busy with Jonquer?
nah i quit that awhile ago and couldn't be bothered working with it, i'm currently sick in real life and am looking for a project to work on, this sounds like a good idea.

Quote:
Originally Posted by ~Falcon
Thread synchronization is one of the root problems within just about all public released sources, people really sure research the framework or language they are developing in, before they develop in said language;

Monitor Class (Enter/Exit);
Lock Keyword
Mutex
Critical Section's

I really wish sources would try something different for once also, using stored procedures with MySql, quadtree's etc.

My message is not directed at everyone, and I know a few people are using different and 'unique' methods, just the community having no access to such valuable resources means they are learning from the same old crap and then repeating the same old practices. If you really wish to make an impact on the community and bring out a "community" project, at least make it worthwhile and beneficial. By all means if you can convert that god awful source into something respectable, be my guest, I really do hope you succeed, but your going to have a lot of work to do.
I'm going to make the server very flexible, allow multiple types of loading/saving (and have it all set up) and have it plugin-driven. I'm one of those people that don't like to work with dirty code, bad programming conventions etc, which is why im going to spend a day on refactoring CoEmu just to make me feel 'clean' and worthwhile on working it.

I won't be using LOTF, it has very redundant code and is barely object orientated.

I have just removed the LoginServer project and merged the GameServer & LoginServer into 1 project and a launcher to launch them both. I have put important constants into a shared constants class between the GS and LS, i'm going to remove all the text spam on the console and make it neater, then remove all the crap when logging into the game and make it seem more like a real server, than a private one. then ill get started rewriting the core.

I'm being quite serious about this project, whether the community or anyone wants to help or not, i have the dedication to do it my self anyway.
04/05/2010 11:35 Kiyono#25
So are you gonna make a website/forum for this or will the development be kept on epvp?
04/05/2010 11:43 ChingChong23#26
id like to put this on an external forum, but i got a feeling it would shine out here, more than externally.

Ill do work, and when i have made enough progress for a distribution for people to test out, then ill make a forum (where people can report bugs, suggest things, feedback etc)
04/05/2010 11:48 Kiyono#27
Another question, why does your siggy direct to page 3 of this thread and not page 1?
04/05/2010 11:53 ChingChong23#28
accident :P
04/05/2010 12:14 PeTe Ninja#29
dont make pvp server.. make level server if you want to go somewhere.
04/05/2010 12:18 ChingChong23#30
it will be a pvp or leveling server (you can switch between it)