sevil 发表于 2023-10-3 19:52:58

都是开源免费引擎,cocos creator与Godot的比较,哪个更有前景?

都是开源免费引擎,cocos creator与Godot的比较,哪个更有前景?

tyzyf 发表于 2023-10-3 19:53:48

godot引擎在我4年前的小米k20上也能稳定运行,游戏引擎在网页不用下载也能运行,注意不是打包出来的游戏,而是整个游戏引擎可以在手机上运行。
Free and open source 2D and 3D game engine适配也并不是适配的越多越好,适配的越多不合理的兼容,屎山就越大,而软件行业总在造屎山和推屎山的循环中,都是周期,这个也是个人不看好unity的其中原因之一。
godot目前要求的最低图形api是Vulkan 1.0,OpenGL 3.3 / OpenGL ES 3.0,听起来确实有点高,现在godot能在Linux/Mac/Windows稳定运行,已经基本满足大部分场景。
脚本适配基本上都是由社区参与的,完全是自发的,和官方支持有本质区别。虽然最后大概率只能活一个GdScript,但是挡不住社区支持其它语言的热情啊。
夹带点私货,我做了不少工作让godot和不同语言之间的相互通信,目前支持GDScript和C++ C# Go Java Javascript TypeScript Lua Python
GdScript网络通信二进制序列化库,Github开源地址
【首发 mate 60 pro+ 搭载 godot engine】 首发 mate 60 pro+ 搭载 godot engine_哔哩哔哩_bilibili
【4年前的手机小米k20运行godot engine】 4年前的手机小米k20运行godot engine_哔哩哔哩_bilibili

dfo2545 发表于 2023-10-3 19:54:19

http://picx.zhimg.com/v2-82358e6533c820b52f9f7550d69949fa_r.jpg?source=1940ef5c

http://picx.zhimg.com/v2-1eb491827b6a4191386b3beaf9af56be_r.jpg?source=1940ef5c

http://picx.zhimg.com/v2-2a51a030dbd08af93483ae217db9835c_r.jpg?source=1940ef5c

http://pic1.zhimg.com/50/v2-3aec9dcf72064a1a544e1dacbcbe8e38_720w.jpg?source=1940ef5c
至少独立游戏在http://itch.io上,是这么个情况
再补充一下
https://ossinsight.io/collections/game-engine/
http://picx.zhimg.com/v2-607391c2c8c765902965007eaf53b4d2_r.jpg?source=1940ef5c

瘾大技术差 发表于 2023-10-3 19:54:24

Godot 还有很长的路要走。他们目前做的很多选择,其实都是我早年已经踩过的坑了。
随便举几个例子:

[*]引擎代码精简易读,这的确是很大的好处,但问题是等你把市面上各种手机的机型、芯片都适配和优化完之后,代码量自然就膨胀上去了,充满了各种诡异的 if-else,注释大概就是 // issue #35232 fixed 这玩意儿显然也不易读了。光我说的这条适配和优化就是天量的软件工程体力活。前几年Cocos为了适配在线教育的客群,适配了大量那种爸爸淘汰给爷爷奶奶然后再淘汰给小孩用的机型,以及完全没听说过品牌的安卓平板,这种体力活不是 godot 那几个优雅的图形学大咖能搞定的。
[*]多种脚本语言的绑定。早年 Cocos 也是这么干的,表面上是社区大繁荣、各种编程语言的人群都照顾到了,到后面就是生态割裂,连买本书、下载个源码、弄个插件都得先看看是不是自己所用的语言。
类似问题还有很多,我就看着他们每步都掉到我之前掉过的坑……

wuping69 发表于 2023-10-3 19:55:16

Cocos Creator 是一款非常优秀的游戏开发引擎,它可以帮助开发者快速开发出高质量的游戏。在游戏开发中,资源的管理和加载是非常重要的一环。为了提高游戏的运行效率和资源加载速度,Cocos Creator 提供了基于 ab 包的资源管理方案。
本文将详细讲解 Cocos Creator 基于 ab 包的资源管理原理,并给出代码实现。
对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。
一、ab 包的概念
ab 包是 Asset Bundle 的缩写,它是一种将游戏资源打包成一个或多个包的方式。通过将游戏资源打包成 ab 包,可以减少游戏的安装包大小,同时可以提高资源加载速度和运行效率。
在 Cocos Creator 中,可以使用 AssetBundle 类来创建和加载 ab 包。AssetBundle 类提供了多个方法来对 ab 包进行操作,例如 LoadAsset、LoadAssetAsync、LoadAllAssets 和 Unload 等方法。
二、基于 ab 包的资源管理原理
基于 ab 包的资源管理方案主要包括以下几个步骤:

