我花了大量时间测试新的模型并发布关于它们的演示... 在这个社区我的最后一篇文章 一点点走红之后,我想分享一下我最近的一个实验,它让我印象深刻的是Opus。湿润的沥青道路绝对是令人惊叹的,而且在AI游戏开发中还没有类似的东西。以下是它是如何做到这一点的:

12种纹理在运行时绘制到画布上:沥青颗粒、苔藓、雕刻的符号、光滑的光泽、雨波。没有图像文件。
湿润的道路=在近黑色的沥青上添加 Fresnel 光泽,路边的光线在垂直的条纹中渗透。
2,400个实例化的雨条纹在shader中重复使用,轮胎喷雾来自520粒子池。
红墨水轮廓通过倒置的壳体,按摄像机距离缩放,融入雾中,使远处的物体失去它们。
光照量化为3个扁平带,暖色至冷色渐变,使阴影变为紫色而不是灰色。
光晕手动滚动从渲染目标中-亮度通道,两次模糊 mip,电影式组合。
引擎、雷鸣和回音都在WebAudio中合成。
89k三角形,62个着色器,162kb,一个HTML文件
更多
它自我校正99%的时间
第一步是被吹跑了,每个表面都被洗成近白色。 我纠正了它,并在几次迭代后,它仍然很白,但光线更加像现实生活一样。
它没有GPU sandbox,所以它得到了一个真正的Chromium在软件渲染下运行,隐藏了HUD,屏幕截图了它自己,解码了PNGs,并测量了实际像素值。道路回归了[31,46,81]。目标是近黑色。它扫描了曝光统一,并调节到[3,13,23]。我通常被游戏玩法所惊叹,但Opus在自我校正和流程性资产方面做得非常出色,与许多新模型相比。经验丰富的游戏开发者们的巨大解锁。
指令:为我创建一个完整、.polished、单文件的HTML浏览器游戏,称为LUMENFALL:一个风格化的竞速游戏,在午夜的生物发光丛林中,沿着一条雨湿的道路穿过淹没的寺庙遗址和发光的瀑布。这个游戏必须看起来非常美丽,而不是“程序员艺术”。对艺术指导部分的处理作为最重要的部分。

硬约束:所有流程性,零资产

一切自包含的.html文件。没有外部资产文件,无图像文件,无.glb/.obj模型,无音频文件,无字体文件,无纹理URL。
- 所有几何体:three.js原语+你在代码中生成的自定义BufferGeometry。
- 所有“纹理”:在运行时绘制到离屏的元素中,并用作THREE.CanvasTexture(沥青颗粒、苔藓、雕刻的石头符号、水光滑、雨波、贴花)。
- 所有声音:使用WebAudio API合成(引擎音调,追踪RPM,轮胎磨擦,雨床,雷鸣,加速时的嘹亮声,UI点击,人群空旷的环境音)。
- 从http://cdnjs.cloudflare.com加载three.js - 每个其他CDN都被sandbox CSP阻止,会导致“THREE未定义”错误。

艺术指导

