最近参加了Gloabl Game Jam,本来是负责画素材做音乐音效关卡设计和文案的,结果第一天就全部做完了。第二天在程序的提议下帮他写了一些代码,不过还好写了,不然游戏就做不完了。
这次游戏用的是Cocos Cretor,在这之前没碰过TypeScript和Cocos Creator,花了一点时间就上手了。首先我是有游戏开发经验的,然后Cocos Creator比较完备,有很多开发应该有的工具,以及使用起来比较简单,所以才能那么快的就开始着手项目。
相比之下,我用了好几天的Love2d还只是一直在造轮子,虽然只是偶然想到,但我觉得有拿出来对比的意义。
就在刚刚,水群的时候看到群友说了一句
少造轮子
顿时有感写下此文
作为游戏开发者,做游戏其实才是首要目的,而不是一直在写工具类。
我现在把以后的路铺好了,这样就走的舒服了
如果有这样的想法,还是最好不要有。
你轮子还没写完,别人游戏已经做完了,这就是差别。
所以我想这也是所谓游戏引擎(Game Engine)和游戏框架(Framework)的区别,所谓游戏引擎有个IDE,里面有一套可视化的工具,场景编辑器,资源管理器,或者去快速创建一个游戏引擎里面给的类型,又或者是去更方便的调整某些东西(UI、Shader、粒子效果)。
所谓游戏框架没有IDE,需要调用lib所给的能用的api,图形绘制方面的,音频方面的,实现成熟游戏引擎已经包装好的功能。
所谓造轮子,除了在Framework里面,还有在Game Engine里面的,比如Godot的节点,很多其实没啥用,所以需要自己写一些东西,又或者是GameMaker Studio,没有所谓的UI组件,需要自己绘制。
那么自然,有工具给你为什么不用?为什么要造轮子,可靠的理由很简单,那就是原来的不好用,或者没法用,需要自己整点用的舒服的。
所以很自然的,在2024年,至少需要在你不能使用某个东西的时候你才有造轮子的需求,才是合理的。
换一种思路,就是说
我是不得不造轮子的
毕竟工具的产生,就是为了方便人的。我现在在给Love2d写东西的理由也很简单,因为我在用的工具满足不了我,所以我会选择Love2d,但Love2d没有这些功能,所以我需要自己造轮子,来确保能用的上。
GameMaker Studio的IDE很蠢很卡还用不了外部代码编辑器,Godot Mono的Windows空包能到130MB还导不了Web而且有很多多余的功能,Cocos Creator的打包有很大问题(Windows和Web缺失的资源不一样,Web有概率黑屏,Web有概率出现资源加载不完全的情况),Unity不想用。
现有的比较流行的游戏引擎已经满足不了我了,所以我会寻求一些Framework去客制化我要的东西。
但是这样损失的是什么?是我自己。
毕竟没有完美无缺的东西,GameMaker Studio的API设计不错而且产出快,Godot写的舒服,Cocos Creator写的时候也比较舒服。
所以我在想,有时候学会将就一下也是提升产出的一种方式,而且不只是游戏引擎。
Love2d我不写那些东西,一样能做游戏,一定要去实现一套现代游戏引擎有的东西?不,根本不需要,完全可以直接上,而且Lua面向过程能写的很舒服,没必要闭包oop写个半天。
想起自己曾经用Tic-80做过一个sokoban-like,也是在没写任何轮子的情况下一个星期做完了。
不过写都写了,是时候也要验证一下能不能用了。