Large Rivers (trying to make an old dream come true) [IMPLEMENTED]

Do you want Large Rivers in WTP?


  • Total voters
    45
No, it's just code you may want to see (or not).
Ah ok thanks. :)

But considering code I am a bit ... well picky. :dunno:
I am usually much faster implementing my own code than trying to adapt or improve other code to match my ideas.

And probably like most other modders as well I also trust my own code most. :lol:
For this feature I also already have a technical design concept that I am pretty sure it will work as expected, be performant and have hardly any side effects.

My features and my code are usually really taylored to fit exactly to the mod I create it for.
("Off-the-Shelf" modcomps hardly have any chance to fit my detailed ideas and technical concepts.)

It might take a bit longer than just copying somebody else's code but in the end I will be much happier with it.
(Because the feature will 100% do what I want it to do - and not what somebody else had wanted.)

And also if I fully coded it all by myself, I know every part of it by heart and once a bug occurs it is much easier to fix for me.
(Especially for big and complex concept that is really an important part of it.)

--------

Please do not misunderstand me, I know that there are many great modders out there. :thumbsup:
But it is my preference to implement DLL logic for my own feature concepts myself.
 
Last edited:
Hi guys,

considering the "Movement of Land Units" on Large Rivers I have 2 very different concepts.
Both have advantages and disadvantages and I am not sure which one is best.

Thus it is best to ask you (team and community) which one you want to have. :thumbsup:

Generals that are true for both concepts:
  • Natives can cross Large Rivers (already implemented)
  • Land Animals can cross Large Rivers (already implemented)
  • Fleeing or Revolting Slaves can cross Large Rivers (already implemented)
  • Small Ships can enter Large Rivers (already implemented)
  • Large Ships can never enter Large Rivers (already implemented)
  • Large Water Anmials can never enter Large Rivers (already implemented)
Now to the Alternatives I want you to give me feedback what you want:
(Basically it is mostly about Colonial Players and Kings.)

----

Alternative 1: Liberal Movement Concept for Land Units
(Probably best for Casual Players)

General Gameplay Rules:


Only "Mechanical Land Units" like e.g. Treasures, Wagon Trains, Artillery ... have problems crossing Large Rivers.
(They would need special Terrain Features like e.g. "Sand Banks" or Improvements like e.g. "Raft Station".)

All other Units can however normally cross Large Rivers - however at relatively high movement cost.
(And while doing so they are highly vulnerable to attacks.)

Large Rivers are not really a big obstacle for expansion, they are almost only positive.
(Good Food source and Ocean connection.)

Terrain Features like e.g. "Sand Banks" or Improvements like e.g. "Raft Station" just speed up movement.
(They are not really of strategical importance though.)

Effects:
  • It allows very casual gameplay - almost as of now with a few more benefits
  • Settling near Large Rivers is always a good choice and invest in Improvements is optional
  • For Large Rivers: transport with Wagon Trains is partially replaced by transport with Coastal Ships
  • It is very little effort to implement
  • It is very performant
  • It is very easy for AI
  • It has almost 0 risk (e.g. for bad side effects)
  • Easy to be adapted by other mods or modmods (because very little special code)
Considering Immersion:

Well, our Colonists can also travel through Jungle. Why should they not be able to cross Large Rivers?

----

Alternative 2: Restrictive Movement Concept for Land Units
(Maybe more interesting for our Players that want a real Challenge)

General Gameplay Rules:

Only a few specific Units and Professions e.g. Native Mercenaries, Scouts, Pioneers, ... have no problems crossing Large Rivers.
(All other ones need special Terrain Features like e.g. "Sand Banks" or Improvements like e.g. "Raft Station".)

Movement Costs on Large Rivers for these Units (without Terrain Feature or Improvement) would be 2 like e.g. Mountain.
(And while doing so they are highly vulnerable to attacks.)

Large Rivers are really a big obstacle for expansion, they are a challenge in early game until Improvements are built.
(Of course they are still a good Food source and Ocean connection.)

Terrain Features like e.g. "Sand Banks" or Improvements like e.g. "Raft Station" still speed up movement.
But even more important they are of high strategic importance and thus really valuable to control.

Effects:
  • It allows very strategic gameplay - but expansion gets a bit harder
  • Settling near Large Rivers needs to be chosen wisely and invest in Improvements is needed
  • It is more effort to implement
  • It is a bit less performant (because more special rules)
  • It is a lot harder for AI
  • It has some more risk (e.g. for side effects)
  • Harder to be adapted by other mods or modmods (because of more special code)
