Research and Tech tree

The point as I see it is to limit "Developments" to represent only new ideas, and researching a "Development" would simply unlock a number of Applications ("Civics"/Projects).
Yes, but you can't use the tech and civic tree for that.

A tech is only unlocked by another tech.

A civic is only unlocked by another civic.

You can't have a tech unlocking a civic.

You may have a tech or civic unlocking projects, but that's useless for the mod as then the project is available in any city without any way to control it.

So we must code a new mechanism, preferably one transparent for the AI and not requiring any custom action (like clicking on an item of a new tree unrelated to the base game, without being able to sent the info over the network for MP)

So yes, I can reuse the civic tree, but only by copying it and make from it a locked display of an Application tree.

It would be perhaps easier to rework the tech tree item to show more data (larger items holding more icons, larger tooltips)

Of course, 'Developments' could directly give the player access to new governments, maybe some social policies and other abstract effects. But (almost) all new Unit types, Refined resources, Improvements, Districts, Buildings, Wonders etc would require the additional step of researching the related Application, before they could be unlocked. This would allow us to have for several Military developments, but depending on which Application that you research in which City, the pursued application would block/limit other possible applications. Then you could have specialisation of Cities/Civs. Say for e.g. one City that goes for Archery application, while another focuses on Slingers/Javelineers, a third focuses on Hoplites and a fourth on Cavalry. You could have some applications in common between Cities, some would be easily shared and spread in your Civ, and yet other applications would remain a speciality of that particular City.
yes.

CIVICS

I feel that an additional layer is necessary to make the Development and Local/Global knowledge mechanics easier to keep track of and more manageable. I think we have to establish Applications as their own entity, because I believe that the research mechanics are possibly too complex.
Application are their own entities in every proposed design, can you rephrase ?

I understand that it may be too complex, and that UI feedback would be important, as usual, but my design allow automatic progression (good for AI and new players) while allowing more experimented players to speed up the items (tech or app) they want to get first (you still have choices)

Meaning that I find it difficult to work out how things (e.g. units/buildings) should become unlocked, especially when you consider the grouping of items and all the hundreds of ways to gain research points. Not to forget that we also need to decide which fields should add points to what, including max limits of contribution.
Well, it's planned that way since a long time (more than one year !), and it costed me a few weeks of coding to integrate it to the tech tree, I won't change it now that's the only thing left is to fill the data.

Speaking only of the tech tree here, not worked on the app tree yet.

I believe we could keep the interesting though complex research mechanics as long as we can separate the individual "items" further. I see a repurposed Civics-tree or Projects as two possible ways to accomplish this, which offer the Player choices that can be compared relatively straight-forward. If all the mechanics of development/applications/unlocking and so on work in a complicated manner that mostly happens behind the scenes, then it's hard for the player to overview the progress and make meaningful choices. I'm not saying that we must split up all individual items or add the additional layer of Applications, but only that I find it difficult to plan the tech/developments/applications without such a design.
I don't think it's an issue, we can make sheets if it helps for development, then think about how to integrate it in the UI. But I don't understand why having hundred of source for research points is an issue for the representation, it would be the exact same problem with one or a thousand of source for points, the "cost" property itself won't change, the prerequisite techs/apps won't change, so the tree and item placement would be the same anyway.

PROJECTS

The 'need' contribution would be the 'needs' of the City that is working on the application, including the 'needs' in connected Cities. Couldn't a 'need' calculation be used to boost or slow the "production" of the Project? A City that is collecting a surplus of food (without rationing) shouldn't get a boost to any Project for developing entirely new means of Food production. But they could get a boost for working on a Project that aims to increase the profits/exports of the current Food production.
I don't thing that you should be able to lock a research if there is a need or another source of points for it (see the previous mention about the AI), that why I propose the other way, ie projects accelerating Apps research, but not researching Apps on projects only.

