做一个类似 Minecraft 的游戏,引擎的选择?

2014-11-22 15:07:05 +08:00
 Bitex

编程/游戏开发新人,想试着做一个类似Minecraft的游戏,有两种考虑:

  1. Python/Ruby,利用Pyglet等等封装OpenGL的库/gems;

  2. Unity 3D。

但是不知道第一种方案的难度,希望有前辈指点一下。

另,有哪些OpenGL的靠谱教材?学校图书馆只借得到《OpenGL编程指南》的6、7版,翻开一看全是glBegin()glEnd()。似乎第八版对应的是OpenGL 4.3,又或者根本不需要纸质教材?

5099 次点击
所在节点    问与答
10 条回复
icedx
2014-11-22 15:27:29 +08:00
Python/Ruby 不太适合写游戏, 但没有什么不可能, 因为Cocos2d 最初就是用Python 写成的
Unity3D/Cocos2D 不太推荐, 因为会被局限在其框架中

OpenGL 教程推荐Nehe的OpenGL中文教程
开发过程中常备OpenGL编程指南
icedx
2014-11-22 15:35:22 +08:00
其实我的List 中也有和楼主要做的类似的事情.
目标是构建一个3D 的Terraria.
不知道你为什么会有这种想法, 但是毫无疑问的是, 如果用了Python 性能问题不可避免.
Bitex
2014-11-22 15:38:26 +08:00
@icedx 那么,用C/C++会更好一点?

一方面是很喜欢沙盒游戏,娱乐+练手,另一方面是为了应付课程实验/_ \
akfish
2014-11-22 15:56:13 +08:00
Unity3D无疑是门槛最低的方式,你完全不需要接触到OpenGL的API。
任何需要大量接触到OpenGL API的实现途径,都完全与用引擎背道而驰,需要你自己实现大部分引擎的逻辑。
用引擎撸得快,不用引擎学得多,就看你的主要目的是哪样了。

做游戏把场景渲染出来只是一方面,游戏中的交互、逻辑还需要脚本引擎的支持。
所以除非你打算再去折腾如何嵌入V8/Mono做脚本引擎,就不要考虑用C/C++调用OpenGL API裸撸了。

Minecraft这样的对渲染画质要求不高的游戏,lz还可以考虑用WebGL撸。
onemoo
2014-11-22 15:57:11 +08:00
opengl方面:
如果不想用glBegin...glEnd的话,说明你打算使用“现代”opengl,那就别看nehe的教程了,直接看下面:
《opengl superbible》第5版或以后,第五版讲的是opengl3.3,现在开发opengl至少也要3.3。
《opengl programming guide》第8版,讲的是opengl4.3。
我还是觉得看以上两本书最好,因为opengl官网上缺少一个循序渐进的入门tutorial,wiki上资料虽不错,但是并不是step-by-step的,对新人不够友好。而网上的各种教程且不说还有很多过时的东西,就算是一些opengl3.3+的教程也讲得不够详细,还不如看这两本书呢。

至于要写游戏嘛,当然最好是用C/C++啦,但是这样的话,不管是使用现成的游戏引擎还是完全自己搭建都非常耗时间(考验功力)。如果是为了交作业,那还是别自己干了,直接用unity3这种带有完整工具链的游戏开发工具也不错。
真打算自己写的话,试试一些开源游戏引擎? 或用开源的图像引擎搭配其他的中间件? 或是干脆从头撸一个? 时间不紧又有兴趣的话可以慢慢干。

有人用irrlicht重写了一个Minecraft: http://minetest.net/
akfish
2014-11-22 16:03:46 +08:00
这里已经有一个类Minecraft的WebGL引擎了:
http://voxeljs.com/
Bitex
2014-11-22 16:06:31 +08:00
@akfish 的确,一想到还要有复杂的脚本引擎,就觉得不单单是把画面渲染出来这么简单了。

不过权当是为了学习好了。
Bitex
2014-11-22 16:12:49 +08:00
@onemoo 已经买了第八版!

说起来只有半个学期时间的话,想在deadline之前从头到尾撸出一个功能完整的类Minecraft游戏几乎是不可能吧……就算可以很快学会、完成图形渲染的部分,也估计会死在脚本上(我的形式语言真的学得好烂XD)
onemoo
2014-11-22 23:46:29 +08:00
@Bitex
从头撸的话,光是熟悉opengl就要大概2个月吧。而且这只是开始,各种图形学的东西也要学,还有游戏架构也要摸索...还有数学也要好,你线代怎么样?......仅这点时间就要做出游戏确实不现实。不过如果以后想要做游戏,或是想在这方面有些积累的话,坚持学学也不错。

其实大部分游戏程序员是死在3d美工上的...哈哈~

直接使用unity3d这样完善的创作工具的话,也不是没可能做出来。
Bitex
2014-11-23 12:23:14 +08:00
@onemoo
我的线代……也很烂。

昨天试着用Python + Pyglet撸出了图形,因为都是简单的方块,要考虑的东西就少了很多。感觉再稍微做做就可以达到交作业的标准了,时间还很充裕呢。

毕竟是第一次尝试写游戏,还是想一点一点累积起来吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/148507

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX