I have made first steps into modding ARK and working in the unreal engine. I have made a set of thatch items which can be put down and picked up not unlike many of the other mods out there. However on our dedicated Server putting down several of the foundations and then picking them up again results in the server ‘hanging’ it does not crash it drops cpu usage to 0% and just sits there. After testing it does seem to be related to our mod and more specifically to picking up the structures. The pickup routine doesn’t seem to have anything that might cause this, but as I am not entirely cognisant of how everything works I just don’t know where to start.
I have attached the Pickup Graph that I use for all the structures… if someone who perhaps has more experience could point me in the right direction I would be very appreciative. note I have been unable to cause any sort of issue with this MOD and Single PLayer or Hosted Multiplayer, but on a dedicated server we can hang the server guaranteed.
First of all to make a structure have a “pickup” function the easiest way is to just set the “pickup gives item” value in the default settings. No need to graph really.
On your graph: Try putting the “Destroy Actor” at the end. At the moment you are destroying the structure but then want it to run additional logic.
I will give that a try. But this all works fine on single player, and on hosted multiplayer, however on a dedicated server hosted on Host Havoc picking up the items seems to cause the server to choke. And its not consistent so it is very difficult to determine what exactly the parameters are for this issue.
Ok I tried what you suggested and moved the Destroy actor to the point just before the Force Net update. And it is still doing exactly the same thing. In Fact a little more info, it doesn’t crash the server immediately, it seems that It can be stable for Several minutes up to 10 and then the server will crash…so I just don’t know where to look. The fact that I cannot get Single or hosted multiplayer to crash and I have tried checking the run dedicated server option in the editor to see if I can reproduce the issue… still no luck… but if I remove the MOD from the server the crashes stop… (And while I agree the easiest way to make something pickup able is to fill in the Pickup gives item option it seems to make structures instant pickup able which is dangerous.
Before force net update is still not at the end. If you destroy the actor before forcing replication there is nothing to update. In fact you probably don’t need any forced replication there. If it isn’t causing a crash immediately i also wouldn’t limit the error to that specific graph if you have any other bps in your mod. Working in sp or hosted mp(did you try hosted with an actual client? otherwise it is basically the same as sp) does not really say anything since dedicated server is just working differently. You can get away with a lot of things in SP/hosted MP if there is no replication involved which will just crash a dedicated server.
About the instant pickup: there are several ways to avoid that, you should be able to find examples searching the forums. Add an empty dummy entry with higher priority or change the pickup multiuse entries priority so it is not at the first position anymore.
Mezzow, aren’t you forcing the net update because you have destroyed the actor? As for Graphs that is the only one I have done for this mod. Still getting my unreal legs under me (and apparently still have some work to do there :P) I was wondering if I could overload the Multiuse Pickup entry with a delay, that is essentially all I am looking for here is the delay. The devs must have put something in for delaying the pickup routine as several objects in normal game have it. Just made it a little obscure. Thank you for your feedback, it is very helpful!
GetMultiUse is client-side, TryMultiUse is server-side. The call to destroy an actor by the server, is automatically replicated to all clients.
In your use-case, the net update is not needed as you’re not modifying the structure in any such way that all clients need to be informed of it immediately - as mentioned the destruction is handled by the server and DestroyActor is effectively the last node to ever get called for, and by(publicly), the server.
To handle the pickup, just set the pickup class in the defaults - as mentioned by Mezzo, then iterate through the MultiUse array in GetMultiUse for the Use Index of 203, then you can modify the priority and/or add an activation timer to the entry.
Woeful, Thank you for pointing me in this direction. I have tapped into the std multiuse pickup and yes the issue went away. I appreciate all the input and I learned some very useful information, thank you!! Problem solved