Considering Immersion:

Well, Mountains can not be crossed that easily either, why should Large River then?

----------

Summary:

"Liberal Movement Concept" allows casual gameplay, is little effort to implementation and easy for AI.
"Restrictive Movement Concept" allows more strategic gamepay but is much more effort to implement and more difficult for AI.

Especially:

"Restrictive Movement Concept" really needs me to have the Improvement "Ferry Station" and the Terrain Feature "Sandbank".
Otherwise it will become very annoying for players. (Thus I will not implement it without those.)

For "Liberal Movement Concept" the Improvement and Terrain Feature are of course still nice to have.
(So yes, I would implement them there as well once I get the graphics.)

Please give me your feedback on this. :)

I want to give community the gameplay that it wants.
But I will not implement both variants as options. (Too much effort.)
 
Last edited:
answer to the question "Do you want Large Rivers in WTP?" already received. so I suggest changing it to "which Big Rivers do you want?"

in my opinion "Restrictive Movement Concept" is more interesting.
 
answer to the question "Do you want Large Rivers in WTP?" already received.
Yes it is. :thumbsup:
Otherwise I would not have started working on it. :)

so I suggest changing it to "which Big Rivers do you want?"
I can not change the poll anymore. :dunno:
For a new poll we would need to start a new thread.

in my opinion "Restrictive Movement Concept" is more interesting.
Thanks for the feedback. :thumbsup:

But we should wait for more feedback first before implementing this.
(This really makes a big difference in gameplay of this feature.)

Edit:

Theoretically it is possible to first implement "Liberal Movement Concept" (because it is really little effort and little risk),
give it to some selected supporters for "test playing" and collecting feedback and see how they like it. :think:

That way I can push out a really playable internal test version (improved version of my prototype) to supporters much faster.
(This would also help to identify bugs or necessary graphical improvements much better - because it could actually be played already.)

Depending on that feedback we could decide to leave it with "Liberal Movement Concept" or to change it to "Restrictive Movement Concept". :dunno:
(The "Restrictive" version is basically a "Liberal" version with more XML config and code to limit movement of Land Units even more.)
 
Last edited:
(The "Restrictive" version is basically a "Liberal" version with more XML config and code to limit movement of Land Units even more.)
So a "Restricted" version can be modmoded into a "Liberal" version anytime, right? :)

P.s. I see what I can do for a Sandbank feature...
 
I'm all for more restrictions!

However, I should add that I already change WtP to reduce movement speed gained by promotions so that roads are far more important and hills/forests become a real hindrance you have to cope with.

Regards
XSamatan
 
So a "Restricted" version can be modmoded into a "Liberal" version anytime, right? :)
Sure, that would be possible. :thumbsup:

"Restrictive" technically includes "Liberal". - But not the other way around.
(It just has more XML config and code because it needs more options to restrict.)

Technially "Liberal" is the much simpler and less risky version to implement. (Needs less XML modifiers and less code.)
"Restrictive" is technically the expanded version and more effort to implement. (Has more XML modifiers and more code.)

"Liberal" would thus be easier to adapt by another mod than "Restrictive". (Less XML and code to be merged.)
For a modmod of WTP however (once "Restrictive" is implemented) it would be possible to use XML only to reconfigure between both options.

Or to formulate it otherwise:
  • "Liberal": Simple version (less modding options, less risk for bugs and less effort)
  • "Restrictive": More powerful version (more modding options, more risk for bugs and more effort)
There will be no ingame option to switch between those 2 however if "Restrictive" is implemented.
If a player wants to switch to "Liberal" he will need to do all the necessary changes in XML config - basically creating his personal modmod.
 
Last edited:
Also I really do not understand why we would need any "Dummy" graphics. :confused:
We should always be able to use normal graphics like everywhere else.

I do not understand why any Python would be needed for this. :dunno:
(I can not imagine any single use case needing Python at the moment.)

