iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
1

雖然是連線的小遊戲但仍有玩家登入的需求和玩家在Server端的資料要處理,若是要自行實現,DB和REST Server等,感覺上有些花時間。再加上對於玩家登入這部份不了解,現下不想要花太多時間研究。很直覺的就想到用坊間現成的Backend服務,能夠直接套用進來是最好的。而第一首選,自然是以前曾經用過的Firebase。但這個念頭很快就打消了,開發Windows Standalone平台的情況下,Firebase是不支援的。打消這個念頭後,只好找個旗鼓相當的方案。而目前的選擇裡,PlayFab就脫穎而出,成為這次製作最好的選擇。

申請加入PlayFab很方便,登入的Dashboard如下圖所示

PlayFab Dashboard

今天主要就是要將PlayFab登入這個部份加入到專案裡,登入相關的Code其實官方文件或是教學影片裡都有提供,最重要的API展示如下

// Login
var request = new LoginWithEmailAddressRequest {Email = _userEmail, Password = _userPassword};
PlayFabClientAPI.LoginWithEmailAddress(request, OnLoginSuccess, OnLoginFailure);
// Register
var request = new RegisterPlayFabUserRequest {Username = _userName, Email = _userEmail, Password = _userPassword};
PlayFabClientAPI.RegisterPlayFabUser(request, OnRegisterSuccess, OnRegisterFailure);

不過,除了Code本身,今天會希望能加入簡單的UI,並整理一下專案的架構。

Actual Work

為了要能夠執行到這段,要先加入可被執行的UI及其Flow,這部份在製作上沒有複雜的地方,就是花時間。不過,試著用Bolt有幾個地方要記錄下來。首先是拿取場景上某個物件(確實可以拿到的情況)若是直接在後頭接發送事件,並將事件發送到這個物件,此時有很高的機率在當下那個物件是空值,就算是在Bolt的Graph裡也看到了那個物件有值存在,但事件就是不會送到那個物件。解決的方式就是在中間等到下個Frame再送事件。

Wait Next Frame

多數的時候等一個frame不會有影響,但極少數的情況下要在該frame完成,不知道是否有什麼地方沒有注意到造成的。

Bolt操作時每次若是叫出了Fuzzy Search,至少在Windows 10的使用情況下,它會關不起來,用Esc是關不掉的,只能進入到第二層才行。但有些選項開啓了小視窗後,就再也關不起來了,只能夠重開Unity Editor。

利用輸入UI拿取名稱和密碼,如果是用uGUI內建的,Bolt有準備好完成事件,可以直接使用更改變數。然而替換成TextMesh的同等方案後,Bolt就沒有事件了,目前還沒有找到方法拿取其事件或是變更後被通知。

InputField Done Event

Bolt可以直接Call Script裡的公開函數,但該型別必須在Bolt的Wizard裡進行Update的動作,它是不會自動加進來的。

Bolt Wizard

終於,有個UI可以和PlayFab的登入進行銜接了。今天的結果,綠格子的部份是回傳的ID,不擋住也可以,反正是隨便產生的帳號,這幾天可能就會移除掉,所以不會有太大的問題,但就當做顯式和PlayFab正式登入的一個重要訊息。

Actual Login

這個帳是事先產生的,如果沒有帳號,可能需要再加一個UI給註冊使用。只能說,有待商榷。

Another Route to Get Login Done

其實在找Backend的過程確實有想過要自行架設REST API和相關的DB,花了一些時間找尋最不知道怎麼處理的Login部份。先暫且不談這方面的進展,而是單從登入這部份來說。若是從最簡單的方式來看,或許只需要將玩家的帳密存在DB裡不論是SQL、NoSQL又或是利用Redis等方式,並不是說這樣的方式不好,但與其這裡自行架構陽春的解決方案,不如直接用現成的方案比較好。

而在Google找尋時,找到了FusionAuth,雖然沒有展開使用,就覺得它是一個相當好的方案。但看到了網路上的討論後,才注意到它的License,不談花大把銀兩的方案,而是免費使用的方案。它的局限性很多,而最主要的限制在於不可以放到公眾的雲端,也就是GCP也好,AWS或是Azure,通通不行。在沒有辦法為了其License花費的情況下,只好先將其記錄下來,但這次就不做考量。至於同類型的其它方案,像是Keycloak,看文件都覺得不是一時三刻可以解決的。

因此就先擱置這個方案,它日若是它的License調整了,或是有其它的機緣再做考量。


上一篇
Publisher Subscriber Usage
下一篇
Unity Game Flow
系列文
用Unity製作連線遊戲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言