FAForever Forums
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Login

    Invisible Wall Appears on Map, Blocks Units

    Scheduled Pinned Locked Moved Game Issues and Gameplay questions
    12 Posts 3 Posters 585 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • R
      Rama
      last edited by

      This has occurred twice now, on two different maps. Basically, an invisible wall appears across the entire maps, blocking units from passing.

      The first time it occurred, on Adaptive Estuary Survival, it blocked all Land and Naval units, though Air was able to ascend to ridiculously high heights to pass over the wall.

      It just occurred again, on Adaptive Horde Survival, though this time it only blocked Land waves, with Air and Naval being unaffected. Checking the log showed no errors related to the map.

      Here is the replay #20927341
      Linke as Well: https://replay.faforever.com/20927341
      The map error occurred around 20 minutes on the Game Timer.

      These maps normally play fine without issue, using the exact same mod list. So it seems to be a freak occurrence.

      1 Reply Last reply Reply Quote 0
      • JipJ
        Jip
        last edited by

        There's a lot of errors in the log:

        WARNING: Error running OnDamage script in Entity ual0105 at 2f010308: ...forever\replaydata\gamedata\lua.nx2\lua\sim\unit.lua(5435): attempt to call method `GetArmy' (a nil value)
                 stack traceback:
                 	...forever\replaydata\gamedata\lua.nx2\lua\sim\unit.lua(5435): in function <...forever\replaydata\gamedata\lua.nx2\lua\sim\unit.lua:5433>
                 	[C]: ?
                 	...r\replaydata\gamedata\lua.nx2\lua\sim\projectile.lua(562): in function `DoDamage'
                 	...r\replaydata\gamedata\lua.nx2\lua\sim\projectile.lua(322): in function <...r\replaydata\gamedata\lua.nx2\lua\sim\projectile.lua:265>
        

        The file in question (unit.lua) only has 5300 lines or so, so this is an error in a mod

        c90e3767-b6ec-4f2b-8453-a7b8015935f7-image.png

        It appears that something is flattening the map there. I'm not familiar with the map script to know what could cause it

        A work of art is never finished, merely abandoned

        R 1 Reply Last reply Reply Quote 1
        • R
          Rama @Jip
          last edited by Rama

          @jip

          I did just find another replay, same error, on a different map. Error occurs at 18 minutes.

          https://replay.faforever.com/20925235

          Yeah, I don't know what is causing the OnDamage error that floods the logs. That shows up in some logs, but not in others.

          Could it be related to this code in AI Wave Survival mod? This script attaches other units onto the bones of the boss units.

          AttachedLandUnitSpawn = function(self, selfId, attachedUnitId, selfBoneId)
          local platOrient = self:GetOrientation()
          local location = self:GetPosition()
          local StellarCore = CreateUnit(attachedUnitId, self:GetArmy(), location[1], location[2], location[3], platOrient[1], platOrient[2], platOrient[3], platOrient[4], 'Land')
          WaitTicks(2)
          IncreaseHPForAUnit(StellarCore)
          if DamageBoost ~= 'Off - 0' then
          ModifyWeaponDamageBuffAndRange(StellarCore)
          end
          StellarCore:AttachTo(self, selfBoneId)
          StellarCore:SetCreator(self)
          self.Trash:Add(StellarCore)
          end

          1 Reply Last reply Reply Quote 0
          • JipJ
            Jip
            last edited by

            @Rama try again on the FAF Develop game type, see also:

            • https://github.com/FAForever/fa/pull/5511

            A work of art is never finished, merely abandoned

            R 1 Reply Last reply Reply Quote 0
            • ZLOZ
              ZLO
              last edited by

              From my personal experience only things that do map flattering are buildings that are spawned outside of the map border

              TA4Life: "At the very least we are not slaves to the UI" | http://www.youtube.com/user/dimatularus | http://www.twitch.tv/zlo_rd

              1 Reply Last reply Reply Quote 1
              • R
                Rama @Jip
                last edited by

                @jip

                Ah, yeah, I see the trench is in line with the Support Base. They spawn defensive buildings randomly around them every few minutes. One must have spawned off map.

                Guess I can fix that by adding a check to the spawn location.

                1 Reply Last reply Reply Quote 0
                • JipJ
                  Jip
                  last edited by

                  Not needed, I think - could you test my fix on the FAF Develop game type? I think I fixed the bug that ZLO mentions

                  A work of art is never finished, merely abandoned

                  R 1 Reply Last reply Reply Quote 0
                  • R
                    Rama @Jip
                    last edited by

                    @jip

                    Well, it would be better to not have structures/units accidentally spawn off map. And the new script I wrote up should actually be a little faster than the old one.

                    The new code has a X and Z check, to make sure the position is on the map. If the position is off the map, it will loop through again, randomly picking a position. This could result in an endless loop if a spawn is very near an edge and the loop keeps randomly picking off-map positions. So I added a fail safe to break the loop after so many tries.

                    Do you know if the function KillThread(self) will simply abort the thread? If it can't find a safe spawn, I'd prefer nothing spawn versus units/building being spawned off-map.

                    1 Reply Last reply Reply Quote 0
                    • ZLOZ
                      ZLO
                      last edited by

                      There can be reasons why you would want to spawns buildings outside of the map...
                      If it is gonna be really outside and map is not going to expand there and you just want to have some hidden buildings off map (like radar or energy for shields) Then just put them in the corners and then bug will not appear

                      TA4Life: "At the very least we are not slaves to the UI" | http://www.youtube.com/user/dimatularus | http://www.twitch.tv/zlo_rd

                      R 1 Reply Last reply Reply Quote 0
                      • R
                        Rama @ZLO
                        last edited by

                        @zlo

                        Oh, the mod is AI Wave Survival. I'm not trying to spawn hidden buildings. All buildings/units are to be attackable by players. But the mod works on any map, and so there is a risk of defensive buildings and units spawning off map if Starting Positions (which sets the spawn points) are too close to a map edge.

                        I re-wrote the spawn script to check to make sure the randomly chosen spawn is actually on the map. This will prevent units/buildings from spawning off-map from Spawn Points that are too close to a map edge.

                        The issue is, as I am using a loop to check if the spawn is safe, and the loop runs again until a safe spawn is found, I need to add an abort to the script in the rare event it gets locked into an infinite loop. I could use BREAK to break the Repeat loop, but then the rest of the thread will run and spawn the map/building off-map.

                        I've added KillThread(self) instead. I was just hoping someone with more knowledge could confirm this will kill the thread and stop anything from spawning.

                        1 Reply Last reply Reply Quote 0
                        • JipJ
                          Jip
                          last edited by

                          There's no need for your adjustments. I think I fixed the issue by adding guards before a structure flattens a bit of terrain. It should be fine now, regardless where you put the structure. Please check and confirm it is fine by launching a game on the FAF Develop gametype

                          A work of art is never finished, merely abandoned

                          R 1 Reply Last reply Reply Quote 0
                          • R
                            Rama @Jip
                            last edited by

                            @jip

                            Too late! I already spent hours last night re-writing the scripts and testing!

                            I figured it was worth doing, just to speed up the sim speed a little. The new script has only a third as many operations to complete, while the old script would call the Random function to run 12 different times when spawning a unit/building. Now it is only called 3 times.

                            I don't know how fast Lua is at running the Random function, but that was a lot of unnecessary work for every spawned unit. Now multiple that by hundreds of units. And I'm assuming just running a simple "ifelse = variable" is faster than calling a Random number. So, new scripts should help with spawning large waves. (Except in an issue where spawn is too close to map edge and triggers the test loop, hence why I need to add an abort to the script.)

                            Not that people should use the mod on maps with spawns close to map edge, but someone surely will. So just trying to correct for that issue.

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post