链接:https://www.zhihu.com/question/25876314/answer/31853555
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
问题很对胃口,我来答一记,水平有限,先说说在Tiled 地图方面的经验(多图流量预警!)。
1、一开始是打算做个《英雄无敌3》的独立Unity游戏,最先想到要做的就是Tile地表编辑器,先贴张《英雄无敌3》编辑器的图。<img src="https://i-blog.csdnimg.cn/blog_migrate/5174bc59c0bab04fd63a8f09641b5fe3.jpeg" data-rawwidth="1235" data-rawheight="813" class="origin_image zh-lightbox-thumb" width="1235" data-original="https://pic3.zhimg.com/f97fde996a31eff4b0adc127be454952_r.jpg">
要说2D Tiles地图的美术表现,除掉斜45度的《暗黑破坏神2》,顶视图的冠军非《英雄无敌3》莫属。另外,刷地表功能的一个要点在于能以各种笔刷(泥地、沙地、海、草地)随意的刷地表,地表跟临接其他类型地表的衔接关系一定是对的,有了这个,不仅是策划或者美术编辑修改方便,而且自动生成关卡才有可能。
《英雄无敌3》的NB之处就在于多种Tiles之间的衔接非常自然,注意上图中宝物1右边的红框区域,这个格子里有泥地、草地、沙地三种纹理衔接,这在基于Tiles的2D地图里非常少见。
所以呢,我先把《英雄无敌3》的资源解出来,看看怎么才能做得如此NB:<img src="https://i-blog.csdnimg.cn/blog_migrate/61a54bb63bd681b83c0562073d5c892d.jpeg" data-rawwidth="1265" data-rawheight="805" class="origin_image zh-lightbox-thumb" width="1265" data-original="https://pic3.zhimg.com/33d6c40ff66661df7679aefd423cd946_r.jpg">所以为啥人家这么NB呢?素材规划强啊,刚才提到的红框区域泥草沙三种纹理混合图就在最后一排的中间(做了水平镜像的操作)。
所以为啥人家这么NB呢?素材规划强啊,刚才提到的红框区域泥草沙三种纹理混合图就在最后一排的中间(做了水平镜像的操作)。
简单的说,沙地和泥地,算是基础地形,其他地形都有跟跟沙地和泥地衔接的图素,所以如果其他地形之间要衔接,就在中间夹沙地或者泥地(注意第一张图中间区域的火山地形和草地衔接之间的泥地过渡)。
明白了这个道理,又有了图素,就开始做呗,正式美术资源什么的等编辑器好了再找美术按着这个规则做吧。
所以我就开始写代码了。写了几千行代码,弄了个这么个东西:<img src="https://i-blog.csdnimg.cn/blog_migrate/ee8284a3893613032d88e075dbdc7ccf.jpeg" data-rawwidth="1264" data-rawheight="911" class="origin_image zh-lightbox-thumb" width="1264" data-original="https://pic4.zhimg.com/5c6b59cc487dd63ebc5f5e63b36d902b_r.jpg">但做到这份上只做到了海面和两种基础地表的混合,接下来就要引入一张图素三种地形的类型了,我心里琢磨了一下算法,突然发现工作量比我想象的大,我似乎对这种Tile衔接的规则总结得不太到位,那么上网找找吧。
但做到这份上只做到了海面和两种基础地表的混合,接下来就要引入一张图素三种地形的类型了,我心里琢磨了一下算法,突然发现工作量比我想象的大,我似乎对这种Tile衔接的规则总结得不太到位,那么上网找找吧。
--------------------------------------------------分割线,谢谢-------------------------------------------------------
2、神器出现了:Tiled Map Editor
这简直是赤裸裸的打我脸啊,以后做啥事之前能不能先上网搜搜?造轮子再快能快过直接开车吗?
Tiled是个开源项目,编辑器框架基于QT,有很多游戏都基于Tiled制作地图,斜45度或者顶视图都可胜任,贴几张图上来给大家看下:
<img src="https://i-blog.csdnimg.cn/blog_migrate/2dd5b53fe53692725eab1dd3e4f1e230.png" data-rawwidth="1006" data-rawheight="654" class="origin_image zh-lightbox-thumb" width="1006" data-original="https://pic2.zhimg.com/9a56d028f8298bdb4a8517fee5fd7d9d_r.jpg"><img src="https://i-blog.csdnimg.cn/blog_migrate/c95bc23bd956d5dc2d64b808532b6b7b.png" data-rawwidth="1006" data-rawheight="654" class="origin_image zh-lightbox-thumb" width="1006" data-original="https://pic1.zhimg.com/6a50cc241f7794b0666d38b3608105d4_r.jpg">
我试用了一段时间,这个编辑器最NB的就是对地表类型编辑归纳,并且自动衔接其他类型地表的功能。举例给大家看看:
<img src="https://i-blog.csdnimg.cn/blog_migrate/73eeab009bed24a3330bab8132ea39a2.jpeg" 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),然后在右边图库中标识哪些图片的哪些区域(左上、右上、左下、右下)是该种类型(蓝色高亮区域)。标识完成后,你就可以在主视窗用该笔刷任意涂刷了,程序会自动为你做地表衔接。 以上面斜45度地形的图素为例,如果美术给你做了所有的衔接图,你导入所有图素,选定某种类型的地表(左边列表中的Sea2),然后在右边图库中标识哪些图片的哪些区域(左上、右上、左下、右下)是该种类型(蓝色高亮区域)。标识完成后,你就可以在主视窗用该笔刷任意涂刷了,程序会自动为你做地表衔接。<img src="https://i-blog.csdnimg.cn/blog_migrate/424e48dc4d47ad6bfa47d1477b7b6b8a.jpeg" data-rawwidth="1640" data-rawheight="862" class="origin_image zh-lightbox-thumb" width="1640" data-original="https://pic1.zhimg.com/0822bcc3ba797f69b888870f63797a74_r.jpg">
教学到此为止,那么,题主是要做Unity2d的Tiled地图啊,这个编辑器编辑的成果如何导入Unity项目呢?
--------------------------------------------------分割线,谢谢-------------------------------------------------------
3、Tiled to Unity
Unity Assert Store里搜索“Tiled”,你会很容易找到将Tiled地图导入Unity的插件:第一个是:Tiled Tilemaps
<img src="https://i-blog.csdnimg.cn/blog_migrate/7e70986d9105440b141f8d9e7efb5bbf.jpeg" data-rawwidth="797" data-rawheight="762" class="origin_image zh-lightbox-thumb" width="797" data-original="https://pic4.zhimg.com/bd5109a703150cf0b97be1ce88a12a5f_r.jpg">详细的去商店看介绍吧。
详细的去商店看介绍吧。
另一个更神奇一点,名字跟我这节名字一样:Tiled to Unity这玩意儿能把Tiled 2d地图映射到3D元素上,生成Unity3d地图。
<img src="https://i-blog.csdnimg.cn/blog_migrate/25c70e5ece1e6a925524bd9f23023561.jpeg" 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应该不是题主的需求吧,但这东西看起来确实吸引人,就是不知道渲染效率如何,不知道有没有做渲染批次合并...而且有点贵......本人没试用过,看起来评论区 钟磊 同学有经验,感兴趣的同志可以移步向他请教。
我想2D转3D应该不是题主的需求吧,但这东西看起来确实吸引人,就是不知道渲染效率如何,不知道有没有做渲染批次合并...而且有点贵......本人没试用过,看起来评论区 钟磊 同学有经验,感兴趣的同志可以移步向他请教。
总之呢,基于开源软件的Tiled地图本身地图存储格式也是很清晰的,就算自己写读取地图也不会太难。
--------------------------------------------------分割线,谢谢-------------------------------------------------------
4、Tiled图素资源
题主问到美术素材,一看就是准备单人Solo的节奏,遇到这样的同学我就很高兴,虽然知道十之八九是死路一条吧,但就是喜欢这种“虽万人吾亦往”的调调。单人Solo最麻烦的是素材的版权问题,
以下是我觉得可以考虑的素材来源:
1) Google + Tileset:国外网站有很多免费开源的美术资源,比如OpenGameArt.org,使用前请仔细区分基于什么开源协议,就是里面要挑出刚好合适有好看的不容易。
<img src="https://i-blog.csdnimg.cn/blog_migrate/4fe7d165376bc084ba3466298259842f.jpeg" data-rawwidth="825" data-rawheight="900" class="origin_image zh-lightbox-thumb" width="825" data-original="https://pic1.zhimg.com/91313a0ff559467ac609d653bea8c73c_r.jpg">
3)淘宝,非常惭愧,介绍这玩意儿简直是助涨无视知识产权的邪恶力量。但如果是做前期技术准备,这里真能找到不少合适的资源。
--------------------------------------------------分割线,谢谢-------------------------------------------------------5、没想好....其实是有个念头,大家干嘛非得单人Solo呢?要不咱们跟GitHub上弄个开源游戏项目可好?
更多回答
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://i-blog.csdnimg.cn/blog_migrate/57943d208d1354ab5b553298a161bdb4.jpeg" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic3.zhimg.com/eb99935f25152eedf109abc7642595d2_r.jpg"> <img data-rawwidth="800" data-rawheight="480" src="https://i-blog.csdnimg.cn/blog_migrate/0a017f7984113c46a19f3671572968a7.jpeg" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic1.zhimg.com/04f0f044e02c968e50f1c9a152612010_r.jpg"> <img data-rawwidth="1908" data-rawheight="948" src="https://i-blog.csdnimg.cn/blog_migrate/724c92c56a1bdc9cf078ac7d982975b8.jpeg" class="origin_image zh-lightbox-thumb" width="1908" data-original="https://pic4.zhimg.com/50b1db15783535038cfa9740ddc21aef_r.jpg"> <img data-rawwidth="1230" data-rawheight="758" src="https://i-blog.csdnimg.cn/blog_migrate/0025a7baca2745df5026a81a47750fdc.jpeg" class="origin_image zh-lightbox-thumb" width="1230" data-original="https://pic2.zhimg.com/c1ab14d2f94fc4b7403e462cbaa0e04d_r.jpg">图片可以Google一下tileset,Google不要百度哦,图片足够你用一段时间了
看看官方的教学视频,有很详细的教怎么导入sprite,编辑动画
可以尝试自己写一个tile的编辑器,或者去下载一个也可以
也有很多直接做rpg的插件,不复杂的游戏,可以不用,自己从头搭一套
Asset Store里面本事就很多,你搜索一下就好
Youtube上教学视频也很多
http://www.youtube.com/results?search_query=unity3d+tile
其实游戏开发中,我觉得一个好程序的价值不在于能完成多少策划需求,而是提供一系列的工具让策划自己就可以开搞了。现有的解决方案或多或少都有不满足需求的时候,这时候定制就很重要了。