On Sat, 19 May 2007, William Allen Simpson wrote:
> Indeed, my suggestion was *NOT* that the old functionality go away, but
> that it should not be hard-coded -- a simple knob I proposed be added to
> allow civ3&4 behavior.
> Although I've only been on the mailing list for 18 months or so, and
> rarely contribute, I've some recollection that you worked on adding many
> knobs generalizing formerly hard-coded constants and functionality. I'm
> trying to cooperate in the same way.
This has been a much-discussed topic. I will not attempt to rehash every
point, but some are in order:
* We are not attempting to make a clone of any other game. Freeciv is a
game of its own in a specific genre of games, where we want to learn from
the best achievements of other games within the same genre.
* Generalized rules has high costs. First, there is the cost of making
the AI understand it. This is both a question of having AI support for
such rulesets, and for using our automated testing framework to see that
they work and keep working (we have too often found that some obscure
feature that we added on request has been broken for years and nobody
* Second, many exceptions to the normal rules and corner cases makes the
code slower, and harder to maintain. Since we have rather limited
manpower, the latter is quite important. Streamlined rules are much easier
Therefore, the general conclusion from these debates is that we should
support generalized rules, not based on conformity to other games' feature
sets, but on what can be implemented cleanly in the codebase while giving
more power to people who wish to make modified rulesets.
I also think we should take some effort to move away from some of the
harder to maintain and extend features of the earliest games in the genre
(civ1/2). Doing this will allow us instead to focus on giving more
generalized rules on higher levels of abstraction. One example is the
removal of the civ1/2-inspired movement rules with randomness, in favour
of a deterministic civ3-like movement rule. This allowed us to greatly
simplify the path-finding code and makes it easier to improve the AI.
> I'm actually quite disappointed about the recent removing of basic
> functionality of civ1&2, such as reputation, temporary cease fire,
> Fundamentalism, etc.
Temporary cease fire has not been removed yet. Fundamentalism has never
been in the default ruleset, but is in the civ2 ruleset. If we are to
incorporate some of the better innovation within this genre, we have to
bury some old civ1/2 compatibility, or we will bury ourselves in
impossible to maintain spaghetti and buggy code.
I have been considering a generalized treaties framework, for example, but
it seemed way too much work to make an AI that would understand it.
Freeciv-dev mailing list