« 我在网易的十年 | 返回首页 | 再谈 C 语言的模块化设计 »

如果从头开发新的 3d engine

最近闲了下来。断断续续的再想,如果业余时间弄一个开源项目玩儿,什么是比较好的题材,适合自己来做。想来想去,3d engine 是一个比较好的选择。以我来看,对外开源如果要吸引到足够的有经验的同学参加,必须项目有一定价值。要可以迅速的搭建工作环境并直接看到结果,这样才能有兴趣迭代做下去。起步必须自己一个人来做,东西得有个雏形。所以必须是自己比较熟悉的领域。

若论熟悉,其实游戏服务器的架构和实现,我这些年考虑的更多,也做的更多。但这个东西不适合做成开源项目。因为受众太小(不是每个人都有机会和意愿去架设网络游戏服务器的),而且它不能单独运行看到结果。没有玩家的游戏服务器是没有意义的。

3d engine 这些年也有在开发。但是公司不可能允许开源已有项目。如果想玩儿,从头做是唯一选择。而且重新开始有更多的乐趣,再造轮子原本就是程序员们的欢乐源泉之一。如果自娱是唯一目的的话,就不必过多考虑商业引擎必须考虑的问题。比如兼容更多的底层 3D API ,做全平台兼容,支持低端硬件等等。甚至于还要去考虑日后防外挂等无聊的问题。

昨天在 buzz 上提起 game engine 开发的话题,miloyip 同学立刻发了份他的一些想法。有很多的记录,想来也是思考多日。对于 engine 特性方面列的很全了。不过我的出发点不太一样。我更多的考虑的是,如果是做为一个开源项目,怎样可以以最小代价启动起来,让项目自然成长。也就是说,可以在质量和特性上有个高起点,但从一个很小的功能集合开始。而且,如果做这个,没有商业上的目的。所以,不必屈就于进度压力。不必为特别的需求必须去加上什么功能。一切以好玩为目的。只要写代码开心即可。

考虑了一晚上,我觉得如果动手做的话,大概是这样的。

Git 是最近我比较中意的 VCS 工具,如果比较 google code 和 github 的,我比较倾向后者。

开发语言,我希望是 C + Lua 的组合。因为这两个都是我最为熟悉的语言,使用起来最为得心应手。C++ 也很熟悉,某些方面 C++ 写起来要比 C 更方便。尤其是采用 D3D 的底层 API 的话,C 要麻烦的多。而且还有许多第三方组件也是 C++ 接口的。不过我用 C 搭建大的系统已经有多年的经验了,我相信我的经验可以弥补 C 语言的诸多不足。而 Lua 会是对 C 语言很好的一个补充。

Engine 的核心部分,可以以 C 语言写成的库提供,再由独立的 lua 封装层包装起来,二次开发在 Lua 中进行。如果需要在外层使用非 Lua 的接口,比如用 QT/C++ 开发工具,则可以在 Lua 层绕一下,或是再单独开发一个薄的 C++ 的粘合层。

不用太在意粘合层的性能,但需要把粘合层和核心库设计上隔离开。

3d api 可以暂时只支持 DX11 ,openGL 的支持待考虑。不过最好能留下余地。在代码编写上,初期的代码量不宜过大,做好至少一次重构的准备。所以第一期代码不需要面面俱到。这主要是因为我在 3d 领域方面经验不足。

构建工具采用 GNU Make ,这个工具我有比较多的使用经验,也更大众。不必要求所有开发人员都精通 GNU Make 的使用,整体的框架可以一个人先做好即可。

编译工具使用 gcc 。可以考虑兼容 VC 编译。

功能上,Audio/GUI/Input/Network 等都不是先期必要模块,一开始都不必设计和实现的。也不必去抽象窗口管理的部分。但需要搭建一个运行环境,有基本的窗口启动,简单的 GUI (不可定制),方便的 Log 输出。

工具是应该第二步考虑的事情。

至于 3d engine 将支持的特性,那个应该是逐步添加的事情。虽然说,新特性的添加方便于否和 engine 的基础设施的可扩展性很有关系。但,从一个小规模的项目开始,逐步重写和完善,我觉得是更实际的方式。


现在缺少的东西主要有这些:

不知道项目该用什么名字以及项目代号是什么。

对近年的 3d 技术发展没有细致了解,领域知识的缺乏导致很难很好的做基础设计。

