raystuttgart
Civ4Col Modder
Hi guys,
some of you may know that Civ4Col does not have "Terrain Type Lake".
Lakes are not defined in XML but by logic checks in DLL.
The only things that can really be balanced in XML are
Not even close to the possibilities we have with real Terrains.
------
So how does DLL currently determine "Lakes":
It is basically a "stupid size check of the water area".
Technically the Plots are still "Terrain Ocean" or "Terrain Coast".
They are just displayed to the Player as "Lake".
It uses this check mostly to determine Ocean or Lake:
gc.getMIN_WATER_SIZE_FOR_OCEAN()
------
Generally there is ro real reason that Civ4Col does not have a specific "Terrain Lake".
It is basically mostly laziness of the original programmers.
So well, we as WTP now again seem to have to implement and correct what Vanilla has not taken care of ...
Not like we are not yet used to it.
------
Advantages of having Lakes as Terrain in XML:
(And removing the "DLL hacks".)
1. XML balancing of Yields becomes possible
2. XML balancing of Bonus Ressources becomes possible
3. XML balancing of Movement Rules (e.g. Coastal Ships) becomes possible
4. XML balancing to allow e.g. "Piers" (bot not full Ports) at Lakes becomes possible
...
10. Lots of hardcoded DLL checks can be removed ...
It is even going to be more performant !
And it is even going to remove several small gameplay issues !
------
Disadvantages of having Lakes as Terrain in XML:
(And removing the "DLL hacks".)
1. Effort
2. Effort
3. Effort
4. Effort
...
10. Effort
Otherwise nothing ...
------
So what would need to be taken care of:
1. Creating the Terrain Graphics (incl. Button)
2. Creating the XML Terrain Configuration and adjusting DLL gameplay logic
3. Creating new Terrain Swap Logic (called by MapScripts) that swaps Ocean Plots (without Europe Access) into Lakes
4. Adjusting MapScripts to call new Terrain Logic after Water Areas are generated
5. Adjusting existing Maps to now also contain Lakes where they should
7. Adjusting all Balancing of Units, Promotions, Bonus Ressources, ...
6. Writing Colopedia entries for Terrain Lake
------
Comment of effort and risk:
This can not be compared to "Large Rivers" in terms of risk because it acts as purely Water.
(So the complexity and risk and is much lower.)
We have learned a lot from "Large Rivers" so we should also be faster.
(Effort will be much lower but still there is a lot of details to take care of.)
This is only about 25% of the complexity and effort we had for "Large Rivers".
This is still not a tiny feature and the team needs to work on it together.
The risk in this is neglectable for experienced programmers.
We know all we need to do this and have done it already before e.g. "Savannah" and "Large Rivers".
------
Benefit:
Well, "Lakes" will become XML friendly and easier to balance.
It will help non-programmers a lot.
We will be able to use all possibilities we have with other Terrains.
Currently we can do almost nothing special with "Lakes".
It will even become more performant beause dirty DLL hacks will get removed.
And it will also be less prone to gameplay issues.
------
Do you want to have it?
Is the team interested to work on this feature together?
------
Personal Comment:
The benefits are worth it and I would take responsibility and thus invest according effort.
If somebody else wants to take responsibility for this feature, I would gladly step back.
I will only work on this if the team also commits and really wants it.
I will need help with this or otherwise the efforts will be higher than my motivation.
------
If we work on this, let us do it NOW !
(Before any other new feature.)
Because we are already or still working on improving "Large Rivers".
e.g. the area logic improvements that @Nightinggale is planning.
I want to finally get Terrains finished before we start things that are higher in the architectural hierarchy.
some of you may know that Civ4Col does not have "Terrain Type Lake".
Lakes are not defined in XML but by logic checks in DLL.
The only things that can really be balanced in XML are
- size of "Lakes" before being considered "Ocean"
- Food Bonus compared to Ocean
Not even close to the possibilities we have with real Terrains.
------
So how does DLL currently determine "Lakes":
It is basically a "stupid size check of the water area".
Technically the Plots are still "Terrain Ocean" or "Terrain Coast".
They are just displayed to the Player as "Lake".
It uses this check mostly to determine Ocean or Lake:
gc.getMIN_WATER_SIZE_FOR_OCEAN()
------
Generally there is ro real reason that Civ4Col does not have a specific "Terrain Lake".
It is basically mostly laziness of the original programmers.
So well, we as WTP now again seem to have to implement and correct what Vanilla has not taken care of ...
Not like we are not yet used to it.

------
Advantages of having Lakes as Terrain in XML:
(And removing the "DLL hacks".)
1. XML balancing of Yields becomes possible
2. XML balancing of Bonus Ressources becomes possible
3. XML balancing of Movement Rules (e.g. Coastal Ships) becomes possible
4. XML balancing to allow e.g. "Piers" (bot not full Ports) at Lakes becomes possible
...
10. Lots of hardcoded DLL checks can be removed ...
It is even going to be more performant !
And it is even going to remove several small gameplay issues !
------
Disadvantages of having Lakes as Terrain in XML:
(And removing the "DLL hacks".)
1. Effort
2. Effort
3. Effort
4. Effort
...
10. Effort
Otherwise nothing ...

------
So what would need to be taken care of:
1. Creating the Terrain Graphics (incl. Button)
2. Creating the XML Terrain Configuration and adjusting DLL gameplay logic
3. Creating new Terrain Swap Logic (called by MapScripts) that swaps Ocean Plots (without Europe Access) into Lakes
4. Adjusting MapScripts to call new Terrain Logic after Water Areas are generated
5. Adjusting existing Maps to now also contain Lakes where they should
7. Adjusting all Balancing of Units, Promotions, Bonus Ressources, ...
6. Writing Colopedia entries for Terrain Lake
------
Comment of effort and risk:
This can not be compared to "Large Rivers" in terms of risk because it acts as purely Water.
(So the complexity and risk and is much lower.)
We have learned a lot from "Large Rivers" so we should also be faster.
(Effort will be much lower but still there is a lot of details to take care of.)
This is only about 25% of the complexity and effort we had for "Large Rivers".
This is still not a tiny feature and the team needs to work on it together.
The risk in this is neglectable for experienced programmers.
We know all we need to do this and have done it already before e.g. "Savannah" and "Large Rivers".
------
Benefit:
Well, "Lakes" will become XML friendly and easier to balance.
It will help non-programmers a lot.
We will be able to use all possibilities we have with other Terrains.
Currently we can do almost nothing special with "Lakes".
It will even become more performant beause dirty DLL hacks will get removed.
And it will also be less prone to gameplay issues.
------
Do you want to have it?

Is the team interested to work on this feature together?
------
Personal Comment:
The benefits are worth it and I would take responsibility and thus invest according effort.
If somebody else wants to take responsibility for this feature, I would gladly step back.
I will only work on this if the team also commits and really wants it.
I will need help with this or otherwise the efforts will be higher than my motivation.
------
If we work on this, let us do it NOW !
(Before any other new feature.)
Because we are already or still working on improving "Large Rivers".
e.g. the area logic improvements that @Nightinggale is planning.
I want to finally get Terrains finished before we start things that are higher in the architectural hierarchy.

Last edited: