翻譯不完整。請協助 翻譯此英文文件。
現有的 Web 技術再搭配最新版瀏覽器,就能打造出絕佳的 Web 遊戲,而且我們講的可不是用 Flash® 寫的簡單卡牌遊戲,或是多人的社交遊戲而已。卻是可打趴一堆平面遊戲的 3D 動作射擊或角色扮演遊戲。多虧 JavaScript 的即時 (Just-in-time,JIT) 技術與新 API 雙雙大幅提升其效能,你所撰寫的遊戲已可於瀏覽器 (或支援 HTML5 的裝置,即如 Firefox OS) 中執行,卻又不致犧牲任何效能。
HTML5 遊戲平台
如同 Mozilla 常說的「Web 即是平台」,你可將 Web 想像為較佳的遊戲平台。接著就來看看 Web 平台的核心:
功能 | 技術 |
---|---|
音效 | Web Audio API |
圖形 | WebGL (OpenGL ES 2.0) |
輸入 | 觸控事件、Gamepad API、裝置感測器、WebRTC、Full Screen API、Pointer Lock API |
程式語言 | JavaScript (或 C/C++ 可透過Emscripten 編譯為 JavaScript) |
網路連線 | WebRTC 及/或 WebSockets |
儲存功能 | IndexedDB 或雲端 |
Web | HTML、CSS、SVG、Social API (還有更多!) |
商業案例
-
Web 無遠弗屆,而用 HTML5 撰寫的遊戲可自由在桌機、平板電腦、智慧電視、智慧型手機上執行。
- 可獲得更好的行銷與露出機會。你不再限制於某個 App 商店才能推廣自己的 App;反而能透過 Web 上的所有媒體推銷遊戲,並利用 Web 的串連與分享效率接觸到新客戶。
- 你能控制「付款」這個重要的作業。之前只要你的遊戲放在某個生態系統中,就必須支付超過 30% 的收益給該系統。但現在你可選擇自己喜歡的 App 訂價與付款服務。
- 同樣的,你也能自行控制 App 的更新頻率,而不再需要枯等別人審核你的重要修正檔,還不知道今天還明天才能上架。
- 控制你的分析方式!你能蒐集自己所需的資料,或可選擇你所愛用的第三方,進而獲得你的銷售資訊以及所觸及的消費族群;不需再讓別人幫你決定分析方法。
- 你能進一步管理自己與消費者之間的關係,不再受限於 App 商城的機制而取得篩選過的反饋意見。也不需再經過中間人,就能以自己的方式和消費者直接交流。
- 玩家隨時隨地都能暢玩你的遊戲。因為 Web 無所不在,消費者能在自己的手機、平板電腦、家裡桌機、辦公室電腦,或任何地方觀看遊戲進度。
遊戲開發者所應知道的 Web 技術
Note for Austin/other writers: were were intending to have a dedicated "Core technology reference" page linked form the main page, basically providing links to all the useful game-related reference stuff elsewhere on MDN. This section would best belong there. But for now, I'll leave it alone until you can call this article finished, just to avoid any confusion, and feeling of "where the hell's my stuff been moved to?" ;-)
我們要為開發者提供 API 的相關資訊,了解 Web 帶來的絕妙開發功能。
以下只列舉出其中數項:
- Full Screen API
- 此簡易 API 可讓遊戲全螢幕運作,提供玩家絕佳的動作體驗。
- Gamepad API
- 如果要讓遊戲搭配搖桿或其他類型的控制器,就用這個 API。
- HTML 與 CSS
- 這兩種技術可用以建立遊戲的使用者介面,並設定其風格與配置方式。部分的 HTML 即為
<canvas>
元素,可直接建構 2D 圖形。 - HTML audio
<audio>
元素可輕鬆播放簡易音效與音樂。如果需要進一步效果,可參閱 Web Audio API 達到真正的音訊處理效能!- IndexedDB
- 此強大的資料儲存 API,可將使用者的資料保存於電腦或其他裝置之上,亦可於本端儲存遊戲資料與其他資訊;如此可避免每次都需再下載資料一次。即使目前處於無網路連線的狀態 (例如飛機上長達數個小時的旅程...),也同樣可以玩遊戲 。
- JavaScript
- JavaScript 就是 Web 上使用的程式語言,可於現有瀏覽器上達到絕佳速度,且目前還在不斷的提升。你可寫出遊戲的程式碼,或可透過如 Emscripten 或 Asm.js 的技術,輕鬆移植現有的遊戲。
- Pointer Lock API
- Pointer Lock API 可鎖定遊戲介面中的滑鼠或其他指向裝置。取代之前的絕對游標定位,現可接收座標差而得到更精確的使用者動作,並避免使用者突然在他處輸入,卻遺漏了重要動作。
- SVG (Scalable Vector Graphics,可縮放向量圖形)
- 可建構向量圖形,根據裝置畫面的解析度而順暢調整。
- Typed Array (具型別陣列)
- JavaScript 的具型別陣列,可讓你在 JavaScript 中存取原始的二進位資料。如此可讓你設定 GL 紋理 (Texture)、遊戲資料,或其他物件。甚至非原生 JavaScript 格式的亦可處理。
- Web Audio API
- 此 API 可透過 JavaScript 程式碼控制音訊的回播、合成、操作等作業,讓你建構絕妙音效並即時播放音樂。
- WebGL
- 可於 Web 內容中建立高效能、硬體加速的 3D (與2D) 圖像。此為 Web 所支援的 OpenGL ES 2.0 實作。
- WebRTC
- WebRTC (Real-Time Communications) API 可控制音訊與視訊資料 (包含視訊會議),並能在兩名使用者之間來回傳輸其他應用程式的資料。想讓玩家能一邊爆怪物的頭還一邊交談?就用這個 API 吧。
- WebSockets
- WebSocket API 可讓你的 App 或網站連上伺服器,進而即時來回傳輸資料。適用於多人遊戲、聊天服務等。
- Web Workers
- Workers 可讓你分配背景執行緒,執行本身所屬的 JavaScript 程式碼,藉以利用新的多核心處理器。
- XMLHttpRequest 與 File API
- 整合的 XMLHttpRequest 與 File API,可你從 Web 伺服器接收或傳送所需的任何資料 (別因為「XML」搞混了)。如此能順利下載新的遊戲關卡與圖片,藉以來回傳輸非即時的遊戲狀態資訊。