AO2D feedback and discussion

    • @Cathair

      Compare your generated map to the actual Alderwood map:
      You will notice that in your generated map, the exit positions aren't correct.The actual exits in the game are far more outside.
      I don't know if this helps, but as far as i know every single cluster exit is basically part of the outer border ring.
      I also took a look at your resource node numbers: they are quite far off from how many are really there. Our guess is you are reading out the template.xml data and take all layers into account whereas in reality only one layer is activated at any time. This results in the immense resource node density you can see in your generated map border parts which is inaccurate I believe. They do contain a bunch of resources but it shouldn't be as many as we can see in your map visualization. No idea how you're doing it, but maybe the cluster.xml data would be helpful for what you're trying to achieve? I believe that's the easiest way you could find out which layers are active in every cluster.
      Also we don't usually have resource nodes in unreachable areas. Every node that is unreachable triggers an automatic message for us so we can fix it at some point.
      Hope that helps a bit?

      - Lino
    • @H4n1baL Ah I see! It sure does help, thanks! What I was doing was grabbing all the layers per templateinstance :cursing: .
      Now I see there are "activelayer" nodes with the corresponding ids.

      This should fix resource numbers and their positions! There is a chance that it will also fix exit positions (I guess if I exclude inactive layers, it would shrink the generate map and exit positions will match map boundaries)

      In the meanwhile, made some progress on detalization.

      Display Spoiler



      Stay tuned!

      The post was edited 1 time, last by Cathair ().

    • Looking at "Alderwood", the resource node counts are still too high.
      I'll give you some "target ranges":
      Wood: 360-400
      Hide: 240-280
      Rock: 140-180

      These are not necessarily 100% accurate, but should cover most of the forest clusters.
      It's normal that they differentiate a bit between tiers and clusters. That's intended. But as you can see, your total number is still almost twice as high.
      The same is true for the roaming mobs. That should also be a lot lower (~350 I believe).
      I'm not sure where the differences come from now that you've kicked out the unnecessary layers. But looking at the border pieces, they still look very cramped.

      - Lino
    • @H4n1baL

      Thank you for the estimates — I'll keep digging.

      Maybe you could confirm if my logic is correct?

      1. Find root cluster info in world.xml (id 1229 for Alderwood)

      XML Source Code: world.xml

      1. <cluster id="1229" file="1229_WRL_FR_T5_KPR_OUT_MED.cluster.xml" displayname="Alderwood" enabled="true" type="OPENPVP_BLACK_2" timeregion="BR_22_00" rareresourcedistribution="OUT_MED" speciallocation="" origin="-465 -465" size="930 930" categoryname="" editoroffset="4981.82958984375 -10296.416015625" worldmapposition="155.56 118.79" minimapBoundsMin="-405 -405" minimapBoundsMax="405 405" minimapHeightRange="-16 16" minimapBaseLevel="0">
      2. <!--...-->
      3. </cluster>

      2. Take cluster file from the "file" attribute: 1229_WRL_FR_T5_KPR_OUT_MED.cluster.xml
      3. This cluster XML contains information about active layers (templateinstances).
      4. Below is a piece of the cluster XML:

      XML Source Code: 1229_WRL_FR_T5_KPR_OUT_MED.cluster.xml

      1. <templateinstance id="instanceslot_00" ref="202_L1_M3_S5" pos="0 0 0">
      2. <activelayer id="1e486f53-558d-4b84-8ddb-b3bdec52c086" />
      3. <activelayer id="22a3485a-d4f3-4ef2-ad87-9f78f6891230" />
      4. <activelayer id="32a158dc-1ab0-43a8-8fec-2d4196104f63" />
      5. <activelayer id="4405366e-715d-46ed-aa2c-3223269d9951" />
      6. <activelayer id="44d6016c-11df-434b-98bb-a6e7728a53da" />
      7. <activelayer id="aedb9bd0-8269-4dda-b00e-f3c47fe6aea4" />
      8. <activelayer id="d3c57df0-5864-4e1d-b7fb-66c55154c8e4" />
      9. <activelayer id="de14e46c-cc3c-43f4-9492-1f48c15575af" />
      10. </templateinstance>

      5. I understand it as "take 202_L1_M3_S5.template.xml (from ref attribute) and get only specified layers"
      5.1 Something doesn't add up: in that the 202_L1_M3_S5.template.xml it has some tiles on the root level, as well as some tiles within the active layers inside the layer groups.

      XML Source Code: 202_L1_M3_S5.template.xml

      1. <tiles>
      2. <layergroup name="Route1">
      3. <layer id="7e5a0766-efcb-4f7a-84e8-514e67c175a7" name="route_01_off">
      4. <tile name="FOREST_GREEN_GROUND" pos="0 0 310" />
      5. </layer>
      6. <layer id="d3c57df0-5864-4e1d-b7fb-66c55154c8e4" name="route_01_on">
      7. <tile name="FOREST_GREEN_ROAD_STREET_STRAIGHT_D" pos="0 0 310" roty="270" />
      8. </layer>
      9. </layergroup>
      10. <tile name="FOREST_GREEN_GROUND" pos="-130 8 110" />
      11. <tile name="FOREST_GREEN_GROUND" pos="-180 0 50" />
      12. <tile name="FOREST_GREEN_GROUND" pos="-150 8 100" />
      13. </tiles>
      Display All
      If I only take tiles from active layers, but not from the root level, here is what I get (looks exactly like the "outer ring" to me btw).

      Is my understanding of the logic correct?
      What should be the correct logic of picking the active layer?

      Thank you for helping me out with this!

      The post was edited 3 times, last by Cathair ().

    • So.
      First off: It looks to me like you're on the right track in general.

      Your first 4 steps are correct I'd say. The templateinstance we're looking at here, is the what we call "master template". It's one of many templateinstances that are used to generate this cluster. I'm at home now so I can't check but I think Alderwood consists of ~29 templates for example (including the border and exit pieces). In the example you provided (point 4.), we see 8 different layers that are activated just for this master template.
      These layers are the interesting bit: roads.

      Our roads are built in segments that can either be turned on or off, depending on where we need roads. For example if a cluster only has exits in south east and south west directions, we only enable the road pieces that connect these two exits. But there's a lot of tiles that are completely unaffected by the roads. That are the tiles that you found on the root level. These tiles need to be active at all times. They don't belong to any layer, that's why they're on the root level. Essentially we have a hole in the spaces where there could be a road segment. If there's no road there, the "route_01_off" for example would provide the necessary ground tiles to fill that hole.
      Now every road piece (or layergroup in the xml) has two options: on or off. So you need to render the correct layers for each cluster to have the correct road layout + the root level to get every other tile from the master template. (Otherwise you end up with the "empty" hole in the middle of your map with only the road connections as you've shown).

      Now in theory you basically just need to repeat the rendering process for every other template that is used in the cluster as well (root level + only the active layers) and you should have a functioning map with the correct amount and positions of resource spots.

      On your last picture we can already see that the position does look correct. And I'm pretty sure you could find other node locations that are correct too. But as I said in an earlier post, the numbers are way off. It still looks to me like you're rendering too many layers for the border templates. Resource nodes can never be on top of each other, but looking at the "empty hole" map you've shown it does look a lot like they are rendered on top of each other.

      Hope that was somewhat clear? If there's more question, go ahead and I will try to answer as good as I can (it's been around 2 years since I've worked with the system myself... ^^)

      - Lino
    • @H4n1baL this is super helpful info, thank you so much for explaining it to me — appreciate your patience!

      I think the layers are correct. It might be confusing visualisation on this zoom level. It keeps markers sizes the same regardless of zoom level, so when zoomed out they started overlapping. I made them of fixed sizes so it doesn't look so overwhelming now.

      Another question regarding maps — how do you translate "low/medium/high" resource nodes into actual tiers?
      Initially I assumed that "low" is clusterTier - 1 and "high" is clusterTier + 1, but it doesn't make sense on some clusters.

      Example where this logic fails: Mase Knoll T3 Cluster. It has T2-T3 resources.
      However in XML data of this cluster, resources have medium and high resource node types.

      What do I miss in the formula?

      EDIT: It looks like the formula is like this:
      high node = cluster tier
      if (blackzone) highnode = cluster tier + 1

      The post was edited 3 times, last by Cathair ().

    • Wadefu wrote:

      Cathair wrote:

      Remember blackzones do not have T3 resources or T2 resources. So even if your in a T3 or T4 zone you will never find these resources in blackzone.
      Tier 3 zone won't have clusterTier - 1 (aka T2) and T4 zone won't have T3.

      I have no idea if this helps in your project, just a happy spectator that someone is doing this.
      Thanks, I think I figured it out now!
    • @H4n1baL I guess I figured the problem with the numbers. I was taking the data by counting all the nodes from the cluster layers. But those represent only the POSSIBLE spawn points, not the amount of actually active nodes.

      Here's the updated version. Could you please check if that makes sense now?

      One question though as I am not sure my logic is correct.
      I take the data from the resourcedistpresets.xml for this item: T5_MT_OUT_WLD_LOW (took me a while to decode it and map to the cluster name), here is the partial structure:

      - ore
      -- {tier: 6, amount: X}
      -- {tier: 6, amount: Y}
      -- {tier: 6, amount: Z}

      Currently I take all amounts from low/medium/high and sum them up. Is that the right thing to do?

      Also big thanks to @ZaZii for pointing me in the right direction!

      The post was edited 1 time, last by Cathair ().