通过Unity2D独立开发一款瓷砖式RPG游戏需要学习哪些知识?

作者:邓凯
链接:https://www.zhihu.com/question/25876314/answer/31853555
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

问题很对胃口,我来答一记,水平有限,先说说在Tiled 地图方面的经验(多图流量预警!)。

1、一开始是打算做个《英雄无敌3》的独立Unity游戏,最先想到要做的就是Tile地表编辑器,先贴张《英雄无敌3》编辑器的图。
<img src="https://pic3.zhimg.com/f97fde996a31eff4b0adc127be454952_b.jpg" data-rawwidth="1235" data-rawheight="813" class="origin_image zh-lightbox-thumb" width="1235" data-original="https://pic3.zhimg.com/f97fde996a31eff4b0adc127be454952_r.jpg"> 通过Unity2D独立开发一款瓷砖式RPG游戏需要学习哪些知识?_第1张图片

要说2D Tiles地图的美术表现,除掉斜45度的《暗黑破坏神2》,顶视图的冠军非《英雄无敌3》莫属。另外,刷地表功能的一个要点在于能以各种笔刷(泥地、沙地、海、草地)随意的刷地表,地表跟临接其他类型地表的衔接关系一定是对的,有了这个,不仅是策划或者美术编辑修改方便,而且自动生成关卡才有可能。

《英雄无敌3》的NB之处就在于多种Tiles之间的衔接非常自然,注意上图中宝物1右边的红框区域,这个格子里有泥地、草地、沙地三种纹理衔接,这在基于Tiles的2D地图里非常少见。

所以呢,我先把《英雄无敌3》的资源解出来,看看怎么才能做得如此NB:
<img src="https://pic3.zhimg.com/33d6c40ff66661df7679aefd423cd946_b.jpg" data-rawwidth="1265" data-rawheight="805" class="origin_image zh-lightbox-thumb" width="1265" data-original="https://pic3.zhimg.com/33d6c40ff66661df7679aefd423cd946_r.jpg">所以为啥人家这么NB呢?素材规划强啊,刚才提到的红框区域泥草沙三种纹理混合图就在最后一排的中间(做了水平镜像的操作)。 通过Unity2D独立开发一款瓷砖式RPG游戏需要学习哪些知识?_第2张图片

所以为啥人家这么NB呢?素材规划强啊,刚才提到的红框区域泥草沙三种纹理混合图就在最后一排的中间(做了水平镜像的操作)。

简单的说,沙地和泥地,算是基础地形,其他地形都有跟跟沙地和泥地衔接的图素,所以如果其他地形之间要衔接,就在中间夹沙地或者泥地(注意第一张图中间区域的火山地形和草地衔接之间的泥地过渡)。

明白了这个道理,又有了图素,就开始做呗,正式美术资源什么的等编辑器好了再找美术按着这个规则做吧。

所以我就开始写代码了。写了几千行代码,弄了个这么个东西:
<img src="https://pic4.zhimg.com/5c6b59cc487dd63ebc5f5e63b36d902b_b.jpg" data-rawwidth="1264" data-rawheight="911" class="origin_image zh-lightbox-thumb" width="1264" data-original="https://pic4.zhimg.com/5c6b59cc487dd63ebc5f5e63b36d902b_r.jpg">但做到这份上只做到了海面和两种基础地表的混合,接下来就要引入一张图素三种地形的类型了,我心里琢磨了一下算法,突然发现工作量比我想象的大,我似乎对这种Tile衔接的规则总结得不太到位,那么上网找找吧。 通过Unity2D独立开发一款瓷砖式RPG游戏需要学习哪些知识?_第3张图片

但做到这份上只做到了海面和两种基础地表的混合,接下来就要引入一张图素三种地形的类型了,我心里琢磨了一下算法,突然发现工作量比我想象的大,我似乎对这种Tile衔接的规则总结得不太到位,那么上网找找吧。

--------------------------------------------------分割线,谢谢-------------------------------------------------------

2、神器出现了:Tiled Map Editor

这简直是赤裸裸的打我脸啊,以后做啥事之前能不能先上网搜搜?造轮子再快能快过直接开车吗?

Tiled是个开源项目,编辑器框架基于QT,有很多游戏都基于Tiled制作地图,斜45度或者顶视图都可胜任,贴几张图上来给大家看下:

