欢迎使用 AI 进行游戏开发! 在本系列中,我们将使用 AI 工具在 5 天内创建一个功能完备的农场游戏。到本系列结束时,您将了解到如何将多种 AI 工具整合到游戏开发流程中。本系列文章将向您展示如何将 AI 工具用于:

  1. 美术风格
  2. 游戏设计
  3. 3D 素材
  4. 2D 素材
  5. 剧情

注意: 本教程面向熟悉 Unity 开发和 C# 语言的读者。如果您不熟悉这些技术,请先查看 Unity for Beginners 系列后再继续阅读。

第 4 天:2D 素材

本教程系列的 第 3 部分 讨论到现阶段 文本-3D 技术应用到游戏开发中并不可行。不过对于 2D 来说,情况就大相径庭了。

在这一部分中,我们将探讨如何使用 AI 制作 2D 素材。

前言

本部分教程将介绍如何将 Stable Diffusion 工具嵌入到传统 2D 素材制作流程中,来帮助从业者使用 AI 制作 2D 素材。此教程适用于具有一定图片编辑和 2D 游戏素材制作知识基础的读者,同时对游戏或者 AI 领域的初学者和资深从业者也会有所帮助。

必要条件:

  • 图片编辑软件。可以根据您的使用习惯偏好选择,如 PhotoshopGIMP (免费)。
  • Stable Diffusion。可以参照 第 1 部分 的说明设置 Stable Diffusion。

Image2Image

诸如 Stable Diffusion 之类的扩散模型生成图片的过程是从初始噪声开始,通过不断去噪来重建图片,同时在去噪过程中可以添加额外的指导条件来引导生成图片的某种特性,这个条件可以是文本、轮廓、位置等。基于扩散模型的 Image2Image 生成图片的过程也一样,但并非从初始噪声开始,而是输入真实图片,这样最终生成的图片将会与输入图片有一定的相似性。

Image2Image 中的一个比较重要的参数是 去噪强度 (denoising strength),它可以控制生成图片与输入图片的差异程度。去噪强度为 0 会生成与输入图片完全一致的图片,去噪强度为 1 则截然不同。去噪强度也可以理解为 创造性。例如:给定一张圆形图案的输入图片,添加文本提示语 “月亮”,对去噪强度设置不同的参数值,Image2Image 可以生成不同创造性的图片,示意图如下。

基于 Stable Diffusion 的 Image2Image 方法并非代替了传统美术作品绘图流程,而是作为一种工具辅助使用。具体来说,您可以先手动绘制图片,然后将其输入给 Image2Image,调整相关参数后得到生成图片,然后继续将生成的图片输入给 Image2Image 进行多次迭代,直到生成一张满意的图片。以本系列的农场游戏为例,我会在接下来的部分说明具体细节。

示例:玉米

在这一小节中,我会介绍使用 Image2Image 为农场游戏的农作物玉米生成图标的完整流程。首先需要确定整体构图,我简单勾勒了一张非常粗糙的玉米图标草图。

接下来,我输入以下提示语:

corn, james gilleard, atey ghailan, pixar concept artists, stardew valley, animal crossing

注:corn:玉米;james gilleard:未来主义插画艺术家;atey ghailan:现拳头游戏概念艺术家;pixar concept artists:皮克斯动画概念艺术;stardew valley:星露谷物语,一款像素风农场游戏;animal crossing:动物之森,任天堂游戏

同时设置去噪强度为 0.8,确保扩散模型生成的图片在保持原始构图的同时兼顾更多的创造性。从多次随机生成的图片中,我挑选了一张喜欢的,如下所示。

生成的图片不需要很完美,因为通常会多次迭代来不断修复不完美的部分。对于上面挑选的图片,我觉得整体风格很不错,不过玉米叶部分稍微有些复杂,所以我使用 PhotoShop 做了一些修改。