Promotions would be simplest, but if promotions can't be used to unlock new actions for the Units, then I guess the alternative would be to add a special builder unit that could replace the standard Builder. In the e.g. of the Rice farming, that special builder would have the ability to build a "Rice farm", that a default Builder doesn't. This would require a unique improvement for many resources, but how could we otherwise limit the possible unit actions? And how could we limit Units/Cities by their current Local knowledge, rather than Global knowledge?
That was my first thought, but too many replacements, can you visualize the list of builder units required ? And the code to select which ones are available in a city ?

And that builder could be used on any city plot after being build, no way to lock it to a city area.

Units and Buildings are already locked/unlocked at the city level by the fake buildings mechanism coded in the mod, it's a new column in the DB (one in the Buildings table, one in the Equipment table) and 2 lines of code to implement a prerequisite Application.
 
Yes, but you can't use the tech and civic tree for that.

A tech is only unlocked by another tech.

A civic is only unlocked by another civic.

You can't have a tech unlocking a civic.
Alright, I was unsure if Civics could be unlocked by Tech when I first suggested it, and now I see that I've misinterpreted your previous response. The Civics approach was entirely premised on the possibility of unlocking Civics through Tech. So thanks for clarifying that!
You may have a tech or civic unlocking projects, but that's useless for the mod as then the project is available in any city without any way to control it.
Alright, so Projects can't have requirements for showing up in the City's list?
But it seems to be possible to have requirements for Units? Can you have requirements for Buildings?
So we must code a new mechanism, preferably one transparent for the AI and not requiring any custom action (like clicking on an item of a new tree unrelated to the base game, without being able to sent the info over the network for MP)

So yes, I can reuse the civic tree, but only by copying it and make from it a locked display of an Application tree.

It would be perhaps easier to rework the tech tree item to show more data (larger items holding more icons, larger tooltips)
I don't think you should try to create a new "Application tree" from scratch nor did I suggesy adding custom actions. If I gave that impression, then I phrased my suggestions poorly.

Application are their own entities in every proposed design, can you rephrase ?
Yes, I think we both need to clarify our use of the words. I'm not sure if I understand what you consider to be Applications and what you consider to be Global/local knowledge? Do you see applications and local knowledge as the same thing?

To take an easy example:
The Archery development unlocks the Artillator building, right?
So would that building and in extension the Archer unit be the applications?
Because I used the word Application to be the intermediate step required to unlock certain "stuff", not just the stuff itself.

How do you envision global/local knowledge in that case? Is 'Global knowledge' simply finishing the Development. And the Development itself gives the universal unlock of the building?

Or is Global knowledge just the first step and then you have to work/wait to gain the Local knowledge to gain the stuff?

I hope we can get on the same page!

I understand that it may be too complex, and that UI feedback would be important, as usual, but my design allow automatic progression (good for AI and new players) while allowing more experimented players to speed up the items (tech or app) they want to get first (you still have choices)
I'm not against automatic and complex progression, and it could simply be that I haven't grasped your design yet.

Well, it's planned that way since a long time (more than one year !), and it costed me a few weeks of coding to integrate it to the tech tree, I won't change it now that's the only thing left is to fill the data.

Speaking only of the tech tree here, not worked on the app tree yet.
I don't mean to be disrespectful. I just question because I want to understand how you envision Developments, Applications, Global knowledge and Local knowledge to work. Especially if we have different conceptions about these things.

I don't think it's an issue, we can make sheets if it helps for development, then think about how to integrate it in the UI. But I don't understand why having hundred of source for research points is an issue for the representation, it would be the exact same problem with one or a thousand of source for points, the "cost" property itself won't change, the prerequisite techs/apps won't change, so the tree and item placement would be the same anyway.
For me it makes a big difference if I'm looking at individual items compared to a group of items.
Take Sailing for example, which represents the development of:

Fishing boats
Fish market
Shilyard
Galleys
Builder embarking(?)

Sure, the concept of Sailing might be the prerequisite for all of these, but each item should probably have its own requirements and several of these were likely developed in different/varied circumstances.
At least for me, I find it increasingly difficult to generalise, the more things you have to take into account at the same time.

