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

接下来的几篇文章将与常规主题有所不同(这是在从事通用机器人技术的职业中吸取的教训)。 相反,我决定利用我的一些新空闲时间 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/35970.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第五章 运输层【计算机网络】

第五章 运输层【计算机网络】 前言推荐第五章 运输层5.1运输层协议概述5.1.1 进程之间的通信5.1.2运输层的两个主要协议5.1.3运输层的端口 5.2用户数据报协议UDP5.2.1UDP概述5.2.2UDP的首部格式 5.3传输控制协议TCP概述5.3.1TCP最主要的特点5.3.2TCP的连接 5.4可靠传输的工作原…

Node中express路由基本使用

1.路由的基本使用 //引入express const expressrequire("express") //创建路由 const appexpress() //规定路由的请求方法 app.get(/,(req,res)>{res.end("hello express") }) //启动路由&#xff0c;并且端口为9000 app.listen(9000,()>{console.l…

通俗易懂讲解CPU、GPU、FPGA的特点

1. CPU vs GPU 大家可以简单的将CPU理解为学识渊博的教授&#xff0c;什么都精通&#xff1b;而GPU则是一堆小学生&#xff0c;只会简单的算数运算。可即使教授再神通广大&#xff0c;也不能一秒钟内计算出500次加减法。因此&#xff0c;对简单重复的计算来说&#xff0c;单单一…

注册HTTPS证书

注册HTTPS证书 1. 从ACME获取脚本文件2. 运行shell脚本3. 安装socat4. 把acme.sh这个脚本添加到环境变量软连接直接添加到.bashrc 5. 注册ACME账户6. 注册证书6.1. 首先把80端口打开6.2. 申请证书 7. 部署到Flask上 1. 从ACME获取脚本文件 wget https://get.acme.shmv index.ht…

多元分类预测 | Matlab 鲸鱼算法(WOA)优化xgboost的分类预测模型,多特征输入模型,WOA-xgboost分类预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab 鲸鱼算法(WOA)优化xgboost的分类预测模型,多特征输入模型,WOA-xgboost分类预测 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,程序可…

python接口自动化(二十三)--unittest断言——上(详解)

简介 在测试用例中&#xff0c;执行完测试用例后&#xff0c;最后一步是判断测试结果是 pass 还是 fail&#xff0c;自动化测试脚本里面一般把这种生成测试结果的方法称为断言&#xff08;assert&#xff09;。用 unittest 组件测试用例的时候&#xff0c;断言的方法还是很多的…

最新AI创作系统V5.0.2+支持GPT4+支持ai绘画+实时语音识别输入+文章资讯发布功能+用户会员套餐

最新AI创作系统V5.0.2支持GPT4支持ai绘画实时语音识别输入文章资讯发布功能用户会员套餐&#xff01; AI创作系统一、源码系统介绍二、AI创作系统程序下载三、安装教程四、主要功能展示五、更新日志 AI创作系统 1、提问&#xff1a;程序已经支持GPT3.5、GPT4.0接口 2、支持三种…

python爬虫_django+vue+echarts可视化查询所有CSDN用户质量分

文章目录 ⭐前言⭐ 效果⭐django简介⭐vue3简介⭐vue引入echarts ⭐前后分离实现&#x1f496; django代码层&#x1f496; vue3代码层结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享关于前后分离djangovueecharts可视化查询CSDN用户质量分。 该系列文章&#…

Elasticsearch集群

单点的问题 单台机器存储容量有限&#xff0c;无法实现高存储。 单服务器容易出现单点故障&#xff0c;无法实现高可用。 单服务的并发处理能⼒有限&#xff0c;无法实现高并发。 集群的结构 数据分片:把数据拆分成多份&#xff0c;每一份存储到不同机器节点&a…

【C++修炼之路】string 概述

&#x1f451;作者主页&#xff1a;安 度 因 &#x1f3e0;学习社区&#xff1a;StackFrame &#x1f4d6;专栏链接&#xff1a;C修炼之路 文章目录 一、string 为何使用模板二、string 类认识1、构造/析构/赋值运算符重载2、容量操作3、增删查改4、遍历5、迭代器6、非成员函数…

