Re: [crossfire] Moving server towards a modularized system?

2006-01-17 Thread Yann Chachkoff
Le Mardi 17 Janvier 2006 06:03, Alex Schultz a écrit :
> Frankly, I have to agree with mikee to some degree on this point. I
> generally have little trouble finding something after a combination of
> getting a feel for the code, which I have gotten pretty good for a while
> now, as well as skilled grepping.
>
"Finding something" is not really that difficult. However, adding new things 
often is, because it is not uncommon to have to modify the code at several 
different places. I see this as inherently bad - if I want to implement a new 
object type for example, I'd prefer putting its whole code in a single place 
than having to edit several source files (some being in common/, others being 
in server/). 

Of course, a skilled coder that has got a good knowledge of the Crossfire code 
generally has little difficulty to find its way through the code - but not 
every contributor can/wants to afford the time required to get that in-depth 
knowledge of the code; besides that, having to play with grep to find the 
relevant piece of code is already a failure in itself, IMHO: if even somebody 
used to the source has to rely on a search engine to find its way through it, 
can we consider there is no problem ?

> However aside from some things like this, I do find modularization can
> have merits, it just depends on 1) How much effort it takes to
> modularize, 
>
It actually depends on the level of control you want to grant to the plugins. 
The most extreme case would be to export all the functions currently in the 
code - to do that, you'll have to provide a wrapper for each function you 
want to export. That's a lot of functions, but let's not forget that a 
significant part of those are only used by specific pieces of the code, so 
the actual useful number is definitely lower than that by a significant 
margin.
As for the code located in the module itself, there would be little to change; 
at most, the function names being called (to call the wrappers instead), and 
the initialization/termination code (which will quite probably be the same in 
most cases).

> 2) How effective the modularization API is designed (i.e. 
> currently the existing plugin API is vastly insufficient for server
> modularization) 
>
I think it is unsufficient for two reasons:
(a) The API provided to plugins is not complete enough;
(b) There are no ways for a plugin to interact with the server outside of the 
local/global events.

I think (a) can be completed as modularization advances - if I tried to make a 
plugin out of alchemy, I'd check all the "external dependencies", then move 
them into the plugin API if required. It however means that the API will be 
an evolving target as long as modularization is in its early stages, though. 
As for (b), as I said earlier, I think it can be solved by offering to 
plugins the possibility to hook themselves to some often used functions in 
the code. In such a case, I think the plugin code should get hooked by 
callbacks contained in objects whenever possible (so, instead of calling 
apply(op) and make a switch(op->type) in apply, the specific behavior of op 
would be directly bound into the object as a callback and called by 
op->apply(op)). In that scenario, there would be no overhead involved when 
compared to the current situation - it would basically replace a switch 
statement by a function call.

> and 3) Where we draw the line of what to modularize. 
>
I'm not sure a line has to be drawn to what/what not modularize. I think a 
more important question is: to what level should the modularization take 
place ? I don't think there are simple answer to those questions. I'm not 
even sure answering them in a definitive, strict way is really required.

> Personally, I don't think we should modularize very much, but if the API
> is good enough (which I would likely be picky about myself), then it
> might be worth doing for a limited number of things.
>

> Indeed. On this example, IMHO random maps are not optional, as they are
> essential to some quests, and also soon would be used by land plots  
> (though land plots would in my opinion be a relatively good thing to  
> implement as an optional-but-defaultly-on C plugin) 
>
Note that "optional/necessary for some quests" should not be a critera for 
modularization IMHO, because it is one you can use to justify nearly every 
function implemented in the game.

On the other hand, the "optional/necessary for the server to run" sounds much 
more relevant. Can the server work without random maps ? Of course - it 
simply means that the maps using that feature will not work, but the others 
will be completely unaffected. It has no impact on the gaming rules, and no 
influence on the characters. 

> Personally, I think that a C plugin interface for modularization, it 
> should provide full direct access to the data, though recommend use of  
> wrappers functions unless you know it's safe. 
>
Nothing currently prevents a plugin to modify the data it has acces

Re: [crossfire] Moving server towards a modularized system?

2006-01-17 Thread Yann Chachkoff
Le Mardi 17 Janvier 2006 02:56, Miguel Ghobangieno a écrit :
> It is not half broken as far as I can tell. Yes it's
> not running on MF, that doesn't mean it's broken. 
>
So having trees growing on sea squares isn't broken ?

> It gives few problems on Cat2. This whole thing is about
> slowly dumping whatever MF doesn't use. 
>
It is not about "moving code out of Crossfire", but about "re-organizing it so 
it is easier to manage". Which, as a side note, should help debugging chunks 
like the weather system and provide fixes without even having to rebuild and 
restart the whole server.

If you read what I typed earlier, you'd note that I think random maps should 
get modularized as well - and AFAIK, it is used extensively on MF. Let's 
repeat it again: modularizing code is *not* about removing functionalities; 
it is *not* about scrapping code out of the main CVS tree. It is mostly a 
structural change to make an easier maintenance for those wanting to work on 
such pieces of code - so it is in fact a way to make them *better* supported.

> Open your eyes, the 2nd biggest server runs weather code at it's
> most extreme, in terms of players that's not "a few".
>
That there are many players on Cat2 doesn't make the weather system less 
broken.

> I suggest you not implement a huge worthless code change that is nothing but 
busy work. 
>
That's indeed an opinion based on emotion rather than facts, unfortunately.

