掘金 人工智能 6小时前
零代码生成 3D 游戏:基于 Amazon Q Developer CLI 和 Three.js 的实践
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了如何利用 Amazon Q Developer CLI 和 Three.js 3D 游戏引擎,为游戏行业客户解决广告视频素材批量生成难题。通过 Amazon Q 强大的 AI 能力,开发者可以无需编写代码,即可理解 Three.js 代码库、规划游戏开发步骤、生成 mini 游戏,并实现广告创意人员独立改编剧本。文章还详细阐述了 Three.js 的视频渲染方案,包括客户端与服务器通信、帧捕获以及 FFmpeg 的应用,并提供了云端部署思路,最终实现高效、低成本的广告素材生产。

🤖 Amazon Q Developer CLI 是一款由生成式 AI 驱动的对话助手,能够帮助开发者理解、构建、扩展和运维 AWS 应用程序。它通过整合上下文信息,提供更深入、更相关的响应,甚至能实现命令自动补全,极大地提升了开发效率,尤其是在需要处理复杂技术栈(如 Three.js)时,其作用尤为显著。

🎮 Three.js 是一个基于 WebGL 的轻量级 3D JavaScript 库,它简化了在浏览器中创建和展示动画 3D 图形的过程,使得开发者能够以更简洁的代码构建沉浸式、交互式的 3D 体验。文章展示了如何利用 Amazon Q 理解 Three.js 的代码和文档,并据此生成功能性的 3D 游戏,为广告素材制作提供了技术基础。

🎬 针对游戏行业广告素材需求量大且生命周期短的痛点,文章提出了一种创新的解决方案:结合 Amazon Q Developer CLI 和 Three.js 引擎,通过生成 mini 游戏并录制成视频,实现广告素材的批量化、自动化生产。这种方法使得广告创意人员可以独立修改剧本,快速生成满足 AB Test 需求的多种广告素材,有效降低了人力成本和制作周期。

📊 文章详细介绍了 Three.js 项目如何集成视频渲染功能,包括搭建渲染服务器、客户端帧捕获与发送、以及利用 FFmpeg 将帧序列编码为视频文件。该方案支持 Headless 浏览器环境下的离线渲染,并提供了云端部署方案,能够实现横向扩展以适应大规模素材生产需求,并可与 AWS 的其他服务(如 Step Functions、Bedrock)进行集成,进一步优化工作流程。

💡 通过对照组测试,文章强调了让 Amazon Q 理解特定代码库(如 Three.js)和文档的重要性。当提供 Three.js 的代码和文档时,Amazon Q 能够生成更准确、更符合预期的代码,例如正确引用库的方式。而未提供相关信息时,AI 可能依赖已有知识生成不完全匹配的方案,这表明了为 AI 提供高质量、上下文相关的输入是实现精准输出的关键。

Amazon Q Developer 是一个由生成式人工智能(AI)驱动的对话助手,可帮助你理解、构建、扩展和运维亚马逊云科技应用程序。你可以向它询问关于亚马逊云科技架构、你的亚马逊云科技资源、最佳实践、官方文档、技术支持等问题。Amazon Q 不断更新其能力,确保为你的问题提供最具上下文相关性和可操作性的答案。

Amazon Q Developer CLI 能整合上下文信息,使 Amazon Q 更深入理解你的使用场景,从而提供相关且具有上下文感知的响应。当你开始输入命令时,Amazon Q 会自动补全相关的子命令、选项和参数。

three.js 是一个构建于 WebGL 之上的轻量级 3D 游戏引擎。它是一个 JavaScript 3D 库,使开发者可以轻松地在浏览器中使用 WebGL 创建和展示动画 3D 图形。three.js 屏蔽了底层图形 API 的复杂性,允许开发者用简洁、高层次的代码构建沉浸式、交互式的 3D 体验。无论你是在创建数据可视化、仿真系统、游戏,还是产品展示,three.js 都能以高性能、灵活性和易用性,帮助你将创意变为现实。

📢限时插播:Amazon Q Developer 来帮你做应用啦!

