Difference between revisions of "* Initialisation and Core"

From GiderosMobile
 
(16 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
__NOTOC__
 
__NOTOC__
'''Supported platforms:''' html5<br/>
+
<!-- GIDEROSOBJ:* Initialisation and Core -->
 +
'''Supported platforms:''' [[File:Platform html5.png]]<br/>
 
'''Available since:''' Gideros 2018.3<br/>
 
'''Available since:''' Gideros 2018.3<br/>
 +
 
=== Description ===
 
=== Description ===
<br />
+
You need to do two things to target Facebook Instant Games:
You need to do two things to target Facebook Instant Games:<br /><br />
+
 
1. Tick the Facebook Instant Game tickbox when exporting to HTML5, you can also specify the percentage indicator that the game will show it has loaded before you take control.<br />
+
# Tick the Facebook Instant Game tickbox when exporting to HTML5, you can also specify the percentage indicator that the game will show it has loaded before you take control
2. Require the FBInstant library code, see the example below.<br/>
+
# Require the FBInstant library code, see the example below
<br />
+
 
You can upload, debug and test your game by creating a player and uploading to Facebook servers as a game.   The player will interact with the Gideros Studio similar to any other player.<br />
+
You can upload, debug and test your game by creating a player and uploading to Facebook servers as a game. The player will interact with the Gideros Studio similar to any other player.
<br />
+
 
The only restriction with the player is that it only works on the computer viewing the html5 game (localhost) - this would normally rule out actual phones but there is a workaround for Android:<br />
+
The only restriction with the player is that it only works on the computer viewing the html5 game (localhost) - this would normally rule out actual phones but there is a workaround for Android:
<br />
+
** Connect your Android phone to your computer using ADB
1. Connect your Android phone to your computer using ADB.<br />
+
** Type in this command in a command console shell (Windows) or terminal (Mac):
2. Type in this command in a command console shell (Windows) or terminal (Mac):     <b>adb reverse tcp:15001 tcp:15001</b><br />
+
adb reverse tcp:15001 tcp:15001
3. The Android device now will see the Gideros Studio when testing the game when a player is launched from within Facebook Messenger.<br />
+
** The Android device now will see the Gideros Studio when testing the game when a player is launched from within Facebook Messenger
<br />
+
 
Please refer to the <a href="https://developers.facebook.com/docs/games/instant-games/getting-started/quickstart">original Facebook documentation</a> for more information about testing and uploading.<br /><br/>
+
Please refer to the https://developers.facebook.com/docs/games/instant-games/getting-started/quickstart original Facebook documentation for more information about testing and uploading.
Please note that the offical Facebook documentation mentions having to wait for initializeAsync, with Gideros this has already been done for you before your game starts.<br /><br />
+
 
It is very important that the only the following API calls are made before startGameAsync has resolved:<br />
+
Please note that the offical Facebook documentation mentions having to wait for initializeAsync, with Gideros this has already been done for you before your game starts.
FBInstant.getSDKVersion()<br />
+
 
FBInstant.initializeAsync()<br />
+
It is very important that only the following API calls are made before startGameAsync has resolved:
FBInstant.getPlatform()<br />
+
*FBInstant.getSDKVersion()
FBInstant.setLoadingProgress()<br />
+
*FBInstant.initializeAsync()
FBInstant.getSupportedAPIs()<br />
+
*FBInstant.getPlatform()
FBInstant.quit()<br />
+
*FBInstant.setLoadingProgress()
FBInstant.onPause()<br />
+
*FBInstant.getSupportedAPIs()
FBInstant.player.getID()<br /><br />
+
*FBInstant.quit()
To help do this you could create a variable called FBInstantAPI and set it to true once startGameAsync has been resolved - then only call other API commands if FBInstant is true and then if FBInstantAPI is true.{|-
+
*FBInstant.onPause()
| style="width: 50%;"|
+
*FBInstant.player.getID()
 +
 
 +
To help do this you could create a variable called FBInstantAPI and set it to true once startGameAsync has been resolved - then only call other API commands if FBInstant is true and then if FBInstantAPI is true.
 +
 
 +
=== Example ===
 +
'''Initialisation and removal of the Facebook loading progress indicator'''
 +
<syntaxhighlight lang="lua">
 +
pcall(function() FBInstant=require "FBInstant" end)
 +
if FBInstant then
 +
FBInstant.startGameAsync(function()
 +
print("Loading screen removed")
 +
FBInstantAPI=true
 +
end)
 +
else
 +
print("FBInstant not loaded")
 +
end
 +
</syntaxhighlight>
 +
 
 +
{|-
 +
| style="width: 50%; vertical-align:top;"|
 
=== Methods ===
 
=== Methods ===
[[FBInstant.canCreateShortcutAsync]] - Returns whether or not the user is eligible to have shortcut creation requested.<br/>
+
[[FBInstant.canCreateShortcutAsync]] ''Returns whether or not the user is eligible to have shortcut creation requested.''<br/><!-- GIDEROSMTD:FBInstant.canCreateShortcutAsync(callback) Returns whether or not the user is eligible to have shortcut creation requested. -->
[[FBInstant.checkCanPlayerMatchAsync]] - Checks if the current player is eligible for the matchPlayerAsync API.<br/>
+
[[FBInstant.checkCanPlayerMatchAsync]] ''Checks if the current player is eligible for the matchPlayerAsync API.''<br/><!-- GIDEROSMTD:FBInstant.checkCanPlayerMatchAsync(callback) Checks if the current player is eligible for the matchPlayerAsync API. -->
[[FBInstant.createShortcutAsync]] - Prompts the user to create a shortcut to the game.<br/>
+
[[FBInstant.createShortcutAsync]] ''Prompts the user to create a shortcut to the game.''<br/><!-- GIDEROSMTD:FBInstant.createShortcutAsync(callback) Prompts the user to create a shortcut to the game. -->
[[FBInstant.getEntryPointAsync]] - Returns the entry point that the game was launched from.<br/>
+
[[FBInstant.getEntryPointAsync]] ''Returns the entry point that the game was launched from.''<br/><!-- GIDEROSMTD:FBInstant.getEntryPointAsync(callback) Returns the entry point that the game was launched from. -->
[[FBInstant.getEntryPointData]] - Returns any data object associated with the entry point that the game was launched from.<br/>
+
[[FBInstant.getEntryPointData]] ''Returns any data object associated with the entry point that the game was launched from.''<br/><!-- GIDEROSMTD:FBInstant.getEntryPointData() Returns any data object associated with the entry point that the game was launched from. -->
[[FBInstant.getInterstitialAdAsync]] - Attempt to create an instance of interstitial ad.<br/>
+
[[FBInstant.getInterstitialAdAsync]] ''Attempt to create an instance of interstitial ad.''<br/><!-- GIDEROSMTD:FBInstant.getInterstitialAdAsync(placementID,callback) Attempt to create an instance of interstitial ad. -->
[[FBInstant.getLeaderboardAsync]] - Fetch a specific leaderboard belonging to this Instant Game.<br/>
+
[[FBInstant.getLeaderboardAsync]] ''Fetch a specific leaderboard belonging to this Instant Game.''<br/><!-- GIDEROSMTD:FBInstant.getLeaderboardAsync(name,callback) Fetch a specific leaderboard belonging to this Instant Game. -->
[[FBInstant.getLocale]] - The current locale.<br/>
+
[[FBInstant.getLocale]] ''The current locale.''<br/><!-- GIDEROSMTD:FBInstant.getLocale() The current locale. -->
[[FBInstant.getPlatform]] - The platform on which the game is currently running.<br/>
+
[[FBInstant.getPlatform]] ''The platform on which the game is currently running.''<br/><!-- GIDEROSMTD:FBInstant.getPlatform() The platform on which the game is currently running. -->
[[FBInstant.getRewardedVideoAsync]] - Attempt to create an instance of rewarded video.<br/>
+
[[FBInstant.getRewardedVideoAsync]] ''Attempt to create an instance of rewarded video.''<br/><!-- GIDEROSMTD:FBInstant.getRewardedVideoAsync(placementID,callback) Attempt to create an instance of rewarded video. -->
[[FBInstant.getSDKVersion]] - The string representation of this SDK version.<br/>
+
[[FBInstant.getSDKVersion]] ''The string representation of this SDK version.''<br/><!-- GIDEROSMTD:FBInstant.getSDKVersion() The string representation of this SDK version. -->
[[FBInstant.getSupportedAPIs]] - Provides a list of API functions that are supported by the client.<br/>
+
[[FBInstant.getSupportedAPIs]] ''Provides a list of API functions that are supported by the client.''<br/><!-- GIDEROSMTD:FBInstant.getSupportedAPIs() Provides a list of API functions that are supported by the client. -->
[[FBInstant.logEvent]] - Log an app event with FB Analytics.<br/>
+
[[FBInstant.logEvent]] ''Log an app event with FB Analytics.''<br/><!-- GIDEROSMTD:FBInstant.logEvent(eventName,valueToSum,parameters) Log an app event with FB Analytics. -->
[[FBInstant.matchPlayerAsync]] - Attempts to match the current player with other users looking for people to play with.<br/>
+
[[FBInstant.matchPlayerAsync]] ''Attempts to match the current player with other users looking for people to play with.''<br/><!-- GIDEROSMTD:FBInstant.matchPlayerAsync(matchTag,switchContextWhenMatched,callback) Attempts to match the current player with other users looking for people to play with. -->
[[FBInstant.onPause]] - Set a callback to be fired when a pause event is triggered.<br/>
+
[[FBInstant.onPause]] ''Set a callback to be fired when a pause event is triggered.''<br/><!-- GIDEROSMTD:FBInstant.onPause(callback) Set a callback to be fired when a pause event is triggered. -->
[[FBInstant.quit]] - Quits the game.<br/>
+
[[FBInstant.quit]] ''Quits the game.''<br/><!-- GIDEROSMTD:FBInstant.quit() Quits the game. -->
[[FBInstant.setLoadingProgress]] - Report the game's initial loading progress.<br/>
+
[[FBInstant.setLoadingProgress]] ''Report the game's initial loading progress.''<br/><!-- GIDEROSMTD:FBInstant.setLoadingProgress(percentage) Report the game's initial loading progress. -->
[[FBInstant.setSessionData]] - Sets the data associated with the individual gameplay session for the current context.<br/>
+
[[FBInstant.setSessionData]] ''Sets the data associated with the individual gameplay session for the current context.''<br/><!-- GIDEROSMTD:FBInstant.setSessionData(sessionData) Sets the data associated with the individual gameplay session for the current context. -->
[[FBInstant.shareAsync]] - This invokes a dialog to let the user share specified content.<br/>
+
[[FBInstant.shareAsync]] ''This invokes a dialog to let the user share specified content.''<br/><!-- GIDEROSMTD:FBInstant.shareAsync(payload,callback) This invokes a dialog to let the user share specified content. -->
[[FBInstant.startGameAsync]] - This indicates that the game has finished initial loading and is ready to start.<br/>
+
[[FBInstant.startGameAsync]] ''This indicates that the game has finished initial loading and is ready to start.''<br/><!-- GIDEROSMTD:FBInstant.startGameAsync(callback) This indicates that the game has finished initial loading and is ready to start. -->
[[FBInstant.switchGameAsync]] - Request that the client switch to a different Instant Game.<br/>
+
[[FBInstant.switchGameAsync]] ''Request that the client switch to a different Instant Game.''<br/><!-- GIDEROSMTD:FBInstant.switchGameAsync(appID,data,callback) Request that the client switch to a different Instant Game. -->
[[FBInstant.updateAsync]] - Informs Facebook of an update that occurred in the game.<br/>
+
[[FBInstant.updateAsync]] ''Informs Facebook of an update that occurred in the game.''<br/><!-- GIDEROSMTD:FBInstant.updateAsync(payload,callback) Informs Facebook of an update that occurred in the game. -->
| style="width: 50%;"|
+
 
 +
| style="width: 50%; vertical-align:top;"|
 
=== Events ===
 
=== Events ===
 
=== Constants ===
 
=== Constants ===
 
|}
 
|}

Latest revision as of 05:01, 24 June 2024

Supported platforms: Platform html5.png
Available since: Gideros 2018.3

Description

You need to do two things to target Facebook Instant Games:

  1. Tick the Facebook Instant Game tickbox when exporting to HTML5, you can also specify the percentage indicator that the game will show it has loaded before you take control
  2. Require the FBInstant library code, see the example below

You can upload, debug and test your game by creating a player and uploading to Facebook servers as a game. The player will interact with the Gideros Studio similar to any other player.

The only restriction with the player is that it only works on the computer viewing the html5 game (localhost) - this would normally rule out actual phones but there is a workaround for Android:

    • Connect your Android phone to your computer using ADB
    • Type in this command in a command console shell (Windows) or terminal (Mac):
adb reverse tcp:15001 tcp:15001
    • The Android device now will see the Gideros Studio when testing the game when a player is launched from within Facebook Messenger

Please refer to the https://developers.facebook.com/docs/games/instant-games/getting-started/quickstart original Facebook documentation for more information about testing and uploading.

Please note that the offical Facebook documentation mentions having to wait for initializeAsync, with Gideros this has already been done for you before your game starts.

It is very important that only the following API calls are made before startGameAsync has resolved:

  • FBInstant.getSDKVersion()
  • FBInstant.initializeAsync()
  • FBInstant.getPlatform()
  • FBInstant.setLoadingProgress()
  • FBInstant.getSupportedAPIs()
  • FBInstant.quit()
  • FBInstant.onPause()
  • FBInstant.player.getID()

To help do this you could create a variable called FBInstantAPI and set it to true once startGameAsync has been resolved - then only call other API commands if FBInstant is true and then if FBInstantAPI is true.

Example

Initialisation and removal of the Facebook loading progress indicator

 
pcall(function() FBInstant=require "FBInstant" end)
if FBInstant then
	FBInstant.startGameAsync(function() 
		print("Loading screen removed")
		FBInstantAPI=true
	end)
else
	print("FBInstant not loaded")
end

Methods

FBInstant.canCreateShortcutAsync Returns whether or not the user is eligible to have shortcut creation requested.
FBInstant.checkCanPlayerMatchAsync Checks if the current player is eligible for the matchPlayerAsync API.
FBInstant.createShortcutAsync Prompts the user to create a shortcut to the game.
FBInstant.getEntryPointAsync Returns the entry point that the game was launched from.
FBInstant.getEntryPointData Returns any data object associated with the entry point that the game was launched from.
FBInstant.getInterstitialAdAsync Attempt to create an instance of interstitial ad.
FBInstant.getLeaderboardAsync Fetch a specific leaderboard belonging to this Instant Game.
FBInstant.getLocale The current locale.
FBInstant.getPlatform The platform on which the game is currently running.
FBInstant.getRewardedVideoAsync Attempt to create an instance of rewarded video.
FBInstant.getSDKVersion The string representation of this SDK version.
FBInstant.getSupportedAPIs Provides a list of API functions that are supported by the client.
FBInstant.logEvent Log an app event with FB Analytics.
FBInstant.matchPlayerAsync Attempts to match the current player with other users looking for people to play with.
FBInstant.onPause Set a callback to be fired when a pause event is triggered.
FBInstant.quit Quits the game.
FBInstant.setLoadingProgress Report the game's initial loading progress.
FBInstant.setSessionData Sets the data associated with the individual gameplay session for the current context.
FBInstant.shareAsync This invokes a dialog to let the user share specified content.
FBInstant.startGameAsync This indicates that the game has finished initial loading and is ready to start.
FBInstant.switchGameAsync Request that the client switch to a different Instant Game.
FBInstant.updateAsync Informs Facebook of an update that occurred in the game.

Events

Constants