Share
Explore

Hypercasual - Arcade Idle Pack - User Manual v2.2

IMPORTANT NOTE!!!

This package depends on DOTween, it’s free so install it before installing this package! If you still have problems, please come to our and ask questions first, if we somehow couldn’t reply to you, you can send a mail: thearcadebridge@gmail.com
I hope you like the package, thanks for buying it!

Package Contents

Full source code
Simple Save & Load System
Flexible Scriptable Object Pooling System
Random Level Generator
Inventory
Item Seller (Floating Text, Floating Image)
Item Collectors (Stockpiler, Multiple Condition)
Item Spawner
UI resource monitoring
UI Joystick
Character Controller script
Employee (Goes from one place to another)

How to Start

After importing the package, open the demo scene in
HyperCasualPack/Demo/Demo.unity
After that you can see how Pickable Collectors, Sellers, Spawners and all those other systems work. In the next section, we’ll explain what every script parameter do, so you have better understand overall. If you are still confused, you can always check the default versions of the systems in their corresponding prefabs.

Component Explanations

Saveable Runtime Int Variable

Hypercasual Pack contains a lot of Scriptable Objects, some of them is just plain data holder but others have functionality as well. Saveable Runtime Int Variable contains value that we can save and load from disk. We can change initial value if we don’t have any save file, if we saved our game state then this value will be overwritten by save file.
Screen Shot 2022-09-27 at 21.55.19.png

Save Manager

image.png
You need to assign Saveables List to the Save Manager so it can Save and Load them when game runs. Use Save Manager for saving your game states.
image.png
Inside Saveables List, it contains variables to save. Order is important when saving and loading.
Use Tools>HypercasualPack>Open Save Directory if you want to delete the save file or modify manually.
image.png

Pickable

image.png
This is one of the Pickable examples, it mostly works as a tagging, but it has an important Pickable Data, which contains Sell Value and Is Visible (which sets whether it should be visible or not when we pick it).

Pickable Sellers

Floating Text

Screen Shot 2022-09-30 at 20.24.45.png
Screen Shot 2022-10-03 at 05.17.07.png
Income Resource: Which int variable should we increase when we sell
Jump Duration: Jump duration when we sell item
Jump Height: Jump height when we sell item
Sell Rate: Selling count per second
Text Pooler: Which text pool to use when displaying feedback
Feedback X Random Range: This value controls the random range of x of the floating text. If you set range too high, feedback text’s arrive point will be too much left or right
Feedback Up Movement Distance: This value controls the up movement distance, if you set it too high, feedback text will go too high
Feedback Shown Duration: This value controls the shown duration of the text feedbacks

Floating Image

Screen Shot 2022-09-30 at 20.28.05.png
Screen Shot 2022-10-03 at 05.21.07.png
We have only Resource Monitor Visualizer which is different from the Floating Text script.
Resource Monitor Visualizer: Scriptable Object that is responsible for spawning images on the screen and make them move toward UI.

Resource Monitor Visualizer

image.png
Resource Movable Pool: Pool for movable objects on screen. It’s an implementation of the generic object pooler.
Resource UI Parent Object: Object to arrive. Resource Movable Objects will go towards it and after that it will increase it’s value.
Resource: Resource to increase when it arrives to the target position.
Visualization Duration: Duration it takes for visualizing the movement.

Resource UI and Int Variable Monitor

Screen Shot 2022-09-27 at 22.16.04.png
Int Variable Monitor is for updating the text based on the variable it listens to. ​Resource UI is for registering the object to the scriptable object so Resource Monitor Visualizer knows where spawned objects should arrive.

Pickable Source Spawner

Screen Shot 2022-09-27 at 22.19.28.png
Row Column Height: Properties so spawned object can jump to organized place.
Jump Duration: Spawned object’s jump duration.
Pooler SO: Object pool to spawn from.
Stacking Point: Spawned object arriving point.
Ore Extraction Sec: Spawn rate, every X second.

Pickable Resource Manager