So, the main reason for my conceptions of Applications, in the form of Projects/fake buildings, is that it would be a simple way to separate all these (Sailing) items into subgroupings, that are easier to tackle. If Sailing unlocks the application of idk: "Warships", then you can more easily define the boosts/obstacles to such development.

I don't thing that you should be able to lock a research if there is a need or another source of points for it (see the previous mention about the AI), that why I propose the other way, ie projects accelerating Apps research, but not researching Apps on projects only.
Are you planning an app tree, that is separate from the Development tree, or am I misinterpreting you? Please clarify what you mean by apps, so I can follow the reasoning.

That was my first thought, but too many replacements, can you visualize the list of builder units required ? And the code to select which ones are available in a city ?
Fair point, I guess you'd need a lot of special-builders, though I could see improvements/actions accumulatiny over time, so you wouldn't need a special builder for every resource. There might still be other simpler solutions to avoid that issue, even if I can't envision any at the moment.

And that builder could be used on any city plot after being build, no way to lock it to a city area.
I don't see that as a poblem, but rather think of that as a feature. Of course you should be able to send your seasoned Rice farmers to another City and use their expertise.
 
Sorry, I didn't meant to sound harsh, but reading my post again, I did, so my apologies. I may be a bit frustrated by a small flu (or big cold) that prevent me from coding since 4 days as I lack concentration, could also explain my lack of understanding or difficulty to present my design.

