2025-04-18 11:59:02 +07:00

6.7 KiB
Raw Blame History

sidebar_position
sidebar_position
1

Adding Game Configuration

While the core logic is responsible for calculations and maintaining the game state, it's the client's responsibility to define all game-specific information.

Lets go step-by-step to define these elements.

Slot Items

Each game features specific slot items displayed on the reel panel. By default, the Slot Core includes only two items: Wild and Scatter.

For Roma Legacy, there are 8 slot items total, including Wild.

Symbols

To define the 7 additional items for this game, create the following script:

var SlottyItem = p4fslot.require('slotty-item');
var Enum = p4fslot.require('extendable-enum');

Enum.InitEnum(SlottyItem, [
    'Pic1',
    'Pic2',
    'Pic3',
    'Pic4',
    'Pic5',
    'Pic6',
    'Pic7',
    'Bonus'
]);

module.exports = SlottyItem;

Note: Item names are defined using the texture asset names, not the symbol names received from the server response.

Asset's name Server Response
Pic1 PIC1
Pic2 PIC2
Pic3 PIC3
Pic4 PIC4
Pic5 PIC5
Pic6 PIC6
Pic7 PIC7
Bonus BONUS

For example, if the server returns a symbol named BONUS, the game should display the Bonus asset.

To establish this mapping, use the following configuration script:

var HyperGamingConfig = require('hyper-gaming-config');
var SlottyItem = require("slotty-item");

HyperGamingConfig.itemMapper['BONUS'] = SlottyItem.Bonus;
HyperGamingConfig.itemMapper['PIC1'] =  SlottyItem.Pic1;
HyperGamingConfig.itemMapper['PIC2'] = SlottyItem.Pic2;
HyperGamingConfig.itemMapper['PIC3'] = SlottyItem.Pic3;
HyperGamingConfig.itemMapper['PIC4'] = SlottyItem.Pic4;
HyperGamingConfig.itemMapper['PIC5'] = SlottyItem.Pic5;
HyperGamingConfig.itemMapper['PIC6'] = SlottyItem.Pic6;
HyperGamingConfig.itemMapper['PIC7'] = SlottyItem.Pic7;

Slot Setting

There are two settings that determine the betting method used in the game:

  • TypeBetConfig: this defines the bet calculation method. The available options are:
    • Way
    • Line
    • BetOptions
    • Dynaways
  • TypePayline: this setting determines which text label is displayed in the game's UI. Each type corresponds to a different label:
    Type Text Message
    Way BET PER WAY
    Line BET PER LINE
    BaseBet PLAY MULTIPLIER

Depending on the requirements of your game, you can customize both Payline and BetConfig by adding the following script:

var BaseSlottySetting = p4fslot.require('slotty-setting');
var SlottyItem = require('slotty-item');
var SlottyParameter = p4fslot.require('slotty-parameter');

BaseSlottySetting.prototype._getDefaultTypePayline = function () {
    return SlottyParameter.TypePayline.Line;
};

BaseSlottySetting.prototype._getDefaultTypeBetConfig = function () {
    return SlottyParameter.TypeBetConfig.Line;
}

Default Slot Item Pattern

When the game is opened, the reel panel should display a default pattern that contains no possible win lines.

For instance, the following item pattern should not be used, as it contains two win lines:

Win Pattern

To keep the gameplay experience fresh, the displayed pattern should be selected randomly each time. At a minimum, three non-winning patterns should be available.

To configure these patterns, add the following method to your extend-slotty-setting script:

BaseSlottySetting.prototype._getPatternNotWin = function () {
    return [
        [SlottyItem.Pic5, SlottyItem.Pic3, SlottyItem.Pic5, SlottyItem.Pic1, SlottyItem.Pic5,
        SlottyItem.Bonus, SlottyItem.Pic6, SlottyItem.Pic5, SlottyItem.Pic1, SlottyItem.Pic5,
        SlottyItem.Pic2, SlottyItem.Pic6, SlottyItem.Pic2, SlottyItem.Pic1, SlottyItem.Pic2
        ],
        [SlottyItem.Pic4, SlottyItem.Pic7, SlottyItem.Pic2, SlottyItem.Pic5, SlottyItem.Pic7,
        SlottyItem.Pic4, SlottyItem.Pic7, SlottyItem.Pic6, SlottyItem.Pic5, SlottyItem.Pic7,
        SlottyItem.Pic7, SlottyItem.Pic3, SlottyItem.Bonus, SlottyItem.Pic2, SlottyItem.Pic3
        ],
        [SlottyItem.Pic1, SlottyItem.Pic2, SlottyItem.Pic3, SlottyItem.Pic7, SlottyItem.Pic3,
        SlottyItem.Pic2, SlottyItem.Pic7, SlottyItem.Pic4, SlottyItem.Pic3, SlottyItem.Pic2,
        SlottyItem.Pic1, SlottyItem.Pic7, SlottyItem.Pic4, SlottyItem.Pic3, SlottyItem.Bonus
        ]
    ];
};

The results of those 3 patterns are shown below:

Pattern 1 Pattern 2 Pattern 3
Pattern 1 Pattern 2 Pattern 3

Hyper Gaming Integration

The Slot Core supports both SmartFox and Hyper Gaming connections. For Hyper Gaming, we integrate specific modules using the DIContainer.

To connect and interact with the Hyper Gaming server, we need to register two key modules:

  • hyper-gaming-config: manages the connection configuration for the Hyper Gaming server.
  • hyper-gaming-server-handler: handles request and response data for game-server communication.

To register these, add the _registerInjection function in extend-slotty-setting.js:

SlottySetting.prototype._registerInjection = function () {
    DIContainer.Register('serverConfig', require('hyper-gaming-config'));
    DIContainer.Register('serverHandler', p4fslot.require('hyper-gaming-server-handler'));
};

In addition to server modules, all Hyper Gaming projects should initialize the following handlers for sound, hotkey and UI interaction.

In the same extend-slotty-setting.js, add this function:

var HyperSoundHandler = require('extend-sound-handler');
var UISoundHandler = require('ui-sound-handler');
var HyperHotkeyHandler = require('hyper-hotkey-handler');
var HyperNotificationHandler = require('hyper-notification-handler');

SlottySetting.prototype._initializeParameter = function () {
    new UISoundHandler();
    new HyperSoundHandler();
    new HyperHotkeyHandler();
    new HyperNotificationHandler();
};