iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 15
0
自我挑戰組

用Unity製作連線遊戲系列 第 15

Simulte Match Service in Go

  • 分享至 

  • xImage
  •  

Continue on Unity Cloud Build API

昨天不論怎麼試bash或是powershell都沒有任何進展,可以說是Black Day,就是不順。不過後來就成功的利用了powershell就進行,先將解決問題的Code記錄下來。參考此篇討論,利用參數將重要的資訊傳入。

param (
    [string]$apiKey = "",
    [string]$orgId = "",
    [string]$projectId = ""
 )

$header = @{"Authorization" = "Bearer $apiKey"}
$url = "https://build-api.cloud.unity3d.com/api/v1/orgs/$orgId/projects/$projectId/buildtargets"
$sourceFilePath = "json.json"
$json = (Get-Content -Raw $sourceFilePath).psobject.baseobject | ConvertFrom-Json | ConvertTo-Json

$response = 
  Invoke-WebRequest `
    -Headers $header `
    -Method POST `
    -Uri $url `
    -ContentType "application/json" `
    -Body $json

"$response"

其實昨天也和接近這個版本了,唯一的差別一直是在於二次Convert。出錯的版本一直都是Body的json格式是不被接受的,原先的想法在於已經是json格式的內容讀進來後只需要第一次的ConvertFrom-Json但從這裡秀出內容的話,會是加了一堆eascape quote的json內容,而這樣的內容是不被允許的。大致上是這樣

{\"key\": \"value\"}

需要用第二個Convert,也就是ConvertTo-Json才能再次的將內容轉成

{"key": "value"}

經過二次Convert後總算是成功了。初步試驗可以創建專案,但在設定Build target確碰到了有些寫好的資料確無法填進去的狀況。雖然可以再花時間找,但先暫時擱置一下,要去處理其它的問題。

Go Server

Warm up with Docker Compse Tutorial

好久沒有用Docker Compose了,今天的目標是寫出三個沒有做什麼事的server,並將它們由docker compose執行起來。為了要復習怎麼用docker compose,就在網路上找些教學

Talk via gRPC

目前規劃三個server

  • [match-game-front]
  • [match-director]
  • [simulate-match]

match-game-front和match-director是按照之後的open match的概念所做的簡化版,而simulate-match則是利用一個簡單的server來模擬open match最核心的那幾個service。

其中,match-game-front是透過graphql和client(unity)進行連接,一但接到請求後,就利用grpc和simulate-match做溝通。simulate-match收到配對的要求後,就會直接透過grpc通知match-director。而match-director就會發出一個pubnub的訊息到指定的channel裡。

這個流程大致上是確立的,不過再實現上就碰到了golang不熟,寫起來異常地花時間。目前東拚西湊的,也只讓語法沒有錯誤的情況下達到看似好像是正確的。

這裡特地用了channel,雖然不清楚這樣用是否正確。在simulate-match裡一但接到了match-game-front透過grpc的訊息後,就傳訊息到channel裡,並在連接match-director的grpc func,利用goroutine加上channel。

	go func() {
		for {
			select {
      case x, ok := <-channel:
      default:
      }
    }
  }

沒有時間寫match-game-front,而另外二個server也還沒有時間去測。golang果然還要再花時間研究研究。


上一篇
Create Unity Cloud Build Through API
下一篇
Toss Message via Channel
系列文
用Unity製作連線遊戲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言