> I reject your assertion that cave's analogy is flawed as it is not.
>
Tell me how it isn't, then, or stop the "nah, nah, nah" song. 

> If you want to code code something new useful rather then breaking the 
server as is what will happen if you go forward with this plan. 
>
Breaking the server always occur when a new functionality that is larger than 
a few lines of code is implemented (everybody makes mistakes, even skilled 
coders). And given that I see it as useful, I would have no problem "breaking 
it".

> You also will be holding off any new large codechanges for months as they 
wait for you to be done with this not-needed reshuffling.
>
I don't see why. Moving existing parts of the code into modules doesn't mean 
development on other parts of the code would suddenly be halted "for months". 
And I could return you the argument: the completely optional "get drunk when 
drinking" functionality you suggested would block the more important 
restructuration of the code, probably for a couple of weeks - where's the 
difference ?

You could of course object that "players want to get drunk, but don't give a 
damn about an obscure change in the code". Presented like that, sure. But 
wouldn't a server that is easier to maintain, debug, and extend have a more 
in-depth impact on the players in particular, and the game interest in 
general ? I think it does, even if it means that the priority is set on 
changes that are not immediately visible to players.
-- 
Yann Chachkoff
---
Garden Dwarf's Best Friend
---
GPG Key: http://keyserver.veridis.com:11371/export?id=9080288987474372064
Fingerprint: 6616 2E02 BAD2 4AEF C90A  F1EB 7E03 AAB9 844D 25E0


pgpEc5eUt2t9I.pgp
Description: PGP signature
___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] Moving server towards a modularized system?

2006-01-17 Thread tchize

Le Mardi 17 Janvier 2006 06:12, Alex Schultz a écrit :
> Indeed. On this example, IMHO random maps are not optional, as they are 
> essential to some quests, and also soon would be used by land plots 
> (though land plots would in my opinion be a relatively good thing to 
> implement as an optional-but-defaultly-on C plugin)
> 

IMHO they are optional, they are mandatory to use the current map set, that is 
true, but that just mean a random maps module is a requirement for using 
bigworld maps.
I my opinion, those are optional, even if they may appear mandatory to run 
current maps. Imho it should even be possible to pickup the crossfire core and 
create a brand new world out of it.
- communication protocol (should be interchangeable, it can be driven by object 
modification events in server, this also would help dissociate rules from 
socket events, it would make also easy to put several protocol modules, eg, one 
for bots or another one for a scorn webcam)
- weather system (it's main architecture is, on a regular time do calculations 
and update world maps)
- python scripting (is a requirement to run big world, but not to run server)
- random maps, in a more general point, map loading / saving, this would give 
the possibility to have other means of generating maps and saving maps. We 
could think of separate modules for random maps, user specific permanent maps, 
underworld? (it has been suggested the underworld could be based on what exist 
on upper world)

The fact is, a server would be able to start without map loading, without 
scripts, without communication protocol. It would just have a bunch of rules 
and nothing to do.
But that also mean we could start it with only communication protocol plugged 
in and a dummy map loading module, this only in the purpose of testing protocol 
behaviour, maybe in an automated way.

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] Moving server towards a modularized system?

2006-01-17 Thread David Delbecq
Le Mardi 17 Janvier 2006 06:03, Alex Schultz a écrit :
> Frankly, I have to agree with mikee to some degree on this point. I 
> generally have little trouble finding something after a combination of 
> getting a feel for the code, which I have gotten pretty good for a while 
> now, as well as skilled grepping.

Crossfire is the only project i have worked with either on my spare time, 
either at work, which needs grepping in the code to understand it! This just 
proves how much a mess it is.

> 
> However aside from some things like this, I do find modularization can 
> have merits, it just depends on 1) How much effort it takes to 
> modularize, 2) How effective the modularization API is designed (i.e. 
> currently the existing plugin API is vastly insufficient for server 
> modularization) and 3) Where we draw the line of what to modularize.
> Personally, I don't think we should modularize very much, but if the API 
> is good enough (which I would likely be picky about myself), then it 
> might be worth doing for a limited number of things.
> 

1) It would be, in my opinion, a progressive effort. Modularize one piece, 
then another one then another one. This woudln't prevent current commiter to 
do their add-ons too.

2) modularization api should simply progress along with modules. If you need 
core to export something new, then simply have it export it. Please not i 
don't consider plugin based modules as the only solution. It would be good in 
the sense it force code to have clean way to access datas. To get back to 
provided example, what if modules whant to change object->dam? Well i would 
say then it must register a dam modifier methode to object :) Simply because 
you can't be sure another module don't want also to interfer with dam
imagine this rule "with this item weared, player does twice dam when standing 
on fire" and this one "this weapon does half damage when player is wearing a 
helmet" It's up to core to gather rules exception registered for object and 
do a calculation chain based on it. mdifying object->dam directly would then 
be dangerous :)

3) the line will be found in a progressive way. Depending on needs.

> Alex Schultz
> 
> Miguel Ghobangieno wrote:
> 
> >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 <[EMAIL PROTECTED]> wrote:
> >
> >>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. 
> >>
> 
> ___
> crossfire mailing list
> crossfire@metalforge.org
> http://mailman.metalforge.org/mailman/listinfo/crossfire
> 
> 

-- 
David Delbecq
Royal Meteorological Institute of Belgium

-
Pingouins dans les champs, hiver méchant

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] Moving server towards a modularized system?

