2025-05-06 20:21:07 +07:00

289 lines
14 KiB
Markdown

---
sidebar_position: 5
---
# Main Scene
This is where all the magic happen.
---
Main scene is the most complicated scene with hundreds of object, script and config.
![Main Scene Wireframe](./img/05-main-scene/main-scene-wireframe.png)
Yet it is suprisingly simple to use.
By following step by step setup, you'll have a working main scene in no time.
:::info
In fact, if all of the other scenes are setup properly, you can even run test the game without any setup on main scene.
Try to run the project, you'll the result as below. It doesn't look like much but it is actually a game running without visual assets.
![Run Test](./img/05-main-scene/run-test.png)
:::
## Setup Reel Slot
---
1. Prepare the asset for symbols.
![Add Symbol Texture](./img/05-main-scene/add-symbol-texture.png)
2. Add symbols to **SpriteFrameProvider** which allows those symbols to be accessed globally from the code.
![Sprite Frame Provider](./img/05-main-scene/sprite-frame-provider.png)
3. Config reel slot using `reel-scroller-helper`.
![Reel Scroller Helper](./img/05-main-scene/reel-scroller-helper.png)
| Properties | Explaination | Example |
|------------|--------------|---------|
|**Cell Item Script Name**|The name of the script will be attached to each cell item.|![cell-item-script-name](./img/05-main-scene/hyper-cell-item.png)|
| **Scroller Script Name** | the name of the script for handling the spinning logic.|![scroller](./img/05-main-scene/scroller.png)|
|**Row Count x Reel Count**| the number of Slot Item each row and column in the reel slot panel.|![reel-row-column](./img/05-main-scene/reel-row-column.png)|
|**Cell Size**| the size of each cells.|![cell-size](./img/05-main-scene/cell-size.png)|
|**Cell Spacing**| the distance between each cells horizontally and vertically.||
|**Cell Dim Color**| set the dark color for the non-win cells when showing winning animation for each line.|![dim-cell-color](./img/05-main-scene/dim-cell-color.png)|
|**Top Count and Bot Count**| for spinning logic to work, a certain number of cell will be added to the top and bottom of the reel.|![cell-top-bottom](./img/05-main-scene/cell-top-bottom.png)|
4. Generate panel using `reel-scroller-helper`.
![Generate Panel](./img/05-main-scene/generate-panel.png)
:::tip
There is a popup panel covering the entire game scene. You should turn off this panel to see the other component clearly.
:::
## Setup Spinning Panel
Reel slot panel is just one part one the spinning panel.
There are other panels that need to be setup: **landing-panel**, **tension-panel**, **present-win-cell-panel** and **present-win-border-panel**.
The setup is very straightforward by using the `Generate Panel` command in each panel's helper class.
- Landing Panel:
![Landing Panel](./img/05-main-scene/landing-panel.png)
- Present Win Cell Panel:
![Present Win Cell Panel](./img/05-main-scene/present-win-cell-panel.png)
- Present Win Cell Panel:
![Present Win Border Panel](./img/05-main-scene/present-win-border-panel.png)
- Tension Panel:
![Tension Panel](./img/05-main-scene/tension-panel.png)
If the tension use a custom size frame, we can change the option **sizeMode** to **Custom** and set the static frame and size.
![Tension Size Custom](./img/05-main-scene/tension-panel-custom.png)
## Setup UI Panel
### UI Panel Overview
The UI system supports both desktop and mobile layouts design.
#### 🖥️ Desktop Layout
- Full bottom bar with all controls visible
- Horizontal layout maximizing screen width
![Desktop UI Layout](./img/05-main-scene/bottom-ui-desktop.png)
#### 📱 Mobile Layout
The mobile interface adapts to both landscape and portrait orientations:
| Orientation | Preview |
|-------------|----------|
| Landscape | ![Mobile Landscape](./img/05-main-scene/menu-landscape.png) |
| Portrait | ![Mobile Portrait](./img/05-main-scene/menu-portrait.png) |
### UI Panel Desktop
#### Step 1: Setup Prefab Editor
| Step | Action | image |
|------|---------|--------------|
| 1. Locate Prefab | Search for `ui-bottom-bar-panel` prefab | ![Locate Prefabs](./img/05-main-scene/add-texture-bottom-bar-prefab.png) |
| 2. Copy Assets | Navigate to `core/editor` directory | ![Copy UI Folder](./img/05-main-scene/add-texture-label-prefab.png) |
| 3. Place Assets | Copy / Paste to game assets location | ![Asset Placement](./img/05-main-scene/editor-texture-label-prefab.png) |
---
#### Step 2: Configure Prefabs
##### Core Prefabs Structure
Navigate to the location where the prefabs:
![Directory Structure](./img/05-main-scene/add-texture-bottom-bar-prefab2.png)
##### Rename Prefabs
Rename the copied prefabs by removing unnecessary prefixes:
| Prefix to Remove | Original Prefab Name | Final Name |
|------------------|----------------------|------------|
| `template-new-` | `template-new-ui-bottom-bar-panel` | `ui-bottom-bar-panel` |
| `template-` | `template-button-auto-selection` | `button-auto-selection` |
![Prefab Naming Example](./img/05-main-scene/rename-prefab.png)
#### Customize *`button-auto-selection`* Label
Use the `template-label-auto-selection` to customize the appearance of the label inside the `button-auto-selection` prefab.
| Component | Description |
| -------------------- | ------------------------------------------------- |
| **Label Outline** | Add an outline to make the text stand out. |
| **Label Shadow** | Add a shadow for better contrast and readability. |
| -------------------- | ------------------------------------------------- |
![Label Configuration Options](./img/05-main-scene/option-for-label.png)
#### Customize *`ui-bottom-bar-panel`* Label
Use `template-label-title` to customize the `ui-bottom-bar-panel`:
:::info
*[Follow the same configuration as Button Auto Selection Labels](#customize-button-auto-selection-label)*
**Bottom bar labels include a localization component for multi-language support**
:::
![component-locale](./img/05-main-scene/component-locale.png)
The `FormatText` property controls text formatting behavior for label components:
| Property | Description | Example |
|----------|-------------|---------|
| `default` | Initial formatting state | `false` |
| `notify` | Formatting update callback | Updates when value changes |
---
#### Step 3: Setup Ui In Main Scenes
Create the following node configuration in your main scene:
![main scenes](./img/05-main-scene/prepare-ui-bottom-bar.png)
##### Platform Node Spawner Settings
| Setting | Value | Description |
|---------|-------|-------------|
| Desktop Toggle | ✓ Enabled | Show prefabs for desktop platform |
| Mobile Toggle | ☐ Disabled | Hide prefabs for mobile platform |
| Target Prefab | `ui-bottom-bar-panel` | References prefab |
#### Step 4: Apply Textures
##### Texture Button Bar
✅ Checklist assets completed for bottom UI and button UI text
🔗 [Follow is by Complete Assets Structure Guide](http://localhost:3000/docs/category/game-asset-structure):
![main scenes](./img/05-main-scene/prepare-ui-bottom-bar.png)
##### Run the Helper Tool
- Open the UI Desktop Helper
- Select texture assignment options
![Helper Tool](./img/05-main-scene/run-ui-desktop-helper.png)
##### Verify Results
*Auto Selection*
![Auto Selection Result](./img/05-main-scene/result-btn-auto-selection.png)
*Bottom Bar*
![Bottom Bar Result](./img/05-main-scene/result-buttom-bar.png)
---
### UI Panel Mobile
#### Step 1: Setup Prefab
| Step | Action | image |
|------|---------|--------------|
| 1. Locate Prefab | Search for `mobile-ui` prefab | ![Locate Prefabs](./img/05-main-scene/search-mobile-ui.png) |
| 2. Place Assets | Copy to game assets location | ![Asset Placement](./img/05-main-scene/mobile-ui-prefab.png) |
| 3. Locate Prefab | Search for `buy-feature` prefab | ![Locate Prefabs](./img/05-main-scene/buy-feature-bonus-mobile.png) |
#### Step 2: Rename Prefabs
Rename the copied prefabs by removing unnecessary prefixes:
| Prefix to Remove | Final Name |
|------------------|----------------------|
| `template-` |![Prefab Naming Example](./img/05-main-scene/result-rename-mobile.png) |
#### Step 3: Setup Ui In Main Scenes
Create the following node configuration in your main scene:
![main scenes](./img/05-main-scene/set-positon-mobile-ui.png)
##### Platform Node Spawner Settings
| Setting | Value | Description |
|---------|-------|-------------|
| Mobile Toggle | ✓ Enabled | Show prefabs for mobile platform |
| Desktop Toggle | ☐ Disabled | Hide prefabs for desktop platform |
| Target Prefab | `mobile-ui` | References prefab |
#### Step 4: Apply Textures
##### Texture Mobile Ui
✅ Checklist assets completed for Mobile UI
🔗 [Follow is by Complete Assets Structure Guide](http://localhost:3000/docs/category/game-asset-structure):
![main scenes](./img/05-main-scene/add-texture-mobile-ui.png)
##### Run the Helper Tool
- Open the UI Mobile Helper
- Select texture assignment options
![Helper Tool](./img/05-main-scene/run-ui-mobile-helper.png)
##### Results
*main ui button added textures*
| ![Auto Selection Result](./img/05-main-scene/result-mobile-button.png) |
#### Step 4: Setup Color For Menu Mobile UI
*Gerenal picker color* using `helper-paint-color-ui-mobile`
| ![Auto Selection Result](./img/05-main-scene/result-mobile-ui.png) | ![Auto Selection Result](./img/05-main-scene/set-color-menu-ui.png) |
|---------|-------|
|Ordinal number| Properties | Explaination | Example |
|--------------|------------|--------------|---------|
|1 | **Main Ui Normal Color** | pick color: #45AEFF | ![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/buy.png)![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/close.png)![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/tru.png)![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/cong.png)![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/auto.png)![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/balance.png)![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/balance1.png)![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/balance2.png)![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/setting.png)![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/paytable.png)![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/rule.png)![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/cheat.png)![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/button-exit.png)![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/icon-toggle.png)![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/icon-toggle1.png)![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/icon-toggle2.png)![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/icon-toggle3.png) |
|2 | **Main Ui Highlight Color** | pick color: #A8CBFF | ![Auto Selection Result](./img/05-main-scene/main-ui-highlight-color.png) |
|3 | **Toggle State Off Color** | pick color: #45AEFF | ![Auto Selection Result](./img/05-main-scene/toggle-off.png) |
|4 | **Toggle State On Color** | pick color: #A8CBFF | ![Auto Selection Result](./img/05-main-scene/toggle-on.png) |
|5 | **Background Info Page Color** | pick color: #000000 | ![Auto Selection Result](./img/05-main-scene/background-menu.png)|
|6 | **Background Menu Color** | pick color: #000000 | ![Auto Selection Result](./img/05-main-scene/background-menu.png) |
|7 | **Background Point Panel Color** | pick color: #000000 | ![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/background-win-point.png) |
|8 | **Background Bottom Bar Color** | pick color: #FFFFFF | ![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/background-bottom-bar.png) |
|9 | **Button Quit Color** | pick color: #45AEFF | ![Auto Selection Result](./img/05-main-scene/btn-quit-game.png) |
|10 | **Button Cancel Color** | pick color: #616160 | ![Auto Selection Result](./img/05-main-scene/btn-cancel-game.png) |1
|11 | **Label Balance Normal Color** | pick color: #7DFFDF | ![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/win-point-color.png) |
|12 | **Label Balance Spin Color** | pick color: #FFFFFF | ![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/spin-point-color.png) |
|13 | **Button Plus Minus Auto Color** | pick color: #FFFFFF | ![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/btn-plus-minus-auto.png) |
|14 | **Label Start Auto Color** | pick color: #FFFFFF | ![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/button%20start.png) |
|15 | **Label Outline Notification** | pick color: #FFFFFF | ![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/outline-notifcation.png) |
|16 | **Total Win Medium Win Color** | pick color: #FFFFFF | ![Auto Selection Result](./img/05-main-scene/image-for-mobile-ui-helper/win-point-special-color.png) |
---
## Setup Background
> To Be Added:
> - show how many background: desktop, mobile, main game, free game, gamble, reel bg, slot panel bg.
## Setup Animation Provider
> To Be Added:
> - How to run helper / p4f menu
> - How to setup static frame / fps
## Setup Popup Panel
> To Be Added:
> - Prepare the asset
> - Run helper / p4f menu or setup manually