🌟10分钟帮你构建智能番茄钟应用,1小时搞定新功能拓展、测试优化、文档注程和部署

⏩快快点击进入《Agentic Al 帮你做应用 -- 从0到1打造自己的智能番茄钟》实验

免费体验企业级 AI 开发工具的真实效果吧

构建无限,探索启程!

客户场景

游戏行业的客户,在发行游戏产品时,需要制作大量的广告视频素材用于投放。因为广告素材的生命一般都很短,只有几天时间。客户为了保证广告投放效果稳定,必须持续制作大量视频素材,进行 AB Test。这占用了他们大量的研发和美术人力资源。所以,客户为了提升生产效率,降低人力成本,希望利用生成式 AI 来帮助他们。

又因为游戏行业的特性,这些广告素材的内容区别于其他行业的传统广告。它们通常使用的是自己游戏的美术设计,例如:角色的 3D 模型、卡通界面、技能特效等。因为和真实世界的场景差别很大,这使得目前主流的生成式模型无法帮助他们生成广告视频。并且在视频中,客户经常要求视频中的多个游戏角色,按照剧本进行互动,推进剧情发展。这也超出了目前主流的生成式模型的能力范围。

解决方案

使用 Amazon Q Developer CLI 的方式,引入 Amazon Q 强大的人工智能能力,结合 three.js 3D 游戏引擎,生成 mini 游戏。再通过视频录制,生成视频广告素材。客户通过替换自己游戏的美术资源,实现批量生成视频素材,满足 AB Test 的数量需求。通过 Amazon Q Developer CLI 的对话方式,可以在不写代码的情况下改编演出剧本,使广告创意人员可以独立实现效果。

three.js 的渲染可运行于云端的 Headless 浏览器环境(如 Puppeteer + Headless Chrome),实现离线式、自动化的视频渲染流程,适合批量生成广告素材,支持多线程渲染和扩展性部署。同时因为 three.js 是开源项目,Amazon Q 可以理解和参考 three.js 的全部代码和文档,获得比其他商用闭源引擎更好的准确性。

方案实施步骤

    安装 Amazon Q for command line克隆 three.js git 仓库到本地电脑使用 Amazon Q Developer CLI 理解 three.js 工程的代码和文档使用 Amazon Q Developer CLI 编写一个游戏创建计划使用 Amazon Q Developer CLI 根据计划创建一个 mini 游戏工程

实验验证

以下实验过程中,人工没有编写任何一行代码。也没有浏览过任何工程代码。本地环境中不需要任何编程 IDE。

以下是使用到的关键提示词:

1、使用 Amazon Q Developer CLI 理解 three.js 工程的代码和文档。示例:

这个路径下,是从three.js clone的git库,其中包含全部的代码和文档.我想用之后利用这些信息,指导你来制作一款基于three.js的游戏.那这些资料应该如何整理?我可以使用亚马逊云科技上的服务,比如Bedrock,也可以使用KnowledgeBases.给出最合理和最正确的建议.我需要稳定和可靠的工作质量.

2、提出创建小游戏的具体要求,并要求 Amazon Q Developer 先制定计划。此步骤结束时,mini 游戏工程已经创建完成,并可以在浏览器中运行。示例:

创建一个赛车的小游戏,放到这个路径 /Users/valyli/three-js-demo . 创建之前,先做规划,确定创建的步骤.把这个计划写入一个markdown文档.后续创建过程中,每一个步骤都重新与这个计划文档进行核对,并标注完成的状态.通过这个方法来确保创建过程的质量,保证最终输出的游戏工程可以正确运行.在这个版本中,最重要的是做出这个小游戏,能够正常演示.并不需要复杂的玩法和功能.

3、修复 BUG。可以看到,对于 3D 场景,模型在坐标系上的处理还稍显逊色。需要辅助输入更多的调试信息才能修正。示例:

现在游戏已经能够运行,车子也可以控制.但是有一些bug:

车子的左右方向控制反了车子的方向控制,参照系好像不是车子本身新的问题,镜头跑到车的下面了.应该是在车的上方,跟随在斜后方的位置