请注意,这里我仅在 PhotoShop 中用笔刷非常粗略地涂掉了要改的部分,然后把它输入到 Image2Image 中,让 Stable Diffusion 自行填充这部分的细节。由于这次输入图片的大部分信息需要被保留下来,因此我设置去噪强度为 0.6,得到了一张还不错的图片。

接着我在 PhotoShop 中又做了一些修改:简化了底部的线条以及去除了顶部的新芽,再一次输入 Stable Diffusion 迭代,并且删除了背景,最终的玉米图标如下图所示。

瞧!不到 10 分钟,一个玉米图标游戏素材就制作完成了!其实您可以花更多时间来打磨一个更好的作品。如想了解如何制作更加精致的游戏素材,可以前往观看详细演示视频

示例:镰刀

很多时候,您可能需要对扩散模型进行 负面引导 才能生成期望的图片。下图毫无疑问可以用作镰刀图标,但这些简单的图片却需要大量迭代次数才能生成。

原因可能是这样:扩散模型使用的训练图片基本都是网络上的,而网络上关于镰刀的图片大部分是 武器,只有小部分是 农具,这就导致模型生成的镰刀图片会偏离 农具。一种解决方法是改善提示语:以增加 负面提示语 的方式引导模型避开相应的结果。上述示例中,除了输入 镰刀,农具 之外,在负面提示语一栏输入 武器 就能奏效。当然,也不只有这一种解决方法。

Dreamboothtextual inversionLoRA 技术用于定制个人专属的扩散模型,可以使模型生成更加明确的图片。在 2D 生成领域,这些技术会越来越重要,不过具体技术细节不在本教程范围之内,这里就不展开了。

layer.aiscenario.gg 等是专门提供游戏素材生成的服务商,可以使游戏从业者在游戏开发过程中生成的游戏素材保持风格一致,他们的底层技术很可能就是 dreamboothtextual inversion。在新兴的开发游戏素材生成工具包赛道,是这些技术成为主流?还是会再出现其他技术?让我们拭目以待!

如果您对 Dreambooth 的工作流程细节感兴趣,可以查看 博客文章 阅读相关信息,也可以进入 Hugging Face 的 Dreambooth Training Space 应用体验整个流程。

在下一部分中,我们将 使用 AI 设计游戏剧情


原文作者:Dylan Ebert

译者:SuSung-boy

审校、排版:zhongdongy (阿东)

制作 2D 素材|基于 AI 5 天创建一个农场游戏,第 4 天的更多相关文章

  1. AI 制作 3D 素材|基于 AI 5 天创建一个农场游戏,第 3 天

    欢迎使用 AI 进行游戏开发! 在本系列中,我们将使用 AI 工具在 5 天内创建一个功能完备的农场游戏.到本系列结束时,您将了解到如何将多种 AI 工具整合到游戏开发流程中.本文将向您展示如何将 A ...

  2. 第 1 天|基于 AI 进行游戏开发:5 天创建一个农场游戏!

    欢迎使用 AI 进行游戏开发! 在本系列中,我们将使用各种 AI 工具,在 5 天内创建一个功能完备的农场游戏.到本系列结束时,你将了解到如何将多种 AI 工具整合到游戏开发流程中.本系列文章将向你展 ...

  3. 基于空镜像scratch创建一个新的Docker镜像

    我们在使用Dockerfile构建docker镜像时,一种方式是使用官方预先配置好的容器镜像.优点是我们不用从头开始构建,节省了很多工作量,但付出的代价是需要下载很大的镜像包. 比如我机器上docke ...

  4. 从头基于空镜像scratch创建一个新的Docker镜像

    我们在使用Dockerfile构建docker镜像时,一种方式是使用官方预先配置好的容器镜像.优点是我们不用从头开始构建,节省了很多工作量,但付出的代价是需要下载很大的镜像包. 比如我机器上docke ...

  5. Unity 2D游戏开发高速入门第1章创建一个简单的2D游戏

    Unity 2D游戏开发高速入门第1章创建一个简单的2D游戏 即使是如今,非常多初学游戏开发的同学.在谈到Unity的时候.依旧会觉得Unity仅仅能用于制作3D游戏的. 实际上.Unity在2013 ...

  6. Unity3D游戏开发从零单排(四) - 制作一个iOS游戏

    提要 此篇是一个国外教程的翻译,尽管有点老,可是适合新手入门. 自己去写代码.debug,布置场景,能够收获到非常多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一 ...

  7. 使用Unity创建塔防游戏(Part1)

    How to Create a Tower Defense Game in Unity - Part1 原文作者:Barbara Reichart 文章原译:http://www.cnblogs.co ...

  8. Unity3D 创建一个简单的2D游戏

    开始研究Unity3d 中的2D游戏. 首先创建出一个项目: 然后创建出一个场景: 然后添加一个背景: 然后创建一个主人公对象: 可以是自己做的素材,也可以是用unity裁剪的素材, 下面贴出裁剪素材 ...

  9. 【Unity 3D】使用 2DToolkit 插件 制作2D精灵动画

    话说博客传图也太麻烦了吧,一个一个文件一个一个传....为什么不能直接粘贴了,自动上传呢... 刚直接粘贴了,结果一张图没有,又重新截一次图,在传了一次...真是太**了 好了,吐槽完了,开始博客吧 ...

  10. 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包

    MSBuild 的 Task 为我们扩展项目的编译过程提供了强大的扩展性,它使得我们可以用 C# 语言编写扩展:利用这种扩展性,我们可以为我们的项目定制一部分的编译细节.NuGet 为我们提供了一种自 ...