还没有下决心开启项目。

Comments

风哥,恭喜你呀
10年前的想法现在真的快要做完啦

求地址~~

@白泽

我一般用 email, 在 blog 首页右上.

不过拜师啥就免了, 有问题可以写邮件给我.

云风大哥,看了你的采访和博客之后,一种崇敬感油然而生,我现在也是一个人写2D的游戏引擎,并且一定有一定的积累了,在相关的业内也有一点点名气,我发现我现在走的道路和想法和你以前的想法一样,我也是喜欢研究底层,不喜欢使用第三方的引擎架构,根据游戏可以定制化,特殊优化,游戏的类型有很多种,而可以根据不同的情况做不同的优化也是开开发游戏当中的一种乐趣和挑战,我写过JAVA的,写过Stage3D,目前正在WebGL的引擎,因为我相信如果是基于,他们都是通用的,现在确实有很多商业游戏促使了引擎的泛滥,对底层的不深究,我不等待标准,浏览器是否统一,研究和兴趣敢于尝试是出发点。下面是我写的H5引擎的视频地址:http://v.youku.com/v_show/id_XNjgyOTg4NzI0.html

哎呀,有太多话要说了了,我最想说的就是,云风大哥我可以拜你为师嘛?我不知道如何能联系到你,唯一的就是这个博客,希望你能看到,我留下了我的QQ邮箱地址,虽然这样很冒昧,见谅。

竟然有人说KlayGE很牛。。那根本就是垃圾。不想说什么了,反正源代码是公开的,自己下个看看。
作者是微软工作人员,不过水准实在不咋地

竟然有人说KlayGE很牛。。那根本就是垃圾。不想说什么了,反正源代码是公开的,自己下个看看。
作者是微软工作人员,不过水准实在不咋地

竟然有人说KlayGE很牛。。那根本就是垃圾。不想说什么了,反正源代码是公开的,自己下个看看。
作者是微软工作人员,不过水准实在不咋地

不知道老大这个3d engine还在做吗?如果还没有,那我就自己开始搞起了。

我打算底层用C、上层界面用Qt、渲染用OpenGL。

Luc, Lua+C 不知道项目开始了没有?

从最开始看到刚看到,忍不住灌一下水,

我是读美术设计转行做程序的,如果开始了,我愿意贡献我微薄的力量,也学习学习

风云大哥您好!不知道项目是否已经启动,我非常希望能加入到这个项目中来。

8,9年前能进入游戏开发领域,全靠了HOHO,风魂这些国产开源引擎。如果云风做3D图像引擎,我愿意尽我微薄的一份力量,来感谢多少年前的素未蒙面的帮助。

云风要做#3D引擎#: 在他博客上看到有3D引擎计划, http://blog.codingnow.com/2011/04/3d_engine_plan.html ,国内最早的2D引擎可能是云风大哥的[风魂],这次也很期待.国内做图形(游戏)引擎目前为止没有大成功的(geek是游戏结构不是图形引擎),涂鸦,光线,血泉都坠落了.建议云风考虑①建立开源社区②解决什么新的问题③做图形引擎还是游戏引擎

还有一点的是,要考虑做3D图形引擎,还是游戏引擎。前面是做mvc 的 view,后面是连同c一起做。

重复制造轮子,我不觉得适合开源。首先要考虑解决了什么新的问题。有什么我们能做到而别人不能解决的想法再来做才好玩,否则复制一个其他的开源引擎就没意思了。

建议遵从《大教堂和市集》,开源软件不是技术,是社会学,一个人搞开源没有太多成功的例子,要靠一个良好的社区,这个很难。确实很难。

云风大哥!一直很崇拜你....我想请教您一个问题....就是我一直想学游戏编程.因为我有C#基础,并没有C++基础..所以我就选择了XNA....但是据说因为是微软的新东西,国内没有要XNA的 都用DX....有点茫然啊!我真的想从事游戏开发的工作..我还在大学,挺闲的,课余时间我都用来学XNA了....希望云风大哥能给我点建议...如果是C#+XNA..应该再学一些别的什么对以后进入游戏行业有帮助呢?...

嗯,关注lua. 感觉c和lua是绝配.这也是我已经花费几个月来做嵌入式的lua的构架. c++适合做应用,框架用c写是不错的.开发应用时,用c++做个 slim wrapper. 这样就比较完美了