前进和后退的参照系,需要以车体的坐标系为准

W和S键,控制方向的逻辑不对.当车体发生方向旋转后,W和S的操作结果就混乱了.重新检查这2个按键的控制逻辑.一定要根据车头当前的方向来判断.

W产生的推力,必须沿车头方向向前;S产生的推力,必须沿车尾方向向后.你现在提供的程序,没有实现这个效果.这部分代码重新生成

还是一模一样的问题,没有修复.发现一个现象,当车从初始位置出发,转向超过180度后,W和S键作用对调了

这次修改后,W和S键已经无效了

还是不动

4、添加物理碰撞。结束整个生成过程。示例:

现在按键控制已经正确.我还是希望能有物理模型,以及碰撞的功能.请添加

生成效果展示

生成过程记录

github.com/valyli/aws-…

生成的 demo 工程

github.com/valyli/aws-…

本地渲染原型设计(验证思路)

在本项目中,我们不仅实现了基于 Three.js 的 3D 游戏,还提供了一个强大的功能:将游戏画面渲染为视频文件。这个功能对于生成广告素材特别有用,让创意人员可以轻松录制游戏场景,用于营销推广。下面我们来详细解析这个功能的实现原理和使用方法。

渲染服务器与客户端代码分析

渲染服务器(render_server)

渲染服务器主要由以下几个部分组成:

1、server.js:核心服务器代码

2、render.sh:渲染脚本

客户端代码(three-js-demo)

客户端代码主要在 main.js 文件中实现了与渲染服务器的通信:

1、Socket.IO 连接

2、帧捕获逻辑

实现原理

整个视频渲染过程的工作流程如下:

    用户执行 render.sh 脚本,指定视频参数脚本创建 FIFO 管道,启动 Node.js 服务器服务器启动 Chrome 浏览器,加载游戏页面游戏页面检测到渲染模式,连接到 Socket.IO 服务器服务器请求第一帧,客户端渲染并发送服务器接收帧数据,转换后写入 FIFO 管道FFmpeg 从管道读取数据,编码为视频文件重复步骤 5-7 直到游戏结束或用户中断

如何在 Three.js 项目中添加视频渲染功能

要在自己的 Three.js 项目中添加类似的视频渲染功能,可以按照以下步骤操作:

1、准备渲染服务器

2、修改客户端代码

1.  // 全局变量,用于存储socket连接2.  let socket;3.  4.  // 在初始化函数中添加5.  function init() {6.    // 原有的初始化代码...7.    8.    // 检查是否处于渲染模式9.    if (location.search.includes('?size=')) {10.      initRenderMode();11.    }12.  }13.  14.  // 渲染模式初始化15.  function initRenderMode() {16.    // 解析尺寸参数17.    const sizeParam = location.search.split('?size=')[1];18.    const [width, height] = sizeParam.split('x').map(Number);19.    20.    // 调整渲染器尺寸21.    renderer.setSize(width, height);22.    23.    // 连接到Socket.IO服务器24.    socket = io();25.    26.    // 发送问候27.    socket.emit('greetings', {});28.    29.    // 监听服务器请求30.    socket.on('nextFrame', function(ready) {31.      // 渲染一帧并发送32.      renderer.render(scene, camera);33.      const dataURL = renderer.domElement.toDataURL('image/png');34.      socket.emit('newFrame', { png: dataURL });35.    });36.  }37.  38.  // 在游戏循环中添加(可选,用于持续发送帧)39.  function gameLoop() {40.    // 原有的游戏循环代码...41.    42.    // 渲染场景43.    renderer.render(scene, camera);44.    45.    // 如果在渲染模式下,发送当前帧46.    if (socket && socket.connected) {47.      const dataURL = renderer.domElement.toDataURL('image/png');48.      socket.emit('newFrame', { png: dataURL });49.    }50.  }

3、使用方法

通过这种方式,你可以轻松地将任何 Three.js 项目转换为视频生成工具,为广告创意提供更多可能性。

云端渲染部署方案

为满足云上自动化生产需求,我们可将渲染流程部署在亚马逊云端主机上:

该方案具备以下优势:

