App42 Unity SDK allows a developer to save game score of a user and to maintain a leaderboard among the friends in Facebook and that too with global ranks.
This is a sample for saving Facebook user score and displaying leaderboard among Facebook friends and also showing the global ranks in a game.
App42 Unity SDK le permite al desarrollador guardar la puntuación del juego del usuario y mantener una tabla de puntuación entre los amigos de Facebook y con clasificaciones globales.
Esta es una muestra para guardar los puntajes de usuarios de Facebook y mostrarlos las tablas de puntuaciones entre amigos de Facebook y las clasificaciones globales.
Feature List :
- Saving Facebook user score.
- Displaying leaderboard among Facebook friends.
- Global leaderboard.
Running Sample:
- Register with App42 platform.
- Go to dashboard and click on the Create App.
- Fill all the mandatory fields to get your APIKey and SecretKey.
- Download App42 Unity3D Global Social Leaderboard Sample App and unzip it on your machine.
- Import project in unity editor.
You have to create a game so that you can access all the GameService methods.
Creating game:
For creating a game, you have to follow these steps :-
- Log-in with AppHq console.
- Click on dashboard, you can see it in the Upper-Left in AppHq console.
- Go to Business Service Manager from the left tab.
- Click on Game Service and select Game.
- Select an App regarding which you want to create a game.
- Create game “sampleGame” by clicking on “Add Game” button from right tab in AppHQ.
Now one can call associated methods of that service by passing this gameName, e.g. save user score, get top ranks from Facebook etc.
Initialize App42 :
In order to use the various functions available in a specific API, a developer has to create an instance of ServiceAPI by passing the apiKey and secretKey which will be created after the app creation from AppHQ dashboard.
Edit AppConstant.cs script and put your API_KEY and SECRET_KEY (which were received in step#2 & #3) as shown below:
public class AppConstant : MonoBehaviour
{
public static string API_KEY = "YOUR_API_KEY";
public static string SECRET_KEY = "YOUR_SECRET_KEY";
}
Import Statement
using com.shephertz.app42.paas.sdk.csharp;
using com.shephertz.app42.paas.sdk.csharp.game;
Design Details:
App42 ScoreBoard:
Initialize App42ScoreBoard to build an instance of ScoreBoardService, BuildScoreBoardService() method needs to be called.
// Initializing ScoreBoard Service.
ScoreBoardService scoreBoardService = sp.BuildScoreBoardService();
Saving Facebook User Score.
For saving Facebook user score, we need at least a gameName, Facebook userId to get user name which has to be saved, score value, and a callback.
Note: userId must be the Facebook userId.
public class App42Console : MonoBehaviour,App42CallBack
{
public void SaveUserScore(string userId, string score)
{
scoreService.SaveUserScore(constants.GameName, userId, Convert.ToDouble(score), callback);
}
}
Here is the CallBack for Response of the saved score :-
public class SaveCallback : MonoBehaviour,App42CallBack
{
public void OnSuccess (object response)
{
AppConstant.SetSaved(true);
}
public void OnException (Exception e)
{
Debug.Log("Exception Occurred : " + e);
}
}
Now, we have to show the leaderboard of Facebook game players.
public class App42Console : MonoBehaviour,App42CallBack
{
public void SocialConnectWithApp42(string fbAccessToken)
{
sp = AppConstant.GetServce();
scoreService = AppConstant.GetScoreService(sp);
scoreService.GetTopNRankersFromFacebook(constants.GameName, fbAccessToken, 10, this);
}
}
Here is the CallBack for Response of Top Ranks From Facebook :-
public class App42Console : MonoBehaviour,App42CallBack
{
public void OnSuccess (object response)
{
if (response is Game){
Game gameObj = (Game)response;
IList scoreList = gameObj.GetScoreList();
Debug.Log(scoreList);
for (int i=0 ;i< scoreList.Count;i++)
{
string userName = scoreList[i].GetFacebookProfile().GetName();
IList list = new List();
string rank = (i+1).ToString();
list.Add(rank);
list.Add(userName);
list.Add(scoreList[i].GetValue().ToString());
fList.Add(list);
}
}
public void OnException (Exception e)
{
Debug.Log("Exception Occurred : " + e.ToString());
}
}
For implementing Global LeaderBoard, we have to use these two methods :-
Get Top N Rankers, from App42 ScoreBoard Service.
For implementing this method, we have to pass :-
GameName – Name of the game, for which we saved score.
Max – Value of N(means the maximum value of rankers we want to fetch, in this case it gives the top 10 rankers).
And a callback.
public void ShowApp42GlobalLeaderBoard()
{
sp = AppConstant.GetServce(); // calling App42 service API.
scoreBoardService = AppConstant.GetScoreService(sp); // Initializing App42 scoreBoardService.
scoreBoardService.GetTopNRankers(constants.GameName, 10, this);
}
This Method gives us a list of all the users who saved score for this game, the result list of users are the Facebook ids, as mentioned before that for saving score userIds must be the Facebook user ids.
IList facebookIds = new List ();
public void OnSuccess (object response)
{
if (response is Game)
{
Game game = (Game)response;
IList scoreList = game.GetScoreList();
for (int i=0; i< scoreList.Count; i++)
{
string rank = (i+1).ToString();
double score = scoreList [i].GetValue();
string id = scoreList [i].GetUserName();
facebookIds.Add (id);
}
// This method gives us facebook profile from related id .
App42socialService.GetFacebookProfilesFromIds (ids, this);
}
}
Now we have a list of Facebook userIds, for showing the Facebook details of these users, we have to use our another method as shown below:
Get Facebook Profile From userIds, from App42 Social Service.
For implementing this method we just have to pass a list of facebook userIds, as we fetched in the earlier method.
App42socialService.GetFacebookProfilesFromIds (ids, this); // we already call this method in OnSuccess of Top N Rankers.
This method gives the facebook profile details of users, such as Id, profile pic, and user name.
if (response is Social)
{
Social social = (Social)response;
IList FBProfileDetails = social.GetPublicProfile ();
for (int i=0; i< FBProfileDetails.Count; i++)
{
string FbUserName = FBProfileDetails [i].GetName ();
string FbUserProfilePic = FBProfileDetails [i].GetPicture ();
string FbUserId = FBProfileDetails [i].GetId();
}
}
Note: Facebook Unity3d SDK doesn’t support desktop applications at the moment. You must run this app on apps.facebook.com/. For more information about Unity3D Facebook SDK, visit Getting-started with App42 platform with Unity Facebook.
Lista de funciones :
- Guardar los puntajes de usuarios de Facebook
- Mostrar la tabla de puntuaciones entre los amigos de Facebook
- Tablas de puntuaciones globales
Ejecutar la muestra:
- Regístrese con App42 Platform
- Vaya al dashboard y de click en Create App
- Llene todos los campos obligatorios para obtener APIKey y SecretKey
- Descargue App42 Unity3D Global Social Leaderboard Sample App y descomprímala en su equipo
- Importe el proyecto en editor de unity
Tiene que crear un juego para que pueda acceder a todos los métodos de GameService.
Creación del juego :
Para la creación del juego, siga los siguientes pasos:
- Ingrese a AppHq console
- Click en el dashboard, puede verlo en la parte superior izquierda de AppHQ Console
- Vaya a Business Service Manager desde la pestaña izquierda
- Click en Game Service y seleccione el juego
- Seleccione una aplicación sobre la cual desea crear un juego
- Cree un juego “sampleGame” dando click en el botón Add Game desde la pestaña derecha en AppHQ
Ahora puede llamar los métodos asociados del servicio pasando este gameName, por ejemplo, guarde el puntaje del usuario, obtenga los puntajes más altos desde Facebook.
Inicie App42:
Con el objetivo de usar las múltiples funciones disponibles en una API específica, un desarrollador tiene que crear una instancia de ServiceAPI pasando el apiKey y secretKey el cual será creado después de la creación desde el dashboard AppHQ.
Edite AppConstant.cs y ponga su API_KEY y SECRET_KEY (la cual fue obtenida en el paso 2 y 3) como se muestra a continuación
public class AppConstant : MonoBehaviour
{
public static string API_KEY = "YOUR_API_KEY";
public static string SECRET_KEY = "YOUR_SECRET_KEY";
}
Import Statement
using com.shephertz.app42.paas.sdk.csharp;
using com.shephertz.app42.paas.sdk.csharp.game;
Detalles de diseño :
App42 ScoreBoard:
Inicie App42ScoreBoard para construir una instancia de ScoreBoardService, y método BuildScoreBoardService() necesita ser llamado.
// Initializing ScoreBoard Service.
ScoreBoardService scoreBoardService = sp.BuildScoreBoardService();
Guardar los puntajes de usuarios de Facebook
Para guardar puntajes de los usuarios de Facebook, necesitamos al menos un gameName, ID de usuario de Facebook para obtener el nombre de usuario que será almacenado, valor de puntaje y una llamada.
public class App42Console : MonoBehaviour,App42CallBack
{
public void SaveUserScore(string userId, string score)
{
scoreService.SaveUserScore(constants.GameName, userId, Convert.ToDouble(score), callback);
}
}
Aquí está la CallBack para Response del puntaje guardado :-
public class SaveCallback : MonoBehaviour,App42CallBack
{
public void OnSuccess (object response)
{
AppConstant.SetSaved(true);
}
public void OnException (Exception e)
{
Debug.Log("Exception Occurred : " + e);
}
}
Ahora, tenemos que mostrar la tabla de puntuaciones de los jugadores de Facebook.
public class App42Console : MonoBehaviour,App42CallBack
{
public void SocialConnectWithApp42(string fbAccessToken)
{
sp = AppConstant.GetServce();
scoreService = AppConstant.GetScoreService(sp);
scoreService.GetTopNRankersFromFacebook(constants.GameName, fbAccessToken, 10, this);
}
}
Aquí está la CallBack para Response de los puntajes más altos de Facebook :-
public class App42Console : MonoBehaviour,App42CallBack
{
public void OnSuccess (object response)
{
if (response is Game){
Game gameObj = (Game)response;
IList scoreList = gameObj.GetScoreList();
Debug.Log(scoreList);
for (int i=0 ;i< scoreList.Count;i++)
{
string userName = scoreList[i].GetFacebookProfile().GetName();
IList list = new List();
string rank = (i+1).ToString();
list.Add(rank);
list.Add(userName);
list.Add(scoreList[i].GetValue().ToString());
fList.Add(list);
}
}
public void OnException (Exception e)
{
Debug.Log("Exception Occurred : " + e.ToString());
}
}
Para implementar Tablas de puntuaciones Globales, debemos usar estos dos métodos:
Obtener Top N Rankers, desde App42 ScoreBoard Service.
Para implementar este método tenemos que pasar:
GameName – nombre del juego, por el cual hemos guardado la puntuación.
Max – Value de N (significa el valor máximo del rankers que queremos obtener, en este caso se da los 10 primeros)
Y una callback
public void ShowApp42GlobalLeaderBoard()
{
sp = AppConstant.GetServce(); // calling App42 service API.
scoreBoardService = AppConstant.GetScoreService(sp); // Initializing App42 scoreBoardService.
scoreBoardService.GetTopNRankers(constants.GameName, 10, this);
}
Este método nos da una lista de todos los usuarios quienes hayan guardado las puntuaciones para este juego, la lista resultante de usuarios son los ID, como se mencionó antes para guardar los puntajes de los ID de los usuarios deben ser los ID de Facebook.
IList facebookIds = new List ();
public void OnSuccess (object response)
{
if (response is Game)
{
Game game = (Game)response;
IList scoreList = game.GetScoreList();
for (int i=0; i< scoreList.Count; i++)
{
string rank = (i+1).ToString();
double score = scoreList [i].GetValue();
string id = scoreList [i].GetUserName();
facebookIds.Add (id);
}
// This method gives us facebook profile from related id .
App42socialService.GetFacebookProfilesFromIds (ids, this);
}
}
Ahora tenemos una lista de ID de usuarios de Facebook, para mostrar los detalles de Facebook de estos usuarios, tenemos que usar nuestro otro método como se muestra a continuación:
Obtenga los perfiles de Facebook de los ID de los usuarios, desde App42 Social Service.
Para implementar este método tenemos que pasar la lista de los ID de los usuarios de Facebook, como obtuvimos en el método anterior.
App42socialService.GetFacebookProfilesFromIds (ids, this); // we already call this method in OnSuccess of Top N Rankers.
Este método da los detalles de los usuarios de Facebook, como ID, foto de perfil, y nombre de usuario. .
if (response is Social)
{
Social social = (Social)response;
IList FBProfileDetails = social.GetPublicProfile ();
for (int i=0; i< FBProfileDetails.Count; i++)
{
string FbUserName = FBProfileDetails [i].GetName ();
string FbUserProfilePic = FBProfileDetails [i].GetPicture ();
string FbUserId = FBProfileDetails [i].GetId();
}
}
Nota: Facebook Unity3D SDK no soporta aplicaciones de escritorio de momento. Debe ejecutar estas aplicaciones en apps.facebook.com/.
Por favor contáctenos a support@shephertz.com en caso de alguna duda o sugerencia.
Leave A Reply