随机推荐

  1. 两种方案实现Dubbo泛化调用

    Dubbo的泛化调用是一个服务A在没有服务B的依赖,包的情况下,只知道服务B的服务名:服务的接口的全限定类名和方法名,以及参数,实现服务A调用服务B. 原文链接:http://blog.qiyuan. ...

  2. 833(DIV2)——C题题解

    题目链接 题目大意: 给定n个数,你可以对数值为0的数改变其为任意值,问最后前缀和为0的个数的最大值. 思路: 这题比较可惜,自己的思路没有问题,但是他少了一些东西.对数组进行前缀和处理,我们可以发现 ...

  3. EdgeCore初学习

    ### 前提 初学edgeCore,有不足之处,欢迎指正 ### 大纲 1. 日志查看2. 重启3. 在线编译4. sftp同步代码5. 整体架构6. 通信协议7. 模拟实现(待实现) ### 步骤 ...

  4. PGL图学习之图神经网络GNN模型GCN、GAT[系列六]

    PGL图学习之图神经网络GNN模型GCN.GAT[系列六] 项目链接:一键fork直接跑程序 https://aistudio.baidu.com/aistudio/projectdetail/505 ...

  5. vs2019中使用Git,新建项目时总提示部分项目位于解决方案文件夹外

    最终还是用Git工具传上去的. 小伙子,用Git Bush或者Git CMD 和Git GUI传吧 我是用Git GUI. Git GUI汉化.感谢大佬 https://blog.csdn.net/u ...

  6. devexpress中dockManager保存布局后恢复不正常

    在使用dockManager保存布局后进行恢复发现不正常,与中间的gridcontorl接触的都不行.gridcontorl设置的填充是fill 所以在在界面上再添加一个PanelControl控件并 ...

  7. 动态规划篇——DP问题

    动态规划篇--DP问题 本次我们介绍动态规划篇的DP问题,我们会从下面几个角度来介绍: 区间DP 计数DP 树状DP 记忆化搜索 区间DP 我们通过一个案例来讲解区间DP: /*题目展示*/ 题目名: ...

  8. @responseBody 返回更多数据

    @responseBody:注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据,需 ...

  9. 移除元素-LeetCode27 双指针

    力扣链接:https://leetcode.cn/problems/remove-element/ 题目 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返 ...

  10. Github Actions 学习笔记

    Github Actions是什么? Github Actions 官方介绍:GitHub Actions是一个持续集成和持续交付(CI/CD)平台,允许您自动化构建.测试和部署管道.您可以创建构建和 ...