image.png
It works like a dictionary. It contains Keys and Values pair and Inventory Manager uses this for finding the right SaveableRuntimeIntVariable to increase or decrease it’s value. That value used by Monitoring scripts to show on UI.

Pickable Collectors

Stockpiler

image.png
Jump Duration: Time it takes in seconds to jump from Player to Unmodified Stockpile Point. It can’t exceed Modifying Time Per Item.
Ruleset: Contains Input Pooler which is the object it collects, and Output Pooler which is the output object it produces. If it can’t find the same type as Input Pooler, it won’t collect.
Modified Stockpile Point: Modified items’ pivot point, then position calculation happens based on the offsets from Row Column Height.
Unmodified Stockpile Point: Unmodified items pivot point, they are same as Modified Stockpile Point.
Modifying Time Per Item: Time it takes to modify one item (in second).
Stockpile Every X Sec: Item taking speed.
Stockpiler Ruleset
Screen Shot 2022-09-30 at 19.28.52.png

Multiple Condition

image.png
Jump Duration: Time it takes in seconds to jump from player to Unmodified Stockpile Point.
Ruleset: Multiple Condition ruleset which contains which items to pick from player.
Stockpile Every X Sec: Item taking speed.
Jump Height: Jump height from Player to Modified Stockpile Point.
Multiple Condition Ruleset
Screen Shot 2022-09-27 at 22.25.52.png
Type Count Pairs contains items, and it also contains how many of them it needs. When we fulfill conditions, object from Output Pooler will be instantiated.
Multiple Condition Monitor
Screen Shot 2022-09-30 at 00.19.49.png
This component will update the texts based on the Pickable Collector Multiple Condition it listens to. Beware that text field count needs to be the same with multiple condition ruleset’s Type Count Pairs count. First element in Multiple Condition Monitor updates itself based on the first element in the Pickable Collector Multiple Condition. You can see the example usage in Demo.

Pickable Source Collector

Screen Shot 2022-10-19 at 15.09.19.png
Pickable Source Collector works with Collider (trigger), that way it can know whether an object with inventory has entered into the trigger area.
Pickable Collector Base: Source object to collect from
Pick Time: Collect every X second

Inventory

Screen Shot 2022-09-29 at 17.57.12.png
We have 2 Inventories, Invisible and Visible one. Invisible Inventory collects objects and make them invisible when they arrive to Stacking Point while Visible Inventory uses Stacking Point as a Stacking starting point. Then depending on your Row Column Height settings, stacked objects will move to desired position.
Arcade Idle Mover: Dependency, so Inventory can understand whether we are interactable (it means if we stop) or not.

Resource Spender

Screen Shot 2022-10-03 at 18.49.24.png
Resource Spender Datas: Data that contains required variables for spending
Spending Resource: Visuals to use when spending resource
Resource Variable: Actual variable that holds your resource value
Visual Feedback Spawn Rate: Every X amount, we spawn visual feedback, if you make it 1, than every amount you spend will spawn resource visual.
Jump Height: Resource visuals uses this height when jumping towards target
Jump Duration: Duration for jumping to the target

Unlocker

image.png
On Unlocked: Event to trigger when we unlock.
Resource Count Text: Text to update when we give resource.
Progress Bar: Image to fill when we spend resource.
Needed Resource: Needed resource for transaction.
Spending Ease: Which ease you want to use for transaction. Linear ease will pay in a steady pace where for example InQuint will increase its speed gradually.
Spending Speed: This will determine the time it takes to complete transaction.
Required Resource: Resource it needs to complete transaction
Can Work Multiple Times: If it’s enabled, it won’t deactivate itself and it can still spend resource, so use OnUnlocked to call method on Unlocker.SetRequiredResource(int) to reset Unlocker’s required resource. If it’s disabled, then it’ll deactivate itself automatically.

UI Joystick

Screen Shot 2022-09-28 at 16.05.05.png
Background: Background of the joystick, generally a white circle.
Input Channel SO: Middle layer (like mediator pattern) where we send input values through.
Pressed Opacity: Opacity level of the joystick after we pressed the joystick.
Max Range: Max range of joystick dragging from its center.
Horizontal Axis Enabled: Whether joystick works horizontally.
Vertical Axis Enabled: Whether joystick works vertically.
Is Center Dynamic: Is center of the joystick moves with the joystick.