相当难.Ogre仅是一个图像引擎发展了那么久也就这样.
但也盼望着中国也有一个开源免费的3D引擎.
以前不是有个光线引擎吗?谁做的?

支持云风老大的想法。
关于命名
楼下好多同学都支持《风魂3D》的起名,或者还叫《风魂》。
关于工具的选择
gcc+dx + lua + gnumake(+emacs/vim/...)
也是我正在使用的一套方案。而且为了配合这个方案,我在项目中搞了一套VCProject和gnumakefile互相转换的工具,现在已经把一些引擎工具都这个方案进行配置了。所以我们这里的程序员可以自由选择用VC或各种其他IDE.
真正让我从VC转向这套方案的直接推动就是看虚幻3和Lua源码的过程中 ,到处都是宏嵌套,而VC只提供了一个生成预编译文件(*.i文件)的选项,生成之后是一个完全展开的东东,相当不方便。而在emacs中,一个Ctrl+c+Ctrl+e,就可以在将当前选中的代码块宏展开。其他方面不讨论了。正如云风老大在《IDE不是程序员的唯一选择》,VC不是编写Windows程序的唯一选择。如果把VC比作卡片机,世上必然有单反这样级别的东西存在。虽然需要更复杂的学习曲线,但考虑40年后,中国男性退休年龄应该到70岁,所以我们还得写四十几年代码。
我永远支持感谢云风老大。
毕业第一份工作的入职前一天,我买了云风老大的书,以后就循着云风老大的路线在走,甚至nasm,我也有用过。
Fans飘过......

to Anonymous(97)
我也是这样想的,希望云大大做游戏服务器的开源项目。:-)

客户端3D引擎已经泛滥,大有虚幻,小有Unity3D,如果云风真要干点对游戏业有帮助的事,建议一下方向:

1、服务器集群3D引擎,专供未来云计算游戏使用

2、基于HTML5的无插件游戏引擎

3、供云计算使用的物理引擎

4、供HTML5使用的无插件物理引擎

能力越大,责任越大,切莫荒废青春。

我觉得这将会是第二个风魂~支持。

其实关于游戏服务器的架构和实现的开源项目才真的匮乏(和3D引擎相比),更期待你做游戏服务器的开源项目,受众虽然小了点,但参与的人会更精华一些吧^_^

路过学习之

恳请云风老师开启项目!!!!!

建议引擎有了后做出真正可玩性高的单机dome,放眼中国,全是垃圾网游,就连psp战神的渲染效果的单机游戏都没有。如果一个引擎做的再好,没有作品也算失败项目,能出单机游戏才是好。

支持支持。前期知识体系筹备很简单。看下OGRE3D代码。看下ShaderX 12345678, GPU GEMS 123, Game Programming Gems 12345678, 3D Engine Gems 12。 基本差不多了。
另外H3D2 ENGINE发布了:)可以去我BLOG下载视频。

当年有风魂2d,直接风魂3D不就OK啦

项目名称:三重沙
项目第一阶段构建起核心,具现体似的底层,丰富经验的成员,以应对后面各个参与者的奇思妙想;
第二阶段帮助参与者搭设多个分裂小项,对其提供交流与支持,针对主体项目优化选择兼容、特性等;
第三阶段多源应用,挑选对项目突破有价值的用户,用满足需求的方式使项目成长。

要搞个开源项目,必须从一个人做起。最多两个人。也就是说,核心的、初始的代码必须由1、2个人完成。等这个架子搭好了,再慢慢吸引外围的committer。我起头的几个项目无一不是这样。

现在(国内)有没有开源社区中良性生长的项目? 你说的良性是指很多人愿意加入贡献代码么? 很有意义的想法。继续关注Cloud后续的经验文章。

都是高级人才啊

确实,c,d3d11,gcc,gnu make,这组合真是太蛋疼了.
根据文中的意思.要加强推广以及自我发展,那么上面的这些组合将是阻力.
ogre引擎其实并不怎么样,框架庞大臃肿,新特性相当难加.
但是为什么这么多人用呢,因为他理解起来方便,OO封装的特别人性,使用的技术相当简洁.
所以啊,如果你要写一个加强推广以及自我发展的开源引擎,建议是C++,Visual studio,lua,尽量避免引入一些其他的库(例如boost)或者工具.另外dx9必备.

