PDA

View Full Version : Is there a server emulation on the way



Todi
04-08-2005, 03:19 AM
Hi,
i was wondering if there is anybody trying to program a server emulator for EQ2. I play with the idea myself....

Freakyuno
04-08-2005, 08:35 PM
So what are you waiting for?

Acid1789
04-09-2005, 12:07 AM
I have a very basic one I was using to test network protocol stuff out. Im sure its no where near what you would call a server emulator since it doesnt dictate a game to the client. It just does basic network traffic.

Most of the code is shared with EverSpy2 and EverDump in the SonyProtocolLib. You should read through it, im sure it will serve as a good starting point ;)

Todi
04-15-2005, 04:56 AM
I am evaluating several MMORPGS at the moment.
I played dark age of camelot but it was rather static.
So i tried everquest 2 as a demo and it was far better when it came to quests and interaction. Everquest 1 i didnt so far test.
World of warcraft is quite funny but the graphics are a bit to ...much comicstyle i would say and apart of that its very buggy.

I would be willing to have a look and invest time in programming an emulator (java preferred) provided i would know where to start ;)

I have so far no clue as to how the server communicates with the client and what data a backend would have to provide.

I think it would be relatively easy to set up a backend if the client server communication protocols would be available for use already as that (for me) seems to be the most difficult part.

Acid1789
04-15-2005, 12:19 PM
The SOE protocol is documented by myself and others. It is the protocol that is used for EQ1, EQ2, and SWG (maybe other SOE games). There is another layer on top of that protocol which is game specific. The game specific layer contains all the game messages and commands.


As for the use of java... umm... ok... Java is an interpreted language. You would be wasting a huge chunk of your server cpu time in the java virtual machine. You would be much much beter off writing it in C/C++. Still a good world server would take more than one machine to handle.

high_jeeves
04-15-2005, 12:52 PM
Bleh... Java Myth #13453... Java performance is just fine... with modern JIT compilers, and well written code, java can be just as fast, and in some cases faster than C++. I work in both Java and C++ all day, and have for the last 9 years (since java came out, pretty much). While early version of java (up to about 1.3 or so), did have performance issues... modern JVMs are quite fast.

As a matter of fact, my old version of SEQ, and my current version of SEQ2 are both written in 100% java, and work quite well. The only issue you will find in java for this kind of work, is that there are no unsigned types... This can become an issue with algorithms that use data as bitfields, instead of higher order types. It isnt a real issue, if you are aware of it and write your code appropriately, but it can bite you in the ass if you arent paying attention.

As for the protocol... both the common SOE protocol and the EQ2 specific one are fairly well known at this point by a few people... if you are really interested in working on this project, I would recommend you take a look at Acid's source for EverDump, for some info on the basic protocol... the EQ2 specific messages, you'll either have to reverse engineer yourself, or hope one of the people already familiar with them is willing to help you.

--Jeeves

Acid1789
04-15-2005, 04:25 PM
modern JVMs are quite fast.
Any VM is slower than an actual machine. Issuing instructions to the hardware is the fastest way to use the hardware. Issuing instructions to an intermediary only slows it down. There is no reason to use java for something like this, especially since an mmo server is extremely performance critical.

Cryonic
04-16-2005, 03:44 PM
webservers are also performance critical, yet java is used for the backend of a number of servers and don't suffer any worse than if it was C code on the backend.

As near as I can tell, java's only real slowdown has been in having a GUI on the application.

high_jeeves
04-17-2005, 12:30 PM
Any VM is slower than an actual machine. Issuing instructions to the hardware is the fastest way to use the hardware. Issuing instructions to an intermediary only slows it down. There is no reason to use java for something like this, especially since an mmo server is extremely performance critical.


But thats the whole point of a JIT compiler... it converts the bytecode to native code on the fly.. caches that native code, and then uses it for future execution of the same block. This actually has many advantages over compiled code, since more about the state of the application is known at runtime than compile time. JIT compilers frequently generate better code than standard compilers.

An effective MMO server could easily be written in Java, (as many high volume web systems currently are).

--Jeeves

Todi
04-19-2005, 05:28 AM
Actually i knew that this would happen ....
That "my language is better" topic occurs every now and then.

Speed is not the issue with java.
First of all there are JITs as said above, secondly we dont have to deal with "primary" calls but with objectoriented languages.
We talk about instanciation, destruction and handling of objects here. c++ is performing rather poor in that aspect. Its an "artificial" objectoriented language so to speak.
Java is faster when it comes to programming oo.
C# is already in some aspects faster than java when it comes to oo.

As said ... performance is not the issue here. Java would be ok.

I think the post about the datatypes contains the "best" critics about the language.
Also problematic (but solvable) are issues with bits (as javas smalles primitive is a byte).

Anyway ... we derived from the topic
Anybody got some direct links where i could take a look at code without searching for it ;)?