︿
TOP
第一章 arcalet教程 開發設定與賬號管理
7/7/2016
瀏覽數:7631
1.0 開發佈署
arcalet 平台提供的跨平台 SDK,簡易使用的 API 及其他功能,開發者可以在最短的及最低的成本內開發出多人即時互動的應用/遊戲。
其他詳情還請開發者到這裡進行查詢:
http://developer.arcalet.com/tutorials/index.asp?maintitleclass=1&dirid=211&l=tw
其他詳情還請開發者到這裡進行查詢:
http://developer.arcalet.com/tutorials/index.asp?maintitleclass=1&dirid=211&l=tw
首先,在使用api前,我們需要學習如何創建自己的開發環境。
這一篇會教大家如何快速的建立自己的平台部署用戶端的環境程式(詳細說明請參考程式設計指南)。
這一篇會教大家如何快速的建立自己的平台部署用戶端的環境程式(詳細說明請參考程式設計指南)。
佈署一
建立一個遊戲專案。
建立一個遊戲專案。
佈署二
取得遊戲專案中的 GGUID、SGUID 及 Certificate。
取得遊戲專案中的 GGUID、SGUID 及 Certificate。
程式碼:
C#
using UnityEngine;
using System.Collections;
public class Sample_Login : MonoBehaviour {
/*******************************************************************
* Copyright © 2016 arcalet. All Rights Reserved
*
*******************************************************************/
#region Variables
//在此輸入開發者後台顯示的gguid
private const string gguid = "";
//在此輸入開發者後台顯示的sguid
private const string sguid = "";
//在此輸入開發者後台顯示的憑證
//EX: byte[] certificate = {0x60,0x1f,0xef,0xc5,0x..,0x..,0x..,0x..};
byte[] certificate = {};
ArcaletGame ag = null;
#endregion
}
前言:
在學習如何登入賬號前,我們先來了解 何為 ArcaleGame。
開發者在使用 arcalet 遊戲伺服器要先建立此物件,開發者建立了一個新的遊戲時,系統會產生一個唯一的遊戲識別碼,我們稱為: Game GUID ,簡稱 GGUID 。
在成功建立ArcaletGame後,會自動建立一個靜態場景,這個場景是用來做為大廳系統的訊息傳遞之用的。同樣的,場景也會有一個唯一的場景識別碼,我們稱為 Scene GUID ,簡稱 SGUID 。
此外,系統也會產生一個用來做安全識別的「遊戲憑證碼」,長度為 128 bytes。有了 GGUID、SGUID 、 遊戲憑證碼與帳號密碼,就可以用來產生 ArcaletGame 物件。
開發者在使用 arcalet 遊戲伺服器要先建立此物件,開發者建立了一個新的遊戲時,系統會產生一個唯一的遊戲識別碼,我們稱為: Game GUID ,簡稱 GGUID 。
在成功建立ArcaletGame後,會自動建立一個靜態場景,這個場景是用來做為大廳系統的訊息傳遞之用的。同樣的,場景也會有一個唯一的場景識別碼,我們稱為 Scene GUID ,簡稱 SGUID 。
此外,系統也會產生一個用來做安全識別的「遊戲憑證碼」,長度為 128 bytes。有了 GGUID、SGUID 、 遊戲憑證碼與帳號密碼,就可以用來產生 ArcaletGame 物件。
1.1 登入賬號
使用 arcalet 時,需要登入才能使用其他功能。此教學展示利用 arcalet 的 api 即可達到簡單的登入功能。
(本教學不討論 Ugui的使用方法,相關資訊請到官網查詢 https://docs.unity3d.com/Manual/UISystem.html)
登入 api:
範例 Code:
C#
void ArcaletLaunch(string username, string password)
{
ag = new ArcaletGame(username, password, gguid, sguid, certificate); //輸入所需要的參數
ag.onCompletion += CB_ArcaletLaunch; //指定 CallBack function
ag.Launch(); //啟動 arcalet
}
由於我們需要知道是否成功登入,所以我們需要增加一個 CallBack function.
範例 Code:
C#
void CB_ArcaletLaunch(int code, ArcaletGame game)
{
if (code == 0)
{
//登入成功時執行的區段
Debug.Log("Login Successed");
}
else {
//登入失敗時執行的區段
Debug.LogWarning("Login Failed - Code:" + code);
}
}
執行畫面:
此篇範例位置:
Assets\Scene\1\1.1~1.2_Login
Assets\Scene\1\1.1~1.2_Login
1.2 用戶端註冊
玩家除了可以到網站上註冊賬號外,arcalet 也提供了api 讓開發者可以自己定義申請的方式。
P.S 相關程式碼可以在Scripts\AGCC\AGCC_Registed.cs 找到
Api:
範例 Code:
C#
void Regist(string username, string password, string mail)
{
//在此製作一個Token, 當程式呼叫CallBack時可以再將Token取出
string[] registToken = new string[] { username, password, mail };
ArcaletSystem.ApplyNewUser(gguid, certificate, username, password,
mail, CB_Regist, registToken);
}
其中 token 可以放入任何 object 作為callback後要使用的參數 PS:註冊完成想要讓玩家自動登入的話,可把 Auto Login 的功能打勾(下圖紅框)。
CallBack 範例 Code:
C#
void CB_Regist(int code, object token)
{
//Code為0表示註冊成功
if (code == 0)
{
string[] reg = token as string[]; //取回Token
string acc = reg[0];
string pw = reg[1];
string mail = reg[2];
Debug.Log("Regist Successed - Account:" + acc + " / Password:" +
pw + " E-Mail" + mail);
//如果希望玩家在註冊完成之後自動登入可以利用Token取得玩家的註冊資訊並進行登入
if (autoLogin)
{
ArcaletLaunch(acc, pw);
}
}
//Code非0表示註冊失敗
else {
Debug.LogWarning("Regist Failed - Error:" + code);
}
}
執行畫面:
此篇範例位置:
Assets\Scene\1\1.1~1.2_Login
Assets\Scene\1\1.1~1.2_Login
1.3系統配置賬號
雖然玩家可以通過網頁申請賬號,但對於行動裝置或創建遊戲賬號並不是很方便,這裡可以通過使用另外一個api 來達到需求。
API:
範例 Code:
C#
void GetSysAccount()
{
ArcaletSystem.ApplyNewUser(gguid, certificate, CB_GetSysAccount, null);
}
CallBack 範例code:
C#
void CB_GetSysAccount(int code, object data, object token)
{
if (code == 0) //Code為0表示取得帳號成功
{
Hashtable ht = data as Hashtable; //取得帳號成功時將返回一組Hashtable
system_acc = ht["userid"].ToString();
system_pw = ht["passwd"].ToString();
Debug.Log("Get Account Successed - Account:" + system_acc + " / Password:" +
system_pw);
}
//Code非0表示取得帳號失敗
else
{
Debug.LogWarning("Get Account Failed - Error:" + code);
}
}
小技巧:
在取得系統賬號後,可以讓賬號與密碼存儲在本機中,這樣下次就能直接通過讀取登入遊戲。
在取得系統賬號後,可以讓賬號與密碼存儲在本機中,這樣下次就能直接通過讀取登入遊戲。
在取得系統賬號後,為了方便玩家使用,也有提供升級的api讓玩家升級賬號。
API:
範例 Code:
C#
void UpgardeSysAccount(string username, string password, string mail)
{
ArcaletSystem.UpgradeUser(ag, username, password, mail, CB_UpgardeSysAccount, null);
}
CallBack 範例code:
C#
void CB_UpgardeSysAccount(int code, object token)
{
//Code為0表示升級帳號成功
if (code == 0)
{
Debug.Log("Upgrade Account Successed");
}
//Code非0表示升級帳號失敗
else {
Debug.LogWarning("Upgrade account Failed - Error:" + code);
}
}
執行畫面:
此篇範例位置:
Assets\Scene\1\1.3_AutoReg
Assets\Scene\1\1.3_AutoReg
1.4 追踪連線狀態
當玩家連入arcalet後,為了預防玩家已經斷線了卻不知情的情況下,需要有一個機制監控連線狀態。
arcalet 有提供針對網路連接做檢測的api 作為監控網絡狀態。
arcalet 有提供針對網路連接做檢測的api 作為監控網絡狀態。
Api:
只需要在登入的時候增加 ag.onStateChanged 就能在網絡連接改變狀態時得到現在的狀態。
C#
void ArcaletLaunch(string username, string password)
{
ag = new ArcaletGame(username, password, gguid, sguid, certificate); //輸入所需要的參數
ag.onCompletion += CB_ArcaletLaunch; //指定 CallBack function
ag.onStateChanged += OnArcaletStateChanged; //偵測連線狀態
ag.Launch(); //啟動 arcalet
}
void OnArcaletStateChanged(int state, int code, ArcaletGame game)
{
//當連線狀態發生改變時,OnStateChange會通知程式
Debug.Log("Arcalet State Changed - State:" + state + " Code:" + code);
if (state >= 100 && state <= 600)
{
if(openStateBar)
LogManager.UpdateBarState(state);
}
if (state >= 900)
{
//一旦state大於900,表示目前已經處於斷線狀態
Debug.LogWarning("Arcalet game disconnect");
}
}
小技巧:
在多數行動裝置的設備上,讓app退出到背景程式時,並不會馬上造成app與arcalet的連接斷線。但如果退出太久,還是會因長時間無響應的問題而導致斷線,這時候就可以根據 state來讓玩家重新連線。
在多數行動裝置的設備上,讓app退出到背景程式時,並不會馬上造成app與arcalet的連接斷線。但如果退出太久,還是會因長時間無響應的問題而導致斷線,這時候就可以根據 state來讓玩家重新連線。
此篇範例位置:
Assets\Scene\1\1.1~1.2_Login
Ps.只要打開設定即可
Assets\Scene\1\1.1~1.2_Login
Ps.只要打開設定即可
1
2
3
4
5
您也可能喜歡這些文章
留言給作者
不公開此留言
登入即可留言
讀者留言
載入更多留言
文章列表