<img src="https://pic2.zhimg.com/9a56d028f8298bdb4a8517fee5fd7d9d_b.jpg" data-rawwidth="1006" data-rawheight="654" class="origin_image zh-lightbox-thumb" width="1006" data-original="https://pic2.zhimg.com/9a56d028f8298bdb4a8517fee5fd7d9d_r.jpg"> 通过Unity2D独立开发一款瓷砖式RPG游戏需要学习哪些知识?_第4张图片
<img src="https://pic1.zhimg.com/6a50cc241f7794b0666d38b3608105d4_b.jpg" data-rawwidth="1006" data-rawheight="654" class="origin_image zh-lightbox-thumb" width="1006" data-original="https://pic1.zhimg.com/6a50cc241f7794b0666d38b3608105d4_r.jpg"> 通过Unity2D独立开发一款瓷砖式RPG游戏需要学习哪些知识?_第5张图片

我试用了一段时间,这个编辑器最NB的就是对地表类型编辑归纳,并且自动衔接其他类型地表的功能。举例给大家看看:

<img src="https://pic4.zhimg.com/20171fc49a283f48cad91a3ce96897bf_b.jpg" data-rawwidth="1483" data-rawheight="810" class="origin_image zh-lightbox-thumb" width="1483" data-original="https://pic4.zhimg.com/20171fc49a283f48cad91a3ce96897bf_r.jpg">以上面斜45度地形的图素为例,如果美术给你做了所有的衔接图,你导入所有图素,选定某种类型的地表(左边列表中的Sea2),然后在右边图库中标识哪些图片的哪些区域(左上、右上、左下、右下)是该种类型(蓝色高亮区域)。标识完成后,你就可以在主视窗用该笔刷任意涂刷了,程序会自动为你做地表衔接。 通过Unity2D独立开发一款瓷砖式RPG游戏需要学习哪些知识?_第6张图片以上面斜45度地形的图素为例,如果美术给你做了所有的衔接图,你导入所有图素,选定某种类型的地表(左边列表中的Sea2),然后在右边图库中标识哪些图片的哪些区域(左上、右上、左下、右下)是该种类型(蓝色高亮区域)。标识完成后,你就可以在主视窗用该笔刷任意涂刷了,程序会自动为你做地表衔接。
<img src="https://pic1.zhimg.com/0822bcc3ba797f69b888870f63797a74_b.jpg" data-rawwidth="1640" data-rawheight="862" class="origin_image zh-lightbox-thumb" width="1640" data-original="https://pic1.zhimg.com/0822bcc3ba797f69b888870f63797a74_r.jpg"> 通过Unity2D独立开发一款瓷砖式RPG游戏需要学习哪些知识?_第7张图片

教学到此为止,那么,题主是要做Unity2d的Tiled地图啊,这个编辑器编辑的成果如何导入Unity项目呢?

--------------------------------------------------分割线,谢谢-------------------------------------------------------

3、Tiled to Unity

Unity Assert Store里搜索“Tiled”,你会很容易找到将Tiled地图导入Unity的插件:
第一个是:Tiled Tilemaps
<img src="https://pic4.zhimg.com/bd5109a703150cf0b97be1ce88a12a5f_b.jpg" data-rawwidth="797" data-rawheight="762" class="origin_image zh-lightbox-thumb" width="797" data-original="https://pic4.zhimg.com/bd5109a703150cf0b97be1ce88a12a5f_r.jpg">详细的去商店看介绍吧。 通过Unity2D独立开发一款瓷砖式RPG游戏需要学习哪些知识?_第8张图片

详细的去商店看介绍吧。

另一个更神奇一点,名字跟我这节名字一样:Tiled to Unity
这玩意儿能把Tiled 2d地图映射到3D元素上,生成Unity3d地图。
<img src="https://pic1.zhimg.com/06f554096f5c52d1aae1c74f0f7e8b14_b.jpg" data-rawwidth="792" data-rawheight="900" class="origin_image zh-lightbox-thumb" width="792" data-original="https://pic1.zhimg.com/06f554096f5c52d1aae1c74f0f7e8b14_r.jpg">我想2D转3D应该不是题主的需求吧,但这东西看起来确实吸引人,就是不知道渲染效率如何,不知道有没有做渲染批次合并...而且有点贵......本人没试用过,看起来评论区 钟磊 同学有经验,感兴趣的同志可以移步向他请教。 通过Unity2D独立开发一款瓷砖式RPG游戏需要学习哪些知识?_第9张图片

我想2D转3D应该不是题主的需求吧,但这东西看起来确实吸引人,就是不知道渲染效率如何,不知道有没有做渲染批次合并...而且有点贵......本人没试用过,看起来评论区 钟磊 同学有经验,感兴趣的同志可以移步向他请教。

总之呢,基于开源软件的Tiled地图本身地图存储格式也是很清晰的,就算自己写读取地图也不会太难。

