基于Stable Diffusion的2D游戏关卡生成【实战】

作者通过实验使用StableDiffusion和控制网络技术,尝试为2D平台游戏生成艺术风格的关卡图像。经过多次尝试和调整,如使用深度图像和添加平台唇部等技巧,成功创造出与游戏交互的视觉效果。虽然遇到挑战,但最终实现了让玩家参与艺术创作的目标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接下来的几篇文章将与常规主题有所不同(这是在从事通用机器人技术的职业中吸取的教训)。 相反,我决定利用我的一些新空闲时间 1 边做边学,并使用所有酷孩子都在谈论的一些很酷的新 ML。

在这里插入图片描述

推荐:用 NSDT设计器 快速搭建可编程3D场景。

1、项目简介

我的项目是制作一个 2D 平台游戏,玩家可以在其中设计自己的关卡,然后生成式 AI 将创建漂亮的渲染图像来表示关卡。 我想做一些没有 AI 就不可能实现的事情:让玩家参与艺术创作。 我们将跳到最后,您可以看到游戏现在的样子:
在这里插入图片描述

这里有一些不同的主题,但你也可以创建自己的主题。
在这里插入图片描述

你可以在这里尝试游戏:dimensionhopper.com

我建议查看随机级别或画廊,看看那里有什么。

但是让我们谈谈实现的过程。

2、概念验证

我以前玩过 Stable Diffusion,它是一个非常有趣的玩具,可以拍出很酷的照片,但我总觉得我的控制力不够。 对我来说,创作的乐趣来自于我所做的和我得到的之间的互动,我希望有更多的投入。 这就是为什么当我读到 control-net 时我如此兴奋,它提供了更多的旋钮来控制输出。 我立即想用它来制作 2D 游戏。

3、立刻行动

我在我的笔记本电脑上安装了 Stable-Diffusion,启动了 webui3 让控制网络工作并将这个深度图像输入到 Stable Diffusion:

在这里插入图片描述

这将平台近处的像素标为白色,黑色背景意味着该部分很远。 我使用的是像素艺术模型,在 CIVAI 页面上有这张令人惊叹的演示图片:
在这里插入图片描述

所以我从中复制提示和设置,稍微调整一下并点击生成………然后得到这个
在这里插入图片描述

不完全是我所希望的……我尝试让深度模式工作一段时间但没能成功。
在这里插入图片描述

并切换到控制网的“涂鸦”模式。 涂鸦模式采用形状轮廓并让它们引导图像(而不是深度)。

在这里插入图片描述

更有趣但仍然不好。

更改提示:

“pixelart 视频游戏环境,平台游戏级别。 在丛林中创造一个神秘的石庙形象。 阳光,戏剧性的灯光。 棕色石头上的藤蔓和裂缝”

更接近了! 我有一张照片。 它有点与关卡相互作用。 仍然不好但更好。
在这里插入图片描述

哦,我现在让关卡投下了一些阴影。
在这里插入图片描述

“pixelart 视频游戏环境,创建一个废弃空间站的图像,系统损坏,灯光闪烁,充满危险感。 展示残骸、废弃的房间和挥之不去的未知威胁。”

最终,随着更多设置的尝试,我得到了这样的关卡:
在这里插入图片描述

与开始相比,这是一个很大的改进,但是 (1) 关卡看起来不像是美术的一部分,充其量只是粘贴而已,并且 (2) 关卡纹理看起来像是重复的图块集。 人类视频游戏开发者这样做是为了他们不必为平台的每个方块绘制不同的草,但我没有那个限制。 嗯。

4、放弃像素艺术

我认为我的部分问题是使用在像素艺术上训练的模型。 它忠实地复制了重复 tileset 的类型,这正是我不想要的。 所以我换了另一个模型,这个模型是围绕儿童插画构建的,我的第一张图片是这样的:

在这里插入图片描述

哇! 好多了! 平台上有阴影,前后都有物体,这实际上是一幅漂亮的图画。 我正在做某事!

新模型拍出了漂亮的照片,但我很快意识到我在两种故障模式之间徘徊。

要么我有一张漂亮的图片,其中大部分绘制在它上面:
在这里插入图片描述

或者我得到一张漂亮的综合图片,其中真的不清楚你可以站在哪里:

在这里插入图片描述
在这里插入图片描述

