想写一个二维游戏引擎,不知道应该怎么入手

2015-07-20 22:12:06 +08:00
 gengyanda

在这个领域基本上没什么经验,也没打算做多复杂的事情。
就是想用C#设计一个简单的二维rpg引擎,希望能简单跑一些rpg,就跟rpgmaker差不多的性质。

之前自己有过相关的尝试,用gdi plus画一些窗体,效果还行。有人推荐我用directX,又觉得入手太困难,没必要费那个劲。
还考虑到游戏有一些动画,再想起以前用timer做一堆控件到处飞的动画效果结果把自己恶心半死的经历,有些没主意。

现在主要是绘制和动画两方面。
不知道各位有什么见解。

4380 次点击
所在节点    程序员
22 条回复
YuJianrong
2015-07-20 22:23:20 +08:00
很好奇为什么阁下没什么经验却要从高难度的引擎入手……
Mutoo
2015-07-20 22:30:11 +08:00
handmadehero.org
手把手教你做2d引擎
gengyanda
2015-07-20 22:36:08 +08:00
@YuJianrong 没打算做高难度的引擎…… 而且经验做做不就有了么
gengyanda
2015-07-20 22:41:58 +08:00
@Mutoo 嗯,去看了看。真正意义上手把手,以及15美刀。
其实感觉没必要一步一步跟着走,因为自己也比较喜欢摸索。大概只是想寻求一些想法,去学习一些路上需要用的技能顺便对可能遇到的问题做个心理准备
dog047
2015-07-20 23:23:42 +08:00
游戏引擎这个概念应该包括了音效库,图形库,物理库等,复杂点的还要处理网络部分 ,反正我是怕了。对我来说写出一些图形API实现自己想要的效果就是引擎了。我是先学OpenGL ES,从看Cocos2D源码入手。http://www.opengl-tutorial.org/zh-hans/
gengyanda
2015-07-20 23:41:48 +08:00
@dog047 openGL确实是一种思路。不过鉴于是.net的环境我还是考虑用ms的一些库。directX太高大上有点瞎眼,最近又有说gdi plus已死的声音,不知道该用什么画图了。
Kilerd
2015-07-21 00:29:01 +08:00
@dog047 感觉游戏引擎里面最重要的应该是,图形库和逻辑库(也就是物理库),其他的开一个接口就可以了。
quadpixels
2015-07-21 00:54:20 +08:00
啊,俺来说点不太成功的粗浅的理解和学习经验…

曾经照着这本书《游戏物理引擎开发》(英文版 http://www.amazon.com/Game-Physics-Engine-Development-Commercial-Grade/dp/0123819768 中文版 http://product.dangdang.com/23410640.html)想做个3D的碰撞检测与碰撞响应系统。

但是后面到了碰撞向量检测之后,由于一开始没有明白整个系统是建立在冲量的基础上这一点,而且摩擦也没做不出来,所以后来砍掉重来改做了个2D的碰撞检测系统,把目标改为做出能堆叠的物件。最后的效果在此:
http://v.youku.com/v_show/id_XNTYyOTEwOTAw.html?from=y1.7-2

虽然还是很破,比如堆叠的稳定性很烂,堆叠下方的物件还会漂移,但做出来的一刻还是好有成就感有木有!!而且领略到了「只要正确地模拟了冲量,万里长征就走完了第一步」这样的美妙的感觉。
俺在弄这个2D版的时候,还参考了一个很简单的2D物理引擎(绝对不是Box2D或Chipmunk那么复杂的,而是从碰撞检测到碰撞分离、从平到到转动一步一步各有一个Visual Studio的工程文件那样的,一共只有千多行程序,可惜俺之前的硬盘挂掉了,所以我得在网上找一找才能给出它的名字。)

总得来说,啃一遍回以后,无论结果如何只要尽力了就觉得不怕困难和麻烦的东西了 TvT

俺画图用的是Opengl,同样的源文件可以在Windows下编译,也可以在Linux下编译。

个人感觉物理部分是以计算机的离散计算来模拟现实生活中的连续现象的过程,它只是2D游戏引擎的一个部分而已,它的职责和一个2D游戏引擎的管理场景树的职责是不一样的。那方面我就不懂了,只是大概知道在Cocos2D里面看得见的东西和看不见的东西都是以一个场景树组织成的。其实在做2D物理的时候,会涉及到从世界坐标系转换到物体的自身坐标系的过程,这其实就是沿着场景树向下走一级时所经历的坐标转换的过程。

说了这些浅薄的见解,不知有没有用呢 :D
感谢你看了我这些浅薄的见解,希望有用 XD
quadpixels
2015-07-21 01:27:12 +08:00
找到了!!!我说的那个规模较小比较容易研究的带源代码的2D物理引擎是这个: http://elancev.name/oliver/2D%20polygon.htm
另:上一篇回复有错别字,最后一句话打了两遍,不好意思啊

s/啃一遍回/啃一遍书/
s/感谢你看了我这些浅薄.*//
zapper
2015-07-21 09:07:54 +08:00
LZ既然知道RPG MAKER,把它的Sprite,Scene,Window,Character,Battler,EventInterpreter类研究一番,也就差不多了....
dcoder
2015-07-21 09:09:30 +08:00
@gengyanda 楼上都是些不实用的建议...

你直接用 Unity 3D 的 2D 功能就是, 非常成熟了, 商业游戏都用.
http://unity3d.com/cn/pages/2d-power

还有, 你不是用 C# 吗, 用 Unity 再合适不过了, 现在 personal 版是免费的.
不要去研究 cocos2D 之类, 那样就把自己带歪了...
dcoder
2015-07-21 09:11:28 +08:00
发完帖发现我看错了, 你是要 *写* 游戏引擎呀... 上面的帖子当我没说... XD
unoyx
2015-07-21 09:56:19 +08:00
先写游戏,等做了几个游戏再把公共部分抽出来就是引擎了。
nozama
2015-07-21 10:09:20 +08:00
我`感觉`游戏引擎分两大类: Entity-Component System (ECS) 和 SceneGraph, 大游戏用前者, 小游戏用后者.
snnn
2015-07-21 10:21:28 +08:00
2D游戏确实不一定用dx/opengl。虽然用了效果更好
你要不先从SDL入手。
hitmanx
2015-07-21 11:21:14 +08:00
我接下去几个月由于工作需要会啃两本书,<计算机图形学>以及<opengl编程>(“红宝书”),在这之前还得把线性代数过一遍(忘得差不多了)。业余时间也打算研究一下游戏引擎,然后动手写一个自己的。有兴趣小伙伴可以一起来啊:)
assassinpig
2015-07-21 11:43:20 +08:00
说不好这么高难度的东西,但如果lz效果和功能的要求不是很高的话,按某一个现成引擎抄抄应该没啥问题,之后也许lz就开朗了起来
acros
2015-07-21 11:48:26 +08:00
不做游戏直接开发引擎的话,会不会绕弯子啊
chmlai
2015-07-21 12:08:13 +08:00
可以看看云风那个 ejoy2D
learnshare
2015-07-21 12:16:12 +08:00
先做做简单的游戏,再总结探索一个 Engine

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

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

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

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

© 2021 V2EX