w***@genial.ms
2015-10-05 15:54:54 UTC
Hi,
I was thinking about what FreeCol is missing still, besides that
long list of tiny incompatibilities with Col1 (most of which I somehow
are not missing much).
The biggest issue imho is weak AI. Except the REF AI, which really
wants to destroy you, the AIs have no real goal, they just passively
manage what they have and focus on single colonies/units when deciding
what to do, rarely checking from a global view.
I feel a good step to get it more competitive would be allowing to
set a different difficulty level for AI and Humans or even for each
individual player. For example, in Alpha Centauri the AI plays on an
easier level when you play the highest, to avoid crippling it from
not being able to cope with low tile production, drones, harder
response from the planet and other things. I know Civ games also do
that and I suspect Col1 might have done similar. Is there some
knowledge about if it was like that in Col1?
The AI code could profit from restructuring it a bit and there are a
number of IRs for improving AI which might get easier through that.
If there was some MetaAI class, which could (depending on game progress
and other conditions like peace/war) delegate to a different normal AI,
it could help the AI adapt better to the current game and it would be
easier to write smaller, more focused AIs (for startup, fast growth,
defensive preparations, defensive war, offensive preparations,
offensive war, ...).
It might also help on comparing strength of different AIs when testing?
Alternatively or additionally, it may also be useful to move most code
into goals and subgoals, to cut down on code in the main AI classes.
I'd also think before 1.0 the production/consumption of Natives, prices
they pay and also price fluctuations in Europe need to be rebalanced.
Did you have a look at my comment for BR#793?
I feel like its deprioritization should be reversed, considering
how long it exists already and its imho a must have for 1.0.
A useful bit of polish for 1.0 would be adding a dialog with the king
sending you out to the new world when starting a new game, IR#94.
One of the missing battle-sounds for BR#2043 could be taken from SVN,
and there was another which was sounding like it could replace one
we already have in some cases, depending on the battle outcome.
Some issues I find useful to get done fast, as they can be repeatedly
annoying people with little things, would be PF#14/77, PF#30 (the randomization),
BR#2730, IR#172, and some ship should be activated if in Europe and opening
the Europe panel.
We once mailed about how the logfile is cluttered already, but still
missing some useful data like which panels or dialogs get opened:
I changed the command line processing to allow setting different
log-levels for some parts of the game, to filter out uninteresting
things or only activate interesting messages.
For example, you could do something like:
$ java -Xmx256M -jar FreeCol.jar --log-level warning common:finest common.option:warning --debug
or
$ java -Xmx256M -jar FreeCol.jar --log-level warning --log-level common:finest --log-level common.option:warning --debug
Its in my fork at https://sourceforge.net/u/wintertime/freecol/ci/loglevels/tree/
and I'd like you to try it out. Then maybe after the release push it
to the FreeCol git?
I did not bother to update the cli help messages, as this is mostly
a developer feature, though that may be useful.
While implementing this I found we are still using commons-cli 1.1.
I'd think we should upgrade to 1.3.1, as there have been some bugfixes,
probably after the release.
Btw., there is another branch in my fork at
https://sourceforge.net/u/wintertime/freecol/ci/tileneighbours/tree/
where I wanted to simplify code calling Tile.getNeighbourOrNull repeatedly
in RoadPainter and TileViewer, by adding a getNeighbours method, but there
the direction is reused after getting the tile, so I could not use it there.
But there are other places, for example, SimpleMapGenerator, where you could
use it (but those are all parts of the code I'm not familiar with).
Greetings,
wintertime
------------------------------------------------------------------------------
I was thinking about what FreeCol is missing still, besides that
long list of tiny incompatibilities with Col1 (most of which I somehow
are not missing much).
The biggest issue imho is weak AI. Except the REF AI, which really
wants to destroy you, the AIs have no real goal, they just passively
manage what they have and focus on single colonies/units when deciding
what to do, rarely checking from a global view.
I feel a good step to get it more competitive would be allowing to
set a different difficulty level for AI and Humans or even for each
individual player. For example, in Alpha Centauri the AI plays on an
easier level when you play the highest, to avoid crippling it from
not being able to cope with low tile production, drones, harder
response from the planet and other things. I know Civ games also do
that and I suspect Col1 might have done similar. Is there some
knowledge about if it was like that in Col1?
The AI code could profit from restructuring it a bit and there are a
number of IRs for improving AI which might get easier through that.
If there was some MetaAI class, which could (depending on game progress
and other conditions like peace/war) delegate to a different normal AI,
it could help the AI adapt better to the current game and it would be
easier to write smaller, more focused AIs (for startup, fast growth,
defensive preparations, defensive war, offensive preparations,
offensive war, ...).
It might also help on comparing strength of different AIs when testing?
Alternatively or additionally, it may also be useful to move most code
into goals and subgoals, to cut down on code in the main AI classes.
I'd also think before 1.0 the production/consumption of Natives, prices
they pay and also price fluctuations in Europe need to be rebalanced.
Did you have a look at my comment for BR#793?
I feel like its deprioritization should be reversed, considering
how long it exists already and its imho a must have for 1.0.
A useful bit of polish for 1.0 would be adding a dialog with the king
sending you out to the new world when starting a new game, IR#94.
One of the missing battle-sounds for BR#2043 could be taken from SVN,
and there was another which was sounding like it could replace one
we already have in some cases, depending on the battle outcome.
Some issues I find useful to get done fast, as they can be repeatedly
annoying people with little things, would be PF#14/77, PF#30 (the randomization),
BR#2730, IR#172, and some ship should be activated if in Europe and opening
the Europe panel.
We once mailed about how the logfile is cluttered already, but still
missing some useful data like which panels or dialogs get opened:
I changed the command line processing to allow setting different
log-levels for some parts of the game, to filter out uninteresting
things or only activate interesting messages.
For example, you could do something like:
$ java -Xmx256M -jar FreeCol.jar --log-level warning common:finest common.option:warning --debug
or
$ java -Xmx256M -jar FreeCol.jar --log-level warning --log-level common:finest --log-level common.option:warning --debug
Its in my fork at https://sourceforge.net/u/wintertime/freecol/ci/loglevels/tree/
and I'd like you to try it out. Then maybe after the release push it
to the FreeCol git?
I did not bother to update the cli help messages, as this is mostly
a developer feature, though that may be useful.
While implementing this I found we are still using commons-cli 1.1.
I'd think we should upgrade to 1.3.1, as there have been some bugfixes,
probably after the release.
Btw., there is another branch in my fork at
https://sourceforge.net/u/wintertime/freecol/ci/tileneighbours/tree/
where I wanted to simplify code calling Tile.getNeighbourOrNull repeatedly
in RoadPainter and TileViewer, by adding a getNeighbours method, but there
the direction is reused after getting the tile, so I could not use it there.
But there are other places, for example, SimpleMapGenerator, where you could
use it (but those are all parts of the code I'm not familiar with).
Greetings,
wintertime
------------------------------------------------------------------------------