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

Large Unit Clumping and Unresponsiveness

Scheduled Pinned Locked Moved Suggestions
33 Posts 17 Posters 2.7k 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.
  • P
    Pearl12
    last edited by 14 Sept 2020, 02:28

    What Ftx said.

    People expect things to work smoothly, and hopefully, they give some leeway for a game from 2007. You talk like you just got out of grad school with your CS degree in ruby on rails... welcome to retrofitting. That's not an insult, we'd love to see what you describe. Many of the players are capable developers who have similar dreams. The grumbly "this is just the way it is" is not from a lack of desire, just a lack of time, or a paid full-time developer, or the ability to break into the source code, or a combination. If you want it to be done, join the dev team and see what you can do. Good luck. Seriously.

    Just to make sure we have all the information: when you say "formation," do you mean holding a right-click? If so, formation moves are slow anyway. If for some reason I want a long-right-click formation I usually give a fast right-click to as near as possible where I want the units to end up, then shift-long-right-click.

    I can't say that I have had noticeable lag with just short (regular) right-clicks. Maybe I'm too immersed in hundreds of robots doing my bidding to notice they have a slight delay in my sending them to their deaths.

    1 Reply Last reply Reply Quote 0
    • B
      BlackYps
      last edited by BlackYps 14 Sept 2020, 08:38

      I don't know why you insist that your proposed changes are easy to do when multiple people have told you they are not.
      You even disregarded the attempt to get the source code as half-witted, just because it didn't work. maybe it didn't work because square enix in fact does not have the source code? No amount of money will change that.
      I advise you to do some research about compilation and decompilation of code and especially about the problems of the latter to get a better understanding why your proposed changes are not realistically possible. Everybody wants better pathfinding, it is not developers "playing hard to get".

      make clients an input output engine focused on graphics

      this is essentially a rewrite of the engine anyway, and that requires manhours worth millions of dollars.

      1 Reply Last reply Reply Quote 1
      • S
        Spy_Emanciator
        last edited by 14 Sept 2020, 16:20

        I urge you to research reverse engineering. A first time develop of something cost a much large around because they are stabbing in the dark and making first time implementations of things. Also source codes can be "decompiled" ask any military or intelligence expert. Its not exactly rocket science here, we have a functional model working on peer to peer. It needs to be run server-side simulation to cut out all the extraneous layers of client to client preparation, streaming, and error correction. This last sentence surmizes everything that is going wrong with this title.

        Do what's necessary to fix these problems and you will likely very rapidly move from #4 to #2 on the top RTS list on google.

        Holding out the source code vs the larger body of the company is illegal. I'm not in that company and I wasn't around during lay offs, but I can smell a bit of a fish here and some sort of mediation would be preferable. If not just brute force the box open as much as possible and remake functionality (which is much easier to replicate than design as we already see the intended end product in action)

        1 Reply Last reply Reply Quote 1
        • J
          Jip
          last edited by 14 Sept 2020, 16:58

          Joining in the discussion here - what you are asking requires some hefty engineers (expertise) and a ton of time. Solutions, such as the UI freeze when pausing are here not because we want them to be but because there is no alternative that is valid given the constraints.

          An lead engineer on Supreme Commander mentions the majority of functionality that you mention - they didn't do all of it because they didn't have the budget nor the time (and perhaps: lacking the experience / expertise) to get it all done. And they had more expertise, more time and more budget than we do. For more information on the video:

          • https://www.youtube.com/watch?v=prsqagPUTX0

          A work of art is never finished, merely abandoned

          1 Reply Last reply Reply Quote 0
          • P
            Pearl12
            last edited by Pearl12 14 Sept 2020, 17:05

            @Spy_Emanciator said in Large Unit Clumping and Unresponsiveness:

            I urge you to research reverse engineering. ... Also source codes can be "decompiled" ask any military or intelligence expert. Its not exactly rocket science here.

            I urge you to do some work on the game instead of just making forum posts imploring other people to do so because apparently it's really easy.

            YOU find a military intelligence expert that wants to donate their time to reverse engineer the game for us. That would be great!

            1 Reply Last reply Reply Quote 0
            • F
              FtXCommando
              last edited by 14 Sept 2020, 17:12

              lemme help u out a bit mr businessman

              https://www.riskology.co/idea-guy/

              1 Reply Last reply Reply Quote 1
              • T
                The_Janitor
                last edited by 14 Sept 2020, 20:24

                You are wasting your time here and telling everyone here "what to do and how easy it is" without putting any of the work your self.
                If you want to help there is a really good video explaining what would make you helpful and productive member of FAF community.
                That is if you really are here to help out the community.

                https://www.youtube.com/watch?v=ZraD244VywA
                "FAF Contributor Tutorial - How to get engaged"

                Secure the kill and send it off.

                1 Reply Last reply Reply Quote 0
                • S
                  Spy_Emanciator
                  last edited by 18 Sept 2020, 00:06

                  Spy asks for some glint of support for a good idea, then gets peppered with internet salt and unfettered anger by mostly unqualified and unidentified forum trolls.

                  We'll let the adults read through this mine yard.

                  P 1 Reply Last reply 18 Sept 2020, 01:12 Reply Quote 0
                  • P
                    Psions Banned
                    last edited by Psions 18 Sept 2020, 00:37

                    If formations are the problem, would it be possible to simply delete the datafile or entry that stores formations in the first place, or replace formations entirely.

                    Also if you are looking for a solution to pathfinding to 'remove' formations, when a move order is issued, instead of pathfinding the formation, post-process a stop command followed by a set of move commands individually for each unit matching the end formation structure. That way we can keep the rough structure of the unit formation, without the back engine trying to calculate the pathing as if it were a formation.

                    Formations in this game serve 0 purpose. I have no fucking clue why the developers even added this feature.

                    Also if you want to get rid of shit tier bumbing mechanics, just make units have phase so that if they are within a certain distance of another unit, they lose their collision or becoming a flying unit for a minute amount of time and have this have a cooldown to avoid bugs/abuse per unit.

                    If you want to improve engineers being shit, improve their turnrate. Its garbage.

                    On a side note:
                    Has anyone asked Chris Taylor for the sourcecode? There's no way he wouldn't have a copy.

                    And yes everything sounds easy until you try and implement it, that is where the real challenge begins.

                    1 Reply Last reply Reply Quote 0
                    • P
                      Pearl12 @Spy_Emanciator
                      last edited by 18 Sept 2020, 01:12

                      @Spy_Emanciator said in Large Unit Clumping and Unresponsiveness:

                      Spy asks for some glint of support for a good idea, then gets peppered with internet salt and unfettered anger by mostly unqualified and unidentified forum trolls.

                      We'll let the adults read through this mine yard.

                      Spy asks for people to put all the work in to make his dream become a reality, without doing or having done any work himself. When people suggest they might listen to him if he was willing to do some of the work himself, he responds with ad hominem.

                      P 1 Reply Last reply 18 Sept 2020, 01:18 Reply Quote 1
                      • P
                        Psions Banned @Pearl12
                        last edited by Psions 18 Sept 2020, 01:18

                        @Pearl12 I think his complaint was more of the fact that he made a suggestion and the response was garbled "engine limitations", which itself merely means too long didn't read, and more often than not is just parroting other people that give it as an excuse for not doing something, because they either don't have the knowledge and expertise, or they do have the knowledge and expertise but not the time.

                        At no point did he say he wasn't going to code something. I think this was more an airing of ideas, to see if people had any other solutions or suggestions or if anyone would be interested in doing it with him.

                        Which is why i posted a number of suggestions/possible solutions that might be worth considering.

                        But the amount of shitposting he does, whose fool am i being?

                        1 Reply Last reply Reply Quote 0
                        • K
                          Katharsas
                          last edited by Katharsas 18 Sept 2020, 11:53

                          "It is possible to code this correctly, someone has chosen not to. "

                          Translation:
                          I won't do it, but somebody else should have done it, in their free time, shame on them that they didn't.

                          "Has anyone asked Chris Taylor for the sourcecode? There's no way he wouldn't have a copy."

                          Yes, he has literally personally sad in the interviews that he is very sad that he didnt keep the source code. And the current owner of FAF trademark has personally tried to buy the source code for a massive amount of money a lot of years ago.

                          This kind of suggestions and demands appear constantly in the forums, and this is why people are giving this kind of tired response. "Unit Unrepsonsivness" has been brought up by tons of people over the years. Everybody agrees that it is not nice. But its not gonna change if the 14335th person goes into the forums and complains about it.

                          We should make a FAQ list of all of the engine related issues and that getting the source code has been tried and suggested over and over.

                          • Staggered movement of unit clumps
                          • No Multithreading, bad simspeed (some of this might be fixed in Lua, but limited)
                          • Pathfinding lag in general
                          • Player input (commands) not getting registered sometimes

                          All of these are not going to get fixed unless YOU, random forum person, personally start with it. So try it, and when you relize how hard it is you will come back as a more understanding, humble, grateful person. Or you actually make progress, then you will very likely find people that would love to help you.

                          I suggest to OP to download Ghidra and try to learn some reverse engineering. There are tutorials and example crackmes, easy to find.

                          W 1 Reply Last reply 4 Oct 2020, 09:34 Reply Quote 0
                          • B
                            balbotter
                            last edited by 18 Sept 2020, 12:17

                            wow, first two replies explains exactly what's going on. OP ignores it and starts ranting regardless then expresses surprise when shit posting starts.

                            1 Reply Last reply Reply Quote 0
                            • AzraaaA
                              Azraaa
                              last edited by 18 Sept 2020, 16:06

                              Simple... The Command Queue of the game is flooded. It usually not the terrain, surpisely. It mostly command queue being flooded. That's why the worst the simspeed is, the worst the game's units just don't respond at all. Which makes the game even slower. The game is trying to process all this unit movement, effects, etc.

                              Developer for LOUD Project | https://discord.gg/DfWXMg9
                              AI Development FAF Discord | https://discord.gg/ChRfhB3
                              AI Developer for FAF

                              Community Manager for FAF
                              Member of the FAF Association
                              FAF Developer

                              1 Reply Last reply Reply Quote 0
                              • Mvk_-M
                                Mvk_- Banned
                                last edited by 26 Sept 2020, 02:04

                                Id say 50/50 after say a correction of issue placed within SupCom 2, which was fine, but still seemed to be lacking something for the gain to say.

                                1 Reply Last reply Reply Quote 0
                                • W
                                  WackelKontakt
                                  last edited by 4 Oct 2020, 08:57

                                  Besides the "typical" (and I mean that in a non-condescending way) "out of our reach response": How much reverse engineering work was acutally done on this? Was the exact DLL and maybe functions and data/objects that deal with or are affected with pathfinding identified? If so, one could maybe attempt an dll inject approach.

                                  Additionally, pathing in Supcom 2 is mostly fixed and both supcom 1 and 2 use the same engine. Can we maybe get clues by diffing their mohoengine.dlls? (symbol table etc.)

                                  1 Reply Last reply Reply Quote 0
                                  • W
                                    WackelKontakt @Katharsas
                                    last edited by 4 Oct 2020, 09:34

                                    @Katharsas Given how insaenly fast CPUs nowadays are compared to 2007, even in single core, when used properly, I'd not even try to attempt any hacking to "multithreading" in (which wouldn't help much, when the core engine doesn't support it and you end up doing pointless tiny calculations multithreaded without any gain).

                                    Instead, one should attempt to revive the work to modify luajit-GC to make it fit with supcom. This should (at least according o micro benchmarks of luajit) in some cases give up to 4x or even more performance.

                                    I actually take a look at ghidra right now. It's an amazing tool, however making sense of all will take time (and stamina).

                                    Initially I will take a look at both, supcom 1 and supcom 2 mohoengine.dll. If its not entirely easily possible to replace supcom 1 pathing implementation with an own one, maybe there is a way to give supcom 1 at least supcom 2 path finding.

                                    K 1 Reply Last reply 6 Oct 2020, 08:52 Reply Quote 0
                                    • DragonStrike406D
                                      DragonStrike406
                                      last edited by 4 Oct 2020, 09:44

                                      I recently picked up reverse engineering the FAF executable and libraries.

                                      If you want credibility to my claims, I worked on two game reverse engineering projects in the past. One on Robocraft, where I had my part in deobfuscation of a massive C# assembly, and the other was the HAWaKENing project where I assembled a team which goal was to make Hawken run on PC again. This was no easy task because the game was only multiplayer, and was shut down on January 2nd 2018. We had to not only disassemble the executable and find out how it's inputs work, we also had to make a login and services server from absolute scratch. We did succeed to some extent, we are yet to get actual multiplayer working but we did manage to get the account server running and player can now even play against bots.

                                      That's for my background, and as someone who works with IDA, Snowman Disassembler, and writes some of my own tools to help me in the process of making old software run again, I can attest that it would be much faster to remake the game using current-day technologies than it would be to improve the executable.

                                      I found this out the hard way. While the DLL files are a mix of Lua and C++, and the executable itself is C++ only, that is still all I can say. After disassembling I did not find any names I could put to use such as function calls, function names, file names, etc. Everything was in deep x86 assembly, and even when translated to C++, it was basically the same useless code. I say useless because it is. You cannot get anything useful from it, no names, no function structures, no nothing. One big gibberish. It's exactly the same thing with the libraries stored in the DLL files. They too are a massive pile of organized mess with no names.

                                      As to swapping FAF libraries with that of SC2, that will not work either. While yes, the base engine is the same, the two versions vastly differ, which I can say from just looking at how the starting hexes of each executable are laid down. Both are the SpringRTS engine, yes, but one is from late 2007 while the other is from early 2010. In that period of time, Square Enix could have easily implemented an entirely new compiler and change a lot of engine functions themselves to better suit their needs for the game. And they certainly did so, because one major difference that can be pointed out right out of the gate, is the fact SC2 benefits from running on multiple threads, while SC:FA's engine does not run the simulation this way.

                                      But it doesn't take going into reverse engineering to notice that the two games are too different to swap any files with each other. If you go to SC:FA installation and check what's in it, then compare it to how SC2's structure is made you can come to a conclusion that they work very differently from each other if your IQ is higher than the room temperature in Celcius.

                                      All this amounts to a one conclusion. Reverse engineering and recompiling the game with new technologies is not impossible, but one would have to spend roughly 5-6 thousand hours of work on it. What is affordable and could actually work, is remaking the game from scratch, based on what we know, and how it plays. Engines like Unity, Unreal Engine 4, or Godot have the potential to make this real. However that said, I personally believe Godot would be the most suitable engine to do it, simply because how simple it's structured, how easy it is to learn, and how full of content it is. With Unity you will need more than just unity, because the engine by itself does not have an IDE, and more often than not, you'll have to use a lot of middleware to achieve your goal. Unreal Engine 4 is a great tool for FPS games, and not so much for everything else, which shows in how the engine wants you to structure your game, and how many prefabs are oriented around FPS style of gamedev. Godot itself comes with it's own IDE, physics, 2D and 3D graphics, Visual Scripting for non-programmers to make code, and is very simple in how it handles game design. Not only that, but it's completely free. No royalties, no pay-up-fronts, no per-seat licences. Of course, if you want to you can make a game in whatever engine you want it to run, or even make your own engine from scratch too.

                                      TLDR; I did reverse engineering on the FAF executable, no you cannot modify it to make it run better, no you cannot swap files from SC2 because the two games are structured in an entirely different way, it would be easier and faster to remake FAF in some new game engine.

                                      W 1 Reply Last reply 4 Oct 2020, 10:27 Reply Quote 4
                                      • W
                                        WackelKontakt @DragonStrike406
                                        last edited by 4 Oct 2020, 10:27

                                        @DragonStrike406 said in Large Unit Clumping and Unresponsiveness:

                                        I found this out the hard way. While the DLL files are a mix of Lua and C++, and the executable itself is C++ only, that is still all I can say. After disassembling I did not find any names I could put to use such as function calls, function names, file names, etc. Everything was in deep x86 assembly, and even when translated to C++, it was basically the same useless code. I say useless because it is. You cannot get anything useful from it, no names, no function structures, no nothing. One big gibberish. It's exactly the same thing with the libraries stored in the DLL files. They too are a massive pile of organized mess with no names.

                                        I can mostly agree with this (which just a few minutes of looking). So far I could get some useful class names, but not really useful function names or implemenations. The decompiled implementations in C++ where pretty much word-by-word translations of the assembly - aka useless.

                                        As to swapping FAF libraries with that of SC2, that will not work either. While yes, the base engine is the same, the two versions vastly differ, which I can say from just looking at how the starting hexes of each executable are laid down. Both are the SpringRTS engine, yes, but one is from late 2007 while the other is from early 2010.

                                        I wonder, what makes you conclude that these both are derivations of the SpringRTS engine?

                                        But it doesn't take going into reverse engineering to notice that the two games are too different to swap any files with each other. If you go to SC:FA installation and check what's in it, then compare it to how SC2's structure is made you can come to a conclusion that they work very differently from each other if your IQ is higher than the room temperature in Celcius.

                                        The initial file layout is not that insanely important. Their linking method might have changed, fooling you into thinking there is absolutely no commonality left - while there is - albeit very limited.
                                        Additionally I never meant "trivial file swapping". I'm a software dev myself, I know things aren't this easy.

                                        TLDR; I did reverse engineering on the FAF executable, no you cannot modify it to make it run better, no you cannot swap files from SC2 because the two games are structured in an entirely different way, it would be easier and faster to remake FAF in some new game engine.

                                        Well, it was an idea. But apparently a flawed one. I did not expect supcom 1 and 2 foundations to diverge this insanely much.

                                        1 Reply Last reply Reply Quote 0
                                        • DragonStrike406D
                                          DragonStrike406
                                          last edited by DragonStrike406 10 Apr 2020, 10:52 4 Oct 2020, 10:51

                                          I wonder, what makes you conclude that these both are derivations of the SpringRTS engine?

                                          My bad. The engine is a homebrew. Just my janky memory connecting the dots that SpringRTS was released in 2007, is an RTS engine, suffered from lack of multithreading, and that FA has exactly same issues. Plus the fact that if you go to wikepedia, it says it's related in external links. https://en.wikipedia.org/wiki/Supreme_Commander_2#External_links Then again, I checked that like a year or two ago, and back then I still had my memory department still functioning correctly.

                                          The initial file layout is not that insanely important. Their linking method might have changed, fooling you into thinking there is absolutely no commonality left - while there is - albeit very limited.

                                          I also did say that after looking at the hexes of both games I noticed they are different. Maybe there is a way to put them together, although without any source code, or at least knowing what wants what, that's basically guessing.

                                          Additionally I never meant "trivial file swapping". I'm a software dev myself, I know things aren't this easy.

                                          Ah, a man of culture. Then I needn't explain more.

                                          Well, it was an idea. But apparently a flawed one.

                                          Ideas are flawed, mistakes are made, but there's always a lesson to be learnt. Have a good day, commander.

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