2006-01-17 Thread David Delbecq
Le Mardi 17 Janvier 2006 08:00, Mark Wedel a écrit :
> Yann Chachkoff wrote:
> 
> > 
> > Well, it really depends on what the C code requires as dependencies - the
> > Python plugin has one with the python libs for example. But stuff that was
> > initially in the server code would have no such external dependencies 
indeed.
> 
>   True.  I imagine dependencies to be fairly standard C dependencies.  But I 
> could imagine someone writing a plugin in C++ with appropriate wrappers.
> 
> > 
> > On the other hand, I think splitting the code in "logical entities", more 
or
> > less independent of the others, would be a path of thinking to try. As 
such,
> > random maps would appear as a good target for modularization, since it
> > doesn't really depend on anything else, apart from very basical 
operations,
> > and is called only at a few places. Alchemy would be another good 
candidate -
> > both are very important in the game, yet are working very much like "black
> > boxes" - complex code with relatively limited interactions with the rest 
of
> > the code.
> 
>   Agree.  And in fact, any object that does something 'interesting' when 
applied 
> could be a plugin, since most such objects are also very well self 
contained.
> 
>   However, I'd counter that if it is just 20 lines of C code to do that 
> 'whatever', it could be more convenient to just add that 20 lines to apply.c
> 
>   I say this because I imagine plugins would probably be organized by 
> plugin/C/.   Maybe have one directory for basic plugins (one in 
> which the entier plugin is in one file).  But if plugin grows to the extent 
that 
> there are 50 'trivial' plugins, one could say finding the code there isn't 
any 
> more convenient than having it sit in apply.c

Nothing would prevent all those 'basic plugins' to be gathered together. 
eg all kind of current exit in a module along with walls, grounds, name this 
module 'basicLayout'
anotherone for movment stuffs
another module regrouping monster stuffs
anotherone for all kind of traps 
...

Common lifecycle is 'add new feature in existing code, when it becomes lots of 
line, move it to it's own module', unless of course you know from the start 
it will contain lots of code ;)


> 
> > 
> >> I'd think that if there is a C plugin, aside from the different passing 
in
> >> of the values, and using appropriate callbacks for functions instead of
> >> calling
> > them directly, it could access the function data directly? Eg, it should 
need
> > to do a plugin callback to set the dam of an object, it could just set
> > ob->dam?
> > 
> > Theorically, yes: there's nothing preventing such a thing. Wrapping such
> > access behind functions was basically to allow checking that the values
> > passed were in the correct range, and to provide encapsulation of the data
> > (so that a plugin wouldn't get tempted to directly change fields it wasn't
> > supposed to change without a high risk)
> 
>   I'd imagine it is more important for the plugin wrapper to provide a 
> consistent interface to the various functions, so that if a function 
handling 
> changes in the C code (say a function now takes another argument), that all 
the 
> plugins don't have to be rewritten - they can keep using the existing code, 
with 
> the wrapper just passing in some default value.

principles of methods polymorphism in object oriented programming ;)

> 
> > 
> > Sure ! But I think such changes would be easier to make if the code was, 
in a
> > way or another, "split" into smaller entities, so that they affect only a
> > limited part of it. And indeed, a lot of functions would benefit from some
> > in-depth rebuilding. Also, part of the problems of code 
debugging/maintenance
> > come to how things are distributed all around the code - finding where to
> > add/change things is a rather complex task. Making small changes to make 
the
> > code more "readable" and "editable" would thus be another important point 
to
> > achieve, IMHO.
> 
>   True - some functions have grown a bit in complexity and could certainly 
use a 
> rewrite.  And I could envision doing some things as plugins would make some 
> things easier/more modular (Going back to what someone said, objects that 
the 
> player uses are complicated - need to update the apply code, but depending 
on 
> the object, may also need to update the code that actually describes the 
item - 
> I could see with appropriate plugin support, all that could be done in the 
> plugin, so all code related to that object is in one place)

Well you put the finger on it. Adding a new object is generally adding a 2 
lines code to apply which calls myObjectType_apply(). and same to describe, 
sometimes, also for some same to move_object(). Damn this looks to me like 
the pattern of registering listeners to some events :D

> 
> 
> 
> ___
> crossfire mailing list
> crossfire@metalforge.org
> http://mailman.metalforge.org/mailman/listinfo/crossfire
> 
> 

--

Re: [crossfire] Moving server towards a modularized system?

2006-01-17 Thread David Delbecq
Le Mardi 17 Janvier 2006 02:51, Miguel Ghobangieno a écrit :
> I suggest you not implement a huge worthless code
> change that is nothing but busy work. I reject your
> assertion that cave's analogy is flawed as it is not.
> If you want to code code something new useful rather
> then breaking the server as is what will happen if you
> go forward with this plan. You also will be holding
> off any new large codechanges for months as they wait
> for you to be done with this not-needed reshuffling.

Why would other coders have to wait? Nobody did mention freezing the CVS at 
anytime. If you don't want to work on modularization, nobody forces you to do 
so, work on implementing new features. It's the sole responsability of the 
one modularizing a feature to ensure there is no conflict when he commits.
When the commit is done, it's the responsability of other code to take into 
account this change. That's how CVS based development work.
Crossfire had deep changes in code in the past (object based skills is one of 
the most recent). This has never prevented other people to do their change. 
That's the magic of teamworking.

-- 
David Delbecq
Royal Meteorological Institute of Belgium

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] Polymorph etc

2006-01-17 Thread tchize
Le Lundi 16 Janvier 2006 23:06, Nicolas Weeger a écrit :
> 
> Sure, i'll do it - lemme just confirm the money has correctly been
> transferred from your account to mine :)
> 

