在星期四,我写了一份关于我的发展和想法的简短报告,是否要做的事情不只是让自己负责。 请享用!
在不知道确切的关键功能如何发挥作用的情况下,很难决定如何将花园拼凑在一起。
- 我,一个13岁的中学生,试图做我的梦想游戏。 [1]
- Vue.js通过《宠物小精灵#4》的伤害计算进行了解释
- 我对双重性引擎的第一印象
- 玩家2018研究—您能猜出平均年龄吗?
- Battlerite如何吸引我的眼球,或者:是什么让游戏感觉特别
没有水景,没有一个花园会是完整的;如果没有它们之间及其之间的池塘,河流,湖泊,自然世界就不会感觉合适。
自从有必要以来,水就一直是所有开发商的祸根。 坚实的地面至少需要能反射地面本身的纹理。 也许有一些不错的照明。 水带来了静态水无法解决的挑战-也许最重要的是因为它不是静态的。 它是半透明的,可以反射光,并且可以根据周围的环境做出动态反应。 我想说的是提供令人信服的水的关键。
“不要挨饿”采用一种风格化的方法,使用彼此之间平铺的2D波浪图像,以几乎伪造的方式移动。 对于2D风格的世界来说,这是一个引人注目的解决方案,并且与游戏的怪异,令人震惊的色调完美契合。
在换头场景中,我在“ Kingdom Ka”中模仿了这一点,因为人物需要从头上抽出少量水。 这是一个古怪的解决方案,非常适合场景的荒谬性质。 尽管与实际用水几乎没有共同之处,但仍可立即识别。
虽然这种方法适合这两种情况,但我在想这是否是寨花园的前进道路时犹豫不决。
尽管仍然是一款风格化的游戏,但目标却有所不同。 我想参观池塘或河流来唤起我们坐在森林安静的水边时的感受。 它带来一定的平静,并邀请您停下来思考。 不要挨饿的波浪说“危险!” 在一个脚步不断的世界中。 在继续前进之前,您无法观看超过2D的积水。
那时我知道我需要深入着色器世界,以实现既与世界风格一致的感觉,又使感觉像真实,平静的水一样的东西。
事实证明,编写脚本着色器是我之前所做的工作的另外一大锅鱼。 由于水将是游戏中的主要着色器(并且可能是唯一的着色器),所以我认为学习一门全新的语言并不值得-有人致力于这种工作。 因此,我研究了一些简短的教程,找到了几段开源代码,将它们拼接在一起,将值稍作更改并随机插入乘法,似乎很可能会看到所有结果。
嘿,有点奏效 。 进行更改并查看代码如何响应会触发我的孩子气,因此这是度过一些下午的好方法。
第一个突破是进行反思。 图像的简单翻转部分看起来很像水。 要点是,游戏会从着色器正上方的屏幕捕获像素,并将其水平反转,所有这些都是实时的。
看到角色反射突然出现在水中绝对是一件神奇的事。 这种解决方案的麻烦在于,由于它依赖于屏幕上的实际像素,因此当事情与预期不符时,它会翻转并断裂。
例如,如果摄像机移动以至于“水”距离屏幕太远,则着色器将无法反映要反射的信息,因为它将无法拍摄。 结果是着色器拉伸了可用的几个像素,从而导致了最终游戏中无法通过的视觉故障。
这很有道理。 我基于该代码的源代码是用于侧面滚动游戏的,其中水位保持恒定。 当放大和缩小相机时,着色器还会以夸张的方式拉伸事物,这可能是因为引入或删除了很多新信息。
因此,也许反思可以等待另一天。 我确定解决方案是让游戏反映场景而不是屏幕上的像素,而这是我需要研究的。
因此,我着眼于水本身的表面。 随着水的流动,它会倾斜并塑造周围的光线。 着色器对话中的“位移映射”是使用纹理指示着色器应如何操作其下方像素的位置。 例如,您可以说纹理应使纹理中的红色和绿色反应。 然后,传递该纹理使其在下面的精灵上缓慢移动。
可以将其想像成狂欢节上的那些小屋镜子,通过上下移动自己,以不同的方式拉伸或扭曲面部或身体。 只是在这里,镜子一直在移动。
因此,我迅速绘制出一种池塘状的精灵,石头位于底部,然后绘制了一个多边形以匹配其着色器将占据的形状。
经过一些价值调整后,看起来不错! 像水一样满意。 它甚至掩盖了我下面的丑陋石头质地。 麻烦的是,它也像糖霜一样令人不满意。 纹理的怪异性使它具有这种光滑的,老式的3D外观,在游戏的其余部分中感觉完全不合适。
经过一些进一步的调整,我得到了看起来更脆脆,更合适的东西。
我认为更清晰的外观更适合游戏的2D风格,尽管我认为这并不是最终产品。 我敢肯定,我会回去做一些进一步的修补,以获得更好的效果。
现在,我很高兴终于有了一些功能强大且适应性强的东西。 我可以画出河流和池塘,在上面放一个着色器,很快就能得到一些有效的水。
毫无疑问,您已经准备好进行自我反省和无数的钓鱼时间。
下一份报告将在15日发布,因为我将在下周重点关注一些委员会。 回头见!
在推特上关注我。