C++再不好,某些特性再被人诟病,至少从开发效率上讲,C++绝对胜于C,很难想象C写的3D引擎的代码要怎么读,到后期代码多了势必也很难维护。我觉得C++的大部分特性还是相当好的,可以学习google的C++的C++开发规范,只是用部分C++的特性。

真做假做?啥时候开个头?到时邮件我,抽时间也贡献些

ogre已经很强了诶,前一阵子的火炬之光,虽然还不算一流引擎,不过比国内不少游戏引擎都好呢!

项目叫什么名字,还有当前3D引擎技术趋势都不重要,重要的是开工的决心下了没?

没什么好说的,表示支持。
为了表示支持,提供几个名字

1. 风神
2. 风云
3. CLua

有意思,深奥啊,3D引擎吗

我以前总喜欢研究一些渲染算法,图形效果,编写shader,真正接触3D engine后,才发现这些效果、算法是小头,如何把它们组织成一个可以灵活配置和扩展,方便美术使用的体系,才真是件极其复杂的事情

做一个WebGL的3D引擎不更有意义吗?

不站在一定系统的高度,研究轮子是没有意义的。最好的轮子不一定用在最好的系统上,最好的系统一定用最合适的轮子。找到最合适的轮子就一定要自己亲手做一个系统。

如果我没有记错之前云风就在做所谓的3d引擎吧, 云风我建议你还是不要折腾了, 你不是做工程的料, 你之前做的那个引擎结果如何? 丁老板给你时间, 给你钱, 你全权做主开发, 你做出来了吗? 效果好吗? 大家都心知肚明吧.

你的长项在于做轮子, 做研究, 做细节, 不适合系统/庞大的工程, 我相信你会再次陷入推到/重构/再推到的无尽循环, 说好听点是对技术的完美的追求, 说不好听就是那真的不适合你.

图形渲染和语言无关,是通过api 控制硬件搞定

c 用dx 的麻烦在于,dx 是com 的,是c++ 那种方式。c 虽然可以用,但却不如c++ 自然

但我说,c,d3d11,gcc,这组合真是太蛋疼了

3D引擎不就是C++&DX么,C不支持图形方面的吧。。。。

可以参考下Ogre3D的运作,它聚集了很多的能人。还有Unreal3 ,udk大家都知道了,n多人在用udk做游戏,说不定下一个小岛秀夫就会从他们中出现。

建议云风出个面向对象的游戏服务器,就只要支持内存对象查询。
我就很想要一个,现在没有,只有用db的存储过程+javabean实现自己的webgame服务器层。

支持你,做自己喜欢,并擅长的事情很不容易。

推荐看看我们老大 李先静 同学写的嵌入式GUI FTK, 这是一个蛮成功的开源项目,现在已经作为RT-Thread子项目发展了。 他的个人主页:www.limodev.cn/blog

另外,他还写了一本书《系统程序员成长计划》,写得非常好,非常推荐阅读。

如果是开源,又要吸引到足够多同学的话,我个人觉得C Plus Plus + Lua是最好的选择,像KlayGE就不错。C语言可能更简洁,更优美,也更高效,但有像云风大哥这样C语言内力的人实在不多,至少在大学里不多(本人大三)。3D API接口方面最开始可以只支DX11,留有扩展,能容易移植到OpenGL就好。我也在尝试着编写一个自己的引擎,尤其硬件设备限制,本本上只能跑DX10。期望大哥的引擎能在性能上有大突破,完全可以写成一个只用来尝试最新图形学技术的引擎。

关注云风很多年,即是云风的校友,又是曾经的同事,对网易的技术氛围曾经感到不满而离开,这些年一直在3d领域拼搏,现在可以说算法上面过的去,但是代码的设计和工程的构建还有些不足。还得多像师兄学习。
在设计可编程管线的架构上面有个一直没有能够很优雅解决的问题,就是shader的参数管理,对于一般的材质系统来说,一个材质可能要对应几个shader,对于不同的绘制策略,比如说有时候要输出到Gbuffer,有时候是输出深度,有时候是用来打光,材质提供了数据,但是对于最终的shader需要看画什么,甚至mesh的不同也会使生成的shader不同,如果shader不同,那么材质参数在常量buffer中的位置也不一样,如果每次传参数的时候都会有一次map查询,参数多了会查询很多次,而每帧这个过程每个材质可能会进行很多遍,开销就会增加,如果针对每个shader保存一个组的话比较难以管理,不知道有没有什么既优雅,又高效的方法