最后一个特别有问题,因为你可以站立的“水平”部分被渲染为一个窗口,完全颠倒了语义。 这是使用“涂鸦模式”的一个基本问题,因为我让 Stable Diffusion 无法知道什么是近的,什么是远的,只是勾勒出形状。

5、突破:平台上的嘴唇

我回到深度,但有一个想法:如果我暗示平台的顶部有一个小唇怎么办? 我没有在我的游戏渲染引擎中编写代码,而是在 Gimp 中绘制它们。

在这里插入图片描述
在这里插入图片描述

快乐的小平台排行榜

天哪,它起作用了!

更重要的是:它几乎每次都能正常工作。 大多数 Stable-Diffusion 工作流程包括生成比实际需要多 4-10 倍的图像,并选择好的图像。 为了让我的想法奏效,我们需要所有关卡都可以玩(你可以知道平台在哪里)并且其中大部分都很好(漂亮的插图),因为不会有人工策划步骤。

6、控制图像很重要

我了解到深度图像的外观确实会改变输出的质量。 我在丛林废墟上工作,不断得到这样的图像:

在这里插入图片描述

(旁注:标准上升的速度令人惊讶。早期那张照片让我大吃一惊,但现在看起来没什么)。

问题 4 是,实际上并没有任何合理的带有该深度图的丛林图片。 丛林(实际上是一切)看起来不是那样的。 东西不会漂浮在空中,它下面有东西支撑着它。 这导致突破 2:添加支持。
在这里插入图片描述

每个平台块都将一个深灰色的盒子投射到它下面的地板上,这为世界提供了结构。 深灰色没有游戏目的,它只是向 Stable Diffusion 提示图片的内容。 我们得到了更好的图像。

在这里插入图片描述

