New improvement art! You don't need to replace civ5artdefines_landmarks.xml

Yes, or the other way around if you want. Or only when pillaged. My point is that: 1) you can run animations and 2) you can link them to the different states (in any way you want) which are "UnderConstruction", "Constructed", "Pillaged" or "Any". It's clear in the database that you can specify era too, so different graphic assets will be called on each era update. So yes, we have full ability to add improvement art that is animated, updates with construction/pillage state and with era. [Edit: the only caveat remaining is the possibility that the art assets are encoded in such a way to prevent us from making them. Not impossible, I suppose.]


It's interesting that this ability has been there from game release, as far as I can tell. On the one hand, it makes me mad that the developers didn't just come out and tell us. On the other hand, it points to the fact that modders are still "modding Civ4". We should be looking at the databases and thinking about how to alter them. Not xml. That's just one of the methods to get stuff into the databases.
 
...and I retract my last statement and replace it with 'you da man!'. :goodjob:

Good work in figuring all that out...all we need now is for all the people that know how to do this 3D stuff to help out with converting Civ 4 improvements to Civ 5.

However.....I am haunted by the statement in Kael's mod guide around 'the fence in the forest'. Someone put it their for a reason.....likewise, maybe there is a reason the developers don't want us to do it this way...just playing devils advocate :mischief:
 
Someone put it their for a reason.....likewise, maybe there is a reason the developers don't want us to do it this way...just playing devils advocate :mischief:

The fence was around wholesale replacement of core asset (xml) files. No, I think modular additions/modification of the database is more optimal and is the "dev-approved" approach if there is such a thing. (Granted, wholesale replace approach is still necessary for UI stuff.)
 
The next step is to import improvement/wonder/building art from Civ4.

Who's up to the challenge? (not me! :D)
 