期待啊。。。
申请加入。

老大,能不能考虑先支持OpenGL哈~~~期待ing

终于为你的粉丝做点事了

赞啊,这个想法估计是每个中国游戏开发者的梦想吧,以前也有想过,但想法终归是想法,我之前名字都想好了
OpenGE3D = open game engine 3d
仅供参考 哈哈
如果开始搞起绝对强力支持
(虽然能力有限~~)

很好
就从你这项目开始用C/LUA
现在都是用C++/Python做网游

云风的博文已经说的很清楚了:一切以好玩为目的。只要写代码开心即可,从一个小规模的项目开始,逐步重写和完善。完全的programming for fun :D 可惜不是每个人都有云风这样的条件,能够自由的支配时间做自己真正热爱的项目。
经常看这个博客的人也应该知道,云风近些年主要是用C来构建大系统,已经有多篇博文在记录着一些想法。感觉云老大悟到了许多东西,希望能通过某些途径表达出来,这个项目应该是直接产物(比出书更直接),真让人兴奋。
我看好这个项目!

名字简单,风魂3body

我也提供一个意见:AI。
云风期望真正的程序员能在其中体会到乐趣,为AI提供一个好的基础会是一个亮点。
不过这个也许作为引擎以外的MOD比较合适 ;-)

关于物理引擎,这个可以有,但是单独做物理引擎可能不太好,因为它不能很简单的独立运行起来看到结果。

楼下有同学提到了美术资源问题,我觉得这个蛮重要,可以考虑为美术提供一个开源平台。
所谓美术开源平台嘛,应该就是一个资源库,设定了一些基础的技术要求(精度等),贡献者可以提交自己的作品,也可以继承其他人的作品加以改进,或者进行简单组合。
这里的同学大部分是程序系,所以可能需要专门去采样一下美术系同学们的意见,看看他们乐于参与的开源项目。

如果希望不需要太多(广度、深度)的专业知识和时间投入就可以做出能玩的游戏,搞到最后,一个小的生态环境,这个真得有。

云风大哥的想法非常好!我唯一想说的就是 Just do it!
俺现在读“大六”,读了六年才找到读大学的感觉啊!汗……
我有一个想法是写一个自己的3D(游戏)引擎,虽然现在很菜,但大N不都是从菜鸟走过来的吗,呵呵
现在正在研究Irrlicht引擎!如果这次不能找到游戏开发的实习工作,我就开始写了。想到这里就热血沸腾,哈哈……
只可惜水平太菜了,云风大哥现在当然不会找一个菜鸟共同开发了,要不然也可以助云风大哥一臂之力了!

膜拜啊~!希望能尽早看到原型的出现


另回楼上,JAVA再怎么不好,但就内存管理技术就是在今天依然是领先的。

那位开出512MB内存的,估计JVM版本比较老吧,要不就是你的代码本来就有内存泄漏。

咳咳
前面说的是纯用JAVA写的2Dpc游戏
不知道JAVA写的3D engine 做出来的游戏什么个表现
总之 这个语言做PC上的本地软件不合适:)

@go4:
童鞋,java做3D还是算了。PC是承担不起那个内存开销的
JAVA2D PC游戏 都能开销出512M内存来
3D的话 估计只有什么 天河一号这种超级计算机能玩了
:)
而且云风不搞JAVA

