2D开源游戏引擎调研报告(一)
前言:由于工作需要,我要找一款2D的開源游戲引擎。以下是我選取調研的四款軟件。
一、Godot
二、Panda3D
三、Cocos2dx
四、CocosCreator
(注:這些軟件中的3d部分功能均不在考察范圍中)
調研內容:
1.使用語言
2.可執行文件可以運行的平臺
3.對象的封裝、繼承、實例化等功能
4.多場景的切換
5.物理引擎,包含:
碰撞檢測
物理模型:
實體
繩子
引力效果
6.粒子效果
7. UI組件,包含:
- 按鈕、標簽、定時器、菜單、復選框、進度條、滑動條、文本框
8.利用容器設置對象在屏幕中的位置
9.光影渲染
10.動畫部分,包含:
- 對象的位置、朝向、移動
- 對象的顏色變化
- 數字的變化
11.音頻文件的加載、播放
12.視頻文件的加載、播放
13.學習資源的豐富性
14.引擎效率
一.Godot
0.基本介紹
官網:https://godotengine.org/
中文官網:http://docs.godotengine.org/zh_CN/
1.語言和代碼
引擎使用的語言:官方為GDscript語言(一個專用于Godot的語言),也支持C#語言。
GDscript語言特點:類似于Python。
編輯代碼的方式:
①在編輯器中直接編寫并編譯。
②通過外部工具進行編寫
語言的使用(使用引擎內置編輯器):
C#:在引擎中編寫時,就如同編輯txt,感受不好;部分功能目前不支持。
GDscript:能實時檢查錯誤;有智能拼寫功能。
生成可執行程序:
編輯器自帶導出程序功能
支持平臺:Android、IOS、HTML5(按網上資料,HTML幾乎用不了)、Mac OSX、Windows、Linux
2.對象的編輯和設計
由于Godot自帶圖形化編輯器,對象和程序的設計較為容易
①對象的定義和封裝
在編輯器中,可以自由創建場景節點樹,任意節點都可以作為場景文件儲存,即完成了對象的封裝
②對象的實例化
圖形化方式:右擊節點,選擇“實例化子場景”,即可添加(實例化)某個場景
代碼方式:對于已經保存好的場景(假設名為object.tscn),在代碼中輸入:
- Var inst = object.instance()
- Add_child()
可以創建實例并添加到場景中
③對象的繼承
選擇“新建繼承的場景”可以進行場景的繼承并編輯(除了原有的節點關系,其余都可以修改)
3.場景的切換
Self.get_tree().change_scene()方法
4.物理引擎
①碰撞監測
Godot有CollisionShape2D節點,可以繪制一個碰撞區域。若不同對象的碰撞區域發生重疊,則會發出信號(Godot中有一類信號發射器功能,用于實現函數回調。使用很簡單,對新手較友好)
②物理模型
實體方塊:
RigidBody節點可以提供物理實體模型所需的屬性,包括:重量、所受的力、摩擦系數、彈性系數、旋轉角等參數
繩子:
需要用多個實體方塊連接而成
③引力效果
需要通過代碼實現
5.粒子效果
使用Particle節點,可設置的參數如下:
①單個粒子的屬性:粒子的材料(顏色)、大小、速度、方向、加速度、旋轉等
②粒子的生成:粒子數量、粒子存在時間、產生粒子的頻率(爆炸性or持續性)、生成粒子的位置(一個點or一片區域)、粒子的隨機性等
可生成的效果:火焰、漩渦、滿天星、爆炸等
6.UI組件
Button:有
Label:有
ProgressBar:有,可添加三層圖案(頂層、底層、填充層)
定時器:有。定時器控件在到達指定時間后,會發出信號
字體、字號設置:系統只有默認字體、其余字體需手動添加(放入文件夾中并在控件上設置)
(常用功能可以直接從節點中找到并添加)
7.容器
①對象位置的設置:
可以設置對象在屏幕中的絕對位置(x,y),也可以設置對象相對于父節點的位置(margin)
②容器的種類
網格狀排列:GridContainer
橫向排列:HBoxContainer
縱向排列:VBoxContainer
九宮格容器:NinePatchContainer,用于保證容器的四個角不隨圖片大小變化而變化
9光影效果
使用light2D(在指定區域疊加一層半透明圖像)和LightOccluder2D(提供陰影效果,它所屬的對象的形狀會阻擋光線的穿過)
10動畫部分
①圖形化實現
Godot自帶動畫編輯器。選定對象后,可以在不同幀設置其位置等參數。播放時,該對象將按照這些幀進行平滑運動
②代碼實現
使用interpolate_property()函數,可以讓對象的屬性的值(包括位置、顏色或自定義變量)在指定時間內從一個數平滑過渡到另一個數
③骨骼效果(不同動畫對象的連接)在編輯器中可以選擇并添加該內容
11.音頻文件的加載、播放
使用AudioStreamPlayer
支持格式:ogg、oggstr、res、sample、tres、wav
12.視頻文件的加載、播放
使用VideoPlayer播放視頻
支持格式:ogv、res、tres、webm
13.資源的豐富性
官方api有中英兩個版本(部分英文無中文翻譯,但影響不大)
評價:godot的特點是“小而全”,需要的功能基本都能快速找到,節點種類豐富,也很容易上手,在入門初學時,基本不需要代碼就能實現簡單游戲。
但是,部分功能不夠強大(或者說不夠好用)。比如在代碼編輯上,引擎自帶的編輯器雖然有智能拼寫等功能,但實際使用感受一般般,且部分報錯信息難以讀懂。可以使用外部編輯器(如vscode)替代
總結
以上是生活随笔為你收集整理的2D开源游戏引擎调研报告(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天才基本法_《天才基本法》强推!年度神仙
- 下一篇: CMS网站页面管理开发汇总