Discussion about inventory system and the need to create a plugin to remove weapons from ShoterCore (UE 5.4)

In the standard inventory system of Lyra, in ShooterExplorer, the dependencies of ShooterCore make the project reliant on it. This complicates the creation of an experience similar to games like Escape From Tarkov, Dark and Darker, and others, where buying and selling items occurs in the lobby, as the inventory experience depends on being in the match. To address this issue, I developed the LyraInteractionManager, which manages the item system and keeps ShooterCore cleaner by containing only character-exclusive items. Thus, ShooterCore now receives the dependencies from LyraInteractionManager, unlike the previous model where ShooterExplorer depended on ShooterCore.

This new model allows different experiences to share generic items, such as healing, ammunition, weapons, quest items, among others.

Of course, if I had written all the code in the base project, the result would have been better. The goal was to assess whether it would be possible to implement everything using plugins, but I encountered many problems, as Lyra still does not support this type of approach.

Moreover, I will face difficulties with the server and client, as I would need more hardware to simulate multiplayer and perform more effective debugging, and I do not plan to acquire new equipment at this time. Ideally, I would create a “Server Experience” or “Shooter Server” to simulate players, modifying items, health, and conducting various tests to gain a broader understanding of when items appear and who has each of them. I leave this suggestion for future updates.



The inventory adopts a “Click and Go” style, where you simply click and the action occurs. This system would work very well for mobile devices, and I also appreciate its use on PC, but it does not adapt well to consoles.

I do not recommend using this approach in professional projects, as there are several bugs, the ammunition functionality needs fixing, and there may be other errors that I have not yet noticed. If you decide to use it, do so with caution. Intermediate knowledge of C++ is required.