我不是程序员,但是云风blog的长期读者,看到这篇blog想到的可能跟以上各位不一样。
网易这么大的公司,云风这么有技术实力的元老人物,本应可以在公司有更多作为,现在却开始想做个人兴趣的事,总是感觉有点遗憾。
可能公司成规模了,难免尾大不掉,其中任何个人都力有不递。可能公司经营成熟了,创业和冒险精神就消失了,上下全体也没什么压迫感了,可以更多时间放在工作以外的事。
长期专注于技术和游戏的云风,是否失去了对网游的热情?天下贰、创世西游,一路以来可以看到网易不停在追赶史诗级大型RPG的步伐,宏大的故事背景,宏大的场景。我玩的游戏不多,第一感觉是很有wow的feel,云风你会否觉得这是追随,而又不能超越,太少探索而提不起兴趣?
其实MMORPG发展到今天,第一个M大型越来越发展到极致了,而第二个M多人,关于多人游戏所形成的社会性这个一直是停步不前的。大公司大手笔大投入,依靠强力的技术去将游戏做得越来越大,视觉效果越来越好,这些都让后进者感觉无法超越,参与者觉得心满意足。
但社会性方面的研究和进步呢?很少看得到。征途有做一部分,主要的形成几个大型团体之间的天然对立和斗争,依托绝对实力建立的少部分特权阶级,设计目的是完全服务于赢利需求。徐宥箴在网易和离开后做的那几个游戏,有部分经济活动的进阶设计,但只限于一个较小的循环和交互。
社会性,其实就是政治和经济,当有成千上万的人处在同一个虚拟世界里时,这里面就有很多可以发挥的空间。怎样将这两个方面的内容和玩点做丰富,做精细,做大规模,这不取决于大量的技术和美术资源投入。它的基础只是一些社会学原理和数学模型,可以做在大型如wow的游戏中,也可以做在文字mud里面。云风当年也在blog里探讨过比如游戏货币之类的相关问题,其实这里面可拓展的还有很多。很少有游戏开拓这方面的内容,我估计是因为这和赢利模式关系密切,满足于现有赢利模式的成果人士不愿去冒险吧。
说到这里,其实我的point是,做开源引擎这种纯技术方向是一种选择,如果要跟游戏关系更直接,做小型游戏项目研究性开发也是一个选择。不知道网易内部有没有鼓励员工创业的机制,来焕发员工的激情去做不同的尝试和创作。

我看 这个项目就叫做
风魂3D 吧
或者叫
云魄
:)
也算是对老2D引擎风魂的集成与发展

为什么不考虑Java呀,跨平台性良好,有很多OpenGL的绑定。

Imagine.

名字叫 Texture怎么样。读起来顺口,又和图形方面有关系。对应的中文也读起来很顺口。

名字:yier
中文:一二
意思:来自道德经,道生一,一生二,二生三
只是瞎想的,当不得真:)
呵呵,这里主要讲时间,你哪3D主要是空间,也算相成吧;
最主要是愿项目生生不息

首先我觉得3D引擎不是好的选择, 虽然这个方向很吸引人, 但很难吸引很久, 因为3D引擎离不开3D资源, 比起2D资源好的3D资源是很稀缺的, 而且既懂程序又懂3D模型设计的很少, 我建议以2D引擎起步比较好, 可以利用3D加速, 不但2D资源丰富易编辑, 而且更容易理解和上手. 3D可以作为以后的扩展逐步实施. 毕竟3D领域的概念和体系要复杂得多, 而且更新换代很快, shader语言的作用越来越大, 再用简单的固定管线入手已经不合适了.
如果只坚持DirectX的话, VC还是最好的选择, 不过我不推荐用纯C来写COM接口的程序, 如果坚持用C, 还是用OpenGL比较好, 不但没有DX11对WinXP平台的限制, 而且还有未来跨平台的优势.
要做个与众不同的引擎, 我推荐尽量去利用lua, 最理想的情况是完全不用C, 直接luajit+ffi, 绑定opengl的接口很容易, 其实图像引擎的开销不在于这些API层的访问, 而是GPU, 所以用脚本和用C去渲染图像几乎没什么性能差异, 何况luajit的性能已经很接近C了. luajit还有个好处是它不支持字节码, 只支持执行源代码, 非常适合推广开源.


云风版的Unreal?

盼望啊~~


c+lua 怒赞, 希望能把luajit2结合进去 这个应该也能吸引搞研究的人, 另外还是希望能够支持opengl 这样在linux平台下可玩性强多了

呵呵,考虑跨平台可移植性,opengl是较好的选择。

之前用D3D和opengl写过一些代码,个人感觉,如果实现相同的功能,先用D3D,再用opengl实现相同功能比较难。反过来,先用opengl,再移植用D3D实现相同功能却比较容易,个人还是更喜欢opengl接口的

对开源项目感兴趣,可惜是菜鸟,没有什么项目经验,不知道能否参与?

支持做移动平台上的3D引擎或物理引擎。任何一个成功的项目都得有实际应用作为推动力,不然肯定越来越小众,最后消失。即便是抱着玩的心态,也是被很多人、很多应用捧着一起玩更有意思吧。

我也觉得在移动平台下使用go语言是个不错的方向,虽然还不会go

