由于相机系统的加入,《山魂》正式成为一款可以拍照的行走模拟器。
《山魂》最初的设计定位是一款模拟爬山,欣赏沿途风景的轻松休闲小游戏,比赛看谁爬得更高。后来加入随机景致生成机制后,觉得每次截屏下来的图片都挺好看的,于是就有了这种随机生成的风景如果能够拍照记录下来该多好的念头。
在启动制作拍照功能之前,我思考了很久如何来记录屏幕中的画面。最先想到的是调用系统截屏的方式,这种方法技术兼容性可能存在问题不说,截屏出来的图片体积应该不小,存放在玩家本地机太占空间,存放在服务器的话又需要联网才能操作,PASS!后来绞尽脑汁也想不到一个妥当的方法,在都快放弃拍照功能的时候,突然灵光乍现,既然游戏场景中的景致都是随机“绘制”的,为什么不能在按下快门的一瞬间记录下景致中各元素的属性情况,然后再在相册中读取这些元素属性,还原出拍摄的景致为相片呢?
于是,我将构成随机景致的所有对象放入一个标签中,然后拍照的时候就统一处理这个标签,完成一套向“相片数组”里推送属性数据的动作,在“相片数组”生成后,再将这张“相片数组”推入进“影集数组”中。这样按快门后产生的数据就算找到生成方法了,每张“相片数组”中会记录参与其中的对象的“类型名”、“缩放比例”、“XY坐标值”、“旋转角度”、“透明度”、“海拔数”等等方面的属性信息,当查看相片的时候,就会将这些对象再重构出来,形成一张当时拍摄的照片的图形样子。
由于有了以上的框架基础,要实现照片的排序和影集的翻页也变得比较容易了。同时,对于要实现判断照片中的元素情况给予自动打分和评奖的需求,也变得逻辑清晰了起来。如果是截屏取图,要进行照片的打分算法还得加入图形识别技术。。。那可就是大炮打蚊子了。
最终,整个相机系统在游戏中非常流畅的跑了起来:
沙木大佬好棒!
@Shallot(夏洛特):见笑见笑_| ̄|●
可以可以
期待爬山路上的各种随机事件
@沼蛙奥诺维奇:谢谢,希望不会让你失望:)
@FourWoods:纯脑洞非建议~有没有考虑过在爬山的过程中加入一些“篝火时刻”,比如夜晚在一个驻地围着篝火和遇到的npc对话闲聊,or一个人写日记(或者有可能是给远方的某人写信?)这样带出一点人物的背景(像看火人那样,通关副叙述引出角色自我放逐的原因(但不确定你是不是想把玩家控制的角色塑造得过于明晰
@FourWoods:如果考虑不要过于线性的话,脑洞了一下日记是不是也可以是结合几种模板格式根据当天的随机事件内容生成
好棒啊
@则栋:谢谢肯定