OMG, i think it ended in my account. Well better luck next time ryo.

/me going out to buy a new ipod with that money

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] Moving server towards a modularized system?

2006-01-17 Thread Brendan Lally
On 1/17/06, Mark Wedel <[EMAIL PROTECTED]> wrote:
>   True.  I imagine dependencies to be fairly standard C dependencies.  But I
> could imagine someone writing a plugin in C++ with appropriate wrappers.

This point (more than any other) is potentially alarming. Currently
crossfire is written in C and python, with some perl scripts doing
some minor things. If this range of languages is increased, there is a
danger that it would include languages outside the range of competence
of the existing developers, or outside the range of languages which
are well supported on some of crossfire's target platforms.

Whilst it might be that $NEW_WHIZZY_FEATURE would be very easy to
write in D, for example (or some other $OBSCURE_LANGUAGE) it is
unlikely that most systems running servers have a suitable compiler
installed or that most existing developers would be able to adequately
maintain code written in it.

Whilst C++ on its own isn't greatly objectionable, there must be some
guidelines as to which languages would be permissible so that we don't
end up with 20 different modules in a dozen different languages half
of which were known only to their original author who has since
disappeared.

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] gcfclient options deathlist

2006-01-17 Thread Brendan Lally
Ok, to try and summarise from this. (this is how I'm reading the
existing responses, yell if you think this isn't a fair summary).


Not a target for removal:

Split Information Window (Takes effect next run)
Automatically re-applies a container when you use apply to close it.


Still targeted for removal:

(on) Colored Inventory Lists
(on) Colored Information Text - maybe to be replaced by some future feature
(off) Print Grid Overlay
(on) Cache Images
(on) splash window (gros' suggestion)

Options on how to display resistances: - keeping the two options
involving scroll bars, but still haven't heard from an advocate of the
no-scrollbar option (if this were removed, it could go from 3 buttons
to 1)

the options in the list above need someone to claim the use of them
sometime within the next fortnight.

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] Moving server towards a modularized system?

2006-01-17 Thread tchize
Le Mardi 17 Janvier 2006 18:15, Brendan Lally a écrit :
>On 1/17/06, Mark Wedel <[EMAIL PROTECTED]> wrote:
>>   True.  I imagine dependencies to be fairly standard C dependencies.  But
>> I could imagine someone writing a plugin in C++ with appropriate wrappers.
>
>
Things written in other languages then C should always be considered as 
optionnal. This is the case of python scripts. They are usefull but not all 
platform do support them very well. 
In all cases, things like writting a plugin in C++ or Fortran or ADA or 
anything else should require prior discussion on ML. It's too early for a 
discussion about languages in which plugins are written. I understood the 
current idea is to move C code to plugin still in C (just structural 
reorganisation).

-- 
--
Tchize (David Delbecq)
[EMAIL PROTECTED]
Public PGP KEY FINGERPRINT:
    F4BC EF69 54CC F2B5 4621  8DAF 1C71 8E6B 5436 C17C
Public PGP KEY location:
    http://wwwkeys.pgp.net/pgpnet/wwwkeys.html


pgpQXBLgd48iT.pgp
Description: PGP signature
___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] Moving server towards a modularized system?

2006-01-17 Thread Miguel Ghobangieno
You haven't worked on many complex projects then. The
upset this will cause in crossfire development (and
devs will wait untill it's done before committing
again because they don't want their new code to be
broken) will be very large. I would like to see plots
etc in crossfire in my lifetime, your "AWSOME
KAWABUNGA!" idea of ripping apart the server will
stall development for no freaking reason except that
you think that you are above using grep.

--- David Delbecq <[EMAIL PROTECTED]> wrote:

> Le Mardi 17 Janvier 2006 06:03, Alex Schultz a écrit
> :
> > Frankly, I have to agree with mikee to some degree
> on this point. I 
> > generally have little trouble finding something
> after a combination of 
> > getting a feel for the code, which I have gotten
> pretty good for a while 
> > now, as well as skilled grepping.
> 
> Crossfire is the only project i have worked with
> either on my spare time, 
> either at work, which needs grepping in the code to
> understand it! This just 
> proves how much a mess it is.
> 
> > 
> > However aside from some things like this, I do
> find modularization can 
> > have merits, it just depends on 1) How much effort
> it takes to 
> > modularize, 2) How effective the modularization
> API is designed (i.e. 
> > currently the existing plugin API is vastly
> insufficient for server 
> > modularization) and 3) Where we draw the line of
> what to modularize.
> > Personally, I don't think we should modularize
> very much, but if the API 
> > is good enough (which I would likely be picky
> about myself), then it 
> > might be worth doing for a limited number of
> things.
> > 
> 
> 1) It would be, in my opinion, a progressive effort.
> Modularize one piece, 
> then another one then another one. This woudln't
> prevent current commiter to 
> do their add-ons too.
> 
> 2) modularization api should simply progress along
> with modules. If you need 
> core to export something new, then simply have it
> export it. Please not i 
> don't consider plugin based modules as the only
> solution. It would be good in 
> the sense it force code to have clean way to access
> datas. To get back to 
> provided example, what if modules whant to change
> object->dam? Well i would 
> say then it must register a dam modifier methode to
> object :) Simply because 
> you can't be sure another module don't want also to
> interfer with dam
> imagine this rule "with this item weared, player
> does twice dam when standing 
> on fire" and this one "this weapon does half damage
> when player is wearing a 
> helmet" It's up to core to gather rules exception
> registered for object and 
> do a calculation chain based on it. mdifying
> object->dam directly would then 
> be dangerous :)
> 
> 3) the line will be found in a progressive way.
> Depending on needs.
> 
> > Alex Schultz
> > 
> > Miguel Ghobangieno wrote:
> > 
> > >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 <[EMAIL PROTECTED]> wrote:
> > >
> > >>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. 
> > >>
> > 
> > ___
> > crossfire mailing list
> > crossfire@metalforge.org
> >
>
http://mailman.metalforge.org/mailman/listinfo/crossfire
> > 
> > 
> 
> -- 
> David Delbecq
> Royal Meteorological Institute of Belgium
> 
> -
> Pingouins dans les champs, hiver méchant
> 
> ___
> crossfire mailing list
> crossfire@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 

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] Moving server towards a modularized system?

