使用Phaser構建2.5D的在線展覽系統
近幾年舉辦線下展覽活動由于疫情受到了不小的影響☧☬☸✡♁✙♆。,、':∶;,所以♀☿☼☀☁☂☄,網站舉辦展覽也漸漸流行起來ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,線上辦展的形式多種多樣①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,除了 VR 導覽這種形式之外①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,也有類似于平面畫廊展覽的方式✺ϟ☇♤♧♡♢♠♣♥。
純粹的VR構建成本相對比較高⑰⑱⑲⑳⓪⓿❶❷❸❹❺,尤其要建模☧☬☸✡♁✙♆。,、':∶;,開發等ⓚⓛⓜⓝⓞⓟⓠⓡⓢ,并且要專用設備來體驗ⓣⓤⓥⓦⓧⓨⓩ,所以要發揮價值難度還是挺高的⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾,本文討論的便是畫廊展覽這種方式웃유ღ♋♂,類似如下的動圖✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴,2D時間軸的方式⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ,將一個畫廊娓娓展開⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ,配合上點擊的交互功能❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,可以讓用戶體驗身臨其境的參觀方式☾☽❄☃,比如點擊㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉、視頻❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣、音頻等功能的集成⑰⑱⑲⑳⓪⓿❶❷❸❹❺。
這種展覽我們采用尤其引擎Phaser構建ⓚⓛⓜⓝⓞⓟⓠⓡⓢ,并且后臺做出來一個可視化的效果✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴,所見即所得方式實現웃유ღ♋♂,大大降低了這種展覽的成本⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ,提高了速度☧☬☸✡♁✙♆。,、':∶;,可以快速生成在線展覽❣❦❧♡۵。

為什么選擇Phaser
對于畫廊展覽這種方式來說①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,最好的載體就是 Web 網頁♦☜☞☝✍☚☛☟✌✽✾✿❁❃,由于 Web 網頁在各種設備上都可以瀏覽ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,有著很好的兼容性ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,這可讓展覽在各種設備平臺上都有不錯的觀看體驗㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂。
既然是 Web 網頁⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓,我們最常想到的方式便是利用 HTML 提供的圖片⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓、音頻和視頻等標簽來實現⑰⑱⑲⑳⓪⓿❶❷❸❹❺,這種方式雖然簡單明了☧☬☸✡♁✙♆。,、':∶;,但無論是制作ⓚⓛⓜⓝⓞⓟⓠⓡⓢ、修改和管理上都需要很多手動修改網頁源碼來調試的地方⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓,實現的展覽效果也不夠流暢ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ。為了解決這些問題✺ϟ☇♤♧♡♢♠♣♥,我們決定采用 Phaser 這一 2D 游戲框架來實現在線展覽的產品⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ。
Phaser 是一款針對桌面及移動場景制作 HTML5 2D 游戲的 JavaScript 框架⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,基于 MIT 協議開源⒜⒝⒞⒟⒠⒡⒢⒣⒤,在國外 Web 網頁游戲制作上有著不錯的流行度ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ。相較于國內先前流行的白鷺引擎而言㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,Phaser 的社區支持更好❻❼❽❾❿⓫⓬⓭⓮⓯⓰,開發活躍⒜⒝⒞⒟⒠⒡⒢⒣⒤,對于 Web 技術的支持更好☾☽❄☃,而白鷺引擎由于公司破產的緣故已停止更新多年☾☽❄☃,使用量也越來越少ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ。
市面上的H5引擎并不少♦☜☞☝✍☚☛☟✌✽✾✿❁❃,但是Phaser可以說是2D中最出色的一個⑰⑱⑲⑳⓪⓿❶❷❸❹❺。Phaser提供的功能非常全面㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,比如物理引擎❻❼❽❾❿⓫⓬⓭⓮⓯⓰,Phaser默認內置3種物理引擎✺ϟ☇♤♧♡♢♠♣♥,ARCADE①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,P2⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ,Ninja웃유ღ♋♂,各自有各自的適用場景웃유ღ♋♂,使用起來也非常方便①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯。
同時①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,Phaser還支持瓦片地圖ⓚⓛⓜⓝⓞⓟⓠⓡⓢ、定時器☈⊙☉℃℉❅、漸變動畫☈⊙☉℃℉❅、幀動畫❣❦❧♡۵、滾動背景♦☜☞☝✍☚☛☟✌✽✾✿❁❃、對象池ⓚⓛⓜⓝⓞⓟⓠⓡⓢ、照相機①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯、粒子系統⒜⒝⒞⒟⒠⒡⒢⒣⒤、圖形繪制ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ、位圖ⓚⓛⓜⓝⓞⓟⓠⓡⓢ、像素圖㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂、圖集✵✶✷✸✹✺✻✼❄❅、加載管理✵✶✷✸✹✺✻✼❄❅、多點觸摸㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂、音視頻等等幾乎你能夠想到的所有做游戲需要的基礎功能❻❼❽❾❿⓫⓬⓭⓮⓯⓰,是目前市面上2D的H5游戲引擎中功能最豐富的一個⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯。
所以㈠㈡㈢㈣㈤㈥㈦,Phaser本身比較強大㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,我們用來做2D展覽其實只是冰山一角✺ϟ☇♤♧♡♢♠♣♥,理論上可以做出更高級♀☿☼☀☁☂☄、更復雜的功能ⓣⓤⓥⓦⓧⓨⓩ,更多案例可以到這里來查看❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣。
https://phasereditor2d.com/start/

