作者:邓凯
链接: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">

要说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呢?素材规划强啊,刚才提到的红框区域泥草沙三种纹理混合图就在最后一排的中间(做了水平镜像的操作)。

所以为啥人家这么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衔接的规则总结得不太到位,那么上网找找吧。

但做到这份上只做到了海面和两种基础地表的混合,接下来就要引入一张图素三种地形的类型了,我心里琢磨了一下算法,突然发现工作量比我想象的大,我似乎对这种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">
<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">

我试用了一段时间,这个编辑器最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),然后在右边图库中标识哪些图片的哪些区域(左上、右上、左下、右下)是该种类型(蓝色高亮区域)。标识完成后,你就可以在主视窗用该笔刷任意涂刷了,程序会自动为你做地表衔接。以上面斜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的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">详细的去商店看介绍吧。

详细的去商店看介绍吧。

另一个更神奇一点,名字跟我这节名字一样: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应该不是题主的需求吧,但这东西看起来确实吸引人,就是不知道渲染效率如何,不知道有没有做渲染批次合并...而且有点贵......本人没试用过,看起来评论区 钟磊 同学有经验,感兴趣的同志可以移步向他请教。

我想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">

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

--------------------------------------------------分割线,谢谢-------------------------------------------------------
5、没想好....其实是有个念头,大家干嘛非得单人Solo呢?要不咱们跟GitHub上弄个开源游戏项目可好?

编辑于 2014-10-15
317 36 条评论

分享

收藏 感谢 收起

更多回答

知乎用户

11 人赞同了该回答

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"><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"><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"><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">

编辑于 2016-04-03
11 4 条评论

分享

收藏 感谢 收起

wtmsuperman
游戏开发

9 人赞同了该回答

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

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

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

  1. 实现一款简单的RPG游戏

    RPG游戏地图教程 相信很多人的童年是在红白机.世嘉游戏机下长大的,那些经典的游戏如:魂斗罗,超级玛丽,世嘉的战斧.怒之铁拳等等一系列的经典.如今那些经典的记忆,已经随着时间的冲刷慢慢减淡了. 今天就 ...

  2. EA出品的java射击类游戏,盘点五款射击类RPG游戏:你喜欢这类型游戏吗?

    盘点五款射击类RPG游戏:你喜欢这类型游戏吗? 2020-06-04 18:04:06 3点赞 10收藏 3评论 RPG这种类型的游戏有很多,也是有许多玩家的喜欢.说到射击类型与RPG相结合的游戏,不 ...

  3. 第一款自己的RPG游戏--生成心中的世界(二)

    第一款自己的RPG游戏--生成心中的世界(一) 在之前我们已经打好了框架,并且写出了游戏菜单.在这里说一下C++的文件读取. 首先我们要写好文本文档 iID Name RowSize ColSize ...

  4. 如何独立开发一款 macOS 应用:从概念到上线

    目前,我正在开发一款新的 macOS 应用:iText,主要功能是截图后识别图片中的文字.比如,在阅读扫描版 PDF 文件时,可以方便地识别文字.在这场 Chat 中,我将详细为你介绍: 这个点子是如 ...

  5. 如何用 JavaScript+Canvas 开发一款超级烧脑小游戏?

    作者 | huangjianke 责编 | 伍杏玲 出品 | CSDN(ID:CSDNnews) [CSDN 编者按]据微信最新数据,微信小游戏累计注册用户量已突破10亿.那么初学者如何开发一款好玩又 ...

  6. 如何从零开始制作一款日式AVG游戏

    另外还有一种日式AVG游戏,此类游戏既不属于动作式AVG也不属于解谜型AVG,而是脱身于电子小说,在形式上和一些恋爱游戏类似,包括了以前的<三支眼>系列,以及后来的<夜行侦探> ...

  7. 从技术角度谈如何开发一款微信联网小游戏

    微信自从有了 "跳一跳" 后微信小游戏就开始迅速火爆起来,为跟上这股潮流,相信很多开发者都想探一探微信小游戏是如何开发的.下面从技术的角度说说一下微信小游戏如何开发的. 附:本文适 ...

  8. 用Unity开发一款2D横版游戏demo

    # LanW Game Project 目录 (一) 介绍 (二) 安装教程 (三) 开发流程 1.  新建工程 2.  设置人物 3.  控制主角的移动 4.   添加切换动作的动画 5.   镜头 ...

  9. 用HTML5来开发一款android本地化App游戏-宝石碰碰

    本次来说一说如何利用lufylegend.js引擎制作一款HTML5游戏后,将其转换为android本地化的App应用,转换过程其实很简单,下面一步步来做说明. 首先来开发一个类似于对对碰的游戏,不过 ...

最新文章

  1. 12.前K个高频元素---使用优先队列和哈希表解决
  2. freebsd php mysql_FreeBSD下Mysql5+Apache2+PHP5的安装
  3. 使用Math 类 和 Random类 两种方式生成 20 到30之间的随机整数---java基础
  4. 云主机superset接入redis缓存
  5. Acwing 271. 杨老师的照相排列
  6. 网上Silverlight项目收集
  7. vuejs 传参 向 子组件 父组件_Vue 2.6发布:新语法、性能改进、向3.0看齐
  8. IOS-播放器开发(1)-视频基本原理
  9. android gps测速代码,【GPS测速仪】GPS测速仪 GPS speedometer 1.6.0下载_安卓(android)软件下载-魅族溜...
  10. idea中的maven使用
  11. 学习笔记:EPS高级功能1-车道保持辅助LKA(Lane Keeping Assist)
  12. SD卡、TF卡、MMC卡、emmc、sdio扫盲
  13. 在字符串指定位置插入字符串C语言版
  14. 在传统软件公司十年深恶痛绝的感受
  15. YOLOv5、CNN、SVM实现车牌检测
  16. Swift Black Substratum主题v23.3补丁[最新]
  17. html 增加选项,添加标签——给定标签选项
  18. Word设置二级标题的编号后,第二章下的二级标题的编号仍为1.X
  19. 入驻B站即涨粉百万, 内容为王的时代,半佛仙人到底硬核在哪里?
  20. 比月色还美的温柔文案,宇宙山河浪漫,总有你值得期待的

热门文章

  1. redis中处理带有空格的key
  2. 小文智能意图训练详解
  3. 【每日一个GitHub项目】GitHub中文排行榜
  4. 追觅慧目F9、戴森360 Heurist、石头T7三款扫地机器人哪个更好
  5. http-server简单HTTP服务器配置
  6. 微信再次改版!这个功能终于要下线
  7. mysql数据库(mariadb)
  8. NC235254 晾衣服
  9. 2017年12月银行卡跨行ATM取现手续费
  10. 一个创业者的途中思考