SKYXY客服
x
第一章 arcalet教程 開發設定與賬號管理 | skyxy
快速建站
︿
TOP
首頁 > 入門學習 > 文章內容
第一章 arcalet教程 開發設定與賬號管理
7/7/2016
瀏覽數:7494
沈夜
1.0 開發佈署
arcalet 平台提供的跨平台 SDK,簡易使用的 API 及其他功能,開發者可以在最短的及最低的成本內開發出多人即時互動的應用/遊戲。

其他詳情還請開發者到這裡進行查詢:
http://developer.arcalet.com/tutorials/index.asp?maintitleclass=1&dirid=211&l=tw
首先,在使用api前,我們需要學習如何創建自己的開發環境。
這一篇會教大家如何快速的建立自己的平台部署用戶端的環境程式(詳細說明請參考程式設計指南)。
佈署一
建立一個遊戲專案。
佈署二
取得遊戲專案中的 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 物件。
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
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
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
1.4 追踪連線狀態
當玩家連入arcalet後,為了預防玩家已經斷線了卻不知情的情況下,需要有一個機制監控連線狀態。
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來讓玩家重新連線。
此篇範例位置: 
Assets\Scene\1\1.1~1.2_Login

Ps.只要打開設定即可
1
2
3
4
5
 5_2016072914851.zip  (3.78 MB)
您也可能喜歡這些文章
留言給作者
不公開此留言     登入即可留言
讀者留言
載入更多留言