2014年9月9日 星期二

2014/9/9 [參考文獻] 網頁互動MMO遊戲:客戶端Multiplayer如何做?

上周末放中秋連假之前,想到自己拿來做畢業題目的WebGL遊戲必須要做成MMO game。MMO的全名是 Massive Multiplayer Online,當初跟指導教授討論要做讓同學互動對戰的教育遊戲來作為畢業題目,從學Blender建模到現在,突然想到一個問題,我要如何實作「創建帳號」?

最初曾考慮用PlayCanvas來開發,但是研讀了它的API後發現幾乎沒看到跟MMO game裡頭創建帳戶相關的資訊,於是開始搜尋其他資料。剛開始並沒想太多,想說應該跟寫資料庫SQL差不多吧,於是開始估狗發現我寫WebGL用的Three.js幾乎找不太到什麼資料庫相關的文獻,估狗各種關鍵字後發現可以用indexedDB與babylon.js來產生資料庫的連結,這幾天也稍微研究一下並同時繼續估狗,後來發現indexedDB並非同步性的,會有time delay的問題,參照下面投影片(出處)的p19、p20


看到p20時說,"WebWorker is awesome." 這讓我好奇這是什麼東西,於是又繼續估狗。找到一篇中文的介紹,才知道javascript是單一執行緒的程式,如果把3D model與物理運算都在同一個執行緒上跑,想當然爾容易當掉,所以需要透過Web Worker另外開一個執行緒去跑其他運算,多看幾篇後知道有一個three.js的物理引擎plugin,Physijs就是透過Web Worker去調用

Web Worker基本資料整理

three.js與Web Worker實作範例
花了一兩天拼命估狗,知道可以透過實作Web Worker開另一條執行緒來寫javascript進行物理運算,但是依舊沒有解決我的問題:實作MMO game該如何創建玩家的帳號。

今天又花了一整天找資料也沒什麼頭緒,回去看剛剛上面找到的那個投影片TDC 2013 - WebGL & WebSockets for 3D Multi-Platform Multiplayer Gaming投影片的p9有一串網址,打入那網址可連到這網頁,當初我選了Phone War,稍微玩了一下,確定可以透過WebGL實作multiplayer

再回去看投影片,看到p11的標題 WebSocket,然後估狗WebGL+WebSocket找到下面這篇文章
我終於找到我需要的元素了,透過Node.js與Socket.IO來實作,就可達成MMO game的多個帳號同時連線遊玩的效果

Node.js

知道自己需要的材料大致有哪些後,心情終於比較踏實了


沒有留言:

張貼留言