![d5344289535a03836a7e974b950a7183.png](https://i-blog.csdnimg.cn/blog_migrate/4b6aa3e4fe28904934aadf13b20e0f2f.jpeg)
如果想支持一下我们,
可以在这里添加一个愿望单:
兵法:战国篇 on Steamstore.steampowered.com![f5f82698ea67ff62b8527238dafda3e3.png](https://i-blog.csdnimg.cn/blog_migrate/037f7d7b708939dd1f840a57c4cd14d7.png)
![ef24104dbb1095c7a3566c859cea313b.png](https://i-blog.csdnimg.cn/blog_migrate/188c14f90dd40d4bdb891c7c700e6c89.png)
同时也可以下载免费试玩DEMO体验一下:
![248a33ce5e317f9336e42fe7a319e63c.png](https://i-blog.csdnimg.cn/blog_migrate/40d0f1c5b6a561715d8a7352872af18e.png)
或者点「关注」能看到更新日志。
![1134121286edba7dcb9ceb15e9dbed1a.png](https://i-blog.csdnimg.cn/blog_migrate/aa807b32b9e28bdbb65516d86e0bff1d.png)
QQ群也可以了解开发情况:991942345
如果你迫不及待想玩bug,可以在这里加入内测:
爱发电 · 连接创作者与粉丝的会员制平台afdian.net![9a9af399ad59312dbbf3f5a2c9e6a3c9.png](https://i-blog.csdnimg.cn/blog_migrate/3c125055724469b409c8f8852e1f7b66.jpeg)
【2D地图的尝试】
地图最初考虑的是使用2D的方式制作,因此在此方向上进行了一些尝试,最终因为一些较为致命的原因选择了放弃2D地图,改为尝试3D地图。
尝试合适的制作方式
2D地图的制作方式,不外乎两种:①手绘地图,②三转二渲染地图。
中国的地图面积极为巨大,加上我们的地图比例尺很大,因此整个绘制工作量非常巨大,后期修改起来难度也很高。另一方面,要确定地图的绘制风格,也需要时间进行尝试,如果持续找不到合适的风格,成本也会难以承受。
![0ce90bb31a70526b4fe2bc44aa91b9ae.png](https://i-blog.csdnimg.cn/blog_migrate/5bca353bb50f1174eded41c65905d89c.jpeg)
经过折中考虑后,我认为可以尝试将不同的地形和物件绘制成基本元件,然后在引擎中用代码将元件生成在地图上,理论上可以更高效的获得具有手绘感的地图。
但经过实际尝试,近距离的效果还好,但如果拉远距离后,如秦岭、云贵高原等大面积山地的区域看起来会非常丑,重复感也会很重。
![2de45deecb3a5d33a280ca7c48be3644.png](https://i-blog.csdnimg.cn/blog_migrate/d6ab6855a693a1a65e822443078d7166.jpeg)
经过反复尝试最终决定放弃手绘风格的地图,而改为尝试三转二渲染地图。
在经过一些「邪道」的技术尝试之后,做出了一个三转二渲染的地图效果,综合分析这个方式是比较容易实现且能够得到不差的视觉效果,于是决定就以这个方式制作游戏中的地图。
![6572973025b6c916b4cd6e39eb6f7925.png](https://i-blog.csdnimg.cn/blog_migrate/5191e59fe46f827491de43979ffa9cf1.jpeg)
制作用的工具
在前面所明确的三转二的制作方式,涉及了不同工具与插件之间的配合使用。
首先需要借助Unity引擎的Gaia插件来实现。Gaia是Unity一款非常强大的Terrain地形制作插件,其中有一个Stamp功能,可以基于指定的高度图,将对应的地形以任意大小和角度「戳印」到地形上。这一步就利用的这个功能,在untiy中任意做出需要的地形。
![4c240a5e4c694d29e189aa3a315d1790.png](https://i-blog.csdnimg.cn/blog_migrate/b513a7c0410aff5b831ab8d3066238ed.jpeg)
![00e70ecd4fe228bf677de23e884b05ea.png](https://i-blog.csdnimg.cn/blog_migrate/601dbf0e8a16c10d7cf00d0ac6da6482.jpeg)
接下来需要将做好的地形导出成模型以便可以渲染成图片。通过百度可以找到将Unity中的Terrain导出为FBX模型的插件,利用这个插件就可以实现这一步的目的了。
![61a6cd3157c1d93b419e5d37ba9df48e.png](https://i-blog.csdnimg.cn/blog_migrate/8e1f4a9e8d9ed770f332469e2e9fa1ae.png)
![b4ab144c54be24fd6f7b74d37f4d8ad2.png](https://i-blog.csdnimg.cn/blog_migrate/0e3e42880051447cc9d9758a21203c55.jpeg)
最后通过叠加纹理,在渲染出来的素模上增加地表纹理的变化,就能得到基本的地图效果了。
![2ec5edd329acedc1f786b3995300968b.png](https://i-blog.csdnimg.cn/blog_migrate/c3b7eb1732fabeaeef14357b53d74a59.jpeg)
经过一小块地形的验证,这个做法理论上是可行的,因此可以正式确定所有地图的一套制作流程,以便更快的将剩下的地图全部制作出来
分析工作量
当前这个做法最麻烦的地方在于,为了还原黄土高原被黄河冲刷形成的侵蚀地形,需要手动一点点将这一片的地形刷出来,这个过程是非常缓慢的,黄土高原这一大片范围就需要大约两三周的时间才能完成。
如果所有地形都需要这样手动一点点做出来,效率低下的程度是无法接受的,所以需要有其他优化方式将制作效率大幅度提升。
最终的解决方案是,直接将整块地图的高度图在Photoshop中做出来,每一座山都用相同的基础高度图进行旋转拼接。因为使用Stamp逐个戳印也相当于将相同的高度图反复印在地形上,所以这个方法相当于利用Photoshop省略了Stamp逐个戳印的过程。最终只需要将整块地图的高度图作为一个整体,戳印一次即可完成。
![157ae212e48ffed98ba70ad36e5492ad.png](https://i-blog.csdnimg.cn/blog_migrate/58655d8adb0ff2b0fa5569c03e416aa0.jpeg)
另一方面,因为模型渲染的精度较高,渲染过程非常慢。为了加快渲染过程,我直接租借了云渲染农场进行模型渲染,使渲染需要的时间降低到了最小。
完成地图
有了明确且高效的制作流程之后,需要使用的所有地图在较短时间内就得到了一个基本的效果,对于开发中的使用来说已经非常足够,而更多的细化工作可以在之后与开发并行进行。
在完成渲染之后,将得到的所有素模渲染图拼接在一起就能得到整个中国的渲染效果图了。
![09fb4441ab095409b8ce5e1a7ac788ba.png](https://i-blog.csdnimg.cn/blog_migrate/f0f4bfefe2747657cd14f3aa52e460b0.jpeg)
![b081b616f051fe25470f89b76b934af5.png](https://i-blog.csdnimg.cn/blog_migrate/92d9645baab91e7a28a907248a8da501.jpeg)
基于上面得到的渲染图,在上面叠加不同的地表纹理,就能得到一张足够初步使用的地图了。
![399dc6a0db8cf28b33dd2241de4259b2.png](https://i-blog.csdnimg.cn/blog_migrate/48ab123f2e17d2037cd2fb20de91f065.jpeg)
测试实际使用时的问题
在测试中发现,因为地图精度要求很高,图片的分辨率极大,完整的渲染图分辨率达到了「67250像素x44724像素」,而上面这个目前使用到的地图范围的分辨率也有「11520像素x17280像素」的大小,这导致内存消耗超过极限。
同时因为希望地图更加自然变化更丰富,也不能采用相同元件重复使用的方式,同样为了更加自然而设定的「不规则格子」也使重复元件的使用变得不太可能。