> For the complete documentation index, see [llms.txt](https://prismdx.gitbook.io/rsst/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://prismdx.gitbook.io/rsst/changelog/readme.md).

# Changelog

New updates and improvements

{% embed url="<https://discord.com/invite/uhQsw5GtTJ>" %}

{% updates format="full" %}
{% update date="2026-09-20" %}

## RSST v1.0

<details>

<summary>Assets changed</summary>

* BPC\_Buildingmanager
* BPC\_DXRadialManager
* BPC\_DXRadialSettings
* BPC\_Employee
* BPC\_RSSTCharacter
* BPC\_RSSTGameMode
* BPC\_RSSTGameState
* BP\_BusinessSign
* BP\_CardTerminal
* BP\_CheckoutTerminal
* BP\_NPC\_Employee
* BP\_ProductExampleFirstPersonCharacter
* BP\_RSSTSaveObject
* BP\_ShelfComponent
* BP\_StorageShelf
* BT\_Employee
* DA\_RadialConfig
* ENUM\_EmployeeTasks
* M\_DX\_RadialEntry
* MBP\_Checkout
* MBP\_Decoration
* MBP\_ProductShelf
* PDA\_DXRadialMenu
* Struct\_DXRadialAction
* Struct\_ProductShelfSave
* WBP\_BusinessSign
* WBP\_DXRadialMenu
* WBP\_DXRadialMenuEntry
* WBP\_EmployeeEntry
* WBP\_ManageBusiness
* BTTask\_Employee\_AddToShelf
* BTTTask\_Employee\_FinishCheckout
* BTTask\_Employee\_ScanAvailableProducts
* BT\_Employee\_LeaveWorld
* Struct\_Employee
* BP\_CashRegister

</details>

<details>

<summary>New assets</summary>

* BPC\_RSSTLabelManager
* BP\_RSSTLabelActor
* BPI\_RSSTCameraFocusManager
* BT\_Checkout
* BT\_Employee\_Idle
* BT\_Restocking
* BT\_StoreProductCrate
* BT\_TaskWarehouse
* BTTask\_Employee\_PickupCrateFromGround
* BTTask\_Employee\_PrepareWarehouseStocking
* BTTask\_GoToSelectedActor
* BTTask\_GoToStorageSlot
* WBP\_RSSTLabel
* SW\_RSST\_M1OnClick
* SW\_RSST\_M1OnPress
* SW\_RSST\_M1OnRelease
* SM\_RSST\_CashDrawer\_Drawer
* SM\_RSST\_CashDrawer\_Shell

</details>

#### Changes

Fixed a issue where you could click the buttons on the checkout card terminal widget before it had focus with the cursor/camera.

<details>

<summary>Changed</summary>

`BPI_RSSTCameraFocusManager`

`BPC_RSSTCharacter`

* ChangeCamera()
* ResetCamera()

`BP_CardTerminal`

* Added BPI\_RSSTCameraFocusManager
* Implemented focus events in event graph.

</details>

***

* Added a new interface to be able to Trigger OnFocus / OnLeave events when using the checkout camera. This is used to disable the keypad from being pressed when its not in focus. This interface can and will also be used for future needs.

<details>

<summary>Changed</summary>

`BPI_RSSTCameraFocusManager`

`BP_CardTerminal`

* Added BPI\_RSSTCameraFocusManager
* Implemented focus events in event graph.

</details>

***

* Fixed an issue when we exited the checkout camera that caused the character to pop in before the camera transition was completed.

<details>

<summary>Changed</summary>

`BPC_RSSTCharacter`

* New custom event: CE\_OnCameraLeave
* ResetCamera()

</details>

***

* Added the option to close / open the checkout using the radial menu.

<details>

<summary>Changed</summary>

`MBP_Checkout`

* Event graph -> ED\_OnInteract implementation.
* BPC\_DXRadialSettings -> Added new interaction.

</details>

***

* Added the ability to add persistent labels for shelves and edit them through the radial menu. These labels also automatically displays up to 2 product categories in the shelf. More than 2 will display "Mixed". When you add a label manually, that will overwrite the product category to display your custom label.

<details>

<summary>Changed</summary>

`BPC_RSSTLabelManager`&#x20;

* This handles all the label actors automatically and is added to the actor you want to label.

`BP_RSSTLabelActor`

* This is the visual sign for the label, you can add as many as you want to a BP and the Label manager will automatically update them.

</details>

***

* Scaled the business sign widget to have sharper text.

<details>

<summary>Changed</summary>

`BP_BusinessSign`

* Changed widget component draw size.

</details>

***

* AI Employees now have a new Warehouse task. This employee task will make the employees grab the ordered product crates and place them in a free storage shelf slot.

<details>

<summary>Changed</summary>

`ENUM_EmployeeTasks`

* Added the new task: Warehouse

`BT_Employee`

* Updated employee behavior tree to use sub trees.

`BT_Employee_TaskWarehouse`

* This is the warehouse work subtree.

</details>

***

* Improved how employees interact with the storage shelves. This will prevent the employee from storing the product crate in a storage shelf when having a different shelf as target location.

<details>

<summary>Changed</summary>

`BTTask_Employee_FindEmptyStorageSlot`

</details>

***

* Added the option to toggle to show assigned products.

<details>

<summary>Changed</summary>

`WBP_RSSTAssignProduct`

* New variable:  bShowAssignedProducts - Boolean
* Init()

</details>

***

* Config option for assign products to be able to assign all products even if they are assigned already.

***

* Added the option to instantly edit / enter build mode using the radial menu on a few placeable objects. This includes shevles, checkout and buildables.

<details>

<summary>Changed</summary>

`BPC_DXRadialSettings`

* Added the new interaction

Event graph -> ED\_OnInteractImplementation for the affected actors.

</details>

***

* Changed how the radial menu works. Now uses strings instead of indexes to handle the interaction. That way we can easily add / remove dynamic menu options during runtime if needed without indexing issues.

<details>

<summary>Changed</summary>

`Struct_DXRadialAction`&#x20;

* New variable: InteractionName - String

`BPC_DXRadialSettings`

* ED\_OnInteract Delegate: Updated variables.

`BPC_DXRadialManager`

* Server\_OnInteract

</details>

***

* Added opening animation to the radial menu.

<details>

<summary>Changed</summary>

`WBP_DXRadialMenu`&#x20;

* OnConstruct -> Play animation
* New animation ( FadeIn )&#x20;

</details>

***

* New configuration options that include gradient radial as well as an outline is now available for the radial menu.

<details>

<summary>Changed</summary>

`M_DX_RadialEntry`

* Implemented the use of outline color and radial effect variables.

`PDA_DXRadialMenu`

* New variable: OutlineColor
* New variable: bUseGradialEffect

</details>

***

* We are now able to update the text dynamically as well as text color when opening the radial menu. e.g. Employee worker radial menu will display green text on their selected work which is also displayed in the new menu subtext. The checkout will display the name of the employee that is assigned to that checkout.

<details>

<summary>Changed</summary>

`WBP_DXRadialMenu`&#x20;

* GetEntriesFromInteraction()
* UpdateSubText()

`BP_NPC_Employee`

* ED\_OnOpen from BPC\_DXRadialSettings

</details>

***

* Added a new check to player input ( can interact ) function to prevent certain actions while in build mode.

<details>

<summary>Changed</summary>

`WBP_DXRadialMenu`&#x20;

* ToggleUI -> Added CanResetUIInput check.

</details>

***

* Started using Sub-behavior trees to keep everything organized and easier to work with.

<details>

<summary>Changed</summary>

`Employee`:

* BT\_Employee
* BT\_Employee\_Checkout
* BT\_Employee\_Idle
* BT\_Employee\_LeaveWorld
* BT\_Employee\_Restocking
* BT\_Employee\_StoreProductCrate
* BT\_Employee\_TaskWarehouse

***

`Customer`:

* BT\_NPC\_Customer&#x20;
* BT\_Customer\_GetProducts
* BT\_Customer\_GotoCheckout

</details>

***

* Performance optimization for checkouts.

<details>

<summary>Changed</summary>

`BP_CardTerminal`

* Set tick mode to disabled if using cameras in checkout
* Implemented the BPI\_RSSTCameraFocusManager

`BP_CashRegister`&#x20;

* Removed skeletal mesh and added 2 static meshes.
* Animated with timeline from event graph.

`BP_CheckoutTerminal`

* Set tick mode to disabled if using cameras in checkout.
* Implemented the BPI\_RSSTCameraFocusManager.

`WBP_Checkout_Main`

* Added ED\_RedrawUI Event dispatcher.
  * HidePayment()
  * Event Graph -> OnConstruct
  * ClearList()
  * UpdateCost()
  * ShowPayment()
  * SetCheckoutStatus()

</details>

***

* Added the option to fire employees

<details>

<summary>Changed</summary>

WBP\_EmployeeEntry

* CE\_OnFired
* Added animation OnDelete

BPC\_RSSTCharacter

* Replication \[ Event graph] - Server\_FireEmployee

BPC\_RSSTGameState

* FireEmployee()

BT\_Employee

* New blackboard value: bShouldLeave
* BT\_Employee\_LeaveWorld

</details>

***

* Recorded mouse clicking SFX and added it to the template. ( `Recorded using RØDE NT1-Signature series microphone` )&#x20;

***

### Update notes

#### <mark style="color:yellow;">Checkout performance optimization</mark>

During testing I found that the checkouts was a bit heavy on the performance. As i want this to be as scalable as possible, this had to be addressed. I quickly found that the checkout screen ( `BP_CheckoutTerminal` ), the card terminal ( `BP_CardTerminal` ) and the cash drawer ( `BP_CashRegister` ) was the main issues.

The steps i took to optimize these are:

* The checkout terminal and card terminal widgets are now being drawn manually instead of constantly "updating / redrawn", even when nothing is happening. To keep the screen responsive while using it, we enable the tick mode to make sure the screen/buttons react to what we do visually when we enter the checkout camera, then we disable it again when leaving. The screen will still update when we are not using it, but only when it needs to.
* To get rid of the skeletal mesh performance overhead, the cash drawer is now 2 static meshes with a timeline for opening and closing. A new cash drawer has been included in the template to solve this.

<mark style="color:yellow;">Result:</mark>

New level using the "Basic" level template in UE 5.2

* Before: Using 33 Checkouts there is  <mark style="color:$danger;">`~9.14ms`</mark>  of `Tick Time` on the game thread.
* After: Using 481 Checkouts there is  <mark style="color:$success;">`~1.1ms`</mark>  of `Tick Time` on the game thread.

<figure><img src="https://723367471-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYlrLL31HFLEtzSTiHhqW%2Fuploads%2F22fWN5mch4yvI4DIgVPx%2Fimage.png?alt=media&amp;token=a2ee9597-91a2-49e4-a541-6437a47a8623" alt="" width="375"><figcaption></figcaption></figure>

<figure><img src="https://723367471-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYlrLL31HFLEtzSTiHhqW%2Fuploads%2FGc2dYoyQ3UEsn9ej06oy%2Fimage.png?alt=media&amp;token=303e73b7-a60f-44a4-82ca-2b47861b45b8" alt="" width="375"><figcaption></figcaption></figure>

#### <mark style="color:yellow;">Employees</mark>

I have done a lot of changes to how the employees are tracked and interacted with due to the fire employee mechanic. Previously we were using Indexes to sync the employee data between the game state and the employee actors. This is a bad solution that had to be addressed. Now we are tracking the employee components instead of indexes which creates a more consistent work flow and prevents indexing issues.

Following these changes i also had to change how the business manager widget is being updated. Instead of using RepNotify for this, we are now using multicasts and only updating the entry that was changed. preventing wierd behaviour with buttons etc. &#x20;

Custom actor support is also being added to the employees.
{% endupdate %}

{% update date="2026-07-14" %}

## RSST v0.99

<details>

<summary>Assets changed</summary>

* WBP\_ManageBusiness
* PDA\_GameConfig
* BP\_PriceTag
* WBP\_RSSTAssignProduct
* WBP\_AssignProductEntry
* BPC\_RSSTGameState
* WBP\_PriceTag
* WBP\_Checkout\_Main
* WBP\_Money
* WBP\_BillEntry
* WBP\_UpgradeEntry
* WBP\_ShopProduct
* MBP\_Checkout
* WBP\_HireEmployeeEntry
* WBP\_Product\_PriceChanger
* WBP\_StorageProduct
* WBP\_RSSTCardTerminal
* WBP\_BuildEntry
* BPC\_RSSTCharacter
* BP\_ProductSlot
* BP\_ProductDisplay
* BPFL\_RSS
* BP\_CustomerComponent
* BP\_DummyProduct

</details>

<details>

<summary>New assets</summary>

* WBP\_RSSTCategoryButton

</details>

#### Changes

* Alot of blueprints has been organized and commented.

***

* UE 5.8 has been tested and offers full compatibility due to the new changes.

***

* Added the ability to search in the shop UI

`WBP_ManageBusiness`

***

* Added a global currency variable that will allow us to change currency from the game config. e.g. $ -> €

`BPC_RSSTGameState`, `WBP_PriceTag`, `WBP_Checkout_Main`, `WBP_Money`, `WBP_BillEntry`, `WBP_UpgradeEntry`, `WBP_ShopProduct`, `MBP_Checkout`, `WBP_HireEmployeeEntry`, `WBP_Product_PriceChanger`, `WBP_StorageProduct`, `WBP_RSSTCardTerminal`, `WBP_BuildEntry`

***

* Fully implemented the option to assign unassigned products to a product shelf by interacting with the price tag radial menu.&#x20;

`WBP_RSSTAssignProduct`, `WBP_AssignProductEntry`, `BPC_RSSTCharacter`

***

* Fixed an issue where pricetags didn't update properly in some cases.

`BP_ProductSlot` , `BPC_RSSTGameState`

***

* Updated the space calculation functions to allow us to check space directly from the mesh instead of using the ISM.

`BP_ProductSlot`

***

* Solved the invisible products bug for product crates already existing in the world during standalone runtime using newer engine versions.

`BP_ProductDisplay` , `BP_ProductSlot`, `BP_ProductCrate` , `BP_DummyProduct`

NOTE:\
I expect this to be a complete fix and should never happen again.&#x20;

***

* Fixed a potential issue with the get unlocked products function. This has been reverted to a NON Pure function.
* Same thing with get upgrade from enum function. Reverted to NON pure.

NOTE:

All function calls has to be reconnected that was using the pure function.\
Easy way to do this is to right click the functions in BPFL\_RSS then find References in the global scope.

`BPFL_RSS` , `BP_CustomerComponent` , `WBP_ManageBusiness` , `WBP_RSSTAssignProduct`

***

{% endupdate %}

{% update date="2026-07-01" %}

## RSST v0.98

<details>

<summary>Assets changed</summary>

* BPC\_RSSTGameMode
* BP\_ProductSlot
* WBP\_BusinessSign
* BP\_BusinessSign
* WBP\_ManageBusiness
* BP\_PriceTag
* BPC\_Buildingmanger
* BPC\_RSSTTimeManager
* WBP\_ShopProduct
* Struct\_ProductInfo
* PDA\_GameConfig

</details>

<details>

<summary>New assets</summary>

* BP\_UpgradeSpawner

</details>

#### Changes

* Fixed a error where the product slot tries to delete the pricetag even if the reference is invalid.

`BP_ProductSlot`

***

* Updated the spawn customer function to allow for custom actor classes. e.g metahumans

`BPC_RSSTGameMode`, `PDA_GameConfig`

***

* Added a new config option to the game config. Custom\_Customers array.

`PDA_GameConfig`

***

* Updated Struct\_PlaceableObject to add the possibility for upgrade requirements.

`Struct_PlaceableObject`

***

* Added upgrade requirements to build objects.

`Struct_PlaceableObject`

***

* fixed an issue where having more products in the crate would cause the placement animation to start at 0,0,0 instead of the last ism instance.

***

* Added a new blueprint to spawn meshes when the required upgrade is acquired (BP\_UpgradeSpawner).

`BP_UpgradeSpawner`

***

* Converted the business sign to a widget to fix issue with text overflow and allowing us to add backgrounds etc.

`WBP_BusinessSign`, `BP_BusinessSign`

***

* fixed an issue where business name was overflowing in the businessmanager

`WBP_ManageBusiness`

***

* Fixed an issue where the pricetags wouldn't update in some cases when updating the price.

`BP_PriceTag`

***

* Fixed a issue where you could place stuff in the air if you clicked fast enough in the build system

`BPC_Buildingmanger`

***

* Added the option to stop the time when day has ended.

`BPC_RSSTTimeManager`

***

* Increased initialize delay on product shelves to prevent calculations from happening before the actor has been replicated to clients.

`BP_ProductSlot`

***

* Fixed a array warning in the interaction point manager. ( get reachable point )

`BPC_InteractionPointManager`

***

* Added product category to product info to have more control on how products are displayed in the shop.

`Struct_ProductInfo`

***

* Added fade in animation for the shop products.

`WBP_ShopProduct`

***

* Added an extra button to order screen, we can now add to cart from missing stock shelf / storage seperatly.

`WBP_ManageBusiness`

***

{% endupdate %}

{% update date="2026-06-05" %}

## RSST v0.97

<details>

<summary>Assets changed</summary>

* BPFL\_RSS
* BPC\_RSSTGameState
* BP\_RSSGameState
* WBP\_ManageBusiness
* BPC\_RSSTGameMode
* BP\_RSSGameMode
* WBP\_ShopProduct
* BP\_RSSTSaveObject
* MBP\_ProductShelf
* BP\_ShelfComponent
* BP\_StorageShelfComponent
* BP\_PriceTag
* Struct\_PlaceableObject
* BTTask\_EnterStore
* BTTask\_Wander
* BPC\_Employee
* Showcase map

</details>

<details>

<summary>New assets</summary>

* BPI\_RadialConditions
* BPC\_RSSTTimeManager
* BPC\_RSSTActorElectricity
* BPC\_GMRSSTElectricityManager
* BPC\_GSBillManager
* WBP\_NewDay
* WBP\_BillEntry
* Curve\_RSSTMaxCustomers
* BP\_RSSTSaveObject
* BPI\_ProductTracker
* BPC\_RSSTProductTracker
* BPC\_GSStockManager
* BTD\_CanWork
* WBP\_RSSTAssignProduct
* WBP\_AssignProductEntry
* Struct\_RSSTVectorBool

</details>

#### Changes

Added the ability to add bills that has to be paid.&#x20;

***

Added electricity with electricity bill.

***

Added worker salary, needs to be paid or they will stop working.

***

Added BPI\_RadialConditions to be able to check if we should be able to open the radial menu.

***

Added a new time manager in game state, this is used for time and day. This will allow us to open / close the store.

***

Added customer count scaling with current day, configurable in Curve\_RSSTMaxCustomers

***

Fixed a issue with the manage employees UI in business manager causing the workers to overflow ignoring the scroll box.

***

Fixed an issue with customer pathing causing them not to enter / wander in the intended way.

***

Fixed an issue where storage UI didnt work properly on clients.

***

Added the ability to see stock from order screen.&#x20;

***

Added button to automatically add missing products to cart.

***

Fixed an issue where grid snapping was applied on every axis when not needed. This prevented placement of shelves in some conditions where the floor Z location caused the grid snap to move the buildobject inside the floor when trying to build
{% endupdate %}

{% update date="2026-05-04" %}

## RSST v0.96

<details>

<summary>Assets changed</summary>

* BPC\_RSSTCharacter
  * ResetCamera()
  * Input -> \[ TAB ] -  Open Manage business
  * Input -> \[ LMB ] - WidgetInteraction
* M\_ColorPicker
* BP\_NPC\_Employee
  * Add BPC\_RadialSettings
  * Set mesh to block visibility collision
* BPC\_Employee
  * UpdateTask()
* BP\_Pricetag
  * Add BPC\_RadialSettings
* BPFL\_RSS
  * CanResetUIInput()
  * TrackWidget()
  * RemoveTrackedWidget()
* WBP\_Checkout\_Main
  * Exit button
* WBP\_ManageBusiness
  * OnReleased BTN\_Close
* BP\_RSSDebugComponent
  * Input -> \[ 1 ]
* BP\_ProductExampleFirstPersonCharacter
  * Add BPC\_DXRadialManager
* BPC\_BuildingManager
  * ToggleUI()
* Showcase map

</details>

<details>

<summary>New assets</summary>

* DX\_RadialMenu
  * Everything in new directory.
* WBP\_RSSTPriceModal

</details>

#### Changes

* Implemented a radial interaction menu.

<figure><img src="https://723367471-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYlrLL31HFLEtzSTiHhqW%2Fuploads%2Fl31kuGvGGEgwjej1aGKO%2Fimage.png?alt=media&amp;token=d8945814-0f59-4163-a88e-677e7a65558f" alt="" width="188"><figcaption></figcaption></figure>

`DX_RadialMenu`

***

* Added the BPC\_DXRadialSettings component to Employees and pricetag to easily be able to change prices and employee task without having to open the business manager every time.  More functionally will be added over time.

`BP_NPC_Employee`, `BP_Pricetag`, `BPC_RadialSettings`

***

* Fixed a bug with checkout register preventing you from interacting with the change.

`BPC_RSSTCharacter`

***

* Added smoothing to the color picker mask to prevent jagged edges around it.

`M_ColorPicker`

***

* Fixed an issue where bUseCamerasForCheckout didnt work properly when disabled.

`BPC_RSSTCharacter`

***

* Made a simple system to "track" widgets you have opened. This is used to prevent loss of mouse control aswell as preventing opening new widgets that we do not want simultaneously.

`BPFL_RSS`, `WBP_ManageBusiness`, `WBP_Checkout_Main`, `BP_RSSDebugComponent`, `BPC_BuildingManager`

***

* Added a new price changer widget ( WBP\_RSSTPriceModal ). This is opened by looking at a pricetag and selecting Edit price through the radial menu.

`WBP_RSSTPriceModal`, `BP_Pricetag`, `BP_NPC_Employee`

***

* Updated the showcase map with some basic examples of the radial menu.

`Showcase map`
{% endupdate %}

{% update date="2026-04-24" %}

## RSST v0.95HF

<details>

<summary>Assets changed</summary>

* BPC\_BuildingManager&#x20;
  * GetCollisionTrace
* WBP\_ManageBusiness
  * Select upgrade type
* BPC\_RSSTCharacter
  * Input Right mouse button
* WBP\_UpgradeEntry
* BPFL\_RSS
  * CheckSurface
* Struct\_PlaceableObject

</details>

<details>

<summary>New assets</summary>

* Enum\_BuildPlacement

</details>

#### Changes

* Added descriptions for upgrades.

`WBP_ManageBusiness`, `WBP_UpgradeEntry`

***

* Build system improved wall placement / ceiling placement.
* Moved build offset into the build data table to allow for per object offset.

`BPC_BuildingManager`, `BPFL_RSS, Enum_BuildPlacement` , `DT_BuildSystem` , `Enum_BuildPlacement` , `Struct_PlaceableObject`

***

* Made sure that right click always takes you out of the checkout cameras.

`BPC_RSSTCharacter`
{% endupdate %}

{% update date="2026-04-21" %}

## RSST v0.95

<details>

<summary>Assets changed</summary>

* BPC\_RSSTGameMode
  * SaveStorageShelves \[ RENAMED ] -> SaveGenericActors
  * Load\_StorageShevles \[ RENAMED ] -> Load\_GenericActors
* BT\_Employee
* BP\_ProductDisplay&#x20;
  * CalculateAndValidateZ
  * SetupProduct
  * CalculateShelfSpace
* BPC\_BuildingManager&#x20;
* WBP\_UI\_BuildSystem
* WBP\_RSSTTextInput
* WBP\_ManageBusiness
* BT\_Employee
* Struct\_ProductInfo
* Struct\_BusinessInfo
* BPC\_RSSTCharacter
  * Server\_SetBusinessLogo
* BP\_RSSTGameInstance
  * Updated the UI Cache structure
* Struct\_UICache
* PDA\_GameConfig

</details>

<details>

<summary>New assets</summary>

Widgets

* WBP\_RSST\_LogoSwitcher

Sounds

* SW\_RSST\_CheckoutScan

Meshes

* SM\_CeilingLight
* SM\_WallLight
* SM\_Shelf\_60
* SM\_Shelf\_120
* SM\_CheckoutCounter\_Mirrored

</details>

#### Changes

* Fixed an issue where storage shelves didnt spawn with the proper class after saving.

`BPC_RSSTGameMode`

***

* Fixed an issue where the employee could turn towards the cash register before scanning the products.

`BT_Employee`

***

* Changes to BP\_ProductDisplay to prevent infinite loop.
* ZMultiply is removed from the ProductInfo and removed from the calculations.

`BP_ProductDisplay` , `Struct_ProductInfo`

***

* Added the option to toggle grid snapping by pressing T in build mode.
* Implemented the ability to build on walls / ceiling for lights etc.

`BPC_BuildingManager` ,`WBP_UI_BuildSystem` , `PDA_GameConfig`

***

* Implemented the ability to search in the build menu

`WBP_UI_BuildSystem`

***

* Fixed an issue where the game would stutter when opening the shop with a lot of products unlocked. `EventGraph->Buttons->OnRelease ( WBP_BTN_Shop )`
* Added a loading indicator top left of business window
* Seperated some menus to make it less cluttered
* General UI Updates

`WBP_ManageBusiness`

***

* Fixed an issue where RSSTTextInput didn't scale properly

`WBP_RSSTTextInput`

***

* Fixed an issue where the product crate icon was mirrored.

`BP_ProductCrate`

***

* Implemented the option to add a business logo using a URL

`WBP_ManageBusiness` ,  `WBP_RSST_LogoSwitcher` , `Struct_BusinessInfo` , `Struct_UICache` , `BP_RSSTGameInstance` , `PDA_GameConfig`

***

* Changed how the checkouts are being saved, they are moved to a "GenericActor" save instead.
* Any actor we want to save that does not need persistent data, can be saved by adding the actortag "GenericActor"

`BPC_RSSTGameMode`
{% endupdate %}

{% update date="2026-03-30" %}

## RSST v0.94

<details>

<summary>Assets changed</summary>

* BP\_CustomerComponent
  * Begin play
  * OnRep\_MeshIndex
  * Multicast\_PlayMontage
  * Set component replicates to true
  * New variables
    * \[ Skeletal mesh Array ] PossibleMeshes
    * \[ Integer ] \[ RepNotify ] MeshIndex

* BP\_RSSTSaveObject

  * New variable \[Struct cart entry ] \[ Array ] UnpaidProducts
  * New variable \[Struct cart entry ] \[ Array ] OrderedProductCrates

* BPC\_RSSTGameState
  * New functions
    * GetUnpaidProducts
    * FindUnpaidEntry
    * PayUnpaidProduct
  * OnSave interface implementation
    * Set UnpaidProducts
  * OnLoad interface Implementation

    * PayUnpaidProducts

* BPFL\_RSS
  * GetAIAnimationConfig

* BT\_NPC\_Customer

* BT\_Employee

&#x20;

* BTTask\_FindProduct

* BTTask\_WaitForCashier

* BTTask\_PrepareProducts

* BTTask\_GrabItem

* BTTask\_Employee\_FinishCheckout

* BTTask\_Employee\_FindStorageSlot

* BTTask\_Employee\_GetShelfLocation

* BTTask\_EmployeePerpareRestocking

* BTTask\_Employee\_FindEmptyStorageSlot

* MBP\_ProductShelf
  * Added component  BPC\_InteractionPointManager
  * Deleted interaction plane

* BP\_StorageShelf
  * Added component  BPC\_InteractionPointManager
  * Deleted interaction plane

* MBP\_Dumpster
  * Added component BPC\_InteractionPointManager
  * Deleted interaction plane

* BTTask\_TakePayment
  * Event graph

* BTTask\_Employee\_StoreProductCrate
  * Event graph

* BPC\_Employee
  * Grab crate
  * Drop Crate

* BPC\_Buildingmanager

  * Input event graph
  * Begin play

* BPC\_RSSTGamemode
  * SaveProductCrates
  * LoadGame graph -> Load\_ProductCrates

* BP\_ProductSlot
  * New variables
    * \[ bool ] bAllowMultipleProductTypes
    * \[ enum product types ] \[ array ] AllowedProductTypes

* ABP\_Manny
  * Added layered blend per bone for grab animation

* BP\_CheckoutProduct
  * New variables
    * bInstantPlacement
  * Event graph begin play

</details>

<details>

<summary>New assets</summary>

* BTD\_GarbageExists
* PDA\_AIAnimationConfig
  * DA\_AIAnimationConfig
* Struct\_RSSTMontageData
* BPC\_InteractionPointManager
* BTTask\_Employee\_DropProductCrate

</details>

Changes

* Customers now get assigned a random mesh on begin play. Randomly selected from the PossibleMeshes array, which allows us to easily add more visual variation to the customers.

`BP_CustomerComponent` &#x20;

***

* Unpaid products are now saved and the shop is being compensated on load to prevent loss of products during save when customers have grabbed products from shelves and not paid yet.&#x20;

&#x20;`BPC_RSSTGameState` ,  `BP_RSSTSaveObject`&#x20;

***

* Undelivered product crates are now saved and delivered on load if saved during delivery to prevent loss of products.&#x20;

`BPC_RSSTGamemode` , `BP_RSSTSaveObject`

***

* Fixed a few errors in buildsystem when hitactor is not valid or when build object was not valid.&#x20;

`BPC_Buildingmanager`&#x20;

***

* Changes to employee behavior tree to prevent error when a dumpster is not present in the world.&#x20;

`BTD_GarbageExists`, `BT_Employee`

***

* Added the option to allow multiple product types in a single slot.&#x20;

`BP_ProductSlot`

***

* Cashier now looks at card terminal / cash register when using it.

`BT_Employee`, `BTTask_Employee_TakePayment`, `BTTask_Employee_FinishCheckout`

***

* Added pickup animation for customers

`PDA_AIAnimationConfig`, `DA_AIAnimationConfig`, `BTTask_GrabItem`

***

* Added configurable animation when customer place products on the checkout.

`BTTask_PrepareProducts`, `DA_AIAnimationConfig`, `PDA_AIAnimationConfig`

***

* Added an experimental feature with checkout products which lets us instantly place them on the checkout instead of them falling. Toggleable in CheckoutProduct blueprint

`BP_CheckoutProduct`

***

* Fixed an issue where the product crate was offset incorrectly in the storage shelf when an employee stores it.

`BTTask_Employee_StoreProductCrate`

***

* Implemented a new interactionpoint system for the AI, This allows for mutliple interaction points( configurable ). This also solves some of the unreachable shelf issues as they will just ignore the shelf now if its unreachable. The interaction plane has been removed. For the first implementation, this will cover product shelves, storage shelves and dumpster.

<figure><img src="https://723367471-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYlrLL31HFLEtzSTiHhqW%2Fuploads%2F2Gg5Yt00CA2P85UpU1fT%2Fimage.png?alt=media&amp;token=3dbad834-bb23-4410-8bb5-6f818a5e1171" alt="" width="188"><figcaption></figcaption></figure>

<figure><img src="https://723367471-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYlrLL31HFLEtzSTiHhqW%2Fuploads%2F0ymKJvFKVSpOuwXU8ckL%2Fimage.png?alt=media&amp;token=0b54e482-07d1-4b50-bd4f-779cd64b49a2" alt=""><figcaption></figcaption></figure>

`BPC_InteractionPointManager`, `BTTask_FindProduct`, `BTTask_Employee_FindStorageSlot`, `BTTask_Employee_GetShelfLocation`, `BTTask_EmployeePerpareRestocking`, `BTTask_Employee_FindEmptyStorageSlot` , `MBP_ProductShelf`, `BP_StorageShelf`, `MBP_Dumpster`

***

* Reduced template size by \~60%
  * Rermoved unused character skeletal mesh
  * downscaled character textures to 1k.
    {% endupdate %}

{% update date="2026-03-18" %}

## RSST v0.93

<details>

<summary>Assets changed</summary>

* BPC\_RSSTGameMode
* BPC\_RSSTUpgrade
* BPC\_BuildingManager
* BPI\_UpgradeListener
* WBP\_Checkout\_Main
  * ShowPayment Function
* BPC\_RSSTCharacter
  * Input event graph
* BP\_CustomerComponent&#x20;
  * Generate Shopping List Function
* PDA\_GameConfig
* BTTask\_FindProduct
* MBP\_Checkout
  * Onrep Current Change
* BP\_Checkoutproduct
  * Event graph
  * Multicast
* BTTask\_Employee\_ClearTask
* BP\_ProductSlot
  * OnConstruct function
  * Multicast\_ScanProduct

</details>

<details>

<summary>New Assets</summary>

* Struct\_ActorInteractionLocation

</details>

***

### Changes

* Fixed an issue with the upgrade system causing performance issues.
* Fixed an issue where you couldn't move the decoration actor if the build conditions interface wasn't implemented.
* Fixed an issue with product crate scaling after loading a save.
* Fixed an issue when receiving the exact amount of change would fail to enable the pay button on the cash register.
* Fixed an issue were you could interact with the checkout before entering the camera with cameras for checkout enabled, which could cause unintended interactions with the widgets.
* Added a new config option to be able to make customers select random shelves instead of in order of the product shelf array.
* Added so if a checkout product falls off the checkout belt, it will teleport back onto the checkout belt to prevent issues.
* Fixed an issue where employee cashier didnt clear task properly which caused the checkouts to be "reserved" by a cashier preventing them to go back to it.
* Readded the ability to disable pricetag.
  {% endupdate %}

{% update date="2026-03-01" %}

## RSST v0.92

<details>

<summary>Customers</summary>

* Full rewrite of some tasks to improve the customer execution flow.

</details>

<details>

<summary>Game Config</summary>

* Customer Max Products and Customer Max Product Count to control how many products they can buy.

</details>

<details>

<summary>Card Terminal</summary>

* Keypad improvements.
* Fixed client interaction by changing the click event to on released on the Enter button

</details>

<details>

<summary>UI</summary>

* Fixed an issue where storage would display empty product crate in the storage UI if it was placed in a storage shelf.

</details>

<details>

<summary>Storage shelf</summary>

* Fixed client attachment desync

</details>

<details>

<summary>Product shelf</summary>

* Fixed an issue on clients after loading the product shelves from save.
* Fixed an issue that prevented the shelfcomponent updating its product indexes causing the AI to get stuck in some cases.

</details>

<details>

<summary>Price tags</summary>

* Pricetag are now widgets and rendered with cache and manual updates

<figure><img src="https://723367471-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYlrLL31HFLEtzSTiHhqW%2Fuploads%2F9J7kV48yGBvJEim4jMl1%2Fimage_2026-03-02_045922898.png?alt=media&amp;token=a44f78f1-064b-424e-9548-3f5a8658bcc9" alt=""><figcaption></figcaption></figure>

</details>
{% endupdate %}
{% endupdates %}
