Pazyryk
Deity
- Joined
- Jun 13, 2008
- Messages
- 3,584
I'm starting this thread to reduce code techno-babble in the mod's thread and the size of developer Inboxes. If you are not interested in Éa mod development, please pardon our construction noise...
Right now, ls612 is the main contributor to code, along with myself. Please post if you see something in the To Do list below that you think you might want to contribute to.
If you are an Artist, please follow the 2nd link in my sig. If you know how to add icons to mods, then look under "Art grunt work" below. If you like doing creative work, look under "Content finishing for phase 3" and also "Table grunt work". Most of the rest of the items are coding. (And no, I'm not calling you a grunt. That's just my name for work that feels like a pain in the behind to me.)
A running build can be assembled from my GitHub repositories:
https://github.com/Pazyryk/EaDLL
https://github.com/Pazyryk/Ea_III_Sword_and_Sorcery
You also need the current Ea Media Pack here.
Current working Game Manual is now online!
PHASE 3RELEASE TO DO LIST: ONGOING WORK LIST:
New DLL functionality to remove Lua/SQL kludges: These will help me remove >100 hidden policies/buildings/etc., remove dependency on dangerous Events, or improve code in other ways.
Hard coded stuff in dll that probably messes up the mod (particularly AI):
Additional DLL (or DLL plus Lua/SQL modding):
AI observation in autoplay: The game works now in long autoplay sessions (even up to turn 400 depending on the specific build). I've modified UI so you can see what all players' cities are building as observer. A very useful thing is watching AI players in these sessions and debugging stupidity. Base AI already has plenty of stupidity, but new mod features can add to these. Note that all AI choices in policy and tech progression and Great Person movement and actions are controlled by my own Lua code. Everything else is base AI. Important Note: To Autoplay, you need to use the mod's own Autoplay method. Select "EaMain" state and type "Autoplay(<turns>)". Or stop while running with "Autoplay(1)"
Content finishing for phase 3: These are areas where I've done some work but there is still missing content. For each item, we should make sure the working Game Manual is filled in first. Then add to game in existing tables. Avoid new mechanisms as much as possible (until after release). We just need to make sure all civs have something.
Table grunt work:
Art grunt work:
Complex Lua/SQL coding:
Available units to be added: (links here)
Leave it for me:
Right now, ls612 is the main contributor to code, along with myself. Please post if you see something in the To Do list below that you think you might want to contribute to.
If you are an Artist, please follow the 2nd link in my sig. If you know how to add icons to mods, then look under "Art grunt work" below. If you like doing creative work, look under "Content finishing for phase 3" and also "Table grunt work". Most of the rest of the items are coding. (And no, I'm not calling you a grunt. That's just my name for work that feels like a pain in the behind to me.)
A running build can be assembled from my GitHub repositories:
https://github.com/Pazyryk/EaDLL
https://github.com/Pazyryk/Ea_III_Sword_and_Sorcery
You also need the current Ea Media Pack here.
Current working Game Manual is now online!
PHASE 3
New DLL functionality to remove Lua/SQL kludges: These will help me remove >100 hidden policies/buildings/etc., remove dependency on dangerous Events, or improve code in other ways.
NaturalWonderDiscoverHappiness in Features table; default 1 and allowing +/- values--DoneGameEvents.CityCanAcquirePlot() CallTestAll. Follow whoward69's example here. --Doneplayer:SetLeaderYieldBoost(yieldTypeID, percentBoost) and corresponding Get. This is a global percent modifier that needs to work for all yield types, and persisted.--Donecity:SetCityResidentYieldBoost(yieldTypeID, percentBoost) and corresponding Get. This is a city percent modifier that needs to work for all yield types, and persisted.--Done- Minor quest Lua support: GameEvents.AllowMinorQuest(iMajor, iMinor, questID) CallTestAll. This is to prevent quests that don't make any sense in the mod. A Lua method to add a specific quest will be needed too (just port whatever dll method does this).
New Promotions tag: "Slaver". This is needed by full civ or city state to capture civilians; otherwise, they are killed. Note: BARBARIAN_PLAYER should capture without this promotion, but ANIMAL_PLAYER should not. Don't rely on isBarbarian() because it returns true for both of these players. Note2: Any player should still be able to recapture a civilian that was originally theirs (I'm not sure if this is handled by same dll methods or different). --Never mind. Will do this differently.New UnitCaptured Hook to allow slavery mechanics.--DoneNew Builds tags: DisallowTech, PrereqPolicy, DisallowPolicy. Look for where PrereqTech is implemented and add extra checks there.--Done
Hard coded stuff in dll that probably messes up the mod (particularly AI):
4 Builds (the feature-remove ones) are hardcoded by table ID (literally 14, 15, 16 and 17--Fixed by re-hard-coding for mod-specific type strings, with logic to decide whether to "chop" or "slash-burn" where needed (not great but better than before))
Add FEATURE_BLIGHT enum and use it where FEATURE_FALLOUT is now used (blight can be removed in the mod, fallout can't)--Done"UNIT_WORKER" is referenced in many places (e.g., AI for scrapping) by text string. That's a problem for us because we have 6 different kinds of worker (3 races each with worker and slave). I'll add Units tag "IsWorker" in next non-dll commit. On dll side recode all occurrences of "UNIT_WORKER" to use this with new isWorker() method (i or I, what's the pattern Firaxis?). (Skip the steam update method CvCity::IncrementUnitStatCount.)--Done
Additional DLL (or DLL plus Lua/SQL modding):
Rivers make internal city connections with Fishing tech (or with building enabled by tech). whoward69 is working on this so wait and copy his solution.--Done- (Complex; probably after release) Slaver CSs are supposed to go on slave raids occasionally. This could either be a non-war state where units are allowed to attack without war (like hidden nationality but not hidden) or a brief 2-3 turn war after which they sue for peace. It's a complex problem either way. The attack is based purely on opportunity: e.g., the CS sees an easy unguarded worker; or CS has a mass of units and can likely capture a couple nearby units (their units have promotion allowing them to capture other units). After the raid, previous relations resume (raids are just their way of saying "hello neighbor"). Some but not complete protection for friends and allies.
AI observation in autoplay: The game works now in long autoplay sessions (even up to turn 400 depending on the specific build). I've modified UI so you can see what all players' cities are building as observer. A very useful thing is watching AI players in these sessions and debugging stupidity. Base AI already has plenty of stupidity, but new mod features can add to these. Note that all AI choices in policy and tech progression and Great Person movement and actions are controlled by my own Lua code. Everything else is base AI. Important Note: To Autoplay, you need to use the mod's own Autoplay method. Select "EaMain" state and type "Autoplay(<turns>)". Or stop while running with "Autoplay(1)"
Why are AI workers not building some improvements???!!! Workers often just sit there in city while a valuable resource 2 plots away remains unimproved, even with no nearby threat. (I've checked obvious stuff, like ability to build and flavors.)--Mostly solved I think- There are two Builds for most improvements, one that removes features and one that does not. Only one is available to a particular player (depending on whether they have the Pantheism policy). The 2nd set is not being performed by AI even though it works for human player. I haven't looked yet but I'm suspicious that the AI code expects a 1-to-1 relationship between Builds and Improvements in the table (it is 1-to-1 from the point of view of player). --Solved but needs testing still
- AI doesn't know about the mod's Living Terrain system (well, how could it?). Non-Pantheistic civs need to clear out Forest, Jungle and Marsh much more aggressively. --Working solution in next commit; needs extensive autoplay observation to see if enough or too much removal now
- AI civs are not attacking each other as much as they should when they have a massive/overpowering military buildup. This could be due to all Leader flavors set at 5 right now, or due to global strategy foul-up (see next point) causing AI civs to never seek conquest victory.
- The four Global Strategies are mostly (or maybe all) fouled up due to the mod. Their selection depends on the existence of certain things like space ship parts or specific victory conditions that don't exist. I need to either alter selection code or design new global strategies. Mostly this affects endgame but doesn't matter in early to mid-game.
Content finishing for phase 3: These are areas where I've done some work but there is still missing content. For each item, we should make sure the working Game Manual is filled in first. Then add to game in existing tables. Avoid new mechanisms as much as possible (until after release). We just need to make sure all civs have something.
- Favored Techs. All civs should have ~5 - 8 of these (it gives a discount on research cost). --almost done
- Enabled Policies. A list of ~5-7 for each civ. These are taken from a common list, but each civ has its own different list (with 1 or 2 unique or not widely shared). See branch in manual. My strategy here is to add "empty policy names" here first, then give them effects (next item). --Delayed until after release
- Enabled Policy effects. Give actual effects to the currently "empty" policies. (Keep these easy to implement so we can finish! We can always alter to do something more complex later.) --Delayed until after release
One special "trait effect" for each civ. This could include UBs or UUs if we want. Avoid things that don't matter to players, like late-game UUs (unless it's balanced out by something that does matter).--Done
Table grunt work:
- Adjust leader personalities. Since any GP can become a leader in the mod, I've put all the personality values into the EaPeople table in EaPeople.sql. (Some SQL magic automatically generates entries for Leaders and Leader subtables from data in EaPeople.) They are mostly all set to 5 right now. They need to be set to give variable but appropriate values for each individual "person". The two considerations are: a) Likely class/subclass. Each person can spawn as more than one class/subclass, but they have strong biases listed in the table. Personality as leader should match these class/subclass (e.g., Warriors should be warlike; Sages should favor peaceful research; Merchants should like to bribe CSs; etc.). The other source for inspiration is the portraits in Media Pack. You have to open the named dds portraits there to do this. It's totally subjective, but some just look cowardly, others deceptive, and so on...
- Help texts. Write these from manual. (We'll check manual = game too.)
- Pedia. As above. Note that some Pedia pages don't work properly for mod. This is more of a coding issue (base coding for Civilopeadia is a total mess, so hard to mod).
Art grunt work:
- Icons! We could probably get to 80% completion (for techs & policies at least) by recycling existing icons and grabbing from the forum. This is just grindingly slow work for me, and the very last thing I will bother with (I don't mind releasing before this is done). The easiest way to see what's missing is to start a game and look around. Lots needed for techs, policies, promotions, etc.
UI for "plot effects": Glyphs, Runes and Wards--DoneBuild separate UI for Spells above the current Builds panel. There is already a tag in EaActions for this (overridden for now so spells appear in Builds panel).--Done
Complex Lua/SQL coding:
- About 20 or so spells listed in Manual need to be added. The spell system is complex but very modular with spell-specific functions for target testing, human UI, AI valuation, etc. Follow existing examples. [Paz note: Most likely I will do all of these.] -- ~10 done, ~10 to go...
Available units to be added: (links here)
Giant Spider--added to here
[*]Archdemon (Great Unclean One)
[*]Demons (Tyranids)
[*]Heaven's Guard (Angel Spearman)
[*]Tree-Ent
[*]Skeletons
[*]Griffons
[*]Kraken
[*]Scorpions
[*]Goblins (with new Goblin Encampment)
[*]Nagas (with new Naga Encampment in desert)
[*]Drakes - black, green, red, white
[*]Storm Giant
[*]Eagles
Leave it for me:
Reminder to self: Explosive Runes still broken for AI players--Done- F
ix soundtrack. Was added as replacement files when that was the only way. Need to add in proper modding way now.--Done Add 7 Holy Temples and 9 Unholy Temples--DoneAdd Pantheistic Temple for each god--Done- Lone animals in GP layer
- Warrior Challenge action
- Add natural wonder yields and effects
- finish tweaking CivAI (add Enabled Policies to EaCivPlans in EaCivAI.sql)
- Add 3 more Tomes (Corpus Hermeticum, Necronomicon, Book of Eibon)
Add two Cults for new gods (desert themed and earth/wealth themed)--DoneMove existing buildings to balance out tech tree (add something easy if needed for blank tech)- Add Merchant espionage actions
Few more magic buildings- Final checks to make sure Game Manual = Game. Edit manual or update game to make it so.
- Some techs will be disabled/hidden before release if their content isn't added yet, which is likely. These are all "branch tip" techs that lead to no other techs, including Lycanthropy, Vampirism and Song of Leviathan.