Éa, Dawn of the Mortal Races (phase 1, pre-alpha code development and discussion)

very nice...
 
it seems the new fall patch might enable to have more than 200 promotions...
that might be useful here :D
 
Yes, that certainly takes some constraint off of future development. Also, Horem seems to have tracked down the bug that crashes the game from new resource art (which can be specifically avoided even if it is never fixed). Both of these will be useful when I start to add content for phase 3.

Alpha is coming along nicely. I don't have as much time as I did during the summer, but I'm making good progress every week. You can see the updates in the OP build status spoiler. I can at least promise that there is no "feature creep" happening: everything for phase 2 has been set for quite a while now (and I believe that I have described pretty much everything in these posts somewhere). I'll post an ETA when I have some confidence about it.

I can say that the AI GP's are working fabulously in all of their peacetime functions. I'm especially happy with the way merchants and priests go about targeting foreign cities for trade routes or conversion. I think the value calculations are sophisticated enough that they are playing this aspect of the game at a human player level. For example, a priest considers whether conversion will "flip" a city and then how many cities will receive religious pressure as a result (all discounted by the time it will take to get to the city and do the conversion). A merchant considers the benefit that a trade route will do for a rival civilization in addition to the benefit it will do for the merchant's own civilization, as well as the risk of trade route loss during wartime or permanent loss from city capture.

