Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Development

Development::Development Forum for development topics and for those interested in EQEMu development. (Not a support forum)

Reply
 
Thread Tools Display Modes
  #1  
Old 04-09-2007, 04:23 PM
froglok23's Avatar
froglok23
Hill Giant
 
Join Date: May 2005
Location: Australia
Posts: 113
Default Architecture

Hi all,

just wonder if there is any architectural design documents flushed out for world.exe and zone.exe?

regards,

froglok
Reply With Quote
  #2  
Old 04-10-2007, 11:07 AM
froglok23's Avatar
froglok23
Hill Giant
 
Join Date: May 2005
Location: Australia
Posts: 113
Default

Im guessing that by no repeonses, there is little to none architectutal information available :(

Looks like this is a job for the weekend class diagrams, etc

froglok / Dark-Prince
Reply With Quote
  #3  
Old 04-10-2007, 10:59 PM
krusher
Sarnak
 
Join Date: Jan 2003
Location: Grand Rapids, MI
Posts: 90
Default

That would be great... One of the most frustrating things is trying to find where stuff happens in the code base.

Good luck
Reply With Quote
  #4  
Old 04-12-2007, 11:57 AM
froglok23's Avatar
froglok23
Hill Giant
 
Join Date: May 2005
Location: Australia
Posts: 113
Default

Firstly, This post is to do with the post at: http://www.eqemulator.net/forums/showthread.php?t=22622 also.

Iv been going over the code now for a few hours here and there on and off for the last couple of days and have some suggestions.

The Architecture I feel needs to be flushed out to at least 2 more projects.

These projects would be : "Network" and "Database"

The "Network" project.

In short, this project will contain all code which sends / receives opcodes, deals with communication to/from the world/zone/eq client

The "Database" project:

This project will contain the classes to deal with MySQL only. It will handle the saving / retrieving of database rows/columns.

So basically, here is an example using 'Guilds':

Zone Project:
GuildManager -> The General logic which contain "Game" logic, i.e
AddPersionToGuild(Person, Guild)
{
Database.AddPersonToGuild(Person, Guild)
Network.AddPersonToGuild(Person, Guild)
} // Note this wont complie and is only a example

Network Project:
GuildNetworkManager -> Handles sending of the Opcodes / Anything which uses the network side of EQEmu

Database Project:
GuildDatabaseManager -> Handles Saving and Retrieving of Database related information (Guild Names, Listings, Members, Adding members, removing members, etc)

Please note, that the above example, is a very basic and cut down example.

Pros:
Cleaner Project & Easier to read
All related code is in its own area / project
Easier to promote code reuse (why reinvent the wheel)
2 Tier Architecture
Reduced size of the code base due to reuse
Less code is less testing
When les code is used, the same code, gets tested, retest and retested several times.
Easier to understand, read and follow
Allows for easier development
Easy to maintain

Cons:
Requires extensive time to implement
Will need to retest a lot of code
Bigger project (almost twice the amount of files, but will be less code)

However, I do believe this is something which should be done, sooner rather than later, so in an attempt, Ill be doing it for Guilds over the weekend

With this new architecture, EQEmu will be given a new source of momentum and drive to push towards version 8.

Ill also be adding a lot of documentation to the source code while doing this as iv noticed that there isnt much in code documentation due to the current and previous developers under pressure to get the code out.

froglok / Dark-Prince
Reply With Quote
  #5  
Old 05-07-2007, 08:52 AM
EmanonCow
Sarnak
 
Join Date: Aug 2006
Posts: 35
Default

frog, how goes your attempt?
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 04:24 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3