Web 遊戲開發入門
現代 Web 已迅速成為一個可行的平臺,不僅可以創作令人驚歎的高品質遊戲,還可以分發這些遊戲。本文將向您介紹使用 Web 作為遊戲平臺的優勢,以及使其成為可能的各項技術。
可建立的遊戲範圍可與桌面端和原生作業系統相媲美。藉助現代 Web 技術和最新的瀏覽器,完全有可能為 Web 建立令人驚歎的頂級遊戲。我們說的不是過去使用 Flash® 完成的簡單紙牌遊戲或多人社交遊戲。我們說的是 3D 動作射擊遊戲、角色扮演遊戲等。得益於 JavaScript 即時編譯器技術和新 API 的巨大效能改進,您可以構建在瀏覽器(或 HTML5 驅動的裝置)中執行且不妥協的遊戲。
HTML 遊戲平臺
您可以真正將 Web 視為您的遊戲更好的目標平臺。正如我們常說的,“Web 就是平臺。”讓我們看看 Web 平臺的核心。
| Function | 技術 |
|---|---|
| 音訊 | Web Audio API |
| 圖形 | WebGL(OpenGL ES 2.0) |
| 輸入 | 觸控事件、遊戲手柄 API、裝置感測器、WebRTC、全屏 API、指標鎖定 API |
| 語言 | JavaScript(或使用 Emscripten 編譯為 JavaScript 的 C/C++) |
| 網路 | WebRTC 和/或 WebSockets |
| Storage | IndexedDB 或“雲端” |
| Web | HTML、CSS、SVG(以及更多!) |
商業考量
作為一名遊戲開發者,無論您是個人開發者還是大型遊戲工作室,您都想知道為什麼將 Web 作為下一個遊戲專案的目標平臺是明智的。讓我們看看 Web 如何幫助您。
- Web 的覆蓋範圍是巨大的;它無處不在。使用 HTML 構建的遊戲可以在智慧手機、平板電腦、PC 和智慧電視上執行。
- 營銷和可發現性得到提升。您不再侷限於在別人的應用商店推廣您的應用。相反,您可以在整個 Web 以及其他媒體上宣傳和推廣您的遊戲,利用 Web 內在的連結性和可分享性來觸達新客戶。
- 您在關鍵領域擁有控制權:支付。您不必僅僅因為您的遊戲在其生態系統中就將 30% 的收入交給別人。相反,您可以收取您想要的費用,並使用您喜歡的任何支付處理服務。
- 同樣,您擁有更多控制權,可以隨時更新您的遊戲。不必焦急地等待批准,而由公司內部的某個人決定您的關鍵錯誤修復是今天釋出還是明天釋出。
- 掌控您的分析!您不必依賴他人來做所有關於您需要哪些分析的決定,您可以自己收集——或者選擇您最喜歡的第三方——來收集有關您的銷售和遊戲覆蓋範圍的資訊。
- 您可以以自己的方式更緊密地管理客戶關係。客戶反饋不再透過應用商店有限的機制進行過濾。以您想要的方式與您的客戶互動,無需中間商。
- 您的玩家可以隨時隨地玩您的遊戲。因為 Web 無處不在,您的客戶可以在他們的手機、平板電腦、家用筆記型電腦、工作臺式電腦或其他任何裝置上檢視他們的遊戲狀態。
面向遊戲開發者的 Web 技術
對於技術人員來說,讓我們深入研究 Web 為遊戲開發者提供的 API。這是一個全面的列表,可以為您提供 Web 能為您做什麼的初步瞭解。
- Fetch API
-
從 Web 伺服器傳送和接收您想要的任何型別的資料,例如下載新的遊戲關卡和美術素材,以及來回傳輸非即時遊戲狀態資訊。
- 全屏 API
-
這個簡單的 API 讓您的遊戲可以佔據整個螢幕,從而讓玩家沉浸在動作中。
- Gamepad API
-
如果您希望使用者能夠使用遊戲手柄或其他遊戲控制器來操作您的遊戲,那麼您將需要此 API。
- HTML 和 CSS
-
這兩種技術結合起來,可以讓您構建、設定樣式和佈局遊戲的 UI。HTML 的一部分是
<canvas>元素,它提供了一種進行 2D 圖形渲染的方式。 - HTML 音訊
-
<audio>元素讓您可以輕鬆播放簡單的音效和音樂。如果您的需求更復雜,請檢視 Web Audio API 以獲得強大的音訊處理能力! - IndexedDB
-
一個強大的資料儲存 API,用於在使用者自己的計算機或裝置上維護使用者資料。這是本地儲存遊戲狀態和其他資訊的好方法,這樣就不必每次需要時都下載。當用戶無法連線到 Web 時(例如,他們被困在飛機上數小時),也有助於使您的遊戲可玩。
- JavaScript
-
JavaScript 是 Web 上使用的程式語言,在現代瀏覽器中速度極快,並且還在不斷提速。利用它的強大功能來編寫您的遊戲程式碼,或者考慮使用 Emscripten 或 Asm.js 等技術輕鬆移植您現有的遊戲。
- Pointer Lock API
-
指標鎖定 API 允許您將滑鼠或其他指標裝置鎖定在您遊戲的介面內,這樣您就可以接收到座標增量,而不是絕對游標位置,從而更精確地測量使用者正在執行的操作,並防止使用者意外將輸入傳送到其他地方,從而錯過重要的操作。
- SVG(可伸縮向量圖形)
-
允許您構建向量圖形,這些圖形可以根據使用者顯示的大小或解析度平滑縮放。
- 型別化陣列
-
JavaScript 型別陣列使您可以在 JavaScript 中訪問原始二進位制資料;這允許您操作 GL 紋理、遊戲資料或任何其他內容,即使它不是原生 JavaScript 格式。
- Web Audio API
-
這個 API 用於從 JavaScript 程式碼控制音訊的播放、合成和操作,讓您可以創建出色的音效以及即時播放和操作音樂。
- WebGL
-
讓您能夠從 Web 內容中建立高效能、硬體加速的 3D(和 2D)圖形。這是 OpenGL ES 2.0 的 Web 支援實現。
- WebRTC
-
WebRTC(即時通訊)API 使您能夠控制音訊和影片資料,包括電話會議以及在兩個使用者之間來回傳輸其他應用程式資料。想讓您的玩家在炸燬怪物的同時能夠互相交談嗎?這就是您需要的 API。
- WebSocket
-
WebSocket API 允許您將您的應用程式或站點連線到伺服器,以即時來回傳輸資料。非常適合多人遊戲、聊天服務等。
- Web Workers
-
Worker 使您能夠生成執行自己 JavaScript 程式碼的後臺執行緒,從而利用現代多核處理器。