PDA

View Full Version : Emulator rewrite


boscorillium
06-18-2006, 05:14 PM
I might make enemies early on by just mentioning it, but I wanted to start a discourse on the subject. Have there been any discussions on rewriting and/or rearchitecting the emulator?

Damilis
06-18-2006, 08:41 PM
Alright guys, time to round up the Lynch mob again....

:)

Belfedia
06-19-2006, 12:40 AM
I might make enemies early on by just mentioning it, but I wanted to start a discourse on the subject. Have there been any discussions on rewriting and/or rearchitecting the emulator?

I didn't see discussion about that, but i think devs speak about that.
Gradually, they change the routines which they consider bad in the emulation by a new more effective code.

I do not think that a public discussion would bring large thing it above. There is already a place or everyone can express wishes , and everyone (with skill) can also become developer :)

boscorillium
06-19-2006, 08:03 AM
Guess there's not a lot of interest. I'll just have to get in there and get my hands dirty. No problem there. :)

Gameross
06-19-2006, 08:07 AM
Re-write sounds good. When you have it up to it's current state, we'll all join in and help.

fathernitwit
06-19-2006, 12:17 PM
well in short, we dont have time. We redesign things as needed, but rarely do we rewrite things purely to achieve better code design. On the other hand, Doodman and I have prolly rewritten at least a quarter of the code in the last 18 months for various reasons. Unfortunately, our time is much better spent applying bandaids than sewing on a new arm.

Overall, the archetecture of the emulator isnt bad, the design is so-so, and the implementation of that design is where it gets messy. As such, there are lots of subsystems which should be redesigned and prolly 1/2 the code should be refactored. However, the benefits of doing these redesigns and refactoring are quite small considering that I would say half of the bugs on the known issue list could prolly be solved in the same amount of time by a dedicated individual.

The only really "pending" archetecture change right now is to get rid of a bunch of the global variables in order to support zone instancing. I have started on this, but am not even close to finishing (mainly because the database work involved became more work than I wanted to put into it).

I have toyed with the idea of rewriting the AI code to be more modular, but I just couldent justify the huge amount of work involved against the few benefits. Further, the fact that Mob and Client have like 1000 methods each is just incredible... and is bad... but at the end of the day, it isnt hurting anything.

I guess my oppinion is that the overall codebase of eqemu is not all that bad... sure it could be done a lot better, but the code is relatively stable and working, and honestly it is a little late in the game to try to make it beautiful. With over 170000 lines of code, its more than a daunting task. Further, I really dont think that a completely redone emulator would help solve very many of the outstanding issues.

That said, if somebody capible of redesigning the emulator showed up and started working on it, I would encourage them to talk to me about how their efforts might be otherwise spent to greater benefit to the community.

boscorillium
06-20-2006, 04:18 PM
Ok, now that I got my server setup running. What would you have me do? I'm ready to tackle something. Let's for argument's sake assume that whatever you asked me to do I could do. What would be on the list? Thanks.

Gameross
06-20-2006, 07:40 PM
Ok, now that I got my server setup running. What would you have me do? I'm ready to tackle something. Let's for argument's sake assume that whatever you asked me to do I could do. What would be on the list? Thanks.Impliment Shamans Can 5 AA, that should be easy.
Wouldn't mind Mages Call of Hero working too.

sesmar
06-20-2006, 09:54 PM
What would you have me do? I'm ready to tackle something.
What would be on the list?


You can view a list of Current "known" issues and bugs here.

http://www.eqemulator.net/wiki/wikka.php?wakka=DevIssues

boscorillium
06-21-2006, 05:08 AM
The main problem is that I don't actually play EQLive. So anything I work on will either have to have some sort of behavior defined or just be a system level type of fix. I start sorting through some bugs.

I'm still having problems compiling. Complaints about mysys.h or something of the like. This is on a windows box. I'll sort it out unless someone wants to suggest something. This is with Sesmar's distro for building under VC2003.

sesmar
06-21-2006, 05:26 AM
Make sure that you have followed this guide (Visual Studio 2003 and 2005 Express have similar setup.) and have installed all the proper dependencies.

http://www.eqemulator.net/wiki/wikka.php?wakka=DevVSExpress

boscorillium
06-21-2006, 07:43 AM
Make sure that you have followed this guide (Visual Studio 2003 and 2005 Express have similar setup.) and have installed all the proper dependencies.

http://www.eqemulator.net/wiki/wikka.php?wakka=DevVSExpress

Yep, that's the guide I followed. The complaint is about mysys_priv.h I believe that is a dependency in mysql.h. I'm at work so that might be a little off. I plan to get those all resolved tonight.

fathernitwit
06-21-2006, 12:05 PM
yea, the issue list on the wiki is the best place to go off...

the easiest place to start would prolly be to work on broken spells, since they should be almost completely server side, and require less knowledge about the packet stream and what not. heres a blurb about various broken spell things, likely requires more explanation (post a seperate thread asking questions and hopefully the players in the community will help flesh it out):

spells that aren't working and discipline timers. Call of the Hero being the most requested spell to fix. it would let people get to raid groups easier and get back into a fight after a death. the necromancer spell Sacrifice, to create essence emeralds, needs a looking at. the essence emeralds are a required component for some spells and for the Vex Thal key quest. the npc spell feeblemind is causing healing spells to deal direct damage to the player being healed. Lull/Pacify spells would be appreciated if something could be done about the beneficial/detrimental issues. 6 separate timers for the pure melee and hybrid disciplines.


If you are more daring, you could take a look at some of the packet/client related issues. These might be hard with the limited packet logs avaliable, and would prolly require a live account..... AAs in the titanium client is the biggest one (also one of the hardest). Beyond that, there is more hard work to do on facial feature appearance in the client. There is also the group chat bug mentioned above (group leader cannot chat)

also, there is a ton of work to be done on actually implementing AAs (if you have the 6.2 client)

I could go on... most of the "Confirmed small issues" should be manageable though.

boscorillium
06-21-2006, 03:37 PM
Httpdsocket.h not found. I presume /common/socketlib needs to be in the include path?

rojadruid
06-21-2006, 04:40 PM
Httpdsocket.h not found. I presume /common/socketlib needs to be in the include path?

Humm thats the same one I get, does adding "/common/socketlib" to the include work?

boscorillium
06-21-2006, 04:52 PM
Humm thats the same one I get, does adding "/common/socketlib" to the include work?

Yeah but if you're like me you'll get a host of other errors once you resolve that one. Complaints about the redefinition of int8, int16, int32 and a few others. Then there will be complaints about Base64 not being a class and also the "decode" identifier not found.

It's a shame really... I'm not sure what the deal is, but I'm slowly going to resolve the problems and if/when I do, I'll be sure to post more information here. It's like pulling teeth to get some people around here to provide details. C'est la vie I suppose.

boscorillium
06-21-2006, 07:02 PM
Ok, finally successfully built atleast World under VC2005. EMuShareMem built all along.

The problem I was having was that in EQWHTTPHandler.cpp, Base64.h was being included with an implicit path through the include paths. However, that was seeming to cause problems with a file named Base64.h in mysql's include directory.

So I just commented that line out and changed it to an explicitly pathed include, i.e.:

#include "../common/Socketlib/Base64.h"


On top of that, instead of including common/Socketlib in my includes path, I just went through and changed the include statements to explicitly pathed included files as opposed to implicitly pathed files.

Happy camper I am.

Haha, all compiling now. Bed time for sure, but fear me - LOL. j/k, Hope to be of help now.

sesmar
06-21-2006, 09:15 PM
You need to add "../common/socketlib" to your include path