[SUPPORT] ByteBombs Pickup System


Byte Bombs Pickup System Marketplace

This pickup system can be used with various project types and needs.

Need a way to communicate key items, weapons, power-ups, power-downs, stat changes, etc… This system covers it.

It’s even able to manage activation and deactivation of gameplay effects, that’s built right in.

Handles multiple mesh selections either skeletal or static meshes by IDs from a master data table.

This pickup system is multiplayer ready out of the box, with minimal setup.

Types of Pickups:

  • Mesh Spawn: Used to spawn and attach meshes to players by socket, currently supports Actor Classes, Static Meshes & Skeletal Mesh.
  • Stat Mod: Used to modify player stats, add or subtract by a value for the player that picks it up.
  • Key Item: Used to give players key items for gameplay events. Currently has an actor to check if the player has the required key item.
  • Boost: Used to modify a stat or value over a time frame. Currently, there are 4 types of boosts, Speed, Jump, Player Stat & Random Player Stat.

Features:

  • A lightweight system with easy integration into any project.
  • All blueprints are easy to follow, commented, organized and variables have comments as well.
  • Example pickups provided, more to come over time.
  • Single-player & Multiplayer ready, as well as optimized!
  • Fully customizable, from types, pickup spawn orientation, gameplay effects, post-activation logic, and auto re-spawn handling.
  • 12 Static Meshes [2 LODS]
  • 1 Skeletal Mesh [Rigged to Epic Skeleton: Yes Scaled To Epic Skeleton: Yes]
  • 2 Master Materials [Parameterized]
  • 9 Material Instances
  • Sounds Cues : 2 [Activation & Deactivation]
  • 1 Master Data Table keeping all your pickups consistent through the project.

Texture Sizes:

  • 2048 [4]
  • 128 [1]

Number of Blueprints: 9

Number of Meshes: 13

Number of Materials and Material Instances: 11

Number of Textures: 5

Enumerators: 9

Structs: 6

Data Tables: 1

Sound WAV: 2

Input: (Optional: 1 Action Mapping for Interaction Input)

Network Replicated: (Yes)

Supported Development Platforms:

Windows: (Yes)

Mac: (Yes)

Documentation: Link

Version 1.2 (Submitted)

  • Network Optimization
  • Instanced Pickups: Allows server and all clients to have their own version of the pickup to interact with.
  • All pickup examples are instanced. New Instance Pickups section in the Demonstration map which showcases this feature.
  • Instanced Pickups are integrated into the base pickup class and only require one event override for instance logic to function.

Hey,

Bought your pack today for a learning resource and it was a very good price for a replicated pack, so thank you!

Some things to note when I create a project from this it prompts me that I am missing 2 plugins (can’t remember the names exactly) however you can disable them and the pack works fine but you may need to look at removing that.

Just a question, is this the most authoritative way of dealing with pick ups and power ups? Or could more work be done to make this more authoritative?

Something I would like to see in the future is collection pick ups. For example a platformer in which you have to collect all the collectibles in the map and store them in your character save. The collectibles could show 2 examples;
1.) Individual progress: You pick up your collectible item and your multiplayer clients can still see and collect the item for themselves. So the net object is only relevant to 1 client.
2.) Group progress: All connected clients can collect items and count towards a group progress. Maybe this is more out of scope because that data has to be stored somewhere other than a client for example a game state or the listen server saves it in there game save?

Again, thanks for your pack!

Thanks for supporting us!

Thanks for letting us know about the plugin issue, I will fix that issue then update it as soon as possible.

Yes, this is the most authoritative way of handling pickups in my experience. The BP_BaseBBPickup and BP_PickupCollisionCharacter communicate figuring out if this player can interact with it first then request any changes done by the server.

  1. If we have the interaction method set to touch, we just run the server interact pickup function in BP_PickupCollisionCharacter., which runs on the server.
  2. If we have the interaction method set to button press then in the player controller we have to ask the server if we can interact with the pickup.
  3. All pickup logic is handled on the server, once we interact with the pickup we then call a function called Pickup Logic, this can be overridden in all child classes for handling custom pickup logic.

I will look into adding Individual & group progress pickups in the base pickup allowing any child can have the option for group or solo progress.

Hey I’m having trouble figuring out where to write my custom logic for a pick up. It will pick up the item and respawn perfectly but I want to be able to call my code. You mentioned overriding function pickup logic in child classes. Any help would be appreciated.

There are two events that can be overwritten in the pickup child classes, one being Event Pickup Logic & Event Instance Pickup Logic. These events are where you’d put your custom logic.

Here’s the general overview of how the logic should be laid out. Instance logic requires one more step but is worth it in the end,

Event Pickup Logic -> Condition -> (Your Pickup Logic Here) -> Activate

Event Instance Pickup Logic -> Condition -> (Run on Server) Run Function On BP_PickupCollisionCharacter -> (Replicated None)Run Function On Pickup Class (Your Pickup Logic Here) -> Instance Activate

BP_BBPickup_KeyItem is a good example of the event flow.

If you need any more assistance let me know.