一切都很好,但我仍然遇到洞穴问题,我想知道是不是因为它试图匹配深度图的笔直、锐利的边缘并且很难让它看起来有机,所以我添加了可调节的粗糙度 到图像(以及可调节的背景深度,这样天空对于室外场景可以很远,而对于室内/丛林场景则可以更近。
在这里插入图片描述

在这里插入图片描述

请注意,平台的底部真的很直,它发明了一堆光柱/瀑布,它们可以有完美的直垂直线。 这个其实挺好的,就是方角不太理想。
在这里插入图片描述

现在一切都在地下,而且在崎岖不平的岩石上的光线看起来很不错。

7、宝石和角色

稳定扩散不会产生任何透明度。

在这里插入图片描述

但是可以用关卡图像作弊,因为我有我输入的深度信息和基于此的掩码,所以角色可以在需要时进入平台“后面”。 对于宝石,如果我要求“<blue gem/ruby jewel> floating videogame object on a black background”然后在 python中减去背景
在这里插入图片描述

对于角色,我发现这个模型经过微调,可以制作 4 帧的行走动画。 创作者真的想要左/右/上/下动画,因此将这个模型与主题是谁的 lora 结合起来,创建描绘同一角色的所有 4 个方向。 因此,我认为它经过训练,因此所有“向右走”都只会得到提示“PixelartRSS”。

在这里插入图片描述

我希望能够提示有关我想要的角色的一些信息,这有时有点管用,但远没有我想要的那么可靠。 我怀疑如果我有训练数据,将其限制在侧身行走并用角色的实际描述标记它,它对我来说会更好。 但它确实能让人走路。 所以只要你不挑剔,全天都能拿到新的玩家角色精灵。

8、结束语

现在只需要让它在我自己的应用程序中工作。 我使用优秀的diffusers库来包装生成器并制作我的小服务器。 一切都进展得如此之快,以至于我确信我在我的 image_generation.py 中以非常愚蠢的方式做了一些事情,如果正确配置它可能会获得 2-3 倍的加速,但现在一切正常,而且它是 玩起来很有趣。


原文链接:用稳定扩散生成游戏关卡 — BimAnt

<think>好的,我现在需要帮助用户了解如何用AI玩游戏。首先,我得明确用户的需求是什么。他们可能对AI在游戏中的应用感兴趣,或者想自己利用AI技术来增强游戏体验。接下来,我需要考虑不同的应用场景,比如AI辅助玩家、AI生成游戏内容、AI对手或队友,以及AI自动化游戏等。 首先,AI辅助玩家方面,用户可能想知道如何用AI来提升游戏表现。比如实时分析游戏画面,提供策略建议,或者自动执行操作。需要具体例子,如《Dota 2》的OpenAI Five,或者使用YOLO模型识别游戏对象。 然后是AI生成游戏内容,这部分涉及利用生成模型如GAN或Stable Diffusion创建游戏素材。用户可能对如何生成角色、地图或剧情感兴趣,可能需要提到像《AI Dungeon》这样的游戏案例。 AI作为对手或队友,这部分需要说明如何训练AI模型来模拟玩家行为,例如DeepMind的AlphaStar。用户可能想知道如何实现这样的AI,可能需要使用强化学习框架如RLlib。 AI自动化游戏(脚本/Bot),这部分涉及使用脚本或自动化工具执行重复任务。可能需要提到AutoHotkey或Python库如PyAutoGUI,以及机器学习模型训练Bot的方法,比如DQN。 此外,用户可能对现有的AI游戏工具感兴趣,如AI Mod、GameGAN,以及开发工具如Unity ML-Agents。需要列举一些工具和平台,供用户参考。 还需要考虑用户的技术水平,是否需要分步骤说明,比如从简单脚本到复杂模型。同时要提醒法律和道德问题,避免用户滥用自动化工具导致封号。 需要验证每个技术点的正确性,比如OpenAI Five确实在Dota 2中应用,Stable Diffusion用于生成素材,以及Unity ML-Agents的实际用途。确保提到的工具和框架是真实存在的,比如TensorFlow、PyTorch、OpenCV等。 最后,组织这些信息,结构清晰,分点说明,每个部分给出定义、方法和例子,帮助用户逐步理解。同时语言要简洁,避免过于技术化,让不同水平的用户都能理解。</think>以下是如何利用AI玩游戏的常见方法及步骤,分场景说明: 一、AI辅助玩家模式 1. 实时画面分析 • 技术原理:使用YOLO/OpenCV识别游戏界面元素 • 实现步骤: a) 用OBS采集游戏画面 b) 训练目标检测模型识别血量/地图等关键信息 c) 通过Overlay显示实时分析结果 2. 策略推荐系统 • 案例:MOBA类游戏出装建议 • 实现方法: $$ Q(s,a) = \mathbb{E}[r_t + \gamma \max_{a'}Q(s',a')] $$ 使用Q-learning算法构建决策模型 二、AI生成游戏内容 1. 素材生成 • 工具:Stable Diffusion + ControlNet • 流程: a) 输入文本描述如"中世纪风格盔甲" b) 生成纹理贴图 c) 导出为.gameasset格式 2. 关卡设计 • 应用实例:《No Man's Sky》使用Procedural Content Generation • 技术方案: $$ W_{i+1} = W_i + \nabla_W \mathcal{L}(G(W_i), D) $$ 基于GAN网络迭代生成地形 三、AI对战实体构建 1. 训练智能体 • 开发框架:Unity ML-Agents • 典型流程: 1) 定义奖励函数 $R = \alpha \cdot \text{score} - \beta \cdot \text{damage}$ 2) 使用PPO算法训练 3) 导出为NPC行为树 2. 人机协作模式 • 实现案例:《StarCraft II》AI队友 • 关键技术: - LSTM处理战场时序数据 - Attention机制聚焦关键单位 四、自动化脚本开发 1. 基础自动化 • 工具:AutoHotkey/PyAutoGUI • 示例代码: ```python import pyautogui while True: img = screen_capture() if detect_enemy(img): pyautogui.click(attack_button) ``` 2. 智能Bot开发 • 进阶方案: a) 构建DQN网络 $$ \nabla_\theta J(\theta) = \mathbb{E}[\nabla_\theta \log \pi_\theta(a|s)Q^\pi(s,a)] $$ b) 使用TensorFlow Lite部署到嵌入式设备 注意事项: 1. 合法性:单机游戏修改通常允许,网游自动化可能违反EULA 2. 硬件需求:1080p画面分析需至少6GB显存 3. 伦理边界:避免开发破坏游戏平衡的作弊工具 现有工具推荐: - OpenAI Retro:经典游戏AI训练平台 - AIWolf:多人狼人杀AI框架 - MineRL:Minecraft AI开发数据集 实际应用时可从简单脚本入手,逐步增加机器学习组件,建议先尝试《Gym Retro》等开源环境进行实验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值