Apps are anything you want them to be, but LOCAL (OK, that sound even more confusing now, I'll develop below)

And yes, it's an App tree, as it can have branches (app requiring previous apps), even if it's not displayed as such, and there can be orphan leaf.

So an app is an item that have the following properties:
- a type name to identify it
- a cost to determine how long to research it
- a linked tech from the global development tree (optional)
- a prereq tech from the global development tree (optional)
- a prereq app from the city app tree (optional)
- a prereq buildings (which could be a fake building) (optional)
- a list of events that give points to research the app, one of those event could be the local production of a fake building acting as a project, another could be the use of "knowledge resources" specific to that app (or specific to the linked tech when there is one defined)
- it could unlock anything that the mod can control (building, fake buildings, equipment, units that don't require equipment, other app, ...), but not tech as explained
- it could affect any mechanisms that the mod has added (resource production/consumption/conversion/trade, health, population needs, ....) or that the mod can control without breaking MP compatibility (maybe I should make a full post somewhere about that)

Taking your examples, starting with Archery:

The Development item "TECH_ARCHERY" currently unlock the Artillator Building, which in turn allow production of Equipment that will unlock the Archer (and other units)

There is no obligation to create an Application if we thing that once TECH_ARCHERY is researched, any city should be able to build the Artillator Building.

But IF we think that Archery should be a local knowledge, then we could have an APP_ARCHERY.

Then we can determine exactly HOW that APP_ARCHERY is acquired in each city. It could be locked (ie can't be researched) until TECH_ARCHERY is researched, or it could be locked until the prereq tech for TECH_ARCHERY is researched. The later would allow parallel research of TECH_ARCHERY (global, dev tree) and APP_ARCHERY (local, events or fake projects unlocked by the prereq tech)

If we set TECH_ARCHERY to be the linked tech for APP_ARCHERY, then when you have one, you gain bonus research points for the other, using the "knowledge resources" mechanism.


For your Sailing example (embarked builders are a tech tree property only, no possible local unlock for that), if we don't want it to unlock everything globally:

we could have a APP_SAILING, researched LOCALLY any way we want as explained above, and unlocking everything at once (Fishing boats, Fish market, Shipyard, Galleys)

OR

we could have anything as separate Application unlocking each component (APP_FISHING_BOAT unlocking Fishing Boat, APP_FISH_MARKET unlocking Fish Market, etc...)

OR

we could have a complete mix, with Fishing Boats and Fish market unlocked globally by TECH_SAILING (and by APP_FISHING_BOAT/APP_FISH_MARKET or APP_SAILING if we want to have local Fishing Boats or local Fish Markets before the Tech is known at the global level), and Shipyard, Galleys unlocked ONLY by one or two Applications.


Note that we could have Applications completely independent from the development tree and unlocked on any event we want (for example when a city reach a specific size)
 
Just a quick note since I haven't seen it mentioned here, but I believe you can restrict Projects by making them require a resource (I think it used to be buggy, but has been fixed?). So if you're willing to create (a bunch of) dummy resources granted by techs/developments through lua, I think you could use projects for that then
 
Thanks for the clarification on apps!

Then I suppose that the researching of apps can be visualized using a mouse-over tooltip, like the health icon in the city banner.
And we could list all the apps in the Civilopedia, so players can read up on the specifics, like prerequisites and how to get research points for a specific app.

I can definitely see how we could use a combination of unlocks, projects and buildings for similar items, when it is appropriate.

For e.g. the Galley could become available through the Shipyard but the Quadrireme should definitely be unlocked (locally) by an app, rather than a (global) Development.

Warships, fortifications and siege engines are typical items that shouldn't be unlocked globally but rather result from apps.
 
Last edited:
I skimmed through everything, and just wanted to bring this up if it hasn't already. Some kind of tech diffusion or tech trading feels neccesary to me. As this sounds like a relatively complicated new system of advancing in tech, and at least from some of the first posts, it seems like it would seriously help civs who are really far behind (Or civs who are really far ahead) equalize with the rest of the world. Is there any plans to implement something like this so even if you don't get a great start you can still trade with other civs for technology like happened historically?
 
I skimmed through everything, and just wanted to bring this up if it hasn't already. Some kind of tech diffusion or tech trading feels neccesary to me. As this sounds like a relatively complicated new system of advancing in tech, and at least from some of the first posts, it seems like it would seriously help civs who are really far behind (Or civs who are really far ahead) equalize with the rest of the world. Is there any plans to implement something like this so even if you don't get a great start you can still trade with other civs for technology like happened historically?
Yes, that's one of the planned usage for the "knowledge resources"
 
I don't think I like the taxonomy of research fields you've given. It also looks excessive to subdivide every technology into so many 'tags' that your tagging is neither abstracting or unifying. I mean, just the raw techs are only slightly more diverse than your type system.

Other games have tread out this space, and the fields are always Physics, Engineering, Societal, maybe Economic, maybe Mathematics.

Now, maybe it seems one thing you're doing is to classify not the fields of study, but the sources of "academic fervor" I guess, where your civ has a certain score in how much inquiry there is going to be into "Exploration" or "economy" and so on. If so, it's the mechanics of such allocation that I find to miss the mark. Settling how exactly your game actions will manipulate these fervors seems to be the correct step to precede an extended survey of the tech tree.
 
I don't think I like the taxonomy of research fields you've given. It also looks excessive to subdivide every technology into so many 'tags' that your tagging is neither abstracting or unifying. I mean, just the raw techs are only slightly more diverse than your type system.

Other games have tread out this space, and the fields are always Physics, Engineering, Societal, maybe Economic, maybe Mathematics.

Now, maybe it seems one thing you're doing is to classify not the fields of study, but the sources of "academic fervor" I guess, where your civ has a certain score in how much inquiry there is going to be into "Exploration" or "economy" and so on. If so, it's the mechanics of such allocation that I find to miss the mark. Settling how exactly your game actions will manipulate these fervors seems to be the correct step to precede an extended survey of the tech tree.
Your critique is interesting but a bit too abstract (for me). Could you please elaborate?

And perhaps you could suggest which fields/themes you'd prefer and why?
 
The way I've coded it, you should be able to mod it any way you want using XML.

I needed a bigger tech tree for the test, but it's not fixed, we'll work on a better version of all trees (techs, buildings, units, equipment, ...) once all the other mechanisms are coded.

What we're limited by are the gameplay events to base our research fields on, for example, I don't see how to have a "Physics" research field.

I've finally finished to merge the Civics/Tech trees, and added the code to handle multiple fields and events (but only coded a few events so far), as well as a small pass on the UI to show what can contribute (and how much) to research each Technology

Spoiler Research Contributions :
Clipboard-3.jpg
Clipboard-5.jpg
Clipboard-6.jpg
Clipboard-7.jpg
 
@Gedemon :

So nearly a year later, I've finally posted my timeline at https://forums.civfanatics.com/thre...-illustrated-by-civilization-vi-icons.640096/

I think it will be useful as a historical reference when we're designing our tech/civic tree, like our discussions about applications and when certain buildings/units should be unlocked. Archers and Chariots are two items that I've covered, and thanks to Boris the timeline of Gunpowder is quite detailed as well. An important thing to remember is that I haven't taken the game mechanics into account when placing items in the timeline.
 
Last edited:
A few thoughts on tech diffusion and how to handle the knowledge/tablet/scroll/book resources.

Small reminder about those "resources" and my initial thoughts in relation to applications:
Points gained above the application cost could generate "knowledge resources" that could be kept locally (as a knowledge "buffer"), diffused over trade route (application diffusion) or converted (by some science-related buildings) into research points for the global "TECH_AGRICULTURE"

The "knowledge resource" could be of various level with different efficiency for diffusion/conversion: simple "Knowledge" (ie oral tradition), "Clay Tablets", "Scrolls" (Parchment, Papyrus), "Book" (Paper)

Science-related Buildings could also create those "knowledge resources" for applications from related known global techs, using Clay, Parchment, Papyrus, Paper resource.

"knowledge resources" related to an application would be consummed in cities that don't have enough point to maintain that application cost.
The knowledge resource coming from a "Development" would spawn in the capital. They could then be used here to maintain/research available Apps in the capital that are linked to that "Development", or send to other cities (including foreign cities depending on the diplomatic relation level) using the mod trade route mechanism, where they could contribute to research/maintains linked apps.

The knowledge resource coming from "Applications" would spawn in each cities that get more point for that application than they loss from decay. They'll use the same transfert mechanism, but could be converted to points for the linked "Development" (if there is one) by any cities with a science building (library, ...)

About the various form of the "knowledge" resources, there would be limits on the amount of those resource that can be stored in a city (could be linked to buildings), and each would have a base value of research points, books having a higher value than scrolls.

Now, more globally:

Initially, the Palace would handle the creation of "TechA knowledge/tablet/scroll/book" resources in the capital (if TechA has been researched), the number being based on the city Science output (and maybe other factors), those resources would be available for exportation to cities of Civilization that have at least a DoF, and maybe use bonuses based on alliances)

We could have later a new unique building per Civilization (a National Library) that could be build in any city that would then be your Civilization source of knowledge "exportation".

The Palace or National Library would also handle convertion of any unallocated points in a research field (for example Military Research) at the end of a turn into "Research Field knowledge/scroll/book" resources (for example "Military Book" resource if you have paper)

The convertion of "TechB knowledge" (imported from other civs or cities if TechB research is possible but not completed) or "Research Field knowledge" (stocked or imported from other civs or cities) resources into research points for TechB (multiple factors could handle how much of the knowledge resources could be converted each turn) would be possible in any cities with a library (or the capital without library). TechB research points could be also gained from "AppB knowledge" if TechB and AppB are linked and AppB research is already completed in that city.

Creation and convertion of "AppA knowledge/tablet/scroll/book" would be possible in any cities with a library (or the capital without library)

"AppA knowledge" is created in cities that have researched "AppA" and are still gaining research points for that Apps (from research events)

"AppA" research points could be gained from "AppA knowledge", but also from "TechA knowledge" (if AppA and TechA are linked)
 
Last edited:
Let me see if I understand your description by restating it differently and you can tell me if it sounds about right:

All creation and converting of Knowledge resources require Palace or Library.

1. Researching Tech_A yields Tech_A_Knowledge.
2. Tech_A_Knowledge is exported to friendly Civs
3. When you get points for a research field in which the techs can't accept any more Contribution, the excess points are converted to Researchfield_Knowledge.
4. When you import knowledge for a tech you don't have researched, or relevant research field, it is converted to research points.

Apps (Assuming tech and app are linked):

1. If city has App_A then it yields App_A_Knowledge and possibly Tech_A_Knowledge
2. If city has App_A but the Civ hasn't completed Tech_A, then App_A_Knowledge would be used directly for researching Tech_A.
3. App_A could be researched in a City using either imported App- or Tech_A_knowledge
 
Last edited:
Thanks, that's it.

1. Researching Tech_A yields Tech_A_Knowledge.
Once researched, yes (but not while researching else the city would use the resource to gain more points the next turn)

4. When you import knowledge for a tech you don't have researched, or relevant research field, it is converted to research points.
Yes, but even if I've included it in my description, I'm still unsure if we should allow import/export of Research field knowledge.

If city has App_A then it yields App_A_Knowledge and possibly Tech_A_Knowledge
Same here, not sure of the final mechanism, that's where we need to define the maintenance cost and decay methods for applications.
 
Last edited:
Not yet, I'll work on that after next YnAMP update.
 
While I'm having a better vision of the code/design, I'm pondering to change the way we'll handle the basic "knowledge" resource types.

ATM the design is to have the same mechanism for it than other "science resources" like tablets/scrolls/books, ie converting research points into/from all of them, with different ratio and decay rates.

Now I'm proposing to make it a mandatory intermediate resource:

At the beginning of a turn, all your research points are added to the corresponding knowledge resource type. This is a "human resource", we could cap it based on the total population in a city, that city working specialization and its literacy value (based on social stratification for the initial implementation, pondered by other parameters later)

Then based on that pool (and the literacy value, the buildings, the policies, ...), generate either directly research points for techs/apps or "store" the knowledge into tablets/scrolls/books if available.

The knowledge resources would have a very high decay rate relatively to the other science resources, which would be also pondered by the mortality rate of the city the resource is "housed" in.

Using a simple ratio value, it would also allow it to spread from city to city migration, while the other resources are dependent of trade routes level currently based on diplomatic relations.
 
Hi! Sorry to be a bother. At this point I believe you heard about my project enough not to need the entire story again. As part of the project I would like to redo the tech tree to not go as far in terms of technologies. We're still arguing on precise details due to how often this could be used in the future if we don't pigeonhole ourselves. But as an example, let's say we would stop at the industrial era in terms of technology advancement. So I'd remove the techs after that, put the industrial ones at the complete end (just before the future techs which will need to be redone for obvisou reasons) and try to have a tech tree as full as the original but now filling until industrial only. Since we make a fantasy world we will add some magical themed techs which will help fill some of the gaps and we'll see what else we do.

And while browsing I saw the top post of this page, this one:

Yes, but you can't use the tech and civic tree for that.

A tech is only unlocked by another tech.

A civic is only unlocked by another civic.

You can't have a tech unlocking a civic.

You may have a tech or civic unlocking projects,

Those seem like a good set of rules that I should know. Anything else in terms of general rules of how to work the tech tree that you could share?

It would be perhaps easier to rework the tech tree item to show more data (larger items holding more icons, larger tooltips).

Now I would love to know if the opposite could be done easily-ish. Could we have the tech tree reveal less? In our first test playing the game we realized that some (nearly EVERYONE) of the kids have a hard time not trying to min max if the info is right in their face. So I was thinking if it only said tht they research sailing and not show the details, it would be a lot easier for them to stay in RPG mindset. Do you know or have an opinion on that? (I''m aware a lot of what I'm saying goes 100% against the logic of video games).

Thanks for your time reading and thanks in advance for any hint or answer.
 
It's not easy to follow the logic of the UI as it's sometime spread over multiple files, so I won't say "easy", but you should be able to display less with a bit of trial/error. "ctrl-shift-F" (aka "search all files" is your friend when browsing the UI files in a good text editor (using Notepad++ here)
 
Back
Top Bottom