[USER=“434”] XaVIeR[/USER] any plans to make this plugin network replicated ?
Networked pooling is not a good idea.
Maybe on a v2, making use of replication graph, but replicating each pool component is terrible.
Replication graph didn’t exist back then, I have to make tests using it, but this year I am out of any free time to do it.
[USER=“434”] XaVIeR[/USER]
Questions:
-
If my AI is network replicated and I spawn them using your pool system. My AI should appear in multiplayer. Which part of the system won’t work in multiplayer?
-
In the screenshot below, I have a master AI character pool class and it has 4 child characters. How can I do this with one pool component (Master Zombie AI) added to BP_Spawner without creating individual pool component for all 4 children.
The Spawn from Pool → Return to Pool mechanism is not networked. You would have to RPC every time your pawn is set active by the pool in Server.
Also the pool component doesn’t control networked traffic.
For example if you have a pool of 100 pooled projectiles, that’s 100 actors replicating in your network traffic and that’s horrible.
Networked pooling should disable all traffic for actors in pool that is not active.
How do people work with projectiles in multiplayer shooters? They have to be pooled somehow…
projectiles spawn and are destroyed on collision… if it’s hitscan bullet then there’s no projectile, just a hit message to clients.
I doubt that’s how they do it, because when you spawn/destroy bunch of actors GC chokes on it and performance degrades momentarily.
[USER=“434”] XaVIeR[/USER] You didn’t answer my second question with the screenshot. Can you help me with that please?
You have a shared pool component for that.
The shared pool supports multiple classes.
But shared pools are for AActors, characters not implemented.
[USER=“434”] XaVIeR[/USER]
Finally got around to download the plugin, yet again :o Copied “ObjectPool” folder from launcher’s engine to my project’s Plugin folder. Deleted Binary and Intermediate folder. Ran my custom source build of UE4 and loaded my project. Got the following (as expected):
I pressed Yes:
Yes again and it got compiled (showed up in Plugins, etc.)
After I closed UE4 and then restarted it (reopened my project), I got this again:
Output log window showed this (in yellow): LogTemp: Warning: :: Initializing Object-Pool Plugin.
When I go to Plugins, plugin is there and enabled. When I right click in the Content browser, I see respective classes. I assume it’s going to be working, but it’s annoying to get the popup window every time I load my project.
Why is this happening and can it be fixed, please ? (if you can tell me what to tweak in the code and where, I can just probably follow the instructions to fix it locally).
4.24 plugin will not work on engine other than Unreal 4.24.
If you have 4.25 project you have to download plugin for Unreal 4.25.
Also if you want to move source to project folder then you have to uninstall the plug-in installed on launcher.
I am using plugin from 4.24.3 launcher on 4.24.3 Oculus fork (source built). Shouldn’t be any incompatibilities, since I also use other plugins the same way and get no pop-up warning on launch.
Why would I have to uninstall launcher version of plugin when source built engine is on a different HDD and in a different folder than the launcher version ?
To avoid possible conflicts.
I’ll do that, but if I still get this pop-up, then what’s the next step ?
I would then assume it’s a bug in Unreal, that popup shouldn’t happen when binaries already exist (I ve never seen that happen by the way).
Well, what I had to do was this - I removed “engine version” like from ObjectPool.uplugin and I no longer get the pop-up (engine source builds, depending on the fork, have weird version “number”, that that string in the .uplugin file will never match anything but launcher’s version of UE4)
[USER=“434”] XaVIeR[/USER]
This doesn’t seem right… What am I doing wrong (I am working with my gun actor in the video)?
To generate input pins you have to specify the ‘Pooled Class’ on the node before connecting anything.
It will reject any connections until you define the target class, because the reflection code needs a direct pointer to the class to build the pins even though there is already class info in the pool component.
So basically I need to specify my projectile class to be spawned (in the spawn from pool node) and then connect pool component to the node ?
Yes. Wasn’t like that, the node, but I did this to shield against possibility of a silent bug. Not required in c++