2006-01-17 Thread Miguel Ghobangieno
How about not modularizing and thus not having to make
a trade off.
How about not screwing up the server for months just
because you are itchting for busy work.


--- Yann Chachkoff <[EMAIL PROTECTED]>
wrote:

> Nothing currently prevents a plugin to modify the
> data it has access to 
> directly - but of course, that's unsafe access, so
> if the plugin makes a bad 
> modification to the data, or forgets to notify the
> server of it if necessary, 
> then it will probably crash the server. Accessing
> data directly or through 
> wrappers is basically a tradeoff between
> performances and security. 
> 
> In the case of modularization of the existing code,
> I'd say that direct access 
> wherever possible should be kept - accessors for
> such data modifications 
> would probably be used only for debugging purposes
> (as a wrapper can check if 
> the data modification is "legal" or not, and thus
> can help detecting a whole 
> range of errors). 
> 
> -- 
> Yann Chachkoff
> ---
> Garden Dwarf's Best Friend
> ---
> GPG Key:
>
http://keyserver.veridis.com:11371/export?id=9080288987474372064
> Fingerprint: 6616 2E02 BAD2 4AEF C90A  F1EB 7E03
> AAB9 844D 25E0
> > ___
> crossfire mailing list
> crossfire@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 

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] Moving server towards a modularized system?

2006-01-17 Thread Miguel Ghobangieno
Did you not read my post. If you are screwing around
with the code structure of the server then other
programmers do have to wait untill you are done as
they do not want their code to suddenly break when it
intersects with your massive changes. You must not be
at all experianced in these matters (as you indicated
before in fingering crossfire for the sin of you
having to grep through it).

This will hold up usefull game development for months
all because you and friends believe that you are above
grep.

--- David Delbecq <[EMAIL PROTECTED]> wrote:

> Le Mardi 17 Janvier 2006 02:51, Miguel Ghobangieno a
> écrit :
> > I suggest you not implement a huge worthless code
> > change that is nothing but busy work. I reject
> your
> > assertion that cave's analogy is flawed as it is
> not.
> > If you want to code code something new useful
> rather
> > then breaking the server as is what will happen if
> you
> > go forward with this plan. You also will be
> holding
> > off any new large codechanges for months as they
> wait
> > for you to be done with this not-needed
> reshuffling.
> 
> Why would other coders have to wait? Nobody did
> mention freezing the CVS at 
> anytime. If you don't want to work on
> modularization, nobody forces you to do 
> so, work on implementing new features. It's the sole
> responsability of the 
> one modularizing a feature to ensure there is no
> conflict when he commits.
> When the commit is done, it's the responsability of
> other code to take into 
> account this change. That's how CVS based
> development work.
> Crossfire had deep changes in code in the past
> (object based skills is one of 
> the most recent). This has never prevented other
> people to do their change. 
> That's the magic of teamworking.
> 
> -- 
> David Delbecq
> Royal Meteorological Institute of Belgium
> 
> ___
> crossfire mailing list
> crossfire@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 

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] Moving server towards a modularized system?

2006-01-17 Thread Miguel Ghobangieno
Why oh why do you want to do this useless crap? We
have a real game, we don't have to make an "engine".
How about adding some new features rather then ripping
the things apart. This is why I hate CF devel, rather
then improving the game most suggestions are "oh let's
fuck shit up or delete this or drop that". How about
adding things? It's fun, people don't get angry at you
as you aren't breaking or throwing out what they've
made aswell.

tchize can you modulize the server? no? so how about
not suggesting screwing it up for every other
developer? 
Ryo? no aswell?

This is busy work, it is useless, and it slows down
game improvements. 

--- tchize <[EMAIL PROTECTED]> wrote:

