INTRODUCTION

Implementation to your project

1. Add BPAC_GatheringComponent to place of your choice (Character or PlayerState).

2. Add Interface (BPI_GetMesh) to your character class and pass skeletal mesh to get Pawn Mesh function.

3. Add Interface (BPI_GetComponents) to your Character Class and to Player Controller! and pass GatheringComponent to GetGatheringComponent function. Inside project i commented those functions if you find it is problematic how to pass component.

4. Add DT_Gathering_System_GameplayTags to Project Settings/GameplayTags/Gameplay Tag Table List.


PROJECT OVERVIEW

About

This system allows developers to add numerous types of resources, with varying levels and enchantments, as well as requirements to "Gather" them, it also manages gathering tools,durability and other necessary interactions for that sort of activity. Furthermore, the product has a BonusGame component that may provide the player with extra resources. Everything was created with adaptability and flexibility in mind. It only takes a few clicks to implement and add new features.

Product support MULTIPLAYER.


UE Marketplace Product Link

Gathering

Find the tool and gather resource

Bonus Game

Appear randomly while gathering (Chance can be determined)

Multiplayer Gathering

Multiplayer preview

Bonus Game Multiplayer Notification

Multiplayer preview

PROJECT OVERVIEW

Classes

This section will shortly describe all important classes, as well as their public interface.

BPAC_GatheringComponent

Gathering Component main job is managing gathering accesibility ( GameplayTags ), currently using tool or animations that can be assigned per resource type.

TypeNameDescription
Anim MontageGatheringCrystalMontageMontage to be used, while using Crystal Tool
Anim MontageGatheringStoneMontageMontage to be used, while using Stone Tool
Anim MontageGatheringGoldMontageMontage to be used, while using Gold Tool
NameGatheringToolSocketNameSocket to which tool should be attached

BP_GatheringResource

Main Actor class for any type of resource. Contains logic for interactions, initializing effects and meshes. Data like mesh, sound effect or min/max gathered resource are filled via DataTable.

TypeNameDescription
FloatVFXBoundSizeAdditional size to enchantment VFX
FloatMultiplicationGatheredBonusMultiply gathered resource
IntFlatGatheredBonusFlat additional gathered resource
EnumResourceNamesType of resource to match row in DT_GatheringSystem
IntOverrideEnchantmentIf -1 do nothing other way override enchant
FloatNotificationWidgetCooldownTimerCooldown of Can't Gather notification widget in seconds.

DT_Gathering_Resource

DataTable connected with class

TypeNameDescription
EnumNameType of resource, to easier identify. Should be same as row name!
StaticMeshStaticMeshStatic mesh that represent resource
ClassDestroyableMeshDestroyed mesh class once resource is destroyed
Map Int | FloatEnchanment/ProbabilityProbability of each enchantment tier
GameplayTagTagToGatherGathering gameplay tag required to gather this resource
IntMaxHealthMax health of this resource
IntBaseGatheredAmountBase gathered amount e.g 5
IntDeltaVarriationAmounte.g 2, if base is 5 possible amount will be range 3 to 7
IntResourceTierResource Tier ( Don't mistake with Enchantment Tier which probability is determined in Map)
SoundBaseOnHitSoundSound that will be played on hit received
SoundBaseOnDestroySoundSound that will be played on resource destroyed
Texture2DIconImage represetnting item in inventory

BP_GatheringTool

Main Actor class for any type of gathering tool. Tool trace for interactions, managing durability, contains gather acces tags, meshes and pickup logic. Data filled from DataAssets

DA_GatheringTool

Data Asset connected with class

TypeNameDescription
EnumGatheringTypeType of resource
GameplayTagGatheringTagGathering acces tags will be added once tool is in use
StaticMeshStaticMeshMesh representing the tool
NiagaraSystemVFXNiagara system floating around mesh
IntDurabilityBase durability of tool
Texture2DIconImage represetnting item in inventory

BPAC_BonusGame

Component responsible for managing all stuff related to game. Spawning widgets, game speed, bonus rewards etc. Can be easly add to any actor for BonusGame.

TypeNameDescription
BoolTurnGame ON/OFFShould game be even consider to play
FloatChangeForBonusGameChance for bonus game to occur
FloatGameSpeedSpeed of the played bonus game
BoolRandomPointEveryGameShould game randomize desired hit point every instnace
FloatDesiredStopValueIf RandomPointEveryGame is false, this value will be used as hit point reference
IntGameTimeMaximum(S)Maximum time in seconds, that bonus game will be running without player reaction
FloatRewardLevel4Bonus game value ( e.g multiplication of resources ) based of result
FloatRewardLevel3Bonus game value ( e.g multiplication of resources ) based of result
FloatRewardLevel2Bonus game value ( e.g multiplication of resources ) based of result
FloatRewardLevel1Bonus game value ( e.g multiplication of resources ) based of result
IntStepsSteps for calculating the result of the game
UserWidgetWidgetIndicatorClassWidget indicator class that appear on top of player head, once game started for every player around him
FloatIndicatorWidgetHeightHeight of which indicator should be spawned

FAQ

Questions and answers


Important Notes

Notes


Inventory system in this project are only for presentation purpose


Product compatible with UE 5.0 +


Product design structure may change in time as i grow as developer and decide to remake the project, but the core idea will not change, just implementation