You miss understand me. I want hint you on this important Functions, because they give modders nice capabilities, you cannot invoke over other ways. Sure, you can invoke them also over SDK. I'm just refer the Python instances because I normally lookup at PythonAPI.
(And I'm not responsible for the maybe mistakable function names ;) )
 
@Ramkhamhaeng
Thanks for taking the time for your explanations. :thumbsup:
I really appreciate it.

Currently our graphics are looking as expected - good enough for me to play with - so no problems so far that would need to use special graphics function in DLL. :dunno:
We are also not doing anything fancy currently - it is basically all normal Terrain graphics as of yet. Some normal Improvement graphics and normal Terrain Feature graphics may follow.

I explicitly went for a standard design pattern to avoid any unnecessary complexity and potential graphical issues.
Actually what I am doing so far is really easy coding and most of it is just related to game mechanics logic.

I think your graphical concept was far more complex than ours.

But I rather keep this simple considering graphics and ensure that the feature itself will later on work and cause as little trouble as possible.
(I also want to allow all the standard functionality in Worldbuilder and for Map Generation with as little effort as for every other Terrain.)

I think the main difference between our concepts:

Your concept: Highly experimental and really complex and sophisticated - thus risky and causing lots of issues.
My concept: Proven in use standard design patterns and actually simple - thus very safe and very unlikely to cause any issues.

-------

Basically there are no more real technical challenges or unsolvable issues left. It is all working as expected. :)
The rest is mainly about effort to create the few missing graphics (Terrain Improvement and Terrain Feature), to finish the rest of the game logic, to adjust the existing maps and to adjust the existing MapScripts.

Actually I was really positively surprised how easy this turned out to be technically until now - I was expecting far worse.
(If there would not be the MapScripts and Maps even the effort would at most be moderate.)
 
Last edited:
The "Liberal Movement Concept" for Land Units is now implemented. :)
(It is basically all XML so far - using already existing functionality of WTP.)

As explained the technical solution can be expanded in future changes to become "Restrictive Movement Concept" - depending on feedback of internal test phase.
(But for the sake of getting a playable prototype out I first implemented the easy version.)

Since I have no graphics for Terrain Feature "Sand Banks" or Improvement "Raft Station" they are of course not implemented yet.
(Will do so once I get good graphics.)

Examples of Land Units that can cross Large Rivers:
(Basically everything on Foot or Horse.)
Spoiler :




Spoiler :




Spoiler :




Spoiler :




Spoiler :




Examples of Land Units that can not cross Large Rivers:
(Basically everything heavy - mostly on wheels.)
Spoiler :




Spoiler :




Spoiler :




Spoiler :




Spoiler :


 

Attachments

  • Civ4ScreenShot0000.JPG
    Civ4ScreenShot0000.JPG
    179.3 KB · Views: 278
  • Civ4ScreenShot0001.JPG
    Civ4ScreenShot0001.JPG
    179.3 KB · Views: 247
  • Civ4ScreenShot0002.JPG
    Civ4ScreenShot0002.JPG
    180.2 KB · Views: 254
  • Civ4ScreenShot0003.JPG
    Civ4ScreenShot0003.JPG
    179.9 KB · Views: 251
  • Civ4ScreenShot0004.JPG
    Civ4ScreenShot0004.JPG
    179.3 KB · Views: 254
  • Civ4ScreenShot0005.JPG
    Civ4ScreenShot0005.JPG
    178.4 KB · Views: 254
  • Civ4ScreenShot0006.JPG
    Civ4ScreenShot0006.JPG
    179 KB · Views: 257
  • Civ4ScreenShot0007.JPG
    Civ4ScreenShot0007.JPG
    178.9 KB · Views: 257
  • Civ4ScreenShot0008.JPG
    Civ4ScreenShot0008.JPG
    178.8 KB · Views: 255
  • Civ4ScreenShot0009.JPG
    Civ4ScreenShot0009.JPG
    187.9 KB · Views: 249
Last edited:
Please consider if the Riverford could be a terrain too, instead of terrain feature. Would be much easier to make the graphics for it.
I don't yet know if I can do it with a feature or no. - Actually I haven't spent much time with it but ran into an issue which I may or may not be able to solve. I don't know yet.
 
@Team and Supporters:

My internal prototype for testing is now ready to go. :thumbsup:
Please contact me so I can give you download link and DLL you can test / play with.

This is not a final feature and quality of it is still very rough.
So please do not yet expect that quality. (e.g. considering graphics or game play)

The feature is generally playable though under these restrictions:

1. You need to place "Large Rivers" manually - currently no Map includes them, no MapScript generates them
2. AI will generate be able to handle it - but AI logic is not yet optimized for it (e.g. Settlement found values)
3. Balancing of Movement Speed (on Large Rivers) has not yet been properly done
4. Terrain Feature "Sand Banks" and Improvement "Raft Station" do not yet exist
5. Proper Colopedia Concept Article for Large Rivers does not yet exist