--------------------------------------------------分割线,谢谢-------------------------------------------------------
4、Tiled图素资源
题主问到美术素材,一看就是准备单人Solo的节奏,遇到这样的同学我就很高兴,虽然知道十之八九是死路一条吧,但就是喜欢这种“虽万人吾亦往”的调调。单人Solo最麻烦的是素材的版权问题,

以下是我觉得可以考虑的素材来源:
1) Google + Tileset:国外网站有很多免费开源的美术资源,比如OpenGameArt.org,使用前请仔细区分基于什么开源协议,就是里面要挑出刚好合适有好看的不容易。

2)Unity Assert Store:虽然大多是收费,但一般品质相当高,举个例子:
<img src="https://pic1.zhimg.com/91313a0ff559467ac609d653bea8c73c_b.jpg" data-rawwidth="825" data-rawheight="900" class="origin_image zh-lightbox-thumb" width="825" data-original="https://pic1.zhimg.com/91313a0ff559467ac609d653bea8c73c_r.jpg"> 通过Unity2D独立开发一款瓷砖式RPG游戏需要学习哪些知识?_第10张图片

3)淘宝,非常惭愧,介绍这玩意儿简直是助涨无视知识产权的邪恶力量。但如果是做前期技术准备,这里真能找到不少合适的资源。

--------------------------------------------------分割线,谢谢-------------------------------------------------------
5、没想好....其实是有个念头,大家干嘛非得单人Solo呢?要不咱们跟GitHub上弄个开源游戏项目可好?
编辑于 2014-10-15
317 36 条评论
分享
收藏 感谢 收起

更多回答

RPG Map Editor
[RELEASED] RPG Map Editor
这个asset仿rpgmaker的自动地砖到unity,试了下作者的demo,好像是通过像素来计算碰撞。

我觉得,个人做游戏,用什么做不重要,最主要是有好的剧情脚本(各种日本免费游戏,狂父、魔女之家、尸体派对)又或者新颖有趣的游戏体验(死亡独轮车什么的)。

还是推荐用RPG Maker 系列,最新版RPG Maker MV改JS了,全平台的方向挺不错的,推荐试试

<img data-rawwidth="800" data-rawheight="480" src="https://pic3.zhimg.com/eb99935f25152eedf109abc7642595d2_b.jpg" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic3.zhimg.com/eb99935f25152eedf109abc7642595d2_r.jpg"> 通过Unity2D独立开发一款瓷砖式RPG游戏需要学习哪些知识?_第11张图片<img data-rawwidth="800" data-rawheight="480" src="https://pic1.zhimg.com/04f0f044e02c968e50f1c9a152612010_b.jpg" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic1.zhimg.com/04f0f044e02c968e50f1c9a152612010_r.jpg"> 通过Unity2D独立开发一款瓷砖式RPG游戏需要学习哪些知识?_第12张图片<img data-rawwidth="1908" data-rawheight="948" src="https://pic4.zhimg.com/50b1db15783535038cfa9740ddc21aef_b.jpg" class="origin_image zh-lightbox-thumb" width="1908" data-original="https://pic4.zhimg.com/50b1db15783535038cfa9740ddc21aef_r.jpg"> 通过Unity2D独立开发一款瓷砖式RPG游戏需要学习哪些知识?_第13张图片<img data-rawwidth="1230" data-rawheight="758" src="https://pic2.zhimg.com/c1ab14d2f94fc4b7403e462cbaa0e04d_b.jpg" class="origin_image zh-lightbox-thumb" width="1230" data-original="https://pic2.zhimg.com/c1ab14d2f94fc4b7403e462cbaa0e04d_r.jpg"> 通过Unity2D独立开发一款瓷砖式RPG游戏需要学习哪些知识?_第14张图片
编辑于 2016-04-03
11 4 条评论
分享
收藏 感谢 收起

图片可以Google一下tileset,Google不要百度哦,图片足够你用一段时间了
看看官方的教学视频,有很详细的教怎么导入sprite,编辑动画
可以尝试自己写一个tile的编辑器,或者去下载一个也可以
也有很多直接做rpg的插件,不复杂的游戏,可以不用,自己从头搭一套
Asset Store里面本事就很多,你搜索一下就好
Youtube上教学视频也很多
youtube.com/results?

我最近也开始研究u2d,从学习角度,个人并推荐上来就用一堆插件,unity3d扩展性相当赞,尝试自己去写插件是很好的过程
其实游戏开发中,我觉得一个好程序的价值不在于能完成多少策划需求,而是提供一系列的工具让策划自己就可以开搞了。现有的解决方案或多或少都有不满足需求的时候,这时候定制就很重要了。

你可能感兴趣的:(通过Unity2D独立开发一款瓷砖式RPG游戏需要学习哪些知识?)