3D引擎太大了,现在也太多了。一个比较好的建议做物理引擎。现在很多流行的游戏都用的上,参照iOS上的愤怒的小鸟,Cut the rope.据传他们是用Box2D这个开源的2D物理引擎。
物理引擎还是个很热的研究领域,除了简单的Rigid body, 还有deformed object, fluid ... ...
再来国内基本没人做这方面项目,基本空白。

往功能强大深处搞很难超越现有开源的项目,如Ogre,irrlicht.这些都存在了多年,更何况商业方面的重量级engine.所以个人认为要建立这类型的项目定位要准确.
建议休闲和小游戏市场.好处有以下几点:
1.代码可控,平台易跨.
2.市场需求大,适合广大个人式开发人员.
3.容易促成项目的成功,比起专业的大型engine,更容易做成开源共享版本.
Lua+C/C++参见:Love,AGen(2D)
PTK Engine:有PC,Mac,IPhone版本
Playground:PC,Mac

我也建议搞一个移动平台上的3d引擎,原因有这么几点:
1.移动平台功能越来越强大,应用前景广阔。
2.已有的产品较少,做起来应该比较新奇有趣。
3.规模比传统的引擎小,比较适合做开源项目。
Carmack都在摆弄iphone,所以这个应该还是比较有趣的。

作为一个用户的想法:支持只使用OpenGL,微软什么的麻烦死了。可以跨平台的话,会吸引很多个人移动开发者。那些“大”引擎,只有公司才能用,我们用户需要简单一点的,能做基本的事,然后有几个自己的特点,就很好了,不用那么cutting edge。好像RPG Maker这种。

偶滴神呐,云风 。。。

下决心开始做吧,很多事能做成功,靠的就是一哄而上,呃...也许用词不太准确。要是左思右想,也许本来很好的计划就放弃了。

坐等云风的这个项目

从最熟悉的下手是对的。
不管这个怎样,至少能带一带国内的开源氛围,有时候就差一个“第一枪”。我没能力做啥,总可以关注看看,谢谢测试用例文档啥的。

这可能是让 关注风云博客的网友们 最兴奋的事情了。

期待下文~

很难的,何况又是以兴趣为主,想写好会消耗掉大量的时间和精力。

还是做一些稍小的开源项目实际些,比如早期的IM工具和协议规范。知道网易走了很多,下面的新人虎视眈眈,你需要证明自己,以得到更好的发言权。但是,很多东西越诱人,付出的代价就越大。程序结构lite才能多变,对吧。

代号:tiger。
取自go for it,tiger!

做3d引擎挺不错,支持!
其实UI,Net,Physics之类的不用考虑,以后用中间件就可以了,云风只要能把材质定义和渲染顺序这种核心设计好应该就可以开始吸引其他开发者参与了。

云风总是能做很多人想做却做不了的事情,从编写《我的游戏编程感悟》到现在制作开源的3d游戏引擎,这正是目前中国的游戏开发行业所需要的,其影响也必定深远巨大。如果项目开始,我愿意贡献自己微薄之力!加油,云风!

开源的精神乃程序员成长的动力,本人举双手支持云风的这一决策。一个开源的项目对参与代码开发的人和阅读代码的人都是一次升华。

强烈关注中...

云风之所以选择图形引擎项目,可能是源于对风魂开发那段时间的怀念?呵呵~
我远未达到以下各路高手为这个项目提供各种建议的经验、技术功底,只想一心提高自己的能力,希望将来有所贡献。

其实我觉得不用过多考虑其他人的感受,自己喜欢采用什么架构语言应该随心。

坐等项目了。

举双手为云风供应元气弹能量支持你开启!
其实我参加工作起就有个想法,就是以后经验积累得差不多了,就做开源的项目,希望能与同好们分享心得、能为刚入行的新血提供帮助。
很希望国内也能弘扬一下开源的精神,尤其是能形成一种良好的学习氛围,缓和一下浮躁的心态。:)

不要为了开源而搞开源项目,一般人没有回报的开发我觉得很难持续一年以上。现有很多开源项目都慢慢发展起来的,一开始都是自己用的,然后发现对其他人可能也比较有价值,就开源了。

个人如果是纯粹兴趣,我觉得最好一开是就是熟悉的几个人,先搞个基础版本,不要太多人。

如果想专业一点,我觉得最好先搞个基金会,定一个发展的目标。由社区去推动发展,也需要有些资金去处理一些开发和推广。