> 
> Le Mardi 17 Janvier 2006 06:12, Alex Schultz a écrit
> :
> > Indeed. On this example, IMHO random maps are not
> optional, as they are 
> > essential to some quests, and also soon would be
> used by land plots 
> > (though land plots would in my opinion be a
> relatively good thing to 
> > implement as an optional-but-defaultly-on C
> plugin)
> > 
> 
> IMHO they are optional, they are mandatory to use
> the current map set, that is true, but that just
> mean a random maps module is a requirement for using
> bigworld maps.
> I my opinion, those are optional, even if they may
> appear mandatory to run current maps. Imho it should
> even be possible to pickup the crossfire core and
> create a brand new world out of it.
> - communication protocol (should be interchangeable,
> it can be driven by object modification events in
> server, this also would help dissociate rules from
> socket events, it would make also easy to put
> several protocol modules, eg, one for bots or
> another one for a scorn webcam)
> - weather system (it's main architecture is, on a
> regular time do calculations and update world maps)
> - python scripting (is a requirement to run big
> world, but not to run server)
> - random maps, in a more general point, map loading
> / saving, this would give the possibility to have
> other means of generating maps and saving maps. We
> could think of separate modules for random maps,
> user specific permanent maps, underworld? (it has
> been suggested the underworld could be based on what
> exist on upper world)
> 
> The fact is, a server would be able to start without
> map loading, without scripts, without communication
> protocol. It would just have a bunch of rules and
> nothing to do.
> But that also mean we could start it with only
> communication protocol plugged in and a dummy map
> loading module, this only in the purpose of testing
> protocol behaviour, maybe in an automated way.
> 
> ___
> crossfire mailing list
> crossfire@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 

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] Moving server towards a modularized system?

2006-01-17 Thread Miguel Ghobangieno
Current idea? I must have missed something, I didn't
know you decided, above all the objections, to go
ahead and rip apart the server anyway. I will be
waiting for my 3 thousand dollar cheque in the mail
(along with everyone else who would like to add new
stuff to CF but will have to wait untill you tire of
ripping apart the server and revert the CVS tree).

Why should all work have to stop because YOU want to
restructure the server.. because you can't figure out
grep...

--- tchize <[EMAIL PROTECTED]> wrote:

> Le Mardi 17 Janvier 2006 18:15, Brendan Lally a
> écrit :
> >On 1/17/06, Mark Wedel <[EMAIL PROTECTED]> wrote:
> >>   True.  I imagine dependencies to be fairly
> standard C dependencies.  But
> >> I could imagine someone writing a plugin in C++
> with appropriate wrappers.
> >
> >
> Things written in other languages then C should
> always be considered as 
> optionnal. This is the case of python scripts. They
> are usefull but not all 
> platform do support them very well. 
> In all cases, things like writting a plugin in C++
> or Fortran or ADA or 
> anything else should require prior discussion on ML.
> It's too early for a 
> discussion about languages in which plugins are
> written. I understood the 
> current idea is to move C code to plugin still in C
> (just structural 
> reorganisation).
> 
> -- 
> --
> Tchize (David Delbecq)
> [EMAIL PROTECTED]
> Public PGP KEY FINGERPRINT:
> F4BC EF69 54CC F2B5 4621  8DAF 1C71 8E6B 5436
> C17C
> Public PGP KEY location:
> http://wwwkeys.pgp.net/pgpnet/wwwkeys.html
> > ___
> crossfire mailing list
> crossfire@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 

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] gcfclient options deathlist

2006-01-17 Thread Miguel Ghobangieno
Yes, it would be best to remove that option from the
menu IMHO.
Could we also make quit ask the person if they really
want to delete their character (and then ask again for
confirmation)? (server side).

--- Brendan Lally <[EMAIL PROTECTED]> wrote:

> On 1/17/06, Rick Tanner <[EMAIL PROTECTED]> wrote:
> > Would it be OT or out of scope to ask for the
> "File -> Quit Character"
> > option in the menu to be renamed to "File ->
> Delete Character" ?
> 
> Well, it wouldn't be if you instead suggested that
> the menu entry be
> removed altogether.
> 
> I'm inclined to think that the better option, it
> isn't as though the
> quit command should be used particularly often.
> 
> ___
> crossfire mailing list
> crossfire@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 

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: Re: [crossfire] Moving server towards a modularized system?

2006-01-17 Thread Yann Chachkoff
> If this range of languages is increased, there is a danger that it would 
> include languages outside the range of competence of the existing developers, 
> or outside the range of languages which are well supported on some of 
> crossfire's target platforms.
>
That is true - I'm not myself in favor of a system in which several languages 
would get used. Introducing something else than C in the server code would 
definitely create a lot of issues, and isn't something I'd like to see without 
a prior discussion.

Probably the best rules is: code in C, and if you *really* think another 
language is needed, then ask the mailing list first, so the case gets 
discussed. Just because it can technically be done doesn't mean it is a good 
idea.
___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire




___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: Re: [crossfire] Moving server towards a modularized system?

2006-01-17 Thread Yann Chachkoff
> Current idea? I must have missed something, I didn't know you decided, above 
> all the objections, to go
ahead and rip apart the server anyway. 

Idea != Decision.

Besides that, I don't think anybody requires your permission to code.

> Why should all work have to stop because YOU want to restructure the server.. 
> because you can't figure out grep...

I can assure you that tchize is skilled enough to use grep, by far. The whole 
point was that a properly structured code should *never* require using grep. 
Yes, even large-scale enterprise projects.

--- tchize <[EMAIL PROTECTED]> wrote:

> Le Mardi 17 Janvier 2006 18:15, Brendan Lally a
> écrit :
> >On 1/17/06, Mark Wedel <[EMAIL PROTECTED]> wrote:
> >>   True.  I imagine dependencies to be fairly
> standard C dependencies.  But
> >> I could imagine someone writing a plugin in C++
> with appropriate wrappers.
> >
> >
> Things written in other languages then C should
> always be considered as 
> optionnal. This is the case of python scripts. They
> are usefull but not all 
> platform do support them very well. 
> In all cases, things like writting a plugin in C++
> or Fortran or ADA or 
> anything else should require prior discussion on ML.
> It's too early for a 
> discussion about languages in which plugins are
> written. I understood the 
> current idea is to move C code to plugin still in C
> (just structural 
> reorganisation).
> 
> -- 
> --
> Tchize (David Delbecq)
> [EMAIL PROTECTED]
> Public PGP KEY FINGERPRINT:
> F4BC EF69 54CC F2B5 4621  8DAF 1C71 8E6B 5436
> C17C
> Public PGP KEY location:
> http://wwwkeys.pgp.net/pgpnet/wwwkeys.html
> > ___
> crossfire mailing list
> crossfire@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 

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire




