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

Tech tree brainstorming

Discussion in 'Civ4Col - We The People' started by Nightinggale, Jan 13, 2020.

  1. lyciummusic

    lyciummusic Chieftain

    Joined:
    Mar 3, 2019
    Messages:
    38
    Well, though Civ style tree would be the simplest to implement I'm going to fantasize here a bit: among loads of strategy games, I would say a mixture of Hears of Iron 3 and Stellaris would be best. In HoI3, along with research points "produced", there was an experience in relevant area as well, namely if you specialized in infantry you would do that techs faster- this is both historical and logical. Stellaris on the other hand has research buildings, but research costs are scaling how big your interstellar empire is, enabling you to play "tall". This is important as largest nation may not be always the most developed. Compare Luxemburg and India. This would let you play tall, and benefical for AI too. Also research takes simultaneously in three seperated fields, namely physics, sociological and engineering. Research costs of course should also be scaling with difficulty as well.

    So what I fantasize is a mixture of experience and research points. You cannot straight out make a fur factory if you have never produced fur before, but you general development and technological level still helps. While general techs can be researched, specific techs are unlocked by having relevant tech level and doing it.

     
    Last edited: Jan 17, 2020
  2. Nightinggale

    Nightinggale Deity

    Joined:
    Feb 2, 2009
    Messages:
    4,271
    I'm not sure I like the idea of making big players research slower. If you have two colonies and use one to research, then you shouldn't research faster than the player with 5 colonies where research is done in a single colony.

    We could do something else though. Add diminishing returns from research each turn. In Imperialism if you have a tech you can research in 10 turns at $100/turn, then spending $200/turn will research the tech in 7 turns. The result would then be that big players could research faster, but the difference between the big and small players isn't as great as their research budget, be it money or yields. Maybe make a list of research contributions from each colony, sort it and then the further down the list you get, the higher the research penalty for distributing the research instead of keeping all the researcher in a single location.

    The question is: will that be too complex for the players to understand? The BTS approach to research is simple and strait forward to understand for humans. It just adds the contributions from each city and no "scaling math" takes place in the background.

    Another Imperialism 2 part to research: bonus to researching something already known to other players. You can research something in 10 turns using the standard budget, but setting it to $0 will not research it, except in the case where somebody else already invented it, in which case it will take 20 turns. The more players knowing it, the greater this effect is. Placing spies at in the players knowing this tech will further increase this bonus.

    A research bonus towards techs already known by other players would be another way to grant a bonus to players, who fall behind in research, hence balance.

    Game difficulty, game speed and player specific (trait granting +5% research in a certain category or something).
     
    Atlas627 likes this.
  3. orlanth

    orlanth Storm God. Yarr!

    Joined:
    Nov 17, 2001
    Messages:
    1,774
    Sounds awesome :) I read through some of our past threads on this and gathered some good ideas from there (but the threads were mostly bad jokes made by me). :lol:I added some further comments to the posts from Nightingale and Ray below with an * based on past discussions and experiences with MC and 2071 etc.

    * Considering the existing Allows tag system you wrote about below, might it be simpler to implement unlocking Tech research requirements in this way as well? I.e. Civeffects XML could have an AllowTech tag working in the way you detailed in your post section "What techs can do once gained" below. This analogous system could give lots of flexibility and avoid the need for lots of new boolean <requiresand> / <requiresor> tags etc.
    * I had not thought of this but it does sound like an interesting option (for example enabling Military techs and Economic techs to both be researched separately). This could be achieved by allowing modding of intangible Yield types (instead of one YIELD_IDEAS like in Medieval Conquest could allow modders to create several research yields, such as YIELD_TECH_MILITARY, YIELD_TECH_ECONOMIC). Using the existing XML it would then become possible to mod Professions/Buildings/Units that had any advantage you want at the different types of research (or to just mod one type for simplicity if you prefer).
    Even just a cosmetic option to show Techs in multiple tabs like the FF screen would be a good advance.
    I have to say I really love this feature, because it unlocks a lot more strategic depth for mods with a lot of generic Yield types. When all Yields are just something you get and sell for x gold they can start to seem bland/interchangeable, but when you can make certain Yields useful for researching certain useful Techs/abilities they become a lot more strategically interesting. Motivating players to seek out certain types of rare Yields that could be useful for a certain research interest that they strategically need. This can be implemented as in M:C by allowing each Tech to have one or more Yield inputs (or none if desired) and perhaps an int for modding how many units of that Yield is consumed per techpoint when researching it. Specifying no required Yields would allow research points without consuming anything (like Bells/Crosses are produced currently).
    I do like the idea of allowing some techs to be not always identically present every game. However some techs might be important to let be more consistent (e.g. if unlocking an important building/Yield etc). The idea of investing to gradually unlock more possibilities for further research in a specific area is interesting. However I can also understand that going to a lot of effort to actually invest in doing research, and then get a random result that you may not really want or need at all at that time could be too frustrating/unexpected for some players.

    Perhaps something like this could be a good compromise solution:
    Make it not mandatory to assign techs to one of these Categories (or simply allow modders to make Basic Research categories with no special unlock requirements)
    Once for each player at the start of the game, sort Techs within each Category into a random ordered array. This represents the order in which they can become visible/unlocked for research for that player, so that progress of research is not always the same for all players or all games.
    Grant Civeffects XML a <TechCategoryUnlocks> tag; the sum of civeffects values is how many Techs in this list are currently visible/unlocked for research by that player (starting from the first in the randomly ordered list). For example in a Metallurgy category you could start out with only one or two options accessible for research, then you can gradually unlock more and more options from making progress in various ways that add +1 to that Civeffect tag (such as researching a physical science / natural philosphy tech, or investing in advanced metalsmithing buildings that gradually expand your research opportunities in that area. This would work in the aspect of relevant overall experiences contributing to research opportunities as mentioned by lyciummusic. Sounds cool to me :)

    Agreed. A good way to make the Civeffects system flexibly useful for balancing AI difficulty is to allow Civ4handicapinfos.xml to apply Civeffects to AI players or human players. Modders can then be able to adjust various AI player requirement exemptions by difficulty level as desired. IIRC in M:C and 2071 AI players used the same tech system but were exempted from Yields being used for research; this seemed to be effective in making sure they can remain a good challenge.
     
  4. Nightinggale

    Nightinggale Deity

    Joined:
    Feb 2, 2009
    Messages:
    4,271
    All I figured out regarding requirements is that it should rely on CivEffects rather than tags because then it's up to the xml modder to mix techs, civics, traits, eras etc as it would require no extra code. It keeps the dll simple and hopefully bug free.
    Other than that I haven't really figured out how I want it to be written. The issue is that I want to be able to set up complex setups like "requires 2 techs out of this group of 5, but it also requires 1 out of this group of 1 and it's not allowed if the player has more than 0 of this group of 1". Some system like that, which should be very flexible, but at the same time it should be simple for the player to understand. Something like "can't research this tech. You don't have the expressionistic trait" (which would actually check for the CivEffect provided by that trait). I'm not sure we should add techs like that, but I want the dll to support it because once made I don't want to change the system more than absolutely needed. Worst case a future update means redoing the xml files.

    This makes me wonder if we should even have YIELD_RESEARCH in the dll. Maybe each tech should have a list of yield requirements. I have done some work to avoid yield hardcoding and I think you can use it to add a virtual yield (as in can't be loaded into a transport) from xml alone. This could be useful for setting up which yield each tech requires while at the same time will work just fine in a setup with just one research yield. The question is if we should support a tech needing 10 research A and 10 research B.

    Yes this can be made way too complex for the player, but so can a whole lot of other stuff. The "keep it simple" part should be xml as the dll shouldn't place artificial limitations on what can be done in xml based on "they will likely not need it". The question which is the most interesting at this point is how will it affect the code? Will it make it harder to program bug free? Will it show down the game? I'm more concerned with issues like that than I am regarding unlocking the possibility of xml modders making the game too complex.

    One thing I'm concerned with is if each tech has different requirements, wouldn't it make sense to make a research queue? If we have a queue, wouldn't it hurt the ability to have multiple trees? How hard will it be to make a queue where the player can research 3 techs at the same time because they require 3 different research yields? I don't know the answer to either of those questions. Right now I'm not entirely sure what I want in this regard either.

    I won't code something like that as I don't think there should be AI cheats in the DLL. However we could add a research cost modifier to CivEffect (one for each yield?) and then assign -100% to the CivEffect automatically granted to all AI players. That will result in cleaner DLL code and it will provide another CivEffect tag, which human players can use.

    Imagine a random event providing a CivEffect, which provides -50% research cost of a certain yield for a number of turns. The whole idea with CivEffects is to make it do as much as possible because it unlocks so many possibilities for later additions, which then won't require new programing+testing of modified code.
     
  5. orlanth

    orlanth Storm God. Yarr!

    Joined:
    Nov 17, 2001
    Messages:
    1,774
    Ok sounds good! Also I put some additional ideas in my post #23 above in the comments box from your post "What techs can do once gained", using an asterisk * to add to your list of Civeffects ideas. :borg::king:

    In M:C I think everything used YIELD_IDEAS, and TechInfos.xml allowed each tech to have a list of yield requirements used to research each unit of YIELD_IDEAS for that tech (this could also be none to allow Techs not requiring a Yield to research). This seemed to be quite flexible and work fine. If you'd like to enable more than one area/type of research by using an additional abstract yield that could be cool too.

    For the thoughts about how best to enable some possible strategic tradeoffs from "wide" vs "tall" civs as in the posts above, an interesting thought would be to recreate or modify some of the civ4civicinfos.xml mechanics from base Civ4BTS that allow modding of empire-wide effects from number of cities and distance from capitol. I think some of these tags are actually still in CivicInfos.xml, maybe Firaxis left these in the DLL but just did not use them in vanilla C4Col.

    I'd agree it's probably best to avoid changing the actual cost of Techs or other assets based on # of cities (could encourage gaming the system by disbanding or delaying city formation until right after getting a big batch of whatever the cost modifier applies to). But the possibility of modding absolute and percentage modifiers for specific Yields by # of cities and distance from capitol could be interesting (both for Civic options in general and for use in balancing game difficulty levels in handicapinfos.xml).

    I think modding integer and % modifiers for a Yield production applying to each city should be possible using the civeffects already proposed by Nightingale. For distance from capitol, you could use a civeffect tag <DistanceFromCapitol> that then lets you apply % or int modifier to a certain yield multiplied by a city's distance from capitol. To let players invest in mitigating administrative difficulty in a wide empire, could use the Forbidden Palace mechanic from Civ4bts (a Building tag letting players invest in an administrative building that acts an an additional capitol/Palace city for purposes of "distance from capitol" modifiers.)

    CivEffects that are able to apply subtle cumulative modifiers to research or other Yield production would be good for balancing (e.g the idea of enhancing research rate by +10% for each known civ that already has that tech). However for any modifiers that aren't individually huge or absolute (+100%) it's important to allow fractional Yield production not to be lost as a rounding error and cause micromanagement (constantly checking if you have enough tiles producing exactly 4 or more of a yield so your %25 production bonus won't get rounded into oblivion). I think we'd discussed before that it could be possible to increase precision of prices and yield production to 1 significant digit without affecting performance, could that be worked in to enable civeffect modifiers with a more subtle effect than 100%?

    Lastly, I'd think creating a queue system wouldn't be strictly necessary/essential, it might be simpler just to trigger a popup on completion like in Civ4 letting you select the next thing you want to research. (Especially if you incorporate some MOO-like feature like mentioned by Ray and above, where you could eventually unlock new research possibilities that might not all be present/visible from the start).
     
  6. Nightinggale

    Nightinggale Deity

    Joined:
    Feb 2, 2009
    Messages:
    4,271
    I have been thinking about how to automatically draw a tech tree. It might not be as complex as it sounds. We just introduce the concept of tech tiers. Tier 1 has no requirements. Tier 2 requires tier 1. Tier 3 requires tier 2, but can also require below tier 2. We only look at the top tier for this. Each tier has a column where they are drawn. Add some code to make the arrows between the boxes be horizontal. If if Tech A requires B, then draw next to B. If that space is already in use by tech C, draw below C. If requirements are too complex to be drawn, draw what is simple and add an icon, which you can mouse over to read what is "requirements without arrows".

    Those rules seems simple enough to do on the fly. If we do that, then we can filter what to draw, like only draw farming techs or exclude navy techs. We can also have an entire tech tree internally, but limit how far you can look ahead. If we need more than one tech tree, we essentially need one tree, but different filters.

    Tech categories would be needed anyway if we are to provide modifiers to specific groups. We can then use those xml entries we have anyway to assign filter button, color and what else we could use.

    While the drawing approach might seem simple, the results are clearly usable. The rimworld mod "research pal" does it like that and it must be autogenerating because it supports techs added by mods without those two mods knowing about each other.

    Research pal screenshot
    Spoiler :




    I wrote about that concept here. I wrote it as something colonies should do, but nothing is stopping us from letting CvPlayer do the same, which would then make it store 1/100 of research points, making +5% actually count.

    I'm thinking in terms like researching Tech A, which requires silver and Tech B, which requires tools. Any colony with no silver would then try to research the tools one instead. Making all colonies get silver to search the first and then switch to all colonies getting tools for the second seems logistically tricky. If you can't get the research yields around, working on multiple techs in parallel will greatly reduce the amount of researchers, who are standing there and doing nothing.

    Perhaps the goal at first is (like a bunch of other stuff) is to plan for it, but don't actually code it. We can then add it later. Say the tech screen can have the drawing code written in a way where we can just make the drawable area more narrow and then we can have a column on the side, which becomes the queue. It's a very minor change to the screen code, but it will make it easier if we add a queue later.

    I think the same goes for yield requirements. It would be a nice addition, but the first generation tech system should just handle one research yield and it can be produced without any yield requirements. I don't want to make it so complex that it takes 10 years to before we have anything, which can actually be used. Instead we should have milestones where it's fully functional at each milestone.
     
  7. Drunk-Monk

    Drunk-Monk Chieftain

    Joined:
    Sep 14, 2008
    Messages:
    55
    There are some very interesting ideas and proposals in this thread.

    I think most on the team are aware of this danger, and agree that we don't want to just mimic the civ games in terms of the implementation of technology.

    I have not played these games but this implementation sounds interesting. I think it would be good to have multiple simultaneous paths to knowledge and a 'learning by doing' style implementation. As targeted research and research teams did not exist in the time period, nor what we would would now recognize as the scientific method. Also Hearts of Iron has a very interesting concept of doctrines which would add variety.

    This would be excellent for military techs, to avoid the spearman vs tank scenario. It would also reflect whilst having very different social structures and politics, European armies fielded units armed with equivalent weapons.

    This example was interesting and this mod could have something similar. For example a native knowledge pathway which boosts relations with natives. You would boost it by dealing with the natives, however if you don't have much contact with natives it would be ok, it wouldn't jeopardise your research pathway towards mining or sailing.
     
  8. lyciummusic

    lyciummusic Chieftain

    Joined:
    Mar 3, 2019
    Messages:
    38
    Technology also does spread. Small bonus to research if others have the same tech.
     
  9. Benjocaron

    Benjocaron Chieftain

    Joined:
    Feb 11, 2020
    Messages:
    6
    My idea in terms of techs would be the implantation of a tech tree clearly separated in sections matching professions in game. For example, you would have a farming branch, political, etc. You would get specific kinds of science by putting experts in your university and be able to research certains techs. By the way, the tech tree needs to be pretty small. There is no point of creating another beyond the sword.
     
  10. Atlas627

    Atlas627 Deity

    Joined:
    Aug 25, 2011
    Messages:
    2,578
    Col gameplay is a combination of strategy and tactics, planning and reacting. I know what my civ bonuses are from the start, but when I reveal a new part of the map or I get a different selection of immigrants, I might adapt my strategy or just make a temporary change to tactics. Having to balance the long-term impacts of decisions with the current situation is what makes the game interesting.

    The Founding Fathers system is already a strategic "accumulate points to unlock new stuff" system. I really don't think the game needs 2 of that. But a tactical one could have use! As in one that you don't have control over and cannot plan around, but can react to. Historically, most of the research in this period occurred in Europe and then spread to the colonies (Philosophy advanced in both though, which is what the Founding Fathers represent). This seems like a good opportunity to use that flavor as a gameplay mechanic.

    What if the European countries had techs (accumulated in some manner, though I suggest randomly over time), and the colonies then receive the benefits after a certain number of turns have passed, which can be rushed through expensive purchase? This could take longer/be more expensive per city and per citizen, with ratios to make concentrated cities easier to acquire tech than dispersed cities, and more important than number of citizens?
     

Share This Page