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

    Disperse Move

    Scheduled Pinned Locked Moved Modding & Tools
    19 Posts 7 Posters 2.8k 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.
    • TheWeakieT
      TheWeakie
      last edited by

      It's pretty buggy

      https://puu.sh/GNXmQ/4425692c6a.mp4

      1 Reply Last reply Reply Quote 2
      • MachM
        Mach
        last edited by Mach

        ok fixed that, units are now completely evenly distributed between all given orders without fault every time (as long as you have at least same amount of units as orders, orders past unit count get deleted)

        1 Reply Last reply Reply Quote 0
        • arma473A
          arma473
          last edited by

          The FAF administration has already apparently decided to ban mods that give/change move orders to units, because in theory people could create "cheat" mods that move units around in ways that are too close to "playing the game" for you. I am not convinced this is a real threat that actually needs to be addressed. It sounds like paranoia about "Russian hackers" but who knows. If they make this change, I think that means your mod is toast.

          1 Reply Last reply Reply Quote 0
          • FtXCommandoF
            FtXCommando
            last edited by

            Could you quote that rule for me?

            1 Reply Last reply Reply Quote 0
            • arma473A
              arma473
              last edited by arma473

              @JaggedAppliance was talking on-stream maybe 1-2 weeks ago about limiting UI mods that can give move orders, because of the potential for cheating. He suggested that shift-g move itself would be removed, but that shift-g attack would stay in the game.

              JipJ 1 Reply Last reply Reply Quote 0
              • TheWeakieT
                TheWeakie
                last edited by

                it was the democrats

                1 Reply Last reply Reply Quote 2
                • JipJ
                  Jip @arma473
                  last edited by

                  @arma473 said in Disperse Move:

                  @JaggedAppliance was talking on-stream maybe 1-2 weeks ago about limiting UI mods that can give move orders, because of the potential for cheating. He suggested that shift-g move itself would be removed, but that shift-g attack would stay in the game.

                  I believe this is the change / pull request you are referring to:

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

                  A work of art is never finished, merely abandoned

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

                    @Mach said in Disperse Move:

                    This is an edit of Spread Move mod that only gives 1 randomly selected order to each unit instead of all of them as a queue. You can find it in vault under name "Disperse Move".before.png
                    after.png

                    idk how to credit but it is obviously based on MrNukealizer's Spread Move (and is literally few lines of its code changed) and whatever that was based on (I think split attack).

                    Pretty cool idea - if the discovery from @TheWheelie is correct then I feel you are choosing random orders somehow. After inspecting the code I didn't get much wiser - it has comments but I'm not enough into this bit of the code base to understand in under a few minutes.

                    What do you think about assuming that the group of units have the same orders, choose the orders from the first unit and then see they align with the number of units that you have?

                    For example:

                    • If you have more orders than units, assign each unit a unique order leaving some out.
                    • If you have more units than orders, make sure each order is assigned and assign some double.

                    That would solve the situation Wheelie has, which shows unreliable behavior.

                    A work of art is never finished, merely abandoned

                    1 Reply Last reply Reply Quote 0
                    • MachM
                      Mach
                      last edited by Mach

                      @Jip said in Disperse Move:

                      Pretty cool idea - if the discovery from @TheWheelie is correct then I feel you are choosing random orders somehow. After inspecting the code I didn't get much wiser - it has comments but I'm not enough into this bit of the code base to understand in under a few minutes.

                      What do you think about assuming that the group of units have the same orders, choose the orders from the first unit and then see they align with the number of units that you have?

                      For example:

                      • If you have more orders than units, assign each unit a unique order leaving some out.
                      • If you have more units than orders, make sure each order is assigned and assign some double.

                      That would solve the situation Wheelie has, which shows unreliable behavior.

                      what happened to @TheWheelie was solved already in version 3

                      the reason it happened before is that units' orders were randomized normally like in original Spread Move, and I was simply removing every order per unit except first one given to it, but units could have been unevenly distributed between these orders (because it was a random function) resulting in more units getting the same first order than others, and sometimes (like in farms' example) some orders might have not been given to any unit at all as their first order, and once all orders after the first were removed, those orders that were not given to any units as their first order were deleted completely

                      the way it works now is that the unit uses its index (which number in selected group of units they are) to select which order goes to it first (from order queue), and thus every order gets at least 1 unit (as long as there are at least same number of units as orders), if there are more orders than units, the orders given past the unit number get deleted and units are distributed up to last order they could, if there are more units than orders, once last order in queue is given to a unit, the next unit in group starts over from first queued order and this repeats until all units are given first orders, evenly distributing all units between all orders

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

                        You're correct - I didn't read correctly 🙂 . Apologies!

                        A work of art is never finished, merely abandoned

                        1 Reply Last reply Reply Quote 0
                        • N
                          Northern-Newbie
                          last edited by

                          Issuing the Order sometimes works yet only with certain Move Orders Constellations and soemtimes doesnt

                          Opening the Log reveals a traceback Error and Error at Line 317 in the dispersemove.lua regarding "action2"

                          this somehow leads to the Unit each getting their own Commands but not splitting up akin to Shift+G also weirdly enough hammering the Key often enough will rarely result in splitting up without problems

                          MachM 1 Reply Last reply Reply Quote 1
                          • MachM
                            Mach @Northern-Newbie
                            last edited by Mach

                            @Northern-Newbie well idk exactly what you mean, but from what you said I managed to get disperse move to run properly even if some (but not all) units got to their first move order(s) before hotkey was pressed (before disperse move would just not work in this case), if thats what you meant, however distribution (at least to first order player queued or however first many orders units already "split" between having reached them or not) is somewhat worse as this is a bigger problem than it may seem

                            To not flood the thread I put explanation of this fix in imgur album. Add spoilers to forums so we can spoiler pictures pls.

                            the bigger problem is: units that already got to first order (or however many) and would have otherwise been sent there (not all units that got to some orders already would have been sent to those same ones necessarily, both because they may now be closer to a different order or because even distribution would not allow it) if they didnt already reach it, now distribute evenly between their remaining orders (aka orders player queued but excluding ones they already got to), the rest of units with full queue (no missing orders aka didnt reach any order yet before pressing hotkey) operate same as before, I thought about redistributing units with full queues (units that have none of orders lost) to offset these "lost units" but I think that would cause a bigger problem as they may cross paths with other units (rip pathfinding) or in general not go to closest orders they can, and the point of this mod is kind of in the speed in which units disperse, not as strongly evenness of that

                            one way to fix this may be to simply remove whole group of orders from those units that already reached orders they are supposed to get as their first (and only) orders, but for some reason doing that (setting unit order table to nil) just does nothing and they keep whole order queue instead, may try that once I figure out how to do it, if anyone knows halp pls

                            techmind_T 1 Reply Last reply Reply Quote 0
                            • techmind_T
                              techmind_ Banned @Mach
                              last edited by

                              @Mach you can issue come to move under unit itself +/-1 unit to clear queue. Moving in exact same position will get canceled by engine, dunno if it clears command queue.

                              MachM 1 Reply Last reply Reply Quote 0
                              • MachM
                                Mach @techmind_
                                last edited by

                                @techmind_ said in Disperse Move:

                                @Mach you can issue come to move under unit itself +/-1 unit to clear queue. Moving in exact same position will get canceled by engine, dunno if it clears command queue.

                                Ill try that but idk if issuing new move orders or moving existing ones to positions where player didnt manually place them before (which would be the case here) is considered "okay"

                                1 Reply Last reply Reply Quote 0
                                • N
                                  Northern-Newbie
                                  last edited by Northern-Newbie

                                  Last time i checked it was okay aslong as it doesnt happen automatically

                                  also the Problem even arises when units havent reached the first order ever given of the Bunch off Orders one may give andf will result in this error

                                  WARNING: Error running lua command: ...alliance\mods\disperse move\modules\dispersemove.lua(317): access to nonexistent global variable "action2"
                                           stack traceback:
                                           	[C]: in function `error'
                                           	...alliance\gamedata\mohodata.scd\lua\system\config.lua(53): in function <...alliance\gamedata\mohodata.scd\lua\system\config.lua:52>
                                           	...alliance\mods\disperse move\modules\dispersemove.lua(317): in function `DisperseMove'
                                           	[string "import('/mods/Disperse Move/modules/dispers..."](1): in main chunk
                                  
                                  

                                  And also will result in Units moving to the xact same Locations i give but in order and not dispersing

                                  image0-72-1 - Kopie.jpg

                                  image0-72-1 - Kopie - Kopie.jpg

                                  1 Reply Last reply Reply Quote 0
                                  • MachM
                                    Mach
                                    last edited by

                                    I cannot reproduce what happens to you, are you using latest version of mod (v10)? To me there is no call for that variable at that line at all. What are you doing before giving these orders and pressing hotkey?

                                    1 Reply Last reply Reply Quote 0
                                    • N
                                      Northern-Newbie
                                      last edited by

                                      It seems i had to update to the newest Verison which apparently uploaded the same day

                                      1 Reply Last reply Reply Quote 0
                                      • MachM
                                        Mach
                                        last edited by

                                        Yes I uploaded it to fix that very bug, sorry should have mentioned it

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