P1 第一章 电路模型与电路定律

1、什么是电路模型&#xff1f; 实际电路与电路模型间的关系&#xff1f;建立在相同的电路理论基础之上。 实际电路定义&#xff1a;由电工设备和电气器件&#xff0c;按照预期目的连接构成的&#xff0c;电流的通路。 实际电路的功能&#xff1a;能量方面&#xff0c;可以传输…

Vivado 下 呼吸灯实验

目录 Vivado 下 呼吸灯实验 1、实验简介 2、实验环境 3、实验任务 4、硬件设计 5、程序设计 5.1、呼吸灯代码如下&#xff1a; 5.2、添加约束文件 .xdc 5.3、下载验证 Vivado 下 呼吸灯实验 呼吸灯最早由苹果公司发明并应用于笔记本睡眠提示上&#xff0c;其一经展出&…

MySQl数据库第五课 --------在SQl的简单命令--------学习学习

作者前言 欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com ———————————————————————————— 目录 数据库的简单介绍 1.数据储存 2.数据库类型 &#xff08;1&#xff09;.关系型数据库 &#xff08;2&#xff09;.非关系型数据库…

第四章 网络层【计算机网络】

第四章 网络层【计算机网络】 前言推荐第四章 网络层4.1 网络层的几个重要概念4.1.1 网络层提供的两种服务4.1.2 网络层的两个层面例-路由表的建立 4.2网际协议IP4.2.1 虚拟互连网络4.2.2 IP地址例-分类地址练习例-子网划分例-聚合超网4.2.3IP地址与MAC地址4.2.4地址解析协议AR…

elk高并发架构

1.前言 普通的elk架构只适合数据量小的情景&#xff0c;而且也不安全&#xff0c;在瞬时数据量大的情况下可能会导致logstash崩溃&#xff0c;从而导致数据的丢失&#xff0c;对于数据安全有较高要求&#xff0c;可以在架构中加入消息队列&#xff0c;既可以防止瞬时的大流量并…

软件UI工程师的职责模板

软件UI工程师的职责模板1 职责&#xff1a; 1.负责产品的UI视觉设计(手机软件界面 网站界面 图标设计产品广告及 企业文化的创意设计等); 2.负责公司各种客户端软件客户端的UI界面及相关图标制作; 3.设定产品界面的整体视觉风格; 4.为开发工程师创建详细的界面说明文档&…

TiDB(6):数据迁移-TiDB Lightning

1 TiDB Lightning介绍 TiDB Lightning 是一个将全量数据高速导入到 TiDB 集群的工具&#xff0c;目前支持 Mydumper 或 CSV 输出格式的数据源。你可以在以下两种场景下使用 Lightning&#xff1a; 迅速导入大量新数据。 备份恢复所有数据。 TiDB Lightning 主要包含两个部分…

路由的介绍

目录 路由器的转发原理&#xff1a;路由表 路由——指示路由器去往未知网段的方法 路由器的转发原理&#xff1a;路由表 当一个数据包来到路由器&#xff0c;路由器将基于数据包中的目标IP地址查询自身的路由表&#xff0c;如果路由表中有相应的记录&#xff0c;则无条件根据…

VMware16.0安装教程和创建

许可证&#xff1a; ZF3R0-FHED2-M80TY-8QYGC-NPKYFYF390-0HF8P-M81RQ-2DXQE-M2UT6ZF71R-DMX85-08DQY-8YMNC-PPHV8设置网络 添加镜像 下载centos7镜像网址https://mirrors.aliyun.com/centos/7/isos/x86_64/?spma2c6h.25603864.0.0.d7724511YPrZpg win10镜像地址https://ww…

【Spring boot+VUE2+Android 7.1】智慧校园源码

一、智慧校园实现了智慧校园基础数据的统一管理&#xff0c;通过此平台提供教师基础信息管理、学生基础信息管理、用户认证管理、权限管理、资源管理、应用管理、第三方应用接入等基础功能与服务。 二、源码包含&#xff1a;电子班牌管理系统、成绩管理系统、考勤人脸刷卡管理系…