递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 171|回复: 2
打印 上一主题 下一主题

[其它] Easy2D游戏引擎

[复制链接]

265

主题

1862

帖子

7538

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
7538
QQ
跳转到指定楼层
楼主


前引:

火山中有很多人都多少封装过游戏引擎
如下:
1.
nail1983

当时看他封装的GN游戏引擎比较多一些,奈何没发布部件版也没开源,正好碰到hcwanz当时
发表帖子说搞GN我就寻 找 他,然后他封装出来游戏框架部分,我去完善,但整到几个例程之后碰到一个问题就是在火山中编译版正常,调试版会崩溃。然后就找nail1983 发的帖子紫熏(谐音),但是看他每次登陆都没登录也就不了了之了。
2.
当时我在封装coso2dx游戏引擎,为啥要封装他呢?
原因:虚幻引擎,godot引擎都是和编辑器绑定的,没有全部阅读他们的全部代码,是无法剥离出来的。
这个时候就考虑到**的cocos引擎,cocos目前有两种引擎
(1)Cocos Creator

这个引擎并不适合,因他这个先不说用户需要使用JavaScript语言的问题,就是游戏引擎源码也不是一种语言实现的,无法移植到火山视窗中去

(2)COCOS2DX

这个游戏引擎源码是之前的架构,目前官方已经不再使用了,虽然还在维护开源代码,那么**另一位高手又通过基于这个引擎源码扩展了一个
[backcolor=rgba(0, 0, 0, 0.04)]Axmol Engine 是一个开源的专为移动、桌面和XBox设备设计的 C++ 多平台引擎。该项目于2019年11月作为Cocos2d-X-4.0的一个分支启动。
[backcolor=rgba(0, 0, 0, 0.04)]但他这个是使用的C++17和VS2023才行,所以这个分支移植到火山我是排除掉的,
[backcolor=rgba(0, 0, 0, 0.04)]那么只剩下COCOS2DX引擎移植到火山视窗中去。
[backcolor=rgba(0, 0, 0, 0.04)]因在移植过程中对于场景回调函数没想到解决方案,就发了一个帖子,如下:

可以看到当时这位火友回复我的帖子了,我就在ta 之前的帖子中寻找练习(谐音)房市(谐音),询问关于场景回调如何解决,当时给我的回答是要提交给吴总,让我等待。等官方更新火山之后就可以看到这部分如何解决的了。
当然我也是非常理解的,因要赚钱嘛不寒碜,那么过来段时间又练习(谐音)问下进度,给的回答是不确定提交时间。



总结我说这么多,要表达的意思是不是大家想有人封装游戏引擎就能封装出来的要考虑很多问题

1.封装过程中遇到的技术障碍(有些请角(谐音)别人也不见得回答你)
关于这点我要解释下,很多火山裙(谐音)中都是给我的回答是,只要会C++就会封装,整的我都不好反驳了,反驳的话有失风度,不反驳的话交流氛围容易污染,让部分火友认为只要会C++任何开源C++项目都能移植到火山的错觉,当然有些裙(谐音)我也反驳过,回搭(谐音)我你整不了是你C++基础不牢固,建议去认真系统学习一遍C++

2.能不能英里(谐音),如何英里(谐音)
如果提角(谐音)给wu zong ,收不收是个问题。如果收则必须把这个项目整体封装出来,如果只先封装个大框架去提角(谐音)吴总是不收的。
那么如果整体封状(谐音)出来那么又费时费力,为啥这么这么说?
因:时间周期不确定,可能几个月就完成了,有可能半年,也可能一年,但收的价格是1.2一行,可能一个库封状(谐音)出来不到6000行,耗费时间太长,吃力不讨好。
我猜这也是为啥提交视窗库给吴zong 的没几个,当然只是个人猜测不能当真

如果不提交wu zong ,则需要自行英里(谐音),但大部分火友并不买章(谐音),一说就会让提交给wu zong,如果不提交就显得是你的事了。
我猜这也是为啥火山生态一直上不去的,一种原因(如有雷同纯属巧合,请勿对号入座)


这也是为啥我视窗封装教程现在253集了还在继续讲,因封装会碰到各种问题,并不是像部分火友想的那样会C++就会整,或者会但不会整就是C++基础不行。
每个开源项目用到的知识点是不一样的,不能以偏概全。多出去走走,我希望有更多人录制详细系统的封装课程,让我也能去学习学习,因人外有人,天外有天,达者为师,不分先后。



685f4182deac0.png (59.86 KB, 下载次数: 0)

685f4182deac0.png
火山视窗封装视频教程
回复

使用道具 举报

76

主题

1187

帖子

5367

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5367
沙发
发表于 6 小时前 | 只看该作者
本帖最后由 hcwanz 于 2025-6-28 13:06 编辑

提交还好说吧, 封个框架出来, 预估一下自己需要的封装时间和大概的代码量, 然后去问一下吴总有没有收的想法就行.
回复

使用道具 举报

76

主题

1187

帖子

5367

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5367
板凳
发表于 5 小时前 | 只看该作者
本帖最后由 hcwanz 于 2025-6-28 13:32 编辑

然后就是`嵌入式语法`的定位, 我觉得它不是用来解决问题的, 它只是个代码沟通的接口.
换句话说, 你在封装中遇到的任何问题都不应该和`嵌入式语法`有关, 都应该不依靠`嵌入式语法`解决.

你应该能做到就算不用任何`嵌入式语法`, 也可以把项目封装成火山可用的形式,
然后, 为了更方便使用, 去用`嵌入式语法`对代码进行优化

比如研究vulkan的时候, 就遇到过一段令我惊为天屎的代码, 别说封装了, 我连他为啥能存在都不知道:

  1. // 只是示例
  2. auto a = vector1 | vw::transform([](auto i)  
  3.                                {
  4.                                    i.调用函数();
  5.                                    return i.另一个返回函数();
  6.                                });
复制代码



这里用到了c++特有的 /* `|` 管道运算符; `auto`自动推导类型; `[](){}`匿名函数;  `vw::`c++stl的范围库 */
只有了解了c++你才能知道这段代码的每一个特性火山都用不了, 你得转成另一种形式, 然后再考虑封装:
(倒也不绝对, 我记得我之前研究过在火山中封装c++匿名函数的方法)

  1. 某个类型 转换函数( 另一类型 参数)
  2. {
  3.    参数.调用函数();
  4.   return 参数.另一个返回函数();
  5. }

  6. 类型 函数()
  7. {
  8.   ....
  9.   范围类型 a = rg::transform_view(vector1, 转换函数);
  10.   ....
  11. }
复制代码











回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-6-28 18:51 , Processed in 0.096332 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表