风格化,手绘,水彩画,想像Sable / Journey / Hi-Fi Rush,而不是真实的。具体来说:
1. 红墨水轮廓:所有物体的轮廓,寺庙石头,植物,岩壁,汽车。使用倒置的壳体轮廓(复制网格,翻转法线,稍微缩放,未着色的暗材质)或后处理边缘通道。这个单一的选择是区别“美丽”和“未纹理化”的关键。不要省略它。
2. .poster化的带状光照:自定义ShaderMaterial,量化N·L到3个扁平步骤。不要使用光滑的兰伯特梯度。添加一个暖色至冷色渐变,使阴影变为紫色,而不是灰色。
3. 深度雾是你的朋友:在远处使用指数雾,深蓝色。近距离几何体:饱和,暗,高对比度。远距离几何体:向一个发光的紫色-青色天空淡化。层4-5深度平面,模糊的丛林丛和遗址尖塔,逐渐远离并减少饱和度,使每个镜头都可读。
4. 调色板:冷色调和宝石色调,刻意与热色调相反。深青色和深蓝色底色。玉绿和翡翠叶子。湿润的沥青近黑色,青色光泽。装饰:生物发光的蓝色,粉红色紫罗兰,淡金色。只有汽车头灯,金色寺庙镶边和远处闪电才是温暖的。
5. 发光作为光源:世界是由活着的东西照亮的:沿肩部的发光蘑菇群,漂浮的火fly粒子,照亮的植物,青色发光的瀑布,发光的莲叶在淹没的部分。
6. 湿润的道路:暗沥青,过程性光泽条纹,使道路捕捉和渲染旁边的光线。动态雨波法线细节。轮胎喷雾。
7. 雨和空气:长细雨条纹作为一个实例化粒子系统,微微倾斜和视差。偶尔远处闪电,暂时重新照亮整个峡谷,模糊丛林丛。通过遗址间隙的体积光线。
8. 流程性世界几何体,多样和手工放置: - 干扰丛林岩壁,层次分明,带状条纹。 - 淹没的寺庙建筑:阶梯式锥体块,倒塌的柱子,雕刻的拱门你可以驾驶通过,破裂的石头,植物侵蚀的石头。 - 浅水淹没部分,路面下水,显著的水波和涡流。 - 一段英雄时刻:一段路线穿过发光瀑布帷幕,长桥跨越深谷,闪电照亮的风景。 - 沿路线轴线实例化装饰:发光标志柱,苔藓覆盖的障碍条,悬挂的植物,轮胎堆,神社门,远处遗址尖塔。
9. 流程性汽车:粗糙,形状独特,低多边形的玩具样车,建造自原语,可见的轮子,尾翼,头灯,发光下部装饰,制动灯在制动时发光,尾气闪烁。四种不同机器,各有不同的轮廓和色调(玉绿,粉红色,淡金色,骨白色)。
10. HUD必须看起来很昂贵。磨边的暗面板,宝石色调的边框和角饰,软外部光环,阴影,清晰的大型字体,值变化时的微小动画。元素:

  • “P1/4”面板的位置,左上角,实时显示4个车辆的顺位列表。
  • 车速+“圈1/3”+最佳/最后时间,中间,绿色/红色闪烁的delta。
  • 转弯/加速计量,中间,填充时转弯,排放时排空。
  • 车速表,右下角,弧形指示器,显示当前车速和档位。
  • 最小地图,显示轨道轴线和实时点位,代表所有4辆车。
  • 转弯时的速度线,高速度和加速时的轻微视野切换,色调边缘。

游戏玩法

竞速游戏,第三人称追逐摄像机。不是模拟游戏,而是抓握,宽容,快速,令人愉悦。

  • 箭头键/ WASD 来控制方向和油门,空格键来手刹转弯,shift键来使用加速。
  • 转弯会充电加速计,加速会产生真实的冲击,视野切换,速度线。
  • 奖励连续转弯。
  • 3圈,4辆车,能力较强的人工智能,会通过弯道,偶尔会犯错误。
    它应该看起来像一个真正的比赛,具有交叉。
  • 追逐摄像机,弹性阻尼,略微延迟,进入弯道时的倾斜,撞击时的小冲击。摄像机工作是比赛录像的关键部分,做好它。
  • 与墙壁碰撞会减少速度和震动摄像机;没有硬性停止,无法卡住。自动复活在轨道上,如果一辆车离开世界。
  • 车速,最佳圈,最后名次。

屏幕:全面的美观,零暂时状态

  1. 标题屏幕:慢速的电影摄像机飞行,沿着路线穿过遗址和瀑布,动画Logo,发光菜单。
  2. 车辆选择:旋转的车辆,立柱上,车速/抓握/加速的统计条,名称和描述。
  3. 倒计时:3-2-1-GO,音频,摄像机拉近,引擎振动。
  4. 比赛:全HUD上。
  5. 结果:最后名次,车速,最佳圈,流程性流转。
    每个过渡都应该是光滑的淡化或擦除,永远不要使用硬性切换。