Player Animation Manager

image.png
In order to use Player Animation Manager, you need to assign it to animated character. And in Animator component, check if Player controller (or your custom one) plugged in. If you are using premade Player controller then you can plugin animations from Mixamo as you can see below. First motion would be idle, second medium run and third fast run.
image.png

Level Generator

Level Generator system contains Level Generator, Level Generator Data, Group, Tile, Portal. And you need to have Level Generation Trigger for triggering new level generation. It’s in there for example and you can implement your own trigger. It’s pretty straightforward.
Screen Shot 2022-09-29 at 20.52.09.png
Level Generator: Contains all methods for level generation. It also contains Level Generator Datas, for every level, so you can control what will be spawned for every new level.
Screen Shot 2022-09-29 at 20.40.12.png
Level Generator Data: It takes Group, which you can assign to the prefabs, then you can use those to create levels. Order is important, system uses the order for difficulty. You can add variations by adding new Group to the elements so level generator spawns randomized.
Screen Shot 2022-09-29 at 20.46.55.png
Group: This works like a tagging, you add this script to the prefabs, so you can assign them to Level Generator Data.
Screen Shot 2022-09-29 at 21.04.23.png
Tile: This also works like a tagging. Although, it has few properties that allow you customize its behavior. -Spawn Range: Group objects will spawn based on this randomness area. If you don’t want randomness, change it to 0,0 -Center Point: Spawned objects will use this pivot for spawn position -End Point: Point to use when instantiating new adjacent tile, position it to the end of the platform. -Height Offset For Group: Group objects will spawn with this y offset
Screen Shot 2022-09-29 at 21.52.53.png
Level Generation Trigger: Triggers Level Generator so it can generate new level for us.
Level Starting Point: Level Generator will spawn the first tile in here. Take note that you need to offset Tile so it’s pivot is on the starting point of tile like the image below. ​
Screen Shot 2022-09-29 at 21.58.39.png
Back Portal Spawn Point: Offset to add when spawning back portal, so you can destroy the spawned level. It will position itself based on the level starting point.
Level: Which level to spawn, Level Generator has Level Generator Datas for every level, first level is level 0.
Difficulty: Based on the difficulty, generator will generate high numbers in the ordered list of Level Generator Data.
Tile Length: Tile count to spawn. Note that as you decrease length, generator will try to spawn highest difficulty tiles, so it can fulfill your difficulty request.

Pools

public class PickableResourcePoolerSO : ObjectPoolerSO<PickableResource>
In order to create new pool, just inherit from ObjectPoolerSO with type. Don’t forget to add CreateAsset attribute. Then you can create new asset by right clicking in the project window.
Pickable pickable = pickableResource.TakeFromPool();
You can get the item from pool like this.
pickableResource.PutBackToPool(nonPickableResource);
And you can put it back to pool like this.
Screen Shot 2022-09-30 at 00.05.17.png
For example, this is one of the pools in the pack. You can configure it with Max Size and Behaviour. Max size allows you to specify size for your pool, if pooled object exceeds this limit, they will going to be destroyed instead of putting back to pool. Behaviour allows you to specify the object you want to use it with pool.

Employee

In order to use Employees you need to have a EmployeeManager in the scene. You can use it’s AssignEmployee method to create an employee that goes to the two different points (load and unload points). For Each point you need to assign waiting time too. You can see the example usage of it in the demo scene. EmployeeAssigner script has bunch of serialized fields, and all it does is calling the EmployeeManager’s AssignEmployee method.

In the demo we have an unlocker with EmployeeAssigner component as a separate gameObject.
2023-03-26_03-27.png
In the EmployeeAssigner script we have our custom data for things we need. And it references EmployeeManager, then it calls AssignEmployee to spawn new Employee.
2023-03-26_03-30.png
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.