___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


[crossfire] On moving the Lone Town apartment

2006-01-17 Thread ERACC
Greetings all,

It was pointed out to me on IRC that the Lone Town apartment does not
fit the Lone Town story line. Specifically the apartment is too big
and ostentatious for Lone Town. So, I propose moving that set of maps
to a "country villa" setting somewhere. I still want an apartment in,
or near, Lone Town and intend to make a single map to fit in with the
original Lone Town idea (as far as I understand it). I will also
leave the build shop in Lone Town but scale it down a touch.

If moved I want the country villa to be near somewhere that does not
currently have a permanent apartment. It does not matter if the town
nearby is small since a country villa is intended to be rural. Feed
me some suggestions please. I was thinking perhaps in the world maps
to the near East of Lake Country? Or even in the pup land maps near
Lone Town would be ok I think. I could then just remove the apartment
in Lone Town.

IMO the Regular Army people would be living in big country villa's
(or town apartments ;-) and the Freedom folk would be the poor and
downtrodden types. So perhaps access to the country villa (or
apartment if it stays in Lone Town) should depend on owning a Regular
Army Passport. "Feed me Seymour!"

As I already stated I do not want to put this somewhere near a city
that already has a permanent apartment. I also do not want to place
it so far out in the wilderness that it is impractical to own. I want
to make this change (if everyone agrees I need to move that thing)
before too many players buy them. I do not want to create more of an
administration headache than necessary.

TIA
Gene
-- 
Mandriva Linux release 2006.0 (Official) for i586
 15:30:37 up 3 days, 22:23, 10 users,  load average: 0.06, 0.05, 0.06
ERA Computer Consulting - http://www.eracc.com/
eComStation, Linux, FreeBSD, OpenServer & UnixWare resellers

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: Re: [crossfire] Moving server towards a modularized system?

2006-01-17 Thread Miguel Ghobangieno
Indeed. Just because the server can be modularized
thus blocking any other new development whilst that
takes place doesn't mean it's a good idea. I for one
frown on the idea of making the server slower and
blocking other development.

--- Yann Chachkoff <[EMAIL PROTECTED]>
wrote:

> > If this range of languages is increased, there is
> a danger that it would include languages outside the
> range of competence of the existing developers, or
> outside the range of languages which are well
> supported on some of crossfire's target platforms.
> >
> That is true - I'm not myself in favor of a system
> in which several languages would get used.
> Introducing something else than C in the server code
> would definitely create a lot of issues, and isn't
> something I'd like to see without a prior
> discussion.
> 
> Probably the best rules is: code in C, and if you
> *really* think another language is needed, then ask
> the mailing list first, so the case gets discussed.
> Just because it can technically be done doesn't mean
> it is a good idea.
> ___
> crossfire mailing list
> crossfire@metalforge.org
>
http://mailman.metalforge.org/mailman/listinfo/crossfire
> 
> 
> 
> 
> ___
> crossfire mailing list
> crossfire@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 

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: Re: [crossfire] Moving server towards a modularized system?

2006-01-17 Thread Miguel Ghobangieno
Oh if that's the case let me just commit all the mlab
maps in their current uni-directory form over the
objections of everyone else that prefers
multi-directory. Know why I don't do that; because
everyone else prefers multi-directory.

Try mucking in the linux kernel without grep, tell me
how that goes.

--- Yann Chachkoff <[EMAIL PROTECTED]>
wrote:

> > Current idea? I must have missed something, I
> didn't know you decided, above all the objections,
> to go
> ahead and rip apart the server anyway. 
> 
> Idea != Decision.
> 
> Besides that, I don't think anybody requires your
> permission to code.
> 
> > Why should all work have to stop because YOU want
> to restructure the server.. because you can't figure
> out grep...
> 
> I can assure you that tchize is skilled enough to
> use grep, by far. The whole point was that a
> properly structured code should *never* require
> using grep. Yes, even large-scale enterprise
> projects.
> 
> --- tchize <[EMAIL PROTECTED]> wrote:
> 
> > Le Mardi 17 Janvier 2006 18:15, Brendan Lally a
> > écrit :
> > >On 1/17/06, Mark Wedel <[EMAIL PROTECTED]> wrote:
> > >>   True.  I imagine dependencies to be fairly
> > standard C dependencies.  But
> > >> I could imagine someone writing a plugin in C++
> > with appropriate wrappers.
> > >
> > >
> > Things written in other languages then C should
> > always be considered as 
> > optionnal. This is the case of python scripts.
> They
> > are usefull but not all 
> > platform do support them very well. 
> > In all cases, things like writting a plugin in C++
> > or Fortran or ADA or 
> > anything else should require prior discussion on
> ML.
> > It's too early for a 
> > discussion about languages in which plugins are
> > written. I understood the 
> > current idea is to move C code to plugin still in
> C
> > (just structural 
> > reorganisation).
> > 
> > -- 
> > --
> > Tchize (David Delbecq)
> > [EMAIL PROTECTED]
> > Public PGP KEY FINGERPRINT:
> > F4BC EF69 54CC F2B5 4621  8DAF 1C71 8E6B 5436
> > C17C
> > Public PGP KEY location:
> > http://wwwkeys.pgp.net/pgpnet/wwwkeys.html
> > > ___
> > crossfire mailing list
> > crossfire@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 
> 
> ___
> crossfire mailing list
> crossfire@metalforge.org
>
http://mailman.metalforge.org/mailman/listinfo/crossfire
> 
> 
> 
> 
> ___
> crossfire mailing list
> crossfire@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 

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] On moving the Lone Town apartment [bigworldized pupland]