@community

Before you ask - no this is not yet going to be published to everybody.
This is just available for internal testing right now.
 
Please consider if the Riverford could be a terrain too, instead of terrain feature.
Considering DLL implementation, performance, Map Generation and to have it balancable in XML it would be much better as Terrain Feature. :(
(It is a bit too rare to be given its own TerrainType and a lot of the logic would become more difficult and less performant.)

Could you please try if you find any solution?
Maybe we could also ask e.g. @Kathy or another known graphical modder?

It does also not necessary have to be "Sand Banks" either if we have another good idea. :dunno:

By the way:
I will send you a message with instructions how to get my prototype and install it. :thumbsup:
It will make it easier for you to test your graphics.
 
Last edited:
Another picture:
Native Mercenaries attacking and sinking a Coastal Ship on a Large River :)

Spoiler :




game play question to community:

What is the behaviour you would want in such a case? :think:
(Meaning when the Land Unit is winning the fight on the Large River.)

A) Ship and all its transported goods being captured (similar to Wagon Trains being captured)
B) Ship being destroyed (which would currently happen)
C) randomly (approximately 50:50 chance) either being captured or destroyed

Feedback would be nice. :)
 

Attachments

  • Civ4ScreenShot0002.JPG
    Civ4ScreenShot0002.JPG
    172.1 KB · Views: 262
Last edited:
Considering DLL implementation, performance, Map Generation and to have it balancable in XML it would be much better as Terrain Feature. :(
(It is a bit too rare to be given its own TerrainType and a lot of the logic would become more difficult and less performant.)
Yeah, that makes sense. The problem is, that I could not render the feature bellow water.
Spoiler :

upload_2020-10-12_20-48-4.png

upload_2020-10-12_20-48-25.png


The idea was to use the same texture as the new terrain, so they would blend in each other but as you see, it is floating on the surface of the water :(
I'm new to Nifscope.
It does also not necessary have to be "Sand Banks" either if we have another good idea.
Maybe something like this could work?
Spoiler :






game play question to community:

What is the behaviour you would want in such a case? :think:
(Meaning when the Land Unit is winning the fight on the Large River.)

A) Ship and all its transported goods being captured (similar to Wagon Trains being captured)
B) Ship being destroyed (which would currently happen)
In BtS there is a mod (War prizes I think) that lets ships capture ships with a chance but not always. I think that would make the most sense.
 
In BtS there is a mod (War prizes I think) that lets ships capture ships with a chance but not always. I think that would make the most sense.
Chance based is also possible. :thumbsup:
I will add it as option.

Considering code we have all that we need. :)
(All of that stuff is basically already implemented in WTP - just need to change a single if condition in the code.)

Capturing of Wagon Trains by Combat Units on Land (deterministically) already exists.
Capturing of Cargo Ships by Combat Ships on Water (with a random chance) also already exists.

Meaning I just need to tell the game what it should do if a Ship loses against a Land Unit "Large Rivers".
(Currently it just does the default - meaning the Ship is destroyed - because I did not tell it anything else.)

I just need to know that we want to have. :dunno:
(Implementing it is less than 5 min effort incl. testing.)
 
Last edited:
The idea was to use the same texture as the new terrain, so they would blend in each other but as you see, it is floating on the surface of the water :(
I'm new to Nifscope.

Could you ask one of the experienced Civ4BTS graphical modders? :think:
(e.g. hrochland or Kathy)

They should know how to do it.
Otherwise if you do not know any of them I could also try to ask some graphical modders (e.g. in the German forum). :thumbsup:
 
Could you ask one of the experienced Civ4BTS graphical modders? :think:
(e.g. hrochland or Kathy)
I wrote to the Graphics Modification Requests Thread - as you probably have already seen it.

A few candidates for a Raft Station:
Civ4ScreenShot0871.JPG
Civ4ScreenShot0872.JPG
Civ4ScreenShot0873.JPG
Civ4ScreenShot0874.JPG
Edit:
I think all of them comes with BtS.
 
This one I like. :)

Spoiler :



Currrently it is a Building grpahic, but I guess it should be no big problem to use it as Improvement graphic.
Conidering graphic files (.nif, .kfm, .dds) it should not really make a difference.

If you can get it to work as Improvement graphic that would be nice. :thumbsup:
(Otherwise a simple wooden raft floating in the middle of the Large River would suffice for me.)
 
Last edited:
Top Bottom