TC Assertion

We’ve moved over to the paradox forums. Please come visit us there to discuss:
You can still read the collective wisdom - and lolz - of the community here, but posting is no longer possible.

Home Forums Modding and Map Making TC Assertion

This topic contains 5 replies, has 2 voices, and was last updated by  Gloweye 4 years, 11 months ago.

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #236898

    Gloweye
    Member

    So, I decided to be a bit more…liberal in my methods of modding the TC.

    Here’s the Assertion text:

    [10:52:47]Turnmanager waiting for (request) player: 2
    [10:52:49][STATE -] SYSTEM: GAME_PLAY
    [10:52:49][STATE +] SYSTEM: COMBAT_OPEN
    [10:52:49][ERROR][AOW_TC_STRUCTURE_WELL_OF_LIFE.TAM]Assertion failed: “Output == pCount”
    [10:52:50]Message: [AOW_TC_STRUCTURE_WELL_OF_LIFE.TAM]Greedy bastard, you’re trying to read more data than there is in this memory stream!
    [10:52:50]Source\EStream.cpp(409): (click to open)

    Now, first thing you’re going to notice is that the game just called me a greedy bastard. That’s pretty correct, because the second thing you notice is that I made a reference to AOW_TC_STRUCTURE_WELL_OF_LIFE.TAM, which doesn’t exist. Well, I put it in my mod folder. It’s an exact copy of AOW_TC_STRUCTURE_DWELLING_SYLVANCOURT.TAM, except that I replaced the reference to AOW_TC_SYLVANCOURT.RPK to TC_CURSEDWELL.RPK. That one contains a reference to the center structure which is kind of different from the Sylvan Court. (a well instead of some roots). Still, only the graphical representation is replaced. I’m using this as alternate, because other methods would require dirty edits to the Dwelling Entity. (forcing an overlay under it, which I can then filter by to apply the right obstacle – however, this will make the mod incompatible with almost any mod editing the fey dwelling for no apparent reason.)

    However, data stream being an incorrect size is kind of a weird error – if it crashed, I’d have expected it to be unreadable, or to have invalid references(maybe ones to stuff inside the rpk that don’t exist in the CursedWell counterpart). Not a data flow error. Since the root structure is really the only thing in the SylvanCourt rpk(except for the FX that’s spawned by a component of the roots), that’s kind ruled out as well I think.

    It’s also not the file name length. I’ve added a couple of x’s to the end to make the .tam file to have the same name length but that didn’t work either.

    So I’m kind of curious to how this error came to be. I know this is a form of hex editing that you guys can’t officially support, but I’d still be curious nonetheless. I’m fine with having to test a little bit.

    #236899

    Gloweye
    Member

    OK, so adding the xxxxxxx to the end of the file name got me into combat. That’s nice.

    More Assertions:

    [11:09:36][STATE -] SYSTEM: GAME_PLAY
    [11:09:36][STATE +] SYSTEM: COMBAT_OPEN
    [11:09:36][ERROR][AOW_TC_STRUCTURE_WELL_OF_LIFEXXXXXXX.TAM]Assertion failed: “Output == pCount”
    [11:09:36]Message: [AOW_TC_STRUCTURE_WELL_OF_LIFEXXXXXXX.TAM]Greedy bastard, you’re trying to read more data than there is in this memory stream!
    [11:09:36]Source\EStream.cpp(409): (click to open)
    [11:09:36]

    –We know this one.

    [11:09:36][ERROR]Assertion failed: “false”
    [11:09:56]Message: Content not found: TC_CURSEDWELL.RPKo`©Bi
    [11:09:56]
    [11:09:56]d:\source.aow.steam\creator\ek\source\Debug/EDebugStream.cpp(66): (click to open)
    [11:09:56]
    [11:09:56][ERROR]Assertion failed: “false”
    [11:12:41]Message: Cannot open content dependency: TC_CURSEDWELL.RPKo`©Bi (AOW_TC_STRUCTURE_WELL_OF_LIFEXXXXXXX.TAM)
    [11:12:41]Source\EContent.cpp(225): (click to open)

    –That’s to bad. I’m afraid the rpk’s hierarchy is screwing me again…

    [11:12:41]
    [11:12:41][ERROR][AOW_TC_STRUCTURE_WELL_OF_LIFEXXXXXXX.TAM]Assertion failed: “pE->GetID()<FNextFreeSpawnerID”
    [11:12:48]Message: [AOW_TC_STRUCTURE_WELL_OF_LIFEXXXXXXX.TAM]The ID of this spawner was not assigned by this map!
    [11:12:48]d:\source.aow.steam\creator\gc\source\Entity/GCESpawnerMap.cpp(21): (click to open)

    Apparently, .tam combat maps refer to a specific ID of a obstacle defining entry instead of the names defined in TC_Core.rpk. That’s kind of sucky IMO – and potentially breaking for further progress, as double ID’s don’t really work well.

    [11:12:48]
    [11:12:48][WORLD_ACTIVATE]BACKGROUND SLOT: Inner North East = Barren
    [11:12:56][WORLD_ACTIVATE]BACKGROUND SLOT: Inner South West = Barren
    [11:12:56][WORLD_ACTIVATE]BACKGROUND SLOT: Outer North = Barren
    [11:12:56][WORLD_ACTIVATE]BACKGROUND SLOT: Outer South = Fertile Plains
    [11:12:56][WORLD_ACTIVATE]Searching for an environment record! Material: ‘Fertile Plains’ Layer: ‘Surface Layer’ Theme: ‘Temperate – Theme’ Race: ‘None’
    [11:12:56][WORLD_ACTIVATE]Using environment record: Temp_
    [11:12:56][WORLD_ACTIVATE][TC-Map Appearance] Reverb settings: (null)
    [11:12:56][WORLD_ACTIVATE]ENVIRONMENT: Using environment set AOW_TC_TEMPERATEFINAL
    [11:12:56][WORLD_ACTIVATE]ENVIRONMENT: Using sky dome Temp_Temp_Skydome
    [11:12:56][WORLD_ACTIVATE]Setting up tactical world with seed: 0xB467DFBC
    [11:12:56][WORLD_ACTIVATE]Searching for an environment record! Material: ‘Fertile Plains’ Layer: ‘Surface Layer’ Theme: ‘Temperate – Theme’ Race: ‘None’
    [11:12:56][WORLD_ACTIVATE]Using environment record: Temp_
    [11:12:56][WORLD_ACTIVATE]ENVIRONMENT: Using environment set AOW_TC_TEMPERATEFINAL
    [11:12:56][WORLD_ACTIVATE]ENVIRONMENT: Using sky dome Temp_Temp_Skydome
    [11:12:56][ERROR][WORLD_ACTIVATE]Assertion failed: “pScript && pScript->GetType() == tesTypeInline”
    [11:12:56]Message: [WORLD_ACTIVATE]
    [11:12:56]d:\source.aow.steam\creator\gc\source\Script/GCScriptManagerV2.cpp(749): (click to open)
    [11:12:56]

    This last assertions I didn’t even get to click away.

    The thing is that the obstacle visual was missing in combat, and I had to click around 4 assertions. Not really neat modding, even if the obstacle has shown up. Is there any dev around that could give me a heads up on how to tell the game my intentions are better than they are?

    #236901

    Tombles
    Keymaster

    Just before the string data are 4 bytes that represent the length of the string in bytes, including one extra “0” character. Have you tried updating those 4 bytes as well as the string you’re changing?

    #236912

    Gloweye
    Member

    Thank you very much! I got into tactical combat, and the objects spawned just as intended. If I hadn’t been using debug mode, I’d have said it was a 100% success.

    However, I’m a bit of a perfectionist. Please bear with me :/

    I got 4 assertions – just clicking OK worked for all of them. However, just that doesn’t yet convince me that everything’s working well.

    [14:28:04][ERROR][AOW_TC_STRUCTURE_WELL_OF_LIFE.TAM]Assertion failed: “Output == pCount”
    [14:28:04]Message: [AOW_TC_STRUCTURE_WELL_OF_LIFE.TAM]Greedy bastard, you’re trying to read more data than there is in this memory stream!
    [14:28:04]Source\EStream.cpp(409): (click to open)

    It seems I’m still greedy. Not entirely sure what’s going wrong here – I’m guessing the rpk is bigger than expected or something?

    [14:28:04][ERROR][AOW_TC_STRUCTURE_WELL_OF_LIFE.TAM]Assertion failed: “pE->GetID()<FNextFreeSpawnerID”
    [14:28:17]Message: [AOW_TC_STRUCTURE_WELL_OF_LIFE.TAM]The ID of this spawner was not assigned by this map!
    [14:28:17]d:\source.aow.steam\creator\gc\source\Entity/GCESpawnerMap.cpp(21): (click to open)

    Sounds to me like the rpk claims to have more stuff to spawn than the TC map knows where to place? Dunno….

    [14:28:23][ERROR][WORLD_ACTIVATE]Assertion failed: “pScript && pScript->GetType() == tesTypeInline”
    [14:28:23]Message: [WORLD_ACTIVATE]
    [14:28:23]d:\source.aow.steam\creator\gc\source\Script/GCScriptManagerV2.cpp(749): (click to open)

    No idea about this one.

    [14:29:26][ERROR]Assertion failed: “pE->GetID()<FNextFreeSpawnerID”
    [14:29:27]Message: The ID of this spawner was not assigned by this map!
    [14:29:27]d:\source.aow.steam\creator\gc\source\Entity/GCESpawnerMap.cpp(31): (click to open)

    Got this one at the end of the battle. Still don’t know what’s going on here.

    The short question(I’m afraid that the answer is long…) is how I can possibly prevent those assertions? Are there some other variables in the tam that i need to edit?

    Or is that a bit more complicated than you’d like to get into?

    #236943

    Tombles
    Keymaster

    The short question(I’m afraid that the answer is long…) is how I can possibly prevent those assertions? Are there some other variables in the tam that i need to edit?

    Short answer: I have no idea. By editing the data in files directly rather than using the tools and code that we normally use, literally anything could go wrong.

    The data in a TAM file is a reflection of the state of the whole game world when the file was saved, so there are all sorts of inter-dependencies between different systems which you would need to take into account when you edit the data by hand. But the data was never designed to be edited by hand, so it’s a virtually impossible task to do so. Changing a value in one location might necessitate changing a different value somewhere else int the file, and you’d have no way of knowing where that value is or what to change it to, since you can’t see the code which is reading those values from a file, or the code that fails when those values don’t meet whatever criteria the code expects.

    The first assertion is a general assertion that means some of the file reading code is asking for more data than is available in a file. It should never happen, unless you start editing the file in an incorrect way, and I have no way of how you edited the file or what would be necessary to fix it I’m afraid.

    The 2nd/4th assertions are one of the systems that’s in charge of placing entities into a map complaining that it’s found an entity that it didn’t place.

    The 3rd assertion is the script system complaining that something is trying to fire off a script in particular way, but that the script is not the correct type to be executed in that way. I have no idea why this would happen.

    #236951

    Gloweye
    Member

    Ok, still thanks for your effort. I’m gonna see what I can do with this, but maybe I’ll have to resort to other methods.

Viewing 6 posts - 1 through 6 (of 6 total)

You must be logged in to reply to this topic.