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.
    • MachM
      Mach
      last edited by Mach

      This is an edit of Spread Move mod that only gives 1 order to each unit instead of all of them as a queue.

      More specifically, once you give a group of units a queue of move orders and press the hotkey, the mod cycles thru all orders in queue and for each order selects the closest unit to it, which it then gives that closest unit as its first move order, deleting the rest of move orders for that unit. If there are more units than orders, it repeats this until all units have a first order by restarting from first order in queue again, evenly distributing all units among all queued orders. If there are more orders than units, only the orders up to unit count get given to units as first order and the rest of them get deleted (because there are no units left without a first order).

      Another thing is if there are orders that arent move orders queued before move order queue, only the last queue of move orders gets effected (ignoring all non-move orders and all move orders before those non-move orders), allowing you to chain disperse move with other non-move orders in queue. Some orders like reclaim and attack move wont work with it tho and will be deleted.

      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).

      JipJ 1 Reply Last reply Reply Quote 6
      • 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