Announcement

Collapse
No announcement yet.

[RELEASED] AI Spline-Based Movement System

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    [RELEASED] AI Spline-Based Movement System

    Click image for larger version  Name:	2.png Views:	1 Size:	165.1 KB ID:	1610792





    Trailer (overview):

    Demo project (packaged)


    What is this plugin used for?

    This is an advanced, optimized, and easy to setup component-based system that will let you to achieve more AAA quality aspects of your games. Makes AI moving on navmeshes a lot more smooth and natural without forcing any rotation/movement limitations to your Character (or Pawn) and with no compromises on the performance side (at least on modern mid-end desktop CPUs). C++ well commented code only and almost all is virtual and fairly flexible for inheritance and your further code modifications.


    How to use it?
    • Add plugin's actor component to your Pawn/Character
    • Add just two nodes/behavior tasks from it to your logic
    • Tune it's params (which all has description) as you want
    • That's all

    Features:
    • Easy to setup, no coding skills required
    • Contains 1 actor component, 2 blueprint nodes, 1 behavior tree task
    • Compatible both with Characters and Pawns
    • Compatible both with RVO Avoidance and Crowd Manager, but not at perfect level in some cases
    • Very well optimized - no performance drops at least on modern mid-end CPUs (tested with 100 actors)
    • Heavily tested, bug-free - dozens of hours of testing and revisions
    • Has fully commented code - hundreds of lines of comments
    • Almost all code is virtual and fairly flexible for inheritance and your further code modifications

    Technical Details

    Number of Blueprints: 0

    Number of C++ Classes: 4

    Network Replicated: No (Not Required)

    Supported Development Platforms: Win64/Win32/Linux/MacOS/PS4/XboxOne/IOS/Android

    Supported Target Build Platforms: Win64/Win32/Linux/MacOS/PS4/XboxOne/IOS/Android

    Documentation: Source code comments + Tutorial (PDF)

    Example Projects (Plugin Required): UE4.20; UE4.21; UE4.22

    Important/Additional Notes: Please give me any feedback here or by any of my contacts in plugin's info, and also check out the roadmap for future changes, but it's kind of aspirational and based on sales - so nothing is carved in stone


    Marketplace link: https://unrealengine.com/marketplace...ovement-system


    Changelog:

    Version 1.1: added Asynchronous Blueprint Node
    Last edited by Vemaster; 12-08-2019, 08:06 AM.

    #2
    Hello everyone. Still thinking about what I can do more, does it make sense and so on. Therefore, the roadmap part is still a placeholder and this is def not a Early Access plugin anyway, so not a fact that I will be doing any major updates at all. But first of all I'm now thinking about doing a dynamic collision avoidance system (inspired by this) as part of free update ofc, which is in this specific usecase will perform better than RVO Avoidance and Crowd Manager, but plugin is compatible with both of them tho.

    Comment


      #3
      If you implement a dynamic avoidance system, I'll definitely pick this up. But without avoidance, I dont really have any need for it Looks good though!

      Comment


        #4
        Insta-buy in case of dynamic avoidance system.

        Comment


          #5
          Originally posted by Vathusmoure View Post
          If you implement a dynamic avoidance system, I'll definitely pick this up. But without avoidance, I dont really have any need for it Looks good though!
          I made an avoidance demo for you: https://youtu.be/9wwzi85BviY

          So as I sad - it's works fine with standard dynamic avoidance systems, but in some cutting-edge cases, like if you send the two armies (100ths of them) of the AI characters in opposite directions along the very narrow track full of collisions like from the overview trailer, the AI will sometimes hit the walls and so on - it's will work, but not perfect... I did this as part of performance testing, while the goals on both ends were constantly shifting and the path was updated every n-time. But such conditions are almost impossible in most of the games, which are has much more spacious levels and don't have hundreds of units going through each other - so it can be critical for someone, but not for others - it's up to you.

          The primary goal is why I want to make my own avoidance system, because it seems to me that it would work better and could take various parameters into account from the navmesh in the way I want it, to perform better and to make calls when and from which side it bypasses dynamic objects, and which ones - so plugin users can have more features in games with easy access to blueprintable delegates in the specific components of my plugin, broadcasted by these avoidance events.

          P.S. Now I'm also thinking of adding an asynchronous node for blueprint nodes, similar to a standard MoveTo, so that you'll no needed to bind your events to the plugin's succeed/failed delegates. But that's not relevant if use plugin's Behavior Tree Task node, so not a BP's-one.

          Comment


            #6
            Originally posted by Astartis View Post
            Insta-buy in case of dynamic avoidance system.
            Read my comment from above. Thanks.

            Comment


              #7
              Very interesting plugin, but would be helpful to see some performance comparisons with numbers, esp. with a larger number of characters (20-50).

              Having a well-optimized dynamic avoidance system would push this into insta-buy category indeed, not 100% happy with what can be achieved with existing solutions.

              Comment


                #8
                Originally posted by Vallynne View Post
                Very interesting plugin, but would be helpful to see some performance comparisons with numbers, esp. with a larger number of characters (20-50).

                Having a well-optimized dynamic avoidance system would push this into insta-buy category indeed, not 100% happy with what can be achieved with existing solutions.
                I did these comparisons. There are pretty random average peak perfomance difference between using this system and using standard MoveTo - from ZERO to 2ms with 100 actors on the level on my overclocked to 4GHz Intel i5-3570k CPU - where all this actors are moving on a long and complex path with hundreds of nav points (in NavPath) on it and where the goal (target actor) at the end is constantly moving and so spline path are constantly updating. So it's a bit random every time I run profiling tools.

                So on my hardware I got from 0 to 0.02ms of average peak performance degradation per 1 actor with this kind of stress testing and compared to standard MoveTo. Also it's occurs when there is a rebuilding of the path are happend. And if you're interested - to pathfind I use is multi-threaded asynchronous tasks from the navigation system, but to build a spline path based on a finded NavPath - I use a regular game-thread methods, but at the beginning I used synchronous pathfinding and it's cost me additional ~0.05ms per actor on every path update event, which is a lot - so I moved to a asynchronous tasks.

                P.S. It was a couple of months ago - the Marketplace's review process is not fast tho, so now I have a brand new PC with an overclocked Zen+ 2700x CPU and if you want - I can do another profiling test on it. Also in the future, I thought to do a perfomance profiling tests on couple of low-end mobile devices which I have, and if needed additional optimizations for it, but this kind of task is def not for now - so you'll see it at my roadmap and I may (or may not) do it in the future.

                Comment


                  #9
                  Thank you for the reply.

                  It'd definitely be interesting to see how these numbers compare to results on lower end devices - developing a game for Switch here so have to be cautious.
                  In any case, will be keeping an eye on this plugin!

                  Comment


                    #10
                    Thanks. I didn't worked with mobile devices so I can't do this comparison just right now, but will do in the future - next month I hope.

                    Comment


                      #11
                      For those who are interested in whether it works with terrains and not just flat surfaces - this is testing with the scenario of extreme level-design: https://youtu.be/tySkZnodvLo

                      Comment


                        #12
                        some time ago i saw something similar: https://www.unrealengine.com/en-US/t...the-occupation you are using the locomotion system 3, you can do something about look head in direction of the next path point? Will be more natural if have this feature, great job by the way, unfortunitly i will wait for some sale event to buy this amazing asset, is too bad live in Brazil everything is expensive our economy sucks.

                        Comment


                          #13
                          Originally posted by LucianoJacomeli View Post
                          some time ago i saw something similar: https://www.unrealengine.com/en-US/t...the-occupation you are using the locomotion system 3, you can do something about look head in direction of the next path point? Will be more natural if have this feature, great job by the way, unfortunitly i will wait for some sale event to buy this amazing asset, is too bad live in Brazil everything is expensive our economy sucks.
                          Hello! No, my approach & result a bit different. You can do you own code in your animation instance to make the head look at the direction of anything you want at the levels, but no - you can't get info about next point on path from this plugin if you asked about it. If one more person asks for it, I will add this feature in the next minor update. And I live in Russia so I understand that the lack of regional prices in the Marketplace is a problem and so I also don't buy anything without discounts too because of the bad economy.

                          Comment


                            #14
                            Hello. I want to thank all my customers for buying this plugin, for the feedback you gave me and for the positive ratings! Also I want to mark that the roadmap was finally updated so now it has something to show you, and after the few bugfixes, I'm getting to work on the first update of the core functionality - asynchronous move to node: this the first new feature is based on the feedback that I got from you, and will be done in the very near future, but I guess will be downloadable only by the middle of next week

                            Comment


                              #15
                              Asynchronous blueprint MoveTo node was added, update is already avaible!

                              Comment

                              Working...
                              X