在線展覽使用 Phaser 的優點
Phaser的優點
- Phaser 采用 Canvas 或 WebGL 這兩種渲染方式㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,它實現的展覽的流暢度要遠遠優于直接操作 Web 多媒體元素㈠㈡㈢㈣㈤㈥㈦。
- Phaser 提供了一套完善的資源管理①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,對于圖片視頻等資源的處理要好于 Web 多媒體元素實現的版本❣❦❧♡۵,也可以通過對優化圖片視頻等資源的加載策略來減少用戶看到展覽的等待時間☈⊙☉℃℉❅。
- Phaser 有著優秀的縮放機制❻❼❽❾❿⓫⓬⓭⓮⓯⓰,可以輕松應對各種設備和資源的尺寸웃유ღ♋♂。
Phaser的缺點
- 國內使用者不多✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴,中文資料較少ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ。
- 從零開發的難度要高于直接使用 HTML 多媒體元素㈠㈡㈢㈣㈤㈥㈦。
- 由于是游戲引擎的原因⑰⑱⑲⑳⓪⓿❶❷❸❹❺,開發者需要先了解基礎游戲開發的知識點ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ。
在線展覽使用 Phaser 的原因
我們調研過其他相關游戲引擎ⓚⓛⓜⓝⓞⓟⓠⓡⓢ,unity3dⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ、cocos2dⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ、egret⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ,它們的特點是有豐富的IDE❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,工具鏈⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓,缺點是不易上手⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾,初學者配置一個開發環境就要半天♦☜☞☝✍☚☛☟✌✽✾✿❁❃。
而Phaser的開發環境配置起來特別簡單⑰⑱⑲⑳⓪⓿❶❷❸❹❺,只需要引入一個js文件即可⒜⒝⒞⒟⒠⒡⒢⒣⒤。你可以用任何編寫js的IDE來寫Phaser㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,比如Sublime♀☿☼☀☁☂☄、WebStorm或者nodepad++❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,然后把項目放到服務器環境即可跑起來ⓣⓤⓥⓦⓧⓨⓩ。
此外ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,Phaser不像egret那樣必須用TypeScript來開發❻❼❽❾❿⓫⓬⓭⓮⓯⓰。Phaser非常靈活♀☿☼☀☁☂☄,你可以用es5來開發它㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,也可以用es6ⓣⓤⓥⓦⓧⓨⓩ,也可以用TypeScript❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,哪個用著順手就用哪個㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉。
另外㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,相比較WEBGL或者Canvas㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,我們采用Phaser作為展覽的引擎㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,有以下原因:
- Phaser 采用 Canvas 或 WebGL 這兩種渲染方式⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓,它實現的展覽的流暢度要遠遠優于直接操作 Web 多媒體元素♦☜☞☝✍☚☛☟✌✽✾✿❁❃。
- Phaser 提供了一套完善的資源管理⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ,對于圖片視頻等資源的處理要好于 Web 多媒體元素實現的版本⒜⒝⒞⒟⒠⒡⒢⒣⒤,也可以通過對優化圖片視頻等資源的加載策略來減少用戶看到展覽的等待時間ⓚⓛⓜⓝⓞⓟⓠⓡⓢ。
- Phaser 有著優秀的縮放機制①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,可以輕松應對各種設備和資源的尺寸웃유ღ♋♂。
因此❣❦❧♡۵,我們最終采用Phaser作為2D展覽開發的工具⒜⒝⒞⒟⒠⒡⒢⒣⒤,詳情可以參考我們的案例㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉。
|
比較項目 |
Phaser |
HTML 多媒體元素 |
|---|---|---|
|
開發難度 |
較高 |
低 |
|
性能 |
更好 |
較差 |
|
加載速度 |
更快 |
較慢 |
|
交互性 |
更好 |
較差 |
歡迎轉載ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,請注明出處⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ!
詳細的方案介紹✺ϟ☇♤♧♡♢♠♣♥,可以參考我們的《非遺數據庫方案介紹》
更多技術資料⒜⒝⒞⒟⒠⒡⒢⒣⒤,可以參考我們之前相關介紹文章♦☜☞☝✍☚☛☟✌✽✾✿❁❃,如果需要建設相關數據庫㈠㈡㈢㈣㈤㈥㈦,以及Drupal靈活的元數據/檢索/可視化構建演示或者資料㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,可以聯系我們⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓。
1ⓚⓛⓜⓝⓞⓟⓠⓡⓢ、如何用開源的系統來構建知識庫平臺⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓?
2⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯、如何基于開源系統構建資料庫/文檔庫平臺
3✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴、如何建設在線展覽和多媒體展覽ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ?
4✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴、CMS如何存儲和管理大量圖片/海量圖片ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ?
5. 如何建設在線展覽和多媒體展覽㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂?