1. We have added a Gift Upgrades feature that allows you to gift an account upgrade to another member, just in time for the holiday season. You can see the gift option when going to the Account Upgrades screen, or on any user profile screen.
    Dismiss Notice

Caveman 2 Cosmos

Discussion in 'Civ4 - Caveman 2 Cosmos' started by strategyonly, Aug 25, 2008.

  1. rwglaub

    rwglaub Prince

    Joined:
    Oct 27, 2005
    Messages:
    329
    I was using the latest SVN that was posted but with unlimited national units. From now on I'll play with limited.
     
  2. New_York

    New_York Chieftain

    Joined:
    Sep 11, 2015
    Messages:
    5
    are there any hd terrain mods out yes for c2c ?
     
  3. Playsoneasy

    Playsoneasy Chieftain

    Joined:
    Aug 27, 2012
    Messages:
    73
    Gender:
    Male
    Location:
    West Midlands, UK
    Quick question - where is the BUG Options screen? I can't seem to find it, even though the mod seems to be working fine.

    EDIT - Nevermind, I've found it now.
     
    Last edited: Jun 9, 2017
  4. Thunderbrd

    Thunderbrd C2C War Dog

    Joined:
    Jan 2, 2010
    Messages:
    26,957
    Gender:
    Male
    Location:
    Las Vegas
    No and there cannot be. This level of the graphic engine is fixed in the core we can't touch.
     
  5. New_York

    New_York Chieftain

    Joined:
    Sep 11, 2015
    Messages:
    5
    and any other textures packs? ive seen one in the subforum, but the link seems dead?

    whats about an less detailed texturepack because sometimes fewer is more or less is more as we say here in austria ^^
     
  6. Toffer90

    Toffer90 C2C Modder

    Joined:
    Oct 16, 2011
    Messages:
    6,500
    Location:
    Norway
    I have some retexture work in a modmod thread.
    Most land terrain textures in C2C were made by me (not hill, peak, permafrost, ice, and tundra), those that are in the modmod thread are the ones that haven't been greenlit for inclusion in C2C.
     
  7. Zach In A Bear

    Zach In A Bear Chieftain

    Joined:
    Jun 10, 2017
    Messages:
    5
    Gender:
    Male
    Hey devs, I'm looking to write a mod and have it eventually incorporated into C2C. For now, I'm not worrying about compatibility as I'm going to make it separately first. I've never modded for Civ4 (or any game) before, but I'm experienced in C++ and game dev.

    I'm having trouble finding the functions I need to access and how to utilize them. I'm trying to make it possible for vassals to have vassals (Crusader Kings II, here we come :p), and the only clue I found in the python files for Warlords (where vassals were introduced) is:

    Code:
    VOID setVassal (TeamType eIndex, BOOL bVassal, BOOL bCapitulated)
    That doesn't seem to have to do with the logic determining whether a civilization offers vassalage (whether it was capitulated or not), but it does seem like it MAY deal with allowing vassals to have vassals. However, I don't really know much beyond this, it is difficult to research.

    I understand the my modification will require more changes to fix the new bugs, logic concerns, and balancing it creates, but I'm just focusing on the first task: making it possible. Can someone point me in the right direction?
     
  8. Thunderbrd

    Thunderbrd C2C War Dog

    Joined:
    Jan 2, 2010
    Messages:
    26,957
    Gender:
    Male
    Location:
    Las Vegas
    Sounds like a new team member in the making here! This could be quite interesting.

    This is unwise. C2C has changed many fundamental logic streams from Vanilla BtS very significantly. The merge process would be horrifying if you weren't working from C2C sourcecodes as a base.

    That should work to give you a lot more insight than I had when I started! Now... with this background, clearly you would be familiar with using the tools available to you in VS to find all references, go to the function, go to the header, etc... right? These are generally THE tools to figure out how to find the information you're looking for. However, it can help to understand some of the fundamental architecture of the .h and .cpp files and naming conventions.

    The way I would think of your project is that it's probably in the code in a few primary spots. The first would be the game RULES that enable or allow, which you are referring to by saying you're trying to first figure out how to make it possible. That's right, that's where I would start. And for THAT you'd generally find that in the file that works with the layer of game object that makes this determination in the first place (this determination being 'to vassalize or not to vassalize'.) In this case, you'd (I think) be talking about the player. If not the player then the team... I'm not extremely familiar with Vassal rules because I don't personally like the option at all. (This does not mean I have any judgement for a player who does appreciate Vassalization in the game.)

    So you're probably going to find something like canCapitulate or canVassal or canVassalize, or something along those lines, in CvPlayer.cpp. However, there are likely added rules built directly into the AI regarding how they can come to offer, receive an offer, and how they are instructed to react to that offer. All of that would be, (most likely) in CvPlayerAI.cpp.

    My advice is to read the code patiently, both before and after the function you suspect controls the determination you wish to alter the rules on and PROVE to yourself that where you are looking to adjust the code is exactly where you should be adjusting it. There are sometimes varous layers of validation, player level, team level, game level, and these layers can be strung together. You'll see this in places like the determination of what you can build or train. canTrain, for example, exists at the city level, but also at the player and the team and the specific game overall and to enable the ability of a city to train a unit, said unit must be qualified on all checks on all levels. There may be a similar chain for checking to see if a vassal can become or offer vassalization. Careful reading of the functions involving vassalization will be both illuminating and critical to understanding in depth to figure out everywhere you're going to need to make an adjustment.

    So I might start with searches through the files suspected of controlling these rules, using Ctrl-F, of terms that one might think to establish these rules under, such as Vassal, Capitulate, etc... and once you start narrowing in on things in the source files, you start researching and following the program logic. You'll probably learn there's numerous other things to consider, like how the AI evaluates these choices, display matters that may become an issue, how to get the option to come up in the diplomacy screen (though I don't think from your description that you'll need to do this as it sounds like you're just looking to expand on when and who can offer and accept capitulation.)

    Make sure to research deeply in the souce codes before grepping the python files. Py is more for extensions of rules and sometimes is not so good for opening up new ways for established rules to function.


    If you don't have the source codes, I may need to get your sourceforge username and give you a conditional access to them from the SVN download.
     
  9. Zach In A Bear

    Zach In A Bear Chieftain

    Joined:
    Jun 10, 2017
    Messages:
    5
    Gender:
    Male
    Hey Thunderbrd,

    Thank you for your response!

    This is where many of my problems lie. I was looking at vanilla, which has the source code in an obfuscated .dll file. I will look at the source files in my C2C folder for now on.

    Are the source files that come with the mod not the files you are talking about?

    It seems as though many isVassal() calls take arguments related to the teams, but that may be for unrelated methods or functions. Now that I'll be looking at C2C source I'll have a much easier time researching.

    Source code it is then, thanks. Since source wasn't available in vanilla I thought Fraxis only allowed modding through Python.

    Thank you for writing for someone who is inexperienced, it ensures that no detail is overlooked in case I don't know something. It really makes everything much easier :)

    On a side note, I would like to report a bug: the Neanderthal cultures are not working. I may not fully understand the requirements for building a culture, which means that tool-tips may be needed for more UI elements. At this point the bug is unconfirmed.
     
  10. Thunderbrd

    Thunderbrd C2C War Dog

    Joined:
    Jan 2, 2010
    Messages:
    26,957
    Gender:
    Male
    Location:
    Las Vegas
    If you've got them, awesome!

    isVassal() would be a call to determine exactly that, if the player IS a vassal. It's a bool that wouldn't have a lot of relation to whether it can become one or not except that there may be an isVassal() call that is used to say a player can't if it already is. So I suppose that's one way to track things down but it's a large body you'd get from this because the rules would check this in a lot of places. It would be faster to look for all code references to the m_b bool (or sometimes an int) and see where that data storage becomes subject to adjustment. Much faster. Track that function, probably changeVassal() or something like that, backwards to the validation checks to ensure it can be changed at all just before the call is made to change the player to a vassal. It's in the validation checks that you'll find your rule change moment.

    I've been assuming it's on the player level rather than the team but it would make sense if capitulation is a whole team or nothing thing. Again, this is where I'm unfamiliar with the rules of the dynamic myself.

    You'll have to get very clear regarding the dynamic for me to say. This is a bit vague to me unfortunately and so far as I've seen it's working as intended but I could be wrong.
     
  11. Dancing Hoskuld

    Dancing Hoskuld Deity

    Joined:
    Jul 5, 2004
    Messages:
    23,498
    Gender:
    Male
    Location:
    Canberra, Australia
    I could never find a way to identify if a vassal was conquered or a colony in Python. When I asked on the forums I was told to use the two relationship items between the vassal and master, ie the "vassal attitude to master" and "master attitude to vassal". However in game both types, conquered and colony, were "very happy" with their master when it was me as the player.
     
  12. Szarrukin

    Szarrukin Chieftain

    Joined:
    Mar 7, 2014
    Messages:
    26
    I have i7 4720, 16GB RAM, GeForce GTX 960. Is this normal that C2C stutters and has unnaturaly long turn endings as soon as first turn even on low details?
     
  13. JosEPh_II

    JosEPh_II TBS WarLord

    Joined:
    Jun 20, 2007
    Messages:
    15,925
    Gender:
    Male
    Location:
    Western IL. cornfields
    No it's not normal.

    Why are you playing with low graphics? You system can play High with no problems.

    And what do you mean by "unnaturally long turn endings"? Give some detail time wise for perspective and how far into the game you are as well. It's all in the details and you've given next to none.
     
  14. Szarrukin

    Szarrukin Chieftain

    Joined:
    Mar 7, 2014
    Messages:
    26
    I play on Large world, Perfect World map with 6 AI players. From the very beginning there is a slight but irritating stutter and I have to wait about twenty seconds between every turn, even between first and second turn.
     
  15. JosEPh_II

    JosEPh_II TBS WarLord

    Joined:
    Jun 20, 2007
    Messages:
    15,925
    Gender:
    Male
    Location:
    Western IL. cornfields
    The slight stutter is from a special coding we use for low end users called graphical paging.

    This is after all a 32 bit single thread game engine that is over 10 years old, and as such the processing for each turn is not as fast as New current games on the market. It can only use up to 2.9GB of memory and is very dependent upon CPU speed. The mod alone is over 1.67GB in size bigger than Civ IV BtS itself.

    I run an i7 2nd gen 2600k 3.4GHz cpu. I have 8GB of DDR3 main ram at 1066Mhz. Video card is a Nvidia GTX 550Ti 1GB DDR5 vram. And I have no real problems. Expect turn times to be in the 10sec (early game) to 1 minute + range (mid to late game). Put your graphic setting for BtS at least at medium or High as i stated before.
     
  16. Thunderbrd

    Thunderbrd C2C War Dog

    Joined:
    Jan 2, 2010
    Messages:
    26,957
    Gender:
    Male
    Location:
    Las Vegas
    There are a lot of things being processed between turns, even from the beginning of the game. Patience is a prerequisite virtue to play C2C.
     
  17. Playsoneasy

    Playsoneasy Chieftain

    Joined:
    Aug 27, 2012
    Messages:
    73
    Gender:
    Male
    Location:
    West Midlands, UK
    I have 6GB of RAM so I should be OK right? I also have an i7 3610qm at 2.30ghz (max clock is 3.3ghz I think) and an Nvidia GT650m with 2GB of vRAM.

    I also tend to play on low graphics but should I then crank that up to medium, bearing in mind what you said?
     
  18. Toffer90

    Toffer90 C2C Modder

    Joined:
    Oct 16, 2011
    Messages:
    6,500
    Location:
    Norway
    Crank it all the way up. you won't loose fps.
     
  19. Dancing Hoskuld

    Dancing Hoskuld Deity

    Joined:
    Jul 5, 2004
    Messages:
    23,498
    Gender:
    Male
    Location:
    Canberra, Australia
    Happy birthday StrategyOnly:bday:

    (I did get the date right didn't I?)
     
    strategyonly likes this.
  20. Zach In A Bear

    Zach In A Bear Chieftain

    Joined:
    Jun 10, 2017
    Messages:
    5
    Gender:
    Male
    Keep in mind that I'm dedicating very little of my time to this, so I don't want to foster false expectations.

    Sorry for the vague bug report, I was being lazy. It's been awhile since my QA days and I forgot to avoid reporting something until I have a useful description. To be honest, I'm abandoning that report...laziness.
     

Share This Page