[*]将游戏资源打包成 ab 包
在 Cocos Creator 中,可以使用 AssetBundle 类的 BuildAssetBundle 方法将游戏资源打包成 ab 包。BuildAssetBundle 方法接受一个资源路径和一个保存路径作为参数,可以将指定路径下的所有资源打包成一个 ab 包,并保存到指定的路径中。
例如,下面的代码将 Assets/Resources 目录下的所有资源打包成一个名为 "resources.ab" 的 ab 包,并保存到 StreamingAssets 目录中:
AssetBundle.BuildAssetBundle("Assets/Resources", "Assets/StreamingAssets/resources.ab", BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);

[*]加载 ab 包
在游戏运行时,可以使用 AssetBundle 类的 LoadFromFile 或 LoadFromFileAsync 方法来加载 ab 包。LoadFromFile 方法接受一个文件路径作为参数,可以将指定的 ab 包加载到内存中。LoadFromFileAsync 方法是异步加载 ab 包的方法,可以在后台线程中加载 ab 包,避免阻塞主线程。
例如,下面的代码使用 LoadFromFile 方法加载名为 "resources.ab" 的 ab 包:
AssetBundle bundle = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/resources.ab");

[*]加载 ab 包中的资源
在加载了 ab 包之后,可以使用 AssetBundle 类的 LoadAsset 或 LoadAssetAsync 方法来加载 ab 包中的资源。LoadAsset 方法接受一个资源名称作为参数,可以将指定名称的资源加载到内存中。LoadAssetAsync 方法是异步加载资源的方法,可以在后台线程中加载资源,避免阻塞主线程。
例如,下面的代码使用 LoadAsset 方法从名为 "resources.ab" 的 ab 包中加载名为 "texture" 的纹理资源:
Texture2D texture = bundle.LoadAsset<Texture2D>("texture");

[*]卸载 ab 包
在游戏运行过程中,可以使用 AssetBundle 类的 Unload 方法来卸载 ab 包。Unload 方法将释放 ab 包占用的内存,以及 ab 包中加载的资源占用的内存。
例如,下面的代码使用 Unload 方法卸载名为 "resources.ab" 的 ab 包:
bundle.Unload(true);
三、代码实现
下面是一个简单的代码示例,演示了如何使用基于 ab 包的资源管理方案来加载和显示纹理资源:
using UnityEngine;
using System.Collections;

public class LoadAssetBundle : MonoBehaviour {

    private AssetBundle bundle;

    void Start () {
      StartCoroutine(LoadBundle());
    }

    IEnumerator LoadBundle() {
      // 加载 ab 包
      bundle = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/resources.ab");

      // 等待加载完成
      yield return bundle;

      // 加载纹理资源
      Texture2D texture = bundle.LoadAsset<Texture2D>("texture");

      // 创建 Sprite 并显示
      Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero);
      GetComponent<SpriteRenderer>().sprite = sprite;
    }

    void OnDestroy() {
      // 卸载 ab 包
      bundle.Unload(true);
    }
}
在上面的代码中,首先使用 LoadFromFile 方法加载名为 "resources.ab" 的 ab 包,然后在加载完成后使用 LoadAsset 方法从 ab 包中加载名为 "texture" 的纹理资源。最后,使用 Create 方法创建一个 Sprite 并显示在场景中。
在场景中创建一个空 GameObject,并将上面的代码添加到 GameObject 的组件中。在运行游戏后,将会加载并显示名为 "texture" 的纹理资源。
总结
本文详细讲解了 Cocos Creator 基于 ab 包的资源管理原理,并给出了代码实现。通过使用基于 ab 包的资源管理方案,开发者可以更加高效地管理和加载游戏资源,提高游戏的运行效率和用户体验。

heyond 发表于 2023-10-3 19:55:47

仅从现阶段来看:
实用主义者:cocos creator
理想主义者:godot

2023/9/28 更新:
用来短期打工的: cc.如果是长期投资,不看好.
独立或战未来:Godot,国内短期打工,不看好.国外可以.国内都是跟风狗,需要传导效应.所以无论工作还是生态还得看国外发展形式.
以上是钱景
如果是字面意思上的前景,无脑Godot.社会主义的优越性会击败一切资本主义.
页: [1]
查看完整版本: 都是开源免费引擎,cocos creator与Godot的比较,哪个更有前景?