Phaser 是一個 HTML5 遊戲框架，此框架的目的是輔助開發者真正快速地製作強大的、跨瀏覽器的 HTML5 遊戲。 此框架對瀏覽器的唯一要求是支援畫布（canvas）標籤。 概述 Phaser 是一款專為桌面和移動瀏覽器開發的快速、免費且開源的 HTML5 遊戲框架。利用 Phaser，開發者可以輕鬆建立高效能的 2D 遊戲，它還提供了豐富的特性，如物理引擎、聲音管理、動畫、和精靈。它建立的遊戲旨在在桌面或移動瀏覽器或能夠執行網頁遊戲的應用程式中玩，例如 Discord、SnapChat、Facebook 等。Phaser 的社群也非常活躍，為初學者和經驗豐富的開發者提供了大量的學習資源和外掛。它能夠充分發揮 WebGL 的效能，同時還保持與 Canvas 的相容。 Phaser 是用 JavaScript 開發的，因此需要使用 JavaScript 或 TypeScript 來編寫遊戲程式碼。 歷史 這款框架最初由 Richard Davey 在 2013 年 4 月的一篇博文中宣佈了 Phaser 的首個版本，並迅速成為 HTML5 遊戲開發的領導者。隨著版本的迭代，Phaser 不斷引入新的功能和改進，使其在開發者社群中備受讚譽。 Phaser 2 的最後一個正式版本是 262，但為了在開發 Phaser 3 的同時改進穩定版，它建立了一個新的版本庫：Phaser CE（社群版）。因此，Phaser CE 是目前推薦使用的 Phaser 穩定開發平臺。Phaser 300 於 2018 年 2 月 13 日釋出，目前正在 GitHub 上進行開發。該框架的大部分元素和功能都採用完全模組化的結構和麵向資料的方法從頭開始重建。Phaser 3 包含一個全新的自定義 WebGL 渲染器，專為現代 2D 遊戲而設計。 目前正在開發的 Phaser 4 於 2019 年 8 月 19 日釋出，它是用 TypeScript 重寫 Phaser 3 的一次嘗試。它不是 API 重寫，而是將重點放在將當前 Phaser 3 中的指令碼移植到 TypeScript 上。Phaser 4 已中止開發於 2024 年。 特性 動畫：支援幀動畫和骨骼動畫。 物理引擎：內建 Arcade Physics、Ninja Physics 以及 P2 Physics 等多款物理引擎，以支援複雜的物理互動。 渲染：能夠處理 Canvas 和 WebGL 渲染。 輸入：支援鍵盤、滑鼠以及觸控輸入。 音效：提供音訊精靈的支援，以及 Web Audio 和 HTML5 Audio 的相容。 使用及應用 Phaser 的易用性和強大功能使它成為開發 2D 遊戲的優秀工具，從簡單的休閒遊戲到複雜的策略遊戲，Phaser 都在各類專案中得到應用。由於它有著活躍的社群和豐富的文件，開發者可以迅速上手並參與到專案開發中來。 Phaser 的開發環境配置非常簡單，只需要引入一個 js 檔案即可。可以用任何編寫 js 的 IDE 來寫 Phaser，比如 Sublime、WebStorm 或者 nodepad。 外掛 Phaser 的生態系統提供了一系列的外掛、擴充套件機制、積極的社群，以及與其他工具和引擎整合開發。Phaser 外掛主要包括四類，分別是：BasePlugin 類、ScenePlugin 類、PluginCache、DefaultPlugins。但概括其特性可將 Phaser 外掛分為兩大類，即官方內建外掛和開發者自定義外掛，其中，內建外掛分為全域性和場景專用外掛。 Phaser 的外掛機制可以概括為： 安裝外部外掛記錄：開發者使用installScenePlugin 方法來記錄外部外掛的安裝情況。這個過程用於讓 Phaser 熟知哪些外掛可以使用。 外掛例項化：透過PluginManageraddToScene 方法將外掛新增到場景中從而例項化外掛。這個過程用於實現外掛和場景中的物件進行互動。 檢查：在切換場景時，重新檢查外掛的安裝情況。 釋放：在銷燬遊戲時，Phaser 釋放外掛所佔用的資源，清除外掛資料。 Phaser 外掛為遊戲開發者提供了豐富多樣的資源和工具，在滿足特定需求的同時簡化開發流程，從而創造更有吸引力的遊戲體驗。 HTML5 遊戲專案的基本結構 一個 HTML5 遊戲專案通常包括以下資料夾和檔案： Scripts 或 js ：在這個資料夾中，你可以找到關鍵的框架檔案，通常被稱為 Phaserjs。它通常包含一個專門用於利用該框架的遊戲程式碼的檔案。 Src：這個資料夾是為了儲存原始檔而設定的。這些檔案最終會被編譯以建立完整的遊戲程式碼。 Assets：在這個資料夾內，你可以找到各種子資料夾： Images：這裡存放了圖形資產，如背景和精靈。 Maps：這裡存放遊戲中使用的任何瓦片圖所需的資料。 Sounds：這是遊戲的音效儲存的地方，通常有多種格式。 Music：這裡包含遊戲的音樂軌道，也有多種格式。 Misc：雜項資料，如對話檔案、執行時指令碼和其他特殊檔案，都儲存在這裡。 Indexhtml：這個檔案是遊戲的入口點。因此，它設定了遊戲並啟動了載入過程。JavaScript 在初始設定之後處理互動。此 html 檔案還可能包括基本樣式來定位網頁上的遊戲，並圍繞它建立一個使用者介面（UI）。 發展歷程 Richard Davey 在 2013 年 4 月的部落格文章中宣佈了 Phaser 的首次釋出。 10 版於 9 月釋出，集成了用於渲染的 Pixijs 庫。 Phaser 2 的最後一個官方版本是 262，但為了在開發 Phaser 3 的同時對穩定版本進行改進，建立了一個新的倉庫：Phaser CE（Community Edition）。 因此，Phaser CE 目前是使用 Phaser 進行開發的推薦穩定平臺。 Phaser 300 於 2018 年 2 月 13 日釋出，其開發正在 GitHub 上進行。 該框架的大多數元素和功能都已從零開始重建，採用完全模組化的結構和資料導向的方法。Phaser 3 包括一個為現代 2D 遊戲設計的全新定製 WebGL 渲染器。自那時以來，已經完成了大部分文件和使用者示例，並且已經實現了大多數功能。 目前正在開發的是 Phaser 4，宣佈於 2019 年 8 月 19 日，它試圖用 TypeScript 重寫 Phaser 3。 這不是 API 重寫，而是將重點放在將目前在 Phaser 3 中的指令碼移植到 TypeScript 上。 Phaser 自從釋出以來，已經經過多個版本的迭代與改進，它在開發者社群中積累了大量的使用者，並且得到了一致好評。其發展受益於開源社群的貢獻和積極的反饋。 Richard Davey 得到 Open Core Ventures 投資， 並創立 Phaser Studio。 2024 年，Phaser 4 已中止開發，專注強化 Phaser 3 和 Phaser Editor 的功能。 架構和功能 Phaser 可在任何支援畫布（canvas）元素的網路瀏覽器中執行。使用 Phaser 製作的遊戲使用 JavaScript 或 TypeScript 開發。載入圖片、聲音和其他遊戲檔案等資源需要網路伺服器，因為瀏覽器要求網頁只能訪問來自同一來源的檔案。 渲染 Phaser 可使用 WebGL 或 Canvas 元素進行渲染，如果瀏覽器支援 WebGL，則可選擇使用 WebGL；如果裝置不支援 WebGL，則會退回到 Canvas。 物理 Phaser 配備了 3 種物理系統： Arcade Physics、Ninja Physics 和 P2JS。 Arcade Physics 僅用於高速 AABB 碰撞。忍者物理 允許使用複雜的瓷磚和斜坡，足以滿足關卡場景的需要。P2JS 是一個全身物理系統，支援約束、彈簧和多邊形等。 從 phaser 36 開始，有兩個主要的物理引擎。它們分別被稱為 Arcade 和 Matter。還有一個與 Arcade 相似的引擎，名為 Impact，但鮮為人知。 在這三個引擎中，Arcade 可能是使用最多的一個，因為它速度快且易於使用。它在所有基本物理引擎功能（如重力、加速度和阻力）的基礎上，使用軸對齊（非旋轉）的矩形和圓形進行碰撞檢測。它的缺點是功能有限。要利用支援的形狀製作複雜的撞擊框可能非常困難，而且多個物體靠近會導致穩定性問題。 Matter 是更先進的物理引擎，但其複雜性也隨著功能的增加而提高。Matter 能夠模擬非常逼真的全身物理效果。它支援多種功能，如剛體、複合體、彈性碰撞、穩定堆疊以及質量和密度等物理屬性。 Impact 與 Arcade 有許多相似之處，但也帶來了一些有用的優勢。例如，Impact 可以在瓦片貼圖中加入斜坡，而 Arcade 的軸對齊矩形則無法做到這一點。不過，這樣做的缺點是您必須使用 Impact 引擎開發人員自己的 Weltmeister 編輯器來建立平鋪貼圖。 動畫和音訊 Phaser 是一款功能強大的遊戲引擎，具備出色的動畫和音訊功能，提供了多種工具和選項來實現引人入勝的遊戲體驗： 動畫： Phaser 支援 Spritesheet 和紋理圖集，這些包括了多個幀或角色動畫，開發者能使用幀序列來製作動畫。phaser 的動畫序列功能使開發者能夠輕鬆建立精靈的動畫序列，包括迴圈、速度和幀速率的控制，從簡單的角色移動到複雜的特效動畫。同時 phaser 還提供內建的 Tweening 引擎，用於建立平滑的過渡動畫，這對於實現比如漸變、縮放、旋轉等動畫特別有用，還可以實現其他的複雜的特效動畫。 音訊： Phaser 允許開發者管理和播放網路音訊和 HTML5 音訊，並且提供了豐富的音訊效果控制選項，包括音量、靜音、迴圈、淡入淡出和聲道定位等，這些屬性可以透過需求進行調整，同時 phaser 支援音訊檔案的預載入，以確保無延遲的音效播放，以便於隨時播放，提供更好的遊戲體驗。 與其他遊戲引擎對比 Phaser 與其他遊戲引擎的對比 Phaser 是一款專注於 2D 遊戲開發的開源引擎，受到了眾多開發者的喜愛。與其他流行的遊戲引擎相比，Phaser 有其獨特的優勢和侷限性。 Phaser vs Cocos2dx Cocos2dx 是一款跨平臺的 2D3D 遊戲開發框架。相比於 Phaser，它支援更多的原生平臺，如 iOS 和 Android。然而，Phaser 基於 HTML5 更容易與現代的 Web 技術整合，適合 Web 平臺的快速迭代和部署。 Phaser vs Unity 2D Unity 是業界知名的遊戲開發引擎，同時支援 2D 和 3D 遊戲開發。相比於 Phaser，Unity 提供了更為強大的編輯器工具和更廣泛的平臺支援。但 Phaser 相對輕量，對於初學者來說，入門門檻可能更低，特別是對於僅想專注於 Web 遊戲開發的人。 在選擇遊戲引擎時，開發者需要考慮目標平臺、專案規模、學習曲線和社群支援等因素。Phaser 因其簡單、易用而備受喜愛，尤其適合那些希望快速上手 Web 遊戲開發的人。 參見 Unity Godot 參考文獻 Category2013 年軟體 Category 電子遊戲開發軟體 Category 自由發展元件與函式庫 Category 自由軟體 Category 遊戲引擎 Category 電子遊戲研發