[crossfire] Moving server towards a modularized system?
Miguel Ghobangieno
mikeeusaa at yahoo.com
Mon Jan 16 11:29:30 CST 2006
I have to do the same thing when I am adding things to
my perl rpg (which is not smaller in lines of code
then crossfire). It's not a big hassle, and how else
will the code know what's going on? Use grep.
--- tchize <tchize at myrealbox.com> wrote:
> Le Lundi 16 Janvier 2006 13:07, Anton Oussik a écrit
> :
> > Throwing in my two pennies:
> >
> > In general modularisiation of the code will
> improve maintainability,
>
> That's also my opinion.
>
> > On the other hand modularising the code will
> result in many changes,
> > may introduce new bugs into the code, and is in
> general a lot of work
> > whilst the benefits are questionable (this will
> only be useful if core
> > is really small and most things are out in modules
> which can be
> > configured at configure stage). If someone has a
> desire to do all that
> > they are welcome to (it is an open source project
> :-) ), but in my
> > opinion implementing new features would be more
> beneficial to the
> > project.
>
> Speaking of my experience with crossfire code. I
> have developped
> a few add-ons to crossfire in the past (don't
> remember the list).
> From my point of view, adding new features in the
> code is currently
> a pain in the ass. I have dropped features add-ons
> which took
> me lots of time simply because it has become nearly
> impossible to find
> something in the code.
> If you add a new arch type, you have to register it
> in a define list, register
> it in the movement function if it is active,
> register it in the attack code
> if it can attack player, maybe register it with
> weather system if it can
> interact with it, register it to spell casting
> system if, for example, it
> represents a spell modifier. Can you imagine today
> creating an item which has
> as characteristic 'owner can walk over water'
> without modifying piece of code
> everywhere?
>
> In a modularized system, you could have something
> like that (it's just an
> idea, it still has obvious flaws in aglorithms)
>
> when trying to move object from squareX to squareY,
> you trigger a move_request
> event on squareX listeners, on squareY listeners and
> on object listeners.
> Each listener can respond with NEUTRAL(0), ALLOW(1),
> REJECT(-1)
> if there is an allow, then allow movement
> else if there are no reject then allow movement
> else refuse movement
> water would be REJECT non swimming obj, your item,
> registered in player when
> applied) would allow on every square with water.
> The exact same idea can be used to create complex
> check_inv, confusion spells,
> director, no_movement traps . You just 'plugs' in
> the movement code.
>
> Also this system can improve server performances.
> Currently, one of the main
> 'lag' problem of server is meteor swarm in the open
> areas. thousands of fire
> elements are checking the object list on a given
> square (that is other fire
> elements) at a given tick, and this until fire dies
> a few seconds later.
> Now imagine this.
> create a 'fire' arch at square X.
> When inserted, arch code register a move_event for
> the square and also analyse
> immediatly content of square.
> when new things are added to the square, the fire
> can check immediatly if this
> item can burn. Most of the time, there is nothing to
> burn.
> when the fire element gets activated avery X ticks,
> it does not have to
> explore a list of 100 other fire object to know
> there is nothing burnable
> where it belongs.
>
> Saying it's more important to add new features than
> modularize the code is
> simply a short term view. Since am part of this
> projects, i saw new features
> coming on a regular basis. Today the code, imho, is
> far less maintanable
> then it was 5 years ago. And if we continue to focus
> on features without
> architecture the code will be a blotted piece of
> unmaintanable code in a few
> years.
>
> If i remember well, Mark Wedel already had in the
> past to request from
> developper they spend more time on fixing the server
> code then add new
> features. There are tons of features in code map
> maker simply don't know
> about.
>
> Moreover there are tons of security issues in the
> code. They could be isolated
> and identified far more easily during a
> reorganisation process.
>
> I hope we will ge to an agreement on this subject.
>
> >
> > If you are going to go ahead with it, before you
> do anything to the
> > code you will need to define what goes out to what
> modules, and what
> > depends on what. Since CF was not designed to be
> modular you may also
> > find recursive dependancies which will need
> resolving first. But I
> > suspect you knew this already...
> >
> > _______________________________________________
> > crossfire mailing list
> > crossfire at metalforge.org
> >
>
http://mailman.metalforge.org/mailman/listinfo/crossfire
> >
> >
>
> _______________________________________________
> crossfire mailing list
> crossfire at metalforge.org
>
http://mailman.metalforge.org/mailman/listinfo/crossfire
>
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
More information about the crossfire
mailing list