Quote:
So do I, just packets are not hard and neither are the handlers, but as I noticed your using pipeservers so it might take you a little bit longer then we do.
Indeed, there are large differences in our sources, you guys are going for a far simpler approach which allows for the big jumps forward in your development in a reasonably short period of time. Im being quite ambitious with my project, doing things that ive never done before, the pipeserver is a prime example, i could just use sockets for an inter-process communication system, but i would much prefer to get the pipeserver sorted out as its alot faster (as close to instant that it makes no difference), and alot more flexible.Quote:
Well, check the differences, you load about 4 different applications acting as 4 different servers, including named pipes, while we only load 1 application acting as 3 different servers.
Also, our main references are:
1- Your packet wiki (special thanks to you for this amazing wiki)
2- My flat file dumped version of CoFuture's databases and monsters(heard that was yours too =o)
if we can't find the specified packet that we need at the wiki, we just check the offsets and structure of the packet from CoFuture, however how the way packets get written ,filled or handled is merely our own work - we extracted our packet class form our proxy(Jan 21 2010) that was abandoned when TQ decided to shoot us at patch 5211/5212.
I didnt mean to say that you guys werent working hard, or were taking short cuts, simply that you are going for a much simpler approach, which means you can adapt existing things to your needs with relevative ease if you wished.
You will definately be up and running before me lol.
Ok, say for example it takes 2ms for the source to access 1 npc and then send the relevant information. Thats easy, 2ms is nothing. If you multiply that by the number of npcs in the server you get a pretty large number. Obviously this isnt accurate because the server will iterate through the npcs you have and send the relevant one, but over all it was threads that i didnt want to waste. My server uses a threadpool which expands and contracts depending on the load on the server, the more requests the more threads etc, if i handled all npc requests then i would require a large number of threads, which could degrade the overall latency on the server.Quote:
good luck, what language you guys doing it in? ill take a guess and say C#, people need to escape the masses of C# and get some other languages going around. delphi? c? java? python etc
@Korvacs: I know TQ used an NPC server and all, but am i overlooking something? why would NPCs possibly need a separate server? it's not like they are shared between servers, no need to create the extra latency imo, like i said i might be completely forgetting something that it could have use for :P
One of the key things that ive noticed about people who play conquer is that they hate lag durring pvp, that is the single largest complaint that ive seen, if someone lags then they loose a fight. However i dont think ive ever experienced someone whos said "You know what i hate it when this npc dialog takes 0.4 of a second to load." For me the trade off is definately worth while, all the game server does for npc requests is send them on to the npc server, the npc server looks up what needs to be sent, makes the changes to the character if any, and then sends packets back to the server, which are sent straight to the client. The game server doesnt need to think about teleporting someone to x location, doesnt need to create items, doesnt need to change someones appearence, level, hp, mp, skills, hairstyle. It just gets notified of the change and thats it.
So i mean, for me its obvious, the other thing ive got sperated from the gameserver is the dmaps, any checks for illegal moves or anything like that, monsters of characters a like, is all done off the gameserver, the gameservers key job is to get the packets in and then out again in the shortest time possible, with the least amount of processing possible.