GP combat functions are built using many of the same algorithms but tweaked in different ways. When an AI GP goes into "combat mode", it ignores its peacetime actions/targets and analyzes each plot in the battle area for the potential value of each of its combat actions. For example, a Heal spell heals a fixed number of hit points (equal to the caster's modifier) which is obviously more valuable if it is done on a stronger unit, but not so valuable if the unit is at 99 hp so can only be healed 1 hp. The GP puts all of this into its value calculation. There is also a time-discount system for battle, similar to that for peace actions but much steeper (so move and cast this turn is 3x better than move and cast next turn). The only thing missing for GP combat AI is the system to tell the GP where the battle is. I think I know how to get this info in Lua but I still need to implement and test it.

As you can see, I'm quite fixated on AI. I won't ever add a feature that the AI can't use (at least not knowingly) and ideally use very intelligently (even if that takes 80% of my coding time).
 
I can say that the AI GP's are working fabulously in all of their peacetime functions. I'm especially happy with the way merchants and priests go about targeting foreign cities for trade routes or conversion. I think the value calculations are sophisticated enough that they are playing this aspect of the game at a human player level. For example, a priest considers whether conversion will "flip" a city and then how many cities will receive religious pressure as a result (all discounted by the time it will take to get to the city and do the conversion). A merchant considers the benefit that a trade route will do for a rival civilization in addition to the benefit it will do for the merchant's own civilization, as well as the risk of trade route loss during wartime or permanent loss from city capture.

The effort you're putting into the AI is just revealing that I've actually been playing Civilization at a sub-human player level.
 
There are some other areas where I can improve the AI function a lot, even without really making it "smarter".
  1. Gross AI valuation problems. For example, the AI always buys resources, and a Deity player always sells resources (even the last of a particular luxury resource in many cases). The AI makes no attempt to value these based on need (except in the case of strategic where it will cap its need at some point). Even without applying any "need logic", the base value is clearly wrong. Why do I say it's wrong? Well, apply some simple market logic here. A good player always sells. That is all you need to know to know that the valuation is wrong. The AI is always getting the bad side of this deal, and there are a lot of these deals in an entire civ game. A sophisticated Deity player exploits this even further to cripple the AI (e.g., preventing it from getting RAs with other AI civs).

  2. "Human only" strategies. A lot of these are described in the strategy forums, and they are often pretty simple in execution. "Take techA, B, then C, then build unitX." One challenge the developers have (that I don't) is they want to keep their AI "generic" so it can handle game/modding changes. If you don't limit yourself in this way, then there is no reason why these strategies can't be scripted for the AI (and then triggered on certain conditionals). Of course, the other option is to prohibit the particular strategies when they are identified, which is appropriate if the strategy seems very exploity or cheezy. But as a game developer, you should do one or the other: either incorporate the strategy in the AI in some way or change the rules to make that strategy no longer avialable to human (the devs actually do this in some cases, for example they got rid of the cheezy "RA blocking" strategy available at release).
The thing is, I can beat Immortal with either #1 or #2 above, and I can beat Deity (usually) if I apply all I know about both #1 and #2. (MadDjinn got annoyed when I suggested that he couldn't do what he does without the AI-buys-all-resources exploit.) When I've intentionally not exploited either of these, then Emperor is pretty challenging for me. Ergo: it should be possible to boost the game difficulty by 2 levels without changing handicap bonuses (or doing much in the way of fixing the generally lame tactical AI) by dealing with these two issues.

I'm also doing some unit re-balancing to actually reduce the element of combined arms in some cases. I know that sounds bad. But the AI doesn't really know how to use combined arms tactics. Archers (for example) are played much better by the AI if they are simply changed into machine gunners (1-tile range with good defense). I don't want to remove this element completely: you expect siege units to be siege, and horse-mounted to have a flanking role. But I think adapting the stats a bit to the existing tactical AI (such as it is) will make much better gameplay.

The ultimate goal, of course, is to have a challenging game without having opponents that have to have ginormous handicap bonuses (or handicap bonuses that are so obviously huge that they take away from immersion). I'm not sure if that is possible. But we'll see how close we can get.
 
The effort you're putting into the AI is just revealing that I've actually been playing Civilization at a sub-human player level.
haha .. the same thought crossed my mind :D... maybe that's why i do not play at deity level ....
 
News:

My graphics card burned up about a week ago. Since my system is 7 yrs old, I'm taking this as an excuse for a total system upgrade. New system will have NVIDA 660 ti and a nice big 240 Gb solid state drive (+1 Tb old-fashioned mech drive). That should be great for fast Civ5 startups, which is something I have to do 100s of times for modding. Also nice for my photography.

New system is supposed to come in on 10/12. I guess that puts the alpha back a bit. Most likely middle to late November. But it's a nice break for me before the final push.

And... Dll!!! Believe it or not, I've never programmed C++. So I'll be reading up on that while I wait for my new computer. I don't think it will be hard after programming various scripting languages for the last 10 yrs. I'm not a professional programmer, but I've used programming to great advantage in my professional life.

I don't actually need dll for almost any of the planned features in this mod. However, it could help make some of my messy Lua hacks less hacky (e.g., the way I allow GPs to enter foreign cities). The thing I'm most excited about is the prospects for better tactical AI. Not that I have time to do that ... but I'm sure others will be working on it.
 
And... Dll!!! Believe it or not, I've never programmed C++. So I'll be reading up on that while I wait for my new computer. I don't think it will be hard after programming various scripting languages for the last 10 yrs. I'm not a professional programmer, but I've used programming to great advantage in my professional life.

You ought to have a fairly easy time of it then. I'm guessing you've worked on Javascript, huh? Well, Javascript is a sublanguage of Java, which is a sublanguage of C++. So, anyway, if you know Javascript, you've figured out a bit of C++. If you know anything about "object-oriented programming", that will also help immensely with C++. Almost all C++ programmers (and Java programmers) use object-oriented programming concepts extensively.
 
For me C++ is much better than Lua. In Lua the variables have no defined type, which leads to lots of confusion and messages like "attempt to perform an operation on a nil value". Lua coding is a painful experience for me.

In C++ everything is defined, which makes coding much easier for me. The harder part is the widespread use of pointers, but it's something you can get used to. Object-oriented programming with inheritance is also widely used.
 
You ought to have a fairly easy time of it then. I'm guessing you've worked on Javascript, huh? Well, Javascript is a sublanguage of Java, which is a sublanguage of C++. So, anyway, if you know Javascript, you've figured out a bit of C++. If you know anything about "object-oriented programming", that will also help immensely with C++. Almost all C++ programmers (and Java programmers) use object-oriented programming concepts extensively.
That's an optimistic view of programming!
C++ has its own pitfalls. While everything is supposedly typed, some stuff (templates) is not and the error messages can be horrible. Memory management is something rarely dealt with in scripting languages. new/delete, new[]/delete[] must be understood, which is not hard, but must also be used consistently, and sometimes leaks and memory access violations creep in which aren't as nice as a nil access in lua or nullpointer exception in java. Object orientation is something that also exists in some scripting languages (python) so it may not be an issue.
 
That's an optimistic view of programming!
So, you'd rather I tell him C++ is hell? I mean, really...

Programming isn't hard. You just use logic and then develop the code to fit your logic. 9/10, if your logic is right, you'll figure out the code. Furthermore, it's not as if Pazyryk is new to programming as a whole. He has developed the entirety of this mod so far, largely on his own.

C++ has its own pitfalls. While everything is supposedly typed, some stuff (templates) is not and the error messages can be horrible. Memory management is something rarely dealt with in scripting languages. new/delete, new[]/delete[] must be understood, which is not hard, but must also be used consistently, and sometimes leaks and memory access violations creep in which aren't as nice as a nil access in lua or nullpointer exception in java. Object orientation is something that also exists in some scripting languages (python) so it may not be an issue.
And all of that is something that can be learned. (Btw, I'm not sure what you'd expect. As computer languages go, C++ is rather old. It was developed in '79, after all. Though, there have been updates since then.) He has an inroad with scripting languages. You really sound like you're trying to discourage him. That, or display your vast knowledge of C++. :shifty:
 
So, you'd rather I tell him C++ is hell? I mean, really...
I'd rather not lie to him by saying it's not hard.
I simply work with several people who work with lua everyday and feel very uncomfortable using C++.
 
PERL is the other one I use a lot. For various reasons, it has become the favored language for biologists handling large sets of genomic sequence data (which is something I do). And I work a lot with R (=free Matlab) which has its own logic and syntax. Before that I played with cellular automata using Pascal. Before that... well, I don't want to date myself.

Hard is always a relative term. I thought statistics were hard when I was an undergrad. Some years later I published several papers in high profile journals that were largely statistical. It's all where your interests take you.
 
From the languages you mentioned, I think the most similar to C++ is Pascal. I used both, and I think the main difference is that C++ gives you more freedom - you are less restricted in the kind of "code constructions" you can use.

(I'm not a professional programmer, so please correct me if I'm wrong :))
 
Bah... My new computer won't ship unit 10/17. That's what I get for going the custom build route rather than a Dell. But it will be worth the wait.

I'll probably try to do some more pre-balancing in the meanwhile. I still have to figure out building costs and so forth. Expect some updates on those old posts. (I'm using posts in this thread as my working documentation. Eventually it will all get pasted over to a new thread when I release the alpha.)

Going through a C++ tutorial now. It looks straightforward to me, certainly more so than PERL (yuck!). Script languages are great for what I do with them, which is to write quick and short (usually < 50 lines) code to do specific tasks (lately processing 100 Gb files of genome sequence data). But the rigid typing in C++ is welcome in a bigger code project. I'm sure this is all obvious to those of you who do this.
 
Pantheism (excludes Agrarianism & Theism)
Code:
Animal Lore -> 	Feral Bond   -/> Commune with Nature
Woods Lore -> 	Fellowship of Leaves -> 	Forest Dominion
Earth Lore -\-> Færie Lore     -\-> Through the Veil
  • Opener: free Druid; each Devout counts 20% less against appearance of GPs; unimproved land tiles become "wildlands"; The Weave of Éa will develop spontaneously in cities (this religion gives +1 food for each wildlands plot)
  • Animal Lore: animal resources become available from wildlands and provide +2 food & +1 production
  • Feral Bond: animal resources in wildlands provide +1 culture & mana; wild animal units no longer attack and they can be converted
  • Commune with Nature: +1 culture and +1 mana gained for every four wildlands plots owned (civilization-wide); all plot improvements are slowly regenerated to wildlands
  • Woods Lore: plant resources become available from wildlands and provide +2 food & science; no movement penalty for forest and jungle
  • Fellowship of Leaves: plant resources in wildlands provide +1 culture & mana; forest and jungle improvements are slowly reverted to wildlands
  • Forest Dominion: cultural borders expand spontaneously through adjacent unimproved forest and jungle into unowned or foreign-owned territory; world-wide, all forests and jungles gain +5 strength (affects feature spread; gain is applied each time a civilization adopts this policy)
  • Earth Lore: earth resources become available from wildlands and provide +1 production, gold, culture & mana; no movement penalty for hills
  • Færie Lore: can communicate with the Fey, the minor spirits of individual trees, rocks and so on (sometimes called the "little gods")
  • Through the Veil: can communicate with the major Spirits of Éa (Fagus, Epona, Aveta, Ægir, etc.; see Pantheistic Cults above)
  • Finisher: &#8531; of all culture converted to Mana
Notes:
  1. All land Civ5 resources have been categorized as animal, plant or earth (should be obvious which ones fit in which class; silkworms are animals, btw).
  2. Wildlands act as an "improvement" that you don&#8217;t need to build, but you still need the appropriate tech to make the resource tradable (Animal Husbandry for horses, Hunting for furs, Calendar for silks, etc.). You won't get as much yield boost as the actual improvement, at least not initially, but wildlands become better with more Pantheism policies and with specific Pantheistic cults. (Sea plots and resources are treated normally.)
  3. Færie Lore gives contact with The Fey, which are an actual civilization that is invisible to players without this policy. The Queen of the Fey has gold, a few resources and some other interesting items to trade (including spells and some artifacts).
  4. Through the Veil gives contact with a number of the major Spirits of Éa (probably a dozen or so). Each has a relationship level with you and can give quests as if they were a city state. As friends or allies, they can provide mana, resources, units and/or other things. If allied with you, a Spirit becomes a physical unit under your control. These individuals act as great people in most ways, and can even take leadership of your civilization...
just reading back and trying to understand :
so :
wildlands give : normal yield + +1food (with opener)
animals ressources give : normal tile yield + normal unimproved ressource yield +1F from opener + +2F, +1Pwith animal lore and +1culture +1mana with feral bound.

same for vegetal : normal tile yield , + normal unimproved ressource yield +1F from wildland +2F 2S from wood lore and +1culture +1mana from fellowship of leaves

and mineral : normal tile yield + normal unimproved ressource yield +1F from wildland +1P, +1G, +1cult +1mana;

?
four things /questions :
(I'm just stating observations... however in reality it might be totally balanced with regard to yields obtained throught improvements..)

-it seems mineral ressources are the forgotten ressouces here : no second policy for improving the tile. (only 5 extra yields instead of 6 for animals and 7 for vegetals)

-it seems prod (well, and science and gold) are the forgotten yields:
if 1 ressource of each type :
1G
2 P total
2S
3cult
3mana
7F

so this will be a city that can grow, but will have low gold and low prod and low science.
(not taking the base terrain yield +unimproved ressource yield)

and un-ressourced tiles will be... low yield tiles as no improvement might be built.

-will there be a difference in yield between ressources of a same type ?
ie : a-la cIV instead of a-la ciV ?

-what about faith ?
did you "just" replaced faith by mana (mana and divine favor being two sides of the same object) or will you have divine-favor being faith (but income limited to those with theisme policies, and mana a new yield for every body ?
 
I think I gave the Earth resources a better boost with the first policy, but then they don't get a second boost. I think I may have been considering the base value of these resources also, but I'm not sure now.

At one time I had a giant table that had yields from each resource and then every way that it could be improved (by policy, building, civ trait or anything else). Unfortunately, I got sloppy and stopped updating it and lost it in cyberspace somewhere. I'll try to rebuild that over the next week and post it. I really need that full picture to make sure the yields are coherent.

Keep in mind that the 7F won't go very far since the food/citizen is set (for now) at 5. In my limited testing so far, it seems like most cities can grow enough to exploit local resource tiles and maybe 1 or 2 more (probably best used for specialists). But of course that depends on how many are "food" resources. If you have a big cluster of resources but none of them food, then you may have to settle an additional city just to work them all. Having a balance is valuable, more so than in base (I'll tweak the starting plots to account for this eventually). Only advanced Agrarian societies can grow much beyond this: they are the only ones that can push a farmed but unresourced grassland tile up to 5F.

Divine favor and mana are two different things from a lore perspective. But a single civ can only have one or the other. You are either an Azzandarayasna follower (using divine favor) or not (using mana). If you are interested in the mod mechanics, they are actually the same thing (= faith yield). But they have different graphics in the UI and different texts and different ways they are generated and used. (For example, if you are an Azzandarayasna follower and you take the Stânhencg wonder, which normally provides mana, you will get nothing from it.)
 
thx for your explanations...
it is very instructive.

I forgot that food consumption was high... and that decreases the impact of food (while increasing its value as you need it much more... but 1F is worth not a lot if it is a surplus... but a lot if you already have 4surplus and your city oscillates at +1pop/-1pop... ...nice).


are you looking at Thal's mod ?
I mean mostly in term of naval warfare, yield equivalence/balance (especially between prod and gold.)
 
are you looking at Thal's mod ?
I mean mostly in term of naval warfare, yield equivalence/balance (especially between prod and gold.)

No time to play it. But I browse the subforum sometimes, and his commentary and detailed analyses are very good. I think Éa is a more radical departure from base particularly regarding growth. Making non-resource tiles not sustaining (or only barely so for Agrarian) turns everything else on its head.

I'm not sure that I read what he has written about gold/production balance. I want to try to even up the different yields as much as possible. The basic idea is to devalue 1 production a bit (by making it more available and/or inflating production costs), increase value of 1 gold (by doing the exact opposite), and so on for each yield type. It's not really essential but it simplifies balance and also AI valuation (the AI values yield types as basically equivalent, although it would not be too hard to add a correction factor for each yield type).
 
Top Bottom