Jump to content

zorrobyte

Member
  • Content Count

    362
  • Joined

  • Last visited

  • Medals

Everything posted by zorrobyte

  1. Overview and Goals To create a addon and script to automatically load balance AI groups between localities that is compatible with every major addon/script. Locality can be defined as any available computing source such as the server, clients and headless clients. Automatically is defined as with no user intervention or code changes to other mission addons/scripts Why? I've been interested in AI performance in Arma for quite some time (see here for a document I authored a year or two ago) and would love to see the rebirth of CooP in Arma 3 as a popular gamemode. ZBE_Cache is my attempt at the most addon/script/mission compatible caching module and has been successful in terms of popularity. How? Well, here is my scratch space while I work on a proof of concept. Ideas/suggestions/improvements welcome! WIP FSM: Misc Notes: AI are transferred back to server on client disconnect How is AI peformance on clients with poor ping/bandwidth? How is server netcode/desync with high amounts of AI? What is the "maximum" number of AI at a specific playercount even if offloaded to multiple HC? Should ZBE_AILoadBalance focus on only HC offloading or include connected clients/both? Would publicMessageServer be better for efficency to report FPS? If so, how to implement? Are there any compatibility issues with setGroupOwner regarding other scripts/addons? - edit, seems eventhandlers break Impulse 9 reported that AI's FSMs will reset upon locality change which can have jarring effects if players are near, as AI will act strangely.
  2. zorrobyte

    HETMAN - Artificial Leader

    Interesting, I did not and will try here shortly. Thank you.
  3. zorrobyte

    HETMAN - Artificial Leader

    Hmm seems to work perfectly except for one thing, excluded units are not triggering attack missions for HAL. Let me explain a little. I have 5 groups and a leaderHQ (all synced and using RydHQ_SubAll = false; RydHQ_SubSynchro = true;). I have RydHQ_ExInfo = true; and the other recommended options on, such as taken and ForceAAO. I have enemy groups across the map, not controlled my HAL. Only units synced to leaderHQ can "trigger" attack missions (as in reinforcements). If I sync my player unit to leaderHQ and teleport to enemy, HAL sends reinforcements. If I am not synced to HAL and teleport to enemy, HAL doesn't care. I may have the wrong idea as for how RydHQ_ExInfo = true; works and if it is designed to account for enemy threat from units not controlled by HAL. As I love donating to you Rydygier, I am offering $20USD bounty for this functionality in some manner if feasible. I am happy to upload repro mission and document requested functionality if you desire.
  4. zorrobyte

    HETMAN - Artificial Leader

    I wonder how easily one could setup HETMAN as a "reinforcement only" module? Instead of capturing AOs, HETMAN controlled AI idle/garrison around leader and are sent as quick reactionary force as detected by non HETMAN controlled AI. I am aware of the knowsabout for non included AI but how to disable objectives. Any input Rydygier before I start digging into the code? EDIT: I suppose what I could do is set RydHQ_RapidCapt = 0 and create one custom objective where I'd like them to idle.
  5. This is the problem I set out to solve. I've learned much about locality and scripting today and wish to share: Remote units that are enablesim false are pretty much invisible to local AI This script only has one very specific use: Server+ONE HC with players NEVER being enablesim false on locality running AI. Someone could take this idea and run with it and have a nice specific solution to remote AI performance issues. It's very important for me to test things further before releasing them as "complete", even if I'm super excited to get it out there & get feedback. I like to think that the Arma community are tinkerers but I wouldn't want to waste somebody's time that just wanted a solution and wouldn't tweak/test the code. For those interested, this is what happens between two groups of AI each on their own headless client with each other's group enablesim false on each other's locality (also note that the player is enablesim false all but 4 times a minute on AI's locality): http://youtu.be/U1k-Omg5eUI I'm abandoning this specific script/solution and will return to work on ZBE_Cache and a AI distribution method. If anyone finds this thread and benefits from it, it was worth the effort :bounce3: License: As this specific script does not do what I have intended it to do, I am re-releasing it as public domain so others can learn from it without any restrictions. https://creativecommons.org/publicdomain/zero/1.0/ Download FSM version (for educational purposes) Download V1.1 Download updated SQF V1.2 version (with trigger/condition fix, for educational purposes) https://www.dropbox.com/s/1x39ntzo0r8217y/zbe_aiDistributionv12.7z?dl=0
  6. I just thought of a solution, if it works. setPOS is global so if it works for remote units that are enablesimulation false'd then triggers/conditions would work. Another potential would be to enablesim/disablesim every cycle to update pos without additional packets as the remote units are still sending location updates via network to local. Eventually I'd like to combine cache, this and AI load balancing into a single package for a AIO solution but much testing needs to take place to be sure things are working as advertised ;) EDIT That's the solution, I can just enablesim once a cycle http://youtu.be/jXCo4es57N4
  7. Not dumb at all, it *should* work in Arma 2 OA as the commands used are in A2. This is not all in one and should work just fine with ZBE_Cache, I decided to release separately as it's experimental. This was a test in ZBE_Cache. Units enablesimulation false can still receive damage and position would be updated by remote locality. http://youtu.be/kq-7tolEB3w?t=33s It's unknown how local AI react to remote cached player units as of yet, I'll test that now. Interesting, thank you. It would be very useful if BIS introduced a Physx command to enable/disable (to fall back to old simulation model from A2) - carx -> car for example. The remote AI are still sending network position updates, it's just the the position isn't being updated for local objects. setPOS wouldn't work as the command is global (or would be very hacky) and I could create "ghost" gamelogics for example and attachTo remote unit or something.. but the global variable would already be used. Ugh, headache.
  8. Wow, I'm astounded at the simplicity and elegance in your solution. You have inspired me to read more of my Pragmatic Programming book I picked up last week and I had no idea about the local command. Rockhunt rewrote the FSM to make it more efficient and reliable. The FSM is addon/script agnostic and should provide some benefit (in theory) to any Dedicated Server running any mission with the largest gains on severs using AI and HCs.
  9. Garbage collection should still work as the object is deleted.What you could do is set the air empty vehicle caching param to something higher with little performance impact as I doubt you have 100s of empty aircraft hanging about ;) Wouldn't be hard to do, I had plans for this but the old "AI were not cached in vehicles" bug made me lazy. Consider it on my to-do.
  10. That is due to using TADST or having an invalid server.cfg. Read the BIKI: https://community.bistudio.com/wiki/Arma_3_Headless_Client This needs to be in your server.cfg: headlessClients[] = {"127.0.0.1", "192.168.1.100"}; // list of IP addresses allowed to connect using headless clients; example: {"127.0.0.1", "192.168.1.100"}; localClient[] = {"127.0.0.1", "192.168.1.100"}; // list of IP addresses to which are granted unlimited bandwidth; example: {"127.0.0.1", "192.168.1.100"}; Correction to the guide: With new setGroupOwner, all appear to be transferred other than eventHandlers in latest dev branch. More testing is needed but I have verified for myself that: waypoints and synchronized objects are maintained. The pitfall is that the FSM state is not transferred meaning that the AI will "reset" behavior. An example of FSM reset is imagine a enemy AI group engaged with a "danger" variable of 2. Upon transfer, the AI will start from the beginning of the FSM with a danger value of 0 (I have no idea what the actual danger variables are but whatever). A workaround would be to only setGroupOwner for AI away from player, feel free to borrow code from ZBE_Cache as it is under CC-BY-SA as I do this to determine when to cache AI.
  11. http://feedback.arma3.com/view.php?id=22676 It's important to note that the AI still simulates as expected (as in they don't freeze for connected clients), as only the server stops simulation for AI in this test with enablesimulation false. This works in inverse as if you run AI only on server and enablesimulation false those on HC, FPS increases.
  12. Should be as easy as *unit* setvariable ["ZBE_HC", false, true]; once I get this out there HC performance issues I need to account for: http://feedback.arma3.com/view.php?id=22676
  13. Important note about HC, performance may not yet be worth the effort unless steps are taken to minimize impact of AI simulation. See: http://feedback.arma3.com/view.php?id=22676
  14. Important note about owner and setGroupOwner on latest dev: owner is broken as is returning non-whole numbers leading to setGroupOwner not working and rejoined HC has incorrect clientID. BIS is aware and engaged: http://feedback.arma3.com/view.php?id=22649 http://feedback.arma3.com/view.php?id=22653 Excellent guide by the way!
  15. v4.6a Improved performance of sleep state condition to minimize operations per frame Download
  16. I'm planning to hook this into ZBE_Cache so AI do not change localities unless cached so players do not notice the effect. Even with HC, caching is still mandatory as: 144 groups on server = 4 server FPS 144 groups on server and HC joins = 4 HC FPS (even with all AI still on server) 144 groups are transferred to HC from server = same old 4 HC FPS Strange thing is, one can enablesimulation false on HC for remote units (units on other machines but HC) and the FPS improves dramatically so there are potential fixes in script - I just wish Physx was handled better on HCs as it isn't needed for remote AI. It's coming along:
  17. I'm trying to use the new setGroupOwner command and I'm failing to find/get the HC's clientID. I created a Headless Client game logic, configured my server.cfg and all looks correct (headlessclient does not show in player's list so I know it's being autoassigned). My Headless Client game logic is named h1 I start server, HC and mission loads, HC is assigned automatically I run diag_log (owner h1) on server and check RPT RPT shows "1" - which is the server's clientID, not the HC syntax for setGroupOwner is the same as setOwner: object setOwner clientID What am I doing wrong? ---------- Post added at 04:31 AM ---------- Previous post was at 03:45 AM ---------- Solved it, the Headless Unit gamelog MUST be set as playable!
  18. I'm attempting to use setGroupOwner however I cannot find the clientID of the HC as running (owner *name of headless client game logic*) = 1 which is the server. (http://forums.bistudio.com/showthread.php?188679-Returning-clientID-of-Headless-Client&highlight=headless+client+clientid) Is this just me or am I using owner incorrectly? **SOLVED** The HC gamelogic MUST be playable, DOH
  19. You are right, those params are for empty vehicle caching distance. As if now, there is no param for manned vehicles and relies on the generic AI caching distance variable. Great suggestion though! **NEWS** I've successfully setGroupOwner'd an AI group to a client machine and the group maintained waypoints AI Load balancing has been moved to this thread to keep this one clean and focused on caching.
  20. I've yet to do a proof of concept to be sure setGroupOwner transfers waypoints, etc but I did start to plan out the loop. Logic is: What type of machine am I running on? If Dedi then lowerLimit = 40, HC lowerLimit = 30, Client = 45 (TBD actual amounts) What is my average diag_fps over 30 seconds? If the averaged diag_fps is lower then lowerLimit then let's try to transfer the AI group to something else that can handle it Priority to transfer to: HC then the best connected client As of now, setGroupOwner can only transfer AI from dedi to client/HCs and from clients/HC to other clients/HC (cannot transfer anything to dedicated server - vote here). AI that are on clients who disconnect are already transferred back to server, has been this way at least since Arma 2.
  21. zorrobyte

    HETMAN - Artificial Leader

    I love Herman as well Kremator ;) . I've been away for some time but can't wait to try out the improvements. Have another beer Rydygier: Paypal 9MR31181XH849223G
  22. Holy crap, it's happening: "Added: setGroupOwner script command for changing the locality of a group (setOwner will no longer work for objects with AI)" This is an old document I authored a year or two ago, I may be able to start looking into moving around locality of units which is super exciting! Let me get my dev tools reinstalled and get back to work.
  23. Project Goal Addon/script based automatic AI transport module for dynamic movement/logistics on the battlefield. What problem am I trying to solve? Group A is an infantry unit with a fresh waypoint several clicks from current location. Stock A3, the AI will run until fatigue sets in then continue sluggishly moving along. There may be empty vehicles nearby, close technicals and an airfield full of aircraft yet the group will continue on foot. Overview and functionality With ZBE_Logistics the AI are aware of close empty vehicles, nearby friendly vehicles with cargo capacity for their group and friendly air assets that can transport their group to the objective. How? Each group is monitored for distant waypoints. Once a group with a distant waypoint is found, an FSM is ran on the group to evaluate available transport methods. This can be empty vehicles, friendly vehicles near the group and air assets available per side. If no logistical support is found, the FSM continues to check along the way until the group is close to the end of the waypoint. If found, transport is assigned and the group is transported to the waypoint. Wishlist listed here are the "dream" goals for the project: Optional ability for players to provide logistical support with cargo and air assets to AI and other players (think Arma's support gamemode) Ability for AI<->AI sling load and transport of vehicles (could be very difficult to implement reliably) AI fastrope dismount during certain situations Optional custom sounds for AI radio chatter regarding logistics Misc notes Find nearest safe location and spawn hidden helipad for safer helicopter landings Parameter to find a safe LZ at destination (some distance from final WP if enemies in area) One FSM per infantry group or one fsm per plus FSM for available manned transport methods? How to handle dumb AI driving, what if assigned transport reverses and drives into a rock repeatedly on the way? If an AI finds an armed vehicle, in which conditions should they keep ahold of it and use it at the objective? Should the AI attempt to mount static weapons once they reach the AO? If so, should the AI disembark from the static weapon once they get a new distant WP? Will be ran from server only Available aircraft should be included as transport by using setvariable (or global param) Available empty vehicles should be included by default unless mission maker setvariable to exclude (or global param) Available friendly ground vehicles should be included by default unless mission maker setvariable to exclude (or global param) Document code and setup a Wiki Timeline and expectations This will be a long term, major project for me. I cannot guarantee a timeframe or if the idea will even work. Posting on the forums will help me stay accountable to my goals and collects useful feedback along the way. License This as with all of my projects (that permit) will be under a CC Attribution-ShareAlike 4.0 International license. Free to use, adapt and transform as long as you give credit and any modifications are under the same license. Don't like my work or something my projects do? Open it up, tweak it and rerelease - the whole community benefits.
  24. It's just me running the site after I got a crazy idea to start a web hosting service for addon makers. I try to approach it in the sense that it is already a "viable service" so that I take it seriously, hold myself accountable to my goals. Overall I just want a platform, a canvas for others to create that is free and open to showcase their work. I truly do appreciate your feedback, thank you!
×