2006-01-17 Thread Miguel Ghobangieno
lalo is bigworldizing pupland, the villas could be
placed somewhere on said bigworldized pupland (note:
how long untill it's done?).

--- ERACC <[EMAIL PROTECTED]> wrote:

> Greetings all,
> 
> It was pointed out to me on IRC that the Lone Town
> apartment does not
> fit the Lone Town story line. Specifically the
> apartment is too big
> and ostentatious for Lone Town. So, I propose moving
> that set of maps
> to a "country villa" setting somewhere. I still want
> an apartment in,
> or near, Lone Town and intend to make a single map
> to fit in with the
> original Lone Town idea (as far as I understand it).
> I will also
> leave the build shop in Lone Town but scale it down
> a touch.
> 
> If moved I want the country villa to be near
> somewhere that does not
> currently have a permanent apartment. It does not
> matter if the town
> nearby is small since a country villa is intended to
> be rural. Feed
> me some suggestions please. I was thinking perhaps
> in the world maps
> to the near East of Lake Country? Or even in the pup
> land maps near
> Lone Town would be ok I think. I could then just
> remove the apartment
> in Lone Town.
> 
> IMO the Regular Army people would be living in big
> country villa's
> (or town apartments ;-) and the Freedom folk would
> be the poor and
> downtrodden types. So perhaps access to the country
> villa (or
> apartment if it stays in Lone Town) should depend on
> owning a Regular
> Army Passport. "Feed me Seymour!"
> 
> As I already stated I do not want to put this
> somewhere near a city
> that already has a permanent apartment. I also do
> not want to place
> it so far out in the wilderness that it is
> impractical to own. I want
> to make this change (if everyone agrees I need to
> move that thing)
> before too many players buy them. I do not want to
> create more of an
> administration headache than necessary.
> 
> TIA
> Gene
> -- 
> Mandriva Linux release 2006.0 (Official) for i586
>  15:30:37 up 3 days, 22:23, 10 users,  load average:
> 0.06, 0.05, 0.06
> ERA Computer Consulting - http://www.eracc.com/
> eComStation, Linux, FreeBSD, OpenServer & UnixWare
> resellers
> 
> ___
> crossfire mailing list
> crossfire@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 

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] gcfclient options deathlist

2006-01-17 Thread Mark Wedel

Miguel Ghobangieno wrote:

Yes, it would be best to remove that option from the
menu IMHO.
Could we also make quit ask the person if they really
want to delete their character (and then ask again for
confirmation)? (server side).


 I just tried this out.  If I select the 'Quit Character' option from the file 
list, it does ask if I want to quit or not.




___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] Moving server towards a modularized system?

2006-01-17 Thread Mark Wedel

Gros wrote:
It actually depends on the level of control you want to grant to the plugins. 
The most extreme case would be to export all the functions currently in the 
code - to do that, you'll have to provide a wrapper for each function you 
want to export. That's a lot of functions, but let's not forget that a 
significant part of those are only used by specific pieces of the code, so 
the actual useful number is definitely lower than that by a significant 
margin.


 One danger of providing wrappers to too many functions is danger of infinite 
recursive loops.  There is already that potential - the apply code always has 
such a check.


 But the danger could be that if module writers see a list of functions they 
can use, they may think it is safe to call it back at any time.  Not that is 
really any different than current code, but just a thought.


David Delbecq wrote:
Nothing would prevent all those 'basic plugins' to be gathered together. 
eg all kind of current exit in a module along with walls, grounds, name this 
module 'basicLayout'

anotherone for movment stuffs
another module regrouping monster stuffs
anotherone for all kind of traps 
...


Common lifecycle is 'add new feature in existing code, when it becomes lots of 
line, move it to it's own module', unless of course you know from the start 
it will contain lots of code  ;) 


 However, I think if you start grouping all that stuff together, you start 
loosing some of the advantages.


 I think there are also some limitations regarding the actual use of the shared 
libraries (modules) - for example, each one can only have one initialization 
function I believe, so if you have say 20 object types in one module, you'd have 
to mix all the code they need for initialization in one function (or have a list 
of the 20 function calls it makes).


Well you put the finger on it. Adding a new object is generally adding a 2 
lines code to apply which calls myObjectType_apply(). and same to describe, 
sometimes, also for some same to move_object(). Damn this looks to me like 
the pattern of registering listeners to some events :D


 But one could do that to some extent without plugins.

 You could for example set up something like:

struct object_type_description {
functypeapply_func;
functypedescribe_func;
functype
} object_actions[MAX_OBJECT_TYPE

 Then in the code, you could do things like:

 if (object_actions[op->type].apply_func)
object_actions[op->type].apply_func(...)

 In a sense, a poor mans/specialized plugin.   You then just need one 
initialization function, but all the specialized code related to object type 
itself could be in one place.







___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire