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

作者:邓凯
链接: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,使用前请仔细区分基于什么开源协议,就是里面要挑出刚好合适有好看的不容易。

2)Unity Assert Store:虽然大多是收费,但一般品质相当高,举个例子:
<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上教学视频也很多
youtube.com/results?

我最近也开始研究u2d,从学习角度,个人并推荐上来就用一堆插件,unity3d扩展性相当赞,尝试自己去写插件是很好的过程
其实游戏开发中,我觉得一个好程序的价值不在于能完成多少策划需求,而是提供一系列的工具让策划自己就可以开搞了。现有的解决方案或多或少都有不满足需求的时候,这时候定制就很重要了。
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unity 2D 是一个非常适合独立开发者的游戏引擎,因为它易于学习和使用,而且在创建2D游戏方面具有出色的性能。 如果你打算开发独立游戏项目,Unity 2D 是一个不错的选择。不过,在开发过程中,你需要掌握一些基本的编程和设计知识,比如: 1. 编程语言:Unity 2D 使用 C# 编程语言进行开发。因此,你需要熟悉 C# 的基本语法和面向对象编程。 2. 游戏设计:开发一个好的游戏需要良好的游戏设计,包括关卡设计、角色设计、故事情节等等。你需要有相关的设计技能和经验。 3. 图形设计:Unity 2D 是一个基于图形的游戏引擎,因此你需要掌握基本的图形设计技能,包括色彩搭配、图像处理、UI设计等等。 总的来说,如果你有编程和设计基础,或者对游戏开发有浓厚的兴趣,那么 Unity 2D 是一个非常适合你的选择。 ### 回答2: Unity2D开发非常适合独立游戏开发人员。首先,Unity2D一款强大且广泛使用的游戏开发引擎,具有易用性和功能丰富的特点。其提供了丰富的工具和资源,使开发者能够高效地创建2D游戏。 对于独立游戏开发人员而言,在开发过程中需要掌握以下知识: 1. 编程知识Unity2D使用C#作为主要编程语言,因此开发人员需要熟悉C#编程语言,了解面向对象编程的基本原理。此外,还需要了解基本的数据结构和算法,以实现游戏中的各种功能和逻辑。 2. 游戏设计知识独立游戏开发人员需要了解游戏设计原则和流程,包括游戏关卡设计、角色设计、道具设计等。他们需要能够设计游戏中的各个元素,使游戏具有吸引力和可玩性。 3. 图形设计知识:虽然Unity2D提供了很多2D图形资源,但独立游戏开发人员仍然需要掌握基本的图形设计知识,能够使用图形编辑工具创建游戏中的精灵、背景和UI元素等。 4. 音效和音乐知识:音效和音乐是游戏中重要的组成部分,独立游戏开发人员需要了解和掌握音效和音乐制作的基本技巧,以提升游戏的沉浸感和娱乐性。 5. 游戏优化和调试知识开发人员需要了解游戏优化和调试的基本原理和技巧,以确保游戏在各种设备上流畅运行,并修复可能存在的bug和问题。 总体而言,Unity2D开发适合独立游戏开发人员,但也需要一定的编程、设计和优化知识。掌握这些知识可以帮助开发人员更好地利用Unity2D的功能,实现优秀的独立游戏作品。 ### 回答3: Unity2D开发非常适合独立游戏开发人员。Unity2D一款功能强大、易于上手的游戏引擎,拥有丰富的编辑器工具和编程接口,使开发人员可以快速创建高品质的2D游戏。 在进行Unity2D开发时,独立游戏开发人员需要掌握以下知识和技能: 1. Unity编辑器:了解Unity的编辑器界面和各种工具的使用方法,包括场景编辑、资源管理、动画编辑等功能。 2. C#编程语言:Unity使用C#进行脚本编写,开发人员需要熟悉C#的基本语法和面向对象编程的概念,掌握如何与Unity引擎的API进行交互。 3. 游戏设计和开发流程:对游戏设计和开发流程有一定的了解,包括游戏规则制定、关卡设计、角色控制、碰撞检测等。 4. 图形设计和动画制作:有一定的图形设计和动画制作能力,包括角色和场景的绘制、动画的制作与编辑。 5. 物理模拟和碰撞检测:理解物理引擎的工作原理,能够利用Unity的物理系统进行物体的移动、旋转和碰撞检测等操作。 6. 音频和特效制作:了解音频和特效的基本原理,能够使用Unity的声音和特效系统进行声音和特效的添加和调整。 综上所述,Unity2D开发非常适合独立游戏开发人员,只需掌握以上基本知识和技能,就能够高效地开发出精美的独立2D游戏作品。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值