1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Replicating the Past

Discussion in 'Fable: The Lost Chapters' started by VinDiesel, Apr 28, 2019.

Register or log in to browse without ads.

  1. VinDiesel

    VinDiesel Living Necromonger

    Posts:
    41
    Likes:
    47
    Trophies:
    40
    Hey Fable fans. I'm mad. Here's why. I work on my projects, right, but I also need continuous learning experiences. So I look at what other people have done and think, how did they do that. If they released a file, I can go through it and figure it out. If they didn't, maybe they talked about how they did it. But sometimes, sometimes, there's just nothing.

    https://i.imgur.com/ZQMtj.jpg

    Johndoe knew how to do some pretty advanced things and didn't share that knowledge. Or maybe he did and it was lost when he asked for his posts to be deleted. Because that knowledge is lost I spent the past two weeks trying to replicate that screenshot, or come close to it at least.

    The steps involved in making a reflecting pool is as follows:
    One - Solve the mystery of the Environment theme data.
    https://i.imgur.com/0FjVWpu.png

    Here's the relevant data for the def.xml. This allows you to manipulate the environments from within FableExplorer or ChocolateBox.
    Code:
    <!-- ENVIRONMENT_THEME_DAY -->
    <Control name="TimeArray" id="67E8E2EE">
    <Member name="TimeArrayCount" type="uint"/>
    <Array name="TimeArray" elementcount="TimeArrayCount">
    <Member name="TimeOfDayCRC" type="uint"/>
    <Member name="TimeOfDay" type="Float"/>
    <Member name="MoonlitCRC" type="uint"/>
    <Member name="Moonlit" type="byte"/>
    <Member name="FogStartZCRC" type="uint"/>
    <Member name="FogStartZ" type="Float"/>
    <Member name="FogEndZCRC" type="uint"/>
    <Member name="FogEndZ" type="float"/>
    <Member name="SkyTexture0CRC" type="uint"/>
    <Member name="SkyTexture0" type="uint">
    <Link to="MainTextureID"/>
    </Member>
    <Member name="SkyTexture1CRC" type="uint"/>
    <Member name="SkyTexture1" type="uint">
    <Link to="MainTextureID"/>
    </Member>
    <Member name="SkyTexture1BlendCRC" type="uint"/>
    <Member name="SkyTexture1Blend" type="float"/>
    <Member name="CloudLowerLayerTexture0CRC" type="uint"/>
    <Member name="CloudLowerLayerTexture0" type="uint">
    <Link to="MainTextureID"/>
    </Member>
    <Member name="CloudLowerLayerTexture1CRC" type="uint"/>
    <Member name="CloudLowerLayerTexture1" type="uint">
    <Link to="MainTextureID"/>
    </Member>
    <Member name="CloudLowerLayerTexture1BlendCRC" type="uint"/>
    <Member name="CloudLowerLayerTexture1Blend" type="float"/>
    <Member name="CloudLowerLayerSpeedMultiplierCRC" type="uint"/>
    <Member name="CloudLowerLayerSpeedMultiplier" type="float"/>
    <Member name="CloudUpperLayerTexture0CRC" type="uint"/>
    <Member name="CloudUpperLayerTexture0" type="uint">
    <Link to="MainTextureID"/>
    </Member>
    <Member name="CloudUpperLayerTexture1CRC" type="uint"/>
    <Member name="CloudUpperLayerTexture1" type="uint">
    <Link to="MainTextureID"/>
    </Member>
    <Member name="CloudUpperLayerTexture1BlendCRC" type="uint"/>
    <Member name="CloudUpperLayerTexture1Blend" type="float"/>
    <Member name="CloudUpperLayerSpeedMultiplierCRC" type="uint"/>
    <Member name="CloudUpperLayerSpeedMultiplier" type="float"/>
    <Member name="WaterColourToReflectionBlendCRC" type="uint"/>
    <Member name="WaterColourToReflectionBlend" type="float"/>
    <Member name="WaterAlphaFactorCRC" type="uint"/>
    <Member name="WaterAlphaFactor" type="float"/>
    <Member name="WaterSpecularHightlightFactorCRC" type="uint"/>
    <Member name="WaterSpecularHightlightFactor" type="float"/>
    <Member name="RainStrengthCRC" type="uint"/>
    <Member name="RainStrength" type="float"/>
    <Member name="SnowStrengthCRC" type="uint"/>
    <Member name="SnowStrength" type="float"/>
    <Member name="MistAlphaCRC" type="uint"/>
    <Member name="MistAlpha" type="float"/>
    <Member name="LightningFrequencyCRC" type="uint"/>
    <Member name="LightningFrequency" type="float"/>
    <Member name="GlowThresholdScaleCRC" type="uint"/>
    <Member name="GlowThresholdScale" type="float"/>
    <Member name="GlowBloomScaleCRC" type="uint"/>
    <Member name="GlowBloomScale" type="float"/>
    <Member name="UnknownCRC" type="uint"/>
    <Member name="Unknown" type="float"/>
    <Member name="ShadowFactorCRC" type="uint"/>
    <Member name="ShadowFactor" type="float"/>
    <Member name="FadedShadowFactorCRC" type="uint"/>
    <Member name="FadedShadowFactor" type="float"/>
    <Member name="WaterRefractionBlendStartCRC" type="uint"/>
    <Member name="WaterRefractionBlendStart" type="float"/>
    <Member name="WaterRefractionBlendEndCRC" type="uint"/>
    <Member name="WaterRefractionBlendEnd" type="float"/>
    <Member name="WaterFlowSpeedFactorCRC" type="uint"/>
    <Member name="WaterFlowSpeedFactor" type="float"/>
    <Member name="WaterOscilationSpeedCRC" type="uint"/>
    <Member name="WaterOscilationSpeed" type="float"/>
    <Member name="WaterSwellFactorCRC" type="uint"/>
    <Member name="WaterSwellFactor" type="float"/>
    <Member name="WaterShoreSwellFactorCRC" type="uint"/>
    <Member name="WaterShoreSwellFactor" type="float"/>
    <Member name="WaterReflectionOffsetCRC" type="uint"/>
    <Member name="WaterReflectionOffset" type="float"/>
    </Array>
    </Control>
    <Control name="SunTilt" id="A05F99F2">
    <Member name="_" type="float"/>
    </Control>
    <Control name="SunRotate" id="662301F5">
    <Member name="_" type="float"/>
    </Control>
    <Control name="SunHeight" id="6594C537">
    <Member name="_" type="float"/>
    </Control>
    <Control name="MoonTilt" id="47668F8D">
    <Member name="_" type="float"/>
    </Control>
    <Control name="MoonRotate" id="53B13BBB">
    <Member name="_" type="float"/>
    </Control>
    <Control name="MoonHeight" id="5006FF79">
    <Member name="_" type="float"/>
    </Control>
    <Control name="ColourLookupColumn" id="30B1A712">
    <Member name="_" type="uint"/>
    </Control>
    <Control name="EditorColour" id="772ADAF6">
    <Member name="EditorColourRed" type="byte"/>
    <Member name="EditorColourGreen" type="byte"/>
    <Member name="EditorColourBlue" type="byte"/>
    <Member name="EditorColourAlpha" type="byte"/>
    </Control>
    
    Two - Change the data pertaining to water to that of your choosing. ColourLookupColumn has predetermined values that seriously affect how things look in the game. I think the one used in that screenshot is the same as that used for Snowspire.

    Three - Take one of the oakvale sea maps and make it its own region.

    Four - Assign that region the binary data that uses your new environment.

    Five - Manually hex edit the map to change the terrain height to match the water height. Keep in mind that heights are stored as floats and for some reason you need to divide the desired value by 2048. For this map, the water's at 3, so you'd use 0.00146484375.

    Six - Manually hex edit the ground theme palette of another map without water into this map, and change the heightmap data again to use this new data. I borrowed fresco dome data to paste into my map.

    Seven - Change anything you want to be reflected in the water, in its main entry (Building, Creature, Object), to have DrawAfterWater set to 0. 0 is drawn before water is rendered, which the water reflects once it is rendered. Anything drawn after that is ignored by the water.

    But maybe don't use it on the hero. He doesn't get reflected correctly. :P
    [​IMG]
    [​IMG]

    Two weeks guys. Two weeks because you don't write down what you know. Even if you don't think it's important, even if you don't think anyone reads it, even if you don't think it matters, please write down everything you know. Trivial as it sounds it'll make a difference to somebody.
     
    Last edited: Apr 28, 2019
    lee likes this.
  2. lee

    lee -Hero of Knowledge- Legendary Hero

    Posts:
    117
    Likes:
    89
    Trophies:
    85
    Beautiful screen shots of that reflecting water :thumbsup: glad that you have managed to figure some of it out now even though it has taken so long. I really hope that you don’t come across many more issues like this. There’s so few projects happening with Fable at the moment so I’m really hoping that your fantastic ideas will come to be something really special.
     
    VinDiesel likes this.
  3. Hiroz41

    Hiroz41 Active Member

    Posts:
    45
    Likes:
    17
    Trophies:
    30
    it looks great to thank you for the work
     
    lee likes this.
  4. Register or log in to browse without ads.

Share This Page