I would love to learn how to do the converting (read throught the walkthrough but it scared the bejeebs out of me :eek:) but dont have a clue what to do plus I am bogged down deeply in an WWII Eastern Front scenario which is taking up way too much of my limited time :(
 
Sorry folks, this 3D stuff has totally defeated me. I've been installing, uninstalling, re-installing older versions of 4 different programs...for several hours...to finally get blender working. That got me eventually to a fbx file. I have made nf2 files with NexuxBuddy and with Nexus itself, which are different sizes, and don't work (the former isn't visible, the latter crashes the game). They don't seem right anyway because they are 1/10 the size of the fbx file from blender. Then I managed to break my Nexus path somehow (was working in its normally buggy fashion for me before). It's an incredible wall to climb.

I'll probably go back to programming for a while. Someone who has a grasp on art stuff should take info above and make the first Civ5 improvement, resource, etc.
 
This is amazing stuff! Finally we can throw out those godawful trading posts!
 
:goodjob: You are my new hero:lol:
 
It's not a done deal until someone actually makes a new improvement/resource or does a Civ4 conversion. My first attempt was an utter failure. I just don't know how to make a gr2 file that isn't broken. Clearly some of the existing unit artist can do it. The logical structure for resources, improvements and unique features is exactly the same as units. You have downstream assets (gr2 plus textures plus animations with any state conditions) downstream of fxsxml files, which are called by tables in DebugDB (NOT the .xml files). But we really need a unit art person to do this, at least the first time, and hopefully tell us how.
 
Great news! I didn't know that you can alter anything that is not GameData using XML/SQL...
 
Following this logic, we can probably avoid overwrites for unit defines now as well, leading to much greater compatibility
 
I believe that you should be able to add unit art in a fully modular way. The tables are right there in DebugDatabase. I do everything by SQL anyway so I tend to look at the DB rather than XML files. There may be other stuff that is not in Gamplay/XML or Resources ... I'm not sure. If anyone wants to take a look, here are all of the tables:
Spoiler :
ArtDefine_UnitMemberInfos
ArtDefine_UnitMemberCombats
ArtDefine_UnitMemberCombatWeapons
ArtDefine_LandmarkTypes
ArtDefine_Landmarks
ArtDefine_StrategicView
DownloadableContent
MapScripts
MapScriptOptions
MapScriptOptionPossibleValues
ApplicationInfo
Defines
PostDefines
AICityStrategies
AICityStrategy_Flavors
AICityStrategy_PersonalityFlavorThresholdMods
AIGrandStrategies
AIGrandStrategy_Flavors
AIGrandStrategy_Yields
AIGrandStrategy_FlavorMods
AIEconomicStrategies
AIEconomicStrategy_Flavors
AIEconomicStrategy_PersonalityFlavorThresholdMods
AIMilitaryStrategies
AIMilitaryStrategy_Flavors
AIMilitaryStrategy_PersonalityFlavorThresholdMods
CitySpecializations
CitySpecialization_Flavors
CitySpecialization_TargetYields
TacticalMoves
Attitudes
Calendars
CitySizes
Concepts
Concepts_RelatedConcept
Contacts
DenialInfos
Domains
InvisibleInfos
MajorCivApproachTypes
MemoryInfos
MinorCivApproachTypes
MinorCivTraits
MinorCivTraits_Status
Months
Seasons
UnitAIInfos
UnitCombatInfos
BuildingClasses
BuildingClass_VictoryThresholds
Buildings
Building_AreaYieldModifiers
Building_ClassesNeededInCity
Building_FreeUnits
Building_DomainFreeExperiences
Building_DomainProductionModifiers
Building_FreeSpecialistCounts
Building_Flavors
Building_GlobalYieldModifiers
Building_HurryModifiers
Building_LocalResourceAnds
Building_LocalResourceOrs
Building_LockedBuildingClasses
Building_PrereqBuildingClasses
Building_ResourceQuantityRequirements
Building_ResourceYieldModifiers
Building_ResourceCultureChanges
Building_RiverPlotYieldChanges
Building_SeaPlotYieldChanges
Building_LakePlotYieldChanges
Building_SeaResourceYieldChanges
Building_ResourceYieldChanges
Building_FeatureYieldChanges
Building_SpecialistYieldChanges
Building_UnitCombatFreeExperiences
Building_UnitCombatProductionModifiers
Building_TechAndPrereqs
Building_YieldChanges
Building_YieldChangesPerPop
Building_TechEnhancedYieldChanges
Building_YieldModifiers
Civilizations
Civilization_BuildingClassOverrides
Civilization_CityNames
Civilization_DisableTechs
Civilization_FreeBuildingClasses
Civilization_FreeTechs
Civilization_FreeUnits
Civilization_Leaders
Civilization_UnitClassOverrides
Civilization_Start_Along_Ocean
Civilization_Start_Along_River
Civilization_Start_Region_Priority
Civilization_Start_Region_Avoid
MinorCivilizations
MinorCivilization_Flavors
MinorCivilization_CityNames
Regions
Traits
Trait_ExtraYieldThresholds
Trait_YieldChanges
Trait_YieldChangesStrategicResources
Trait_YieldModifiers
Trait_FreePromotions
Trait_FreePromotionUnitCombats
Trait_MovesChangeUnitCombats
Trait_Terrains
Trait_ResourceQuantityModifiers
Trait_ImprovementYieldChanges
Trait_SpecialistYieldChanges
Diplomacy_Responses
ArtStyleTypes
Climates
Cursors
EmphasizeInfos
EmphasizeInfo_Yields
Eras
Era_Soundtracks
Era_CitySoundscapes
Era_NewEraVOs
Flavors
GameOptions
GameSpeeds
GameSpeed_Turns
HandicapInfos
HandicapInfo_Goodies
HandicapInfo_FreeTechs
HandicapInfo_AIFreeTechs
HurryInfos
IconFontMapping
IconTextureAtlases
MultiplayerOptions
PlayerOptions
Policies
Policy_CityYieldChanges
Policy_CoastalCityYieldChanges
Policy_CapitalYieldChanges
Policy_CapitalYieldPerPopChanges
Policy_CapitalYieldModifiers
Policy_Disables
Policy_Flavors
Policy_HurryModifiers
Policy_PrereqPolicies
Policy_PrereqORPolicies
Policy_SpecialistExtraYields
Policy_BuildingClassYieldModifiers
Policy_BuildingClassYieldChanges
Policy_BuildingClassCultureChanges
Policy_BuildingClassProductionModifiers
Policy_BuildingClassHappiness
Policy_ImprovementYieldChanges
Policy_ImprovementCultureChanges
Policy_ValidSpecialists
Policy_YieldModifiers
Policy_FreePromotions
Policy_UnitCombatFreeExperiences
Policy_FreePromotionUnitCombats
Policy_UnitCombatProductionModifiers
Policy_FreeUnitClasses
Policy_FreeItems
PolicyBranchTypes
PolicyBranch_Disables
Processes
Process_ProductionYields
Projects
Project_Flavors
Project_Prereqs
Project_VictoryThresholds
Project_ResourceQuantityRequirements
ReplayDataSets
SeaLevels
SmallAwards
Specialists
SpecialistFlavors
SpecialistYields
Trades
TurnTimers
GoodyHuts
Victories
VictoryPointAwards
HistoricRankings
Votes
Vote_DiploVotes
VoteSources
Worlds
Colors
InterfaceModes
PlayerColors
Leaders
Leader_MajorCivApproachBiases
Leader_MinorCivApproachBiases
Leader_Flavors
Leader_Traits
Routes
Route_Yields
Route_TechMovementChanges
Route_ResourceQuantityRequirements
Notifications
Technologies
Technology_DomainExtraMoves
Technology_Flavors
Technology_ORPrereqTechs
Technology_PrereqTechs
Features
FakeFeatures
Feature_YieldChanges
Feature_RiverYieldChanges
Feature_HillsYieldChanges
Feature_TerrainBooleans
Improvements
Improvement_Flavors
Improvement_Yields
Improvement_AdjacentCityYields
Improvement_CoastalLandYields
Improvement_FreshWaterYields
Improvement_HillsYields
Improvement_AdjacentMountainYieldChanges
Improvement_PrereqNatureYields
Improvement_RiverSideYields
Improvement_ValidTerrains
Improvement_ValidFeatures
Improvement_ResourceTypes
Improvement_ResourceType_Yields
Improvement_RouteYieldChanges
Improvement_TechYieldChanges
Improvement_TechNoFreshWaterYieldChanges
Improvement_TechFreshWaterYieldChanges
Resources
Resource_YieldChanges
Resource_Flavors
Resource_TerrainBooleans
Resource_FeatureBooleans
Resource_FeatureTerrainBooleans
Resource_QuantityTypes
ResourceClasses
Terrains
Terrain_Yields
Terrain_RiverYieldChanges
Terrain_HillsYieldChanges
Yields
AnimationCategories
AnimationPaths
AnimationPath_Entries
Automates
Builds
BuildFeatures
Commands
Controls
EntityEvents
EntityEvent_AnimationPaths
Missions
MultiUnitPositions
MultiUnitFormations
MultiUnitFormation_SlotEntries
SpecialUnits
SpecialUnit_CarrierUnitAI
SpecialUnit_ProductionTraits
MovementRates
CivilianAttackPriorities
Units
Unit_AITypes
Unit_Buildings
Unit_BuildingClassRequireds
Unit_ProductionModifierBuildings
Unit_Builds
Unit_ClassUpgrades
Unit_FreePromotions
Unit_Flavors
Unit_GreatPersons
Unit_ResourceQuantityRequirements
Unit_UniqueNames
Unit_NotAITypes
Unit_ProductionTraits
Unit_TechTypes
UnitClasses
UnitPromotions
UnitPromotions_Terrains
UnitPromotions_Features
UnitPromotions_UnitClasses
UnitPromotions_Domains
UnitPromotions_UnitCombatMods
UnitPromotions_UnitCombats
UnitGameplay2DScripts

Off topic, but I've heard repeatedly here that we can't add music or control it by Era. But the table is right there to to so (this one is in Gameplay/XML). Does the table not do what it says? Or are the music files encoded in some way that we can't make them?
 
I can't remember the specifics now, but I have several times found extra columns in DB tables that are not existing in the corresponding table in Gameplay/XML, even though the table is created in XML. These can be modified by SQL too.
 
By the way, if anyone is interested, it is possible to get the exact SQL command that the game engine issued to create a table. Remember that all XML is converted to SQL to actually do the DB construction (and clearly things are added, modified, or blocked somewhere between XML and SQL...and that is hidden from us). Anyway, if you are already working with SQLite Manager, all you have to do is click on the Export Wizard (right there with Browse & Search and Execute SQL tabs). Then select table "sqlite_master". Then set "Fields separated by" Tab. Then OK.

For example, here is the SQL command issued to make Buildings:
Spoiler :
CREATE TABLE Buildings ('ID' integer primary key autoincrement , 'Type' text not null unique , 'Description' text , 'Civilopedia' text , 'Strategy' text , 'Help' text , 'Quote' text , 'GoldMaintenance' integer default 0 , 'MutuallyExclusiveGroup' integer default '-1' , 'TeamShare' boolean default 0 , 'Water' boolean default 0 , 'River' boolean default 0 , 'FreshWater' boolean default 0 , 'Mountain' boolean default 0 , 'NearbyMountainRequired' boolean default 0 , 'Hill' boolean default 0 , 'Flat' boolean default 0 , 'FoundsReligion' boolean default 0 , 'IsReligious' boolean default 0 , 'BorderObstacle' boolean default 0 , 'PlayerBorderObstacle' boolean default 0 , 'Capital' boolean default 0 , 'GoldenAge' boolean default 0 , 'MapCentering' boolean default 0 , 'NeverCapture' boolean default 0 , 'NukeImmune' boolean default 0 , 'AllowsWaterRoutes' boolean default 0 , 'ExtraLuxuries' boolean default 0 , 'DiplomaticVoting' boolean default 0 , 'Cost' integer default 0 , 'NumCityCostMod' integer default 0 , 'HurryCostModifier' integer default 0 , 'MinAreaSize' integer default 0 , 'ConquestProb' integer default 0 , 'CitiesPrereq' integer default 0 , 'LevelPrereq' integer default 0 , 'Culture' integer default 0 , 'CultureRateModifier' integer default 0 , 'GlobalCultureRateModifier' integer default 0 , 'GreatPeopleRateModifier' integer default 0 , 'GlobalGreatPeopleRateModifier' integer default 0 , 'GreatGeneralRateModifier' integer default 0 , 'GreatPersonExpendGold' integer default 0 , 'GoldenAgeModifier' integer default 0 , 'UnitUpgradeCostMod' integer default 0 , 'Experience' integer default 0 , 'GlobalExperience' integer default 0 , 'FoodKept' integer default 0 , 'Airlift' integer default 0 , 'AirModifier' integer default 0 , 'NukeModifier' integer default 0 , 'NukeExplosionRand' integer default 0 , 'HealRateChange' integer default 0 , 'Happiness' integer default 0 , 'UnmoddedHappiness' integer default 0 , 'UnhappinessModifier' integer default 0 , 'HappinessPerCity' integer default 0 , 'HappinessPerXPolicies' integer default 0 , 'CityCountUnhappinessMod' integer default 0 , 'NoOccupiedUnhappiness' boolean default 0 , 'WorkerSpeedModifier' integer default 0 , 'MilitaryProductionModifier' integer default 0 , 'SpaceProductionModifier' integer default 0 , 'BuildingProductionModifier' integer default 0 , 'WonderProductionModifier' integer default 0 , 'TradeRouteModifier' integer default 0 , 'CapturePlunderModifier' integer default 0 , 'PolicyCostModifier' integer default 0 , 'PlotCultureCostModifier' integer default 0 , 'GlobalPlotCultureCostModifier' integer default 0 , 'PlotBuyCostModifier' integer default 0 , 'GlobalPlotBuyCostModifier' integer default 0 , 'GlobalPopulationChange' integer default 0 , 'TechShare' integer default 0 , 'FreeTechs' integer default 0 , 'FreePolicies' integer default 0 , 'FreeGreatPeople' integer default 0 , 'MedianTechPercentChange' integer default 0 , 'Gold' integer default 0 , 'AllowsRangeStrike' boolean default 0 , 'Defense' integer default 0 , 'GlobalDefenseMod' integer default 0 , 'MinorFriendshipChange' integer default 0 , 'VictoryPoints' integer default 0 , 'BuildingClass' text default NULL , 'ArtDefineTag' text default NULL , 'NearbyTerrainRequired' text default NULL , 'ProhibitedCityTerrain' text default NULL , 'VictoryPrereq' text default NULL , 'FreeStartEra' text default NULL , 'MaxStartEra' text default NULL , 'ObsoleteTech' text default NULL , 'EnhancedYieldTech' text default NULL , 'FreeBuilding' text default NULL , 'FreeBuildingThisCity' text default NULL , 'FreePromotion' text default NULL , 'TrainedFreePromotion' text default NULL , 'FreePromotionRemoved' text default NULL , 'ReplacementBuildingClass' text default NULL , 'PrereqTech' text default NULL , 'SpecialistType' text default NULL , 'SpecialistCount' integer default 0 , 'SpecialistExtraCulture' integer default 0 , 'GreatPeopleRateChange' integer default 0 , 'CityWall' boolean default 0 , 'DisplayPosition' integer default 0 , 'PortraitIndex' integer default '-1' , 'WonderSplashImage' text default NULL , 'WonderSplashAnchor' text default 'R,T' , 'WonderSplashAudio' text , 'IconAtlas' text default NULL , 'ArtInfoCulturalVariation' boolean default 0 , 'ArtInfoEraVariation' boolean default 0 , 'ArtInfoRandomVariation' boolean default 0 , foreign key (Description) references Language_en_US(Tag), foreign key (Civilopedia) references Language_en_US(Tag), foreign key (Strategy) references Language_en_US(Tag), foreign key (Help) references Language_en_US(Tag), foreign key (Quote) references Language_en_US(Tag), foreign key (BuildingClass) references BuildingClasses(Type), foreign key (NearbyTerrainRequired) references Terrains(Type), foreign key (ProhibitedCityTerrain) references Terrains(Type), foreign key (VictoryPrereq) references Victories(Type), foreign key (FreeStartEra) references Eras(Type), foreign key (MaxStartEra) references Eras(Type), foreign key (ObsoleteTech) references Technologies(Type), foreign key (EnhancedYieldTech) references Technologies(Type), foreign key (FreeBuilding) references BuildingClasses(Type), foreign key (FreeBuildingThisCity) references BuildingClasses(Type), foreign key (FreePromotion) references UnitPromotions(Type), foreign key (TrainedFreePromotion) references UnitPromotions(Type), foreign key (FreePromotionRemoved) references UnitPromotions(Type), foreign key (ReplacementBuildingClass) references BuildingClasses(Type), foreign key (PrereqTech) references Technologies(Type), foreign key (SpecialistType) references Specialists(Type), foreign key (IconAtlas) references IconTextureAtlases(Atlas))
 
How about writing a real tutorial with an example download :)?
Would probably be really helpful for a lot of people :).

I will do that as soon as someone creates a functional art assent for a new or converted improvement. The process should be identical to unit creation, but that is a process that few have mastered. I am not one of them.

@Pouakai, For a new table or new table column, yes, of course. For an existing table with existing functionality (like unit ArtDef tables) no.
 
Top Bottom