最初曾考慮用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基本資料整理
- Web Worker 經驗分享(一)
- Web Worker 經驗分享(二)
- 使用Web Worker后台运行JavaScript
- Web Worker,来自《JavaScript 标准参考教程(alpha)》
- HTML5 Web Worker的使用
- The Basics of Web Workers
- MDN-Using web workers
three.js與Web Worker實作範例
- Partial image manipulation with canvas and webworkers
- HTML5: Easily parallelize jobs using web workers and a threadpool
- Three.js tutorial: example with webgl, canvas and webworkers
- Optimizing Three.js Performance: Simulating Tens of Thousands of Independent Moving Objects
用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
知道自己需要的材料大致有哪些後,心情終於比較踏實了
沒有留言:
張貼留言