如果是以公司的名义开发,现在国外很多公司要么自己组建基金会,要么是以公司的名义发布项目,把各项目都统一起来,开发人员则不一定。

而且可以考虑暂时限定在移动平台,Go在android下支持的还不好,如果借机会把这个问题解决了,肯定能吸引国内外一大票高手,golang-nuts上好几次有人问android下开发go的问题了。

真的应该考虑用Go,也要考虑开发者的编程乐趣啊

公司内部那个开源项目以后还会继续维护吗?

建议面向小型游戏的3D引擎吧。国内这方面还是很欠缺的。

相信会有很大的需求 :)

不知道项目该用什么名字以及项目代号是什么
-----------
还用说吗? 风魂2.0

不改善编程语言本身,一切都毫无价值:D

坐等。不过也希望能跨平台。我想做东方3D wwwwwwwwwwww

期待这个项目诞生~ 持续跟进~

一个有趣的想法

准备从这个项目重新开始学习c,lua,期待

如果要开始,就得、做好将来几年时间都搭在上面的心理准备。就算能做成自增长的社区,中前期也一定还是一个人主导的。

另外,技术选型方面,不看好C/Lua,最简单的编译语言/最简单的脚本语言,这样的两种语言搭配。还不如换一种描述能力强的语言,逻辑和底层都用它。比如go. 甚至服务器也用go.

虽然选了DirectX的话,用上go可能累一点,不过用C都不怕类,何况go呢。

3d engine太大了吧,其中一个模块是不是好些,比如就做GUI

你的意思是以lua作为引擎层的接口,就是以lua的c_function导出,然后用标准的lua环境直接可以加载? 那这个像是lua的3D游戏引擎

使用C+Lua构建3D引擎感觉有点类似Panda3D的结构了。Panda3D使用的是C++和Python的组合。

我觉得这开发的组合也太怪了,C + Lua + gcc 的组合可能一开始就会吓跑很多人。使用DX11作为主要底层图形API的话C++和VC应该是首要的选择,除非跨平台是优先考虑的因素,但是跨平台的话显然应当首先考虑OpenGL。

感觉这个项目会非常小众。

不过如果这个项目能够启动起来的话那么可能将是速度最快的脚本粘合3D引擎了,毕竟Luajit + FFI + C接口的性能能够媲美native代码的速度了。

很支持这个想法,其实很早之前我也是想做这样一件事情,可惜总总原因...

简单想了一下实现:
设计阶段
1 招募人员
2 建立交流渠道, QQ群, 论坛等
3 产出构架方案和模块划分

开发初期
1 搭建开发环境
2 编写框架代码
3 分模块负责人
4 编码到可以运行,并且有demo

自动增长期:
1 ....

工程巨大啊, 云风GG~~~

3d api 可以暂时只支持 DX11
构建工具采用 GNU Make

这样好像很不方便啊

您好,我对您这个非常感兴趣,本人是硕士在读学生,对linux环境c++编程比较熟悉。也懂一些openGL。如果您开启项目,我希望参与进来贡献一点力量。谢谢

我显然是不看好用c来做一个3D引擎的框架,很多人是不习惯的

我想,这个引擎若说特色的话,可以是"小"(c制作), 比如说你做一个demo可以几十K主程序跑起来

lua作为3D引擎的核心,感觉不太现实了,lua就把它局限于逻辑层更为合适吧

代号: Ice and Fire

强烈支持开发支持移动平台android,iphone的3d engine. 要是全动态语言生成hello world, 几分钟内能开始写游戏规则的核心代码,而不是花时间在搭环境上,应该会吸引很多人吧。毕竟3d自身的概念太多了,跟游戏逻辑本身相关的却很少了

我其实想说,3d engine 并不是我强烈的爱好。我的动力是希望看看怎么给一个开源项目培育出一个良性的自我生长的环境。其实做什么具体的东西,比如是不是 3d engine 反而是次要的东西。

我定义的良性环境指,可以吸引有能力的开发者共同开发,并和项目的成长相互促进。并逐步的让开源项目有一定的真正用户。

另外,最近几年也积累了许多构建软件的经验。这些在做已有项目的修补工作中并没有特别的作用。你会知道那些东西有这样那样的不足,但也能理解历史造成的负担。

想实践一下老是在想的东西,也是动力之一。

坐等云风的这个项目

Post a comment

非这个主题相关的留言请到:留言本