Node.js + Puppeteer + FFmpeg 示例代码

// render.js - Node.js 脚本,用于云端自动渲染并录制const puppeteer = require('puppeteer');const { spawn } = require('child_process');const fs = require('fs');(async () => {  const browser = await puppeteer.launch({    headless: true,    args: ['--no-sandbox', '--disable-gpu'],  });  const page = await browser.newPage();  const width = 1280, height = 720;  await page.setViewport({ width, height });  // 载入 three.js 游戏页面  await page.goto('https://your-s3-site-url/game.html?record=true');  // 启动 FFmpeg 进程,录制屏幕帧  const ffmpeg = spawn('ffmpeg', [    '-y',    '-f', 'image2pipe',    '-r', '24',    '-i', '-',             // 从 stdin 接收图像帧    '-c:v', 'libx264',    '-pix_fmt', 'yuv420p',    'output.mp4'  ]);  // 持续抓取页面帧并传入 FFmpeg  for (let i = 0; i < 240; i++) {  // 录制 10 秒(24fps)    const screenshot = await page.screenshot({ type: 'png' });    ffmpeg.stdin.write(screenshot);  }  ffmpeg.stdin.end();  await browser.close();})();

使用说明

aws s3 cp output.mp4 s3://your-bucket/ads/output.mp4

对照组测试

在对照组测试中,我们向 Amazon Q Developer CLI 提出同样的要求,但不再提供 three.js 的代码和文档。观察它的生成过程。

1、移除理解 three.js 工程和文档的部分。然后输入一样的提升词,要求生成一个小游戏。示例:

创建一个赛车的小游戏,放到这个路径 /Users/valyli/three-js-demo-2 . 创建之前,先做规划,确定创建的步骤.把这个计划写入一个markdown文档.后续创建过程中,每一个步骤都重新与这个计划文档进行核对,并标注完成的状态.通过这个方法来确保创建过程的质量,保证最终输出的游戏工程可以正确运行.在这个版本中,最重要的是做出这个小游戏,能够正常演示.并不需要复杂的玩法和功能.

2、观察生成过程,发行这次 Amazon Q Developer CLI 执行了 three.js 的安装步骤。

1.  🛠️  Using tool: execute_bash (trusted)2.3.  ● I will run the following shell command: 4.  cd /Users/valyli/three-js-demo-2 && npm install three@0.159.0 serve@14.2.15.6.  ↳ Purpose: 安装项目依赖7.  8.  9.  added 91 packages, and audited 92 packages in 7s10.  11.  24 packages are looking for funding12.  run `npm fund` for details13.  14.  3 high severity vulnerabilities15.  16.  To address all issues, run:17.  npm audit fix --force18.  19.  Run `npm audit` for details.

3、我们利用其中的关键步骤,js 的库引用方式进行分析。

npm install three@0.159.0 serve@14.2.1

这个安装命令在 three.js 官方文档无法找到。所以是 Amazon Q Developer CLI 根据模型已有的知识生成。

 <!-- 引入 Three.js 库 --> <script src="https://cdn.jsdelivr.net/npm/three@0.160.0/build/three.min.js"></script>

这个引用方式可以在官方文档中找到,说明 Amazon Q Developer CLI 在按照要求理解文档后执行的生成。

相关文档:threejs.org/manual/#en/…

所以,通过要求 Amazon Q Developer CLI 理解指定文档和代码的方式,能够更准确地按照我们的意愿生成内容。我们可以通过这样的方式,为模型输入更高质量的信息,以及我们需求中特有的信息。

*前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。

附录

本篇作者

本期最新实验为《Agentic AI 帮你做应用 —— 从0到1打造自己的智能番茄钟

✨ 自然语言玩转命令行,10分钟帮你构建应用,1小时搞定新功能拓展、测试优化、文档注释和部署

💪 免费体验企业级 AI 开发工具,质量+安全全掌控

⏩️[点击进入实验] 即刻开启 AI 开发之旅

构建无限, 探索启程!

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Amazon Q Developer Three.js AI 广告生成 游戏开发 自动化视频制作
相关文章