PDA

View Full Version : Architecture


froglok23
04-09-2007, 04:23 PM
Hi all,

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

regards,

froglok

froglok23
04-10-2007, 11:07 AM
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

krusher
04-10-2007, 10:59 PM
That would be great... One of the most frustrating things is trying to find where stuff happens in the code base.

Good luck

froglok23
04-12-2007, 11:57 AM
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

EmanonCow
05-07-2007, 08:52 AM
frog, how goes your attempt?