制作 2D 素材|基于 AI 5 天创建一个农场游戏,第 4 天
欢迎使用 AI 进行游戏开发! 在本系列中,我们将使用 AI 工具在 5 天内创建一个功能完备的农场游戏。到本系列结束时,您将了解到如何将多种 AI 工具整合到游戏开发流程中。本系列文章将向您展示如何将 AI 工具用于:
注意: 本教程面向熟悉 Unity 开发和 C# 语言的读者。如果您不熟悉这些技术,请先查看 Unity for Beginners 系列后再继续阅读。
第 4 天:2D 素材
本教程系列的 第 3 部分 讨论到现阶段 文本-3D 技术应用到游戏开发中并不可行。不过对于 2D 来说,情况就大相径庭了。
在这一部分中,我们将探讨如何使用 AI 制作 2D 素材。
前言
本部分教程将介绍如何将 Stable Diffusion 工具嵌入到传统 2D 素材制作流程中,来帮助从业者使用 AI 制作 2D 素材。此教程适用于具有一定图片编辑和 2D 游戏素材制作知识基础的读者,同时对游戏或者 AI 领域的初学者和资深从业者也会有所帮助。
必要条件:
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 分钟,一个玉米图标游戏素材就制作完成了!其实您可以花更多时间来打磨一个更好的作品。如想了解如何制作更加精致的游戏素材,可以前往观看详细演示视频。
示例:镰刀
很多时候,您可能需要对扩散模型进行 负面引导 才能生成期望的图片。下图毫无疑问可以用作镰刀图标,但这些简单的图片却需要大量迭代次数才能生成。

原因可能是这样:扩散模型使用的训练图片基本都是网络上的,而网络上关于镰刀的图片大部分是 武器,只有小部分是 农具,这就导致模型生成的镰刀图片会偏离 农具。一种解决方法是改善提示语:以增加 负面提示语 的方式引导模型避开相应的结果。上述示例中,除了输入 镰刀,农具 之外,在负面提示语一栏输入 武器 就能奏效。当然,也不只有这一种解决方法。
Dreambooth、textual inversion 和 LoRA 技术用于定制个人专属的扩散模型,可以使模型生成更加明确的图片。在 2D 生成领域,这些技术会越来越重要,不过具体技术细节不在本教程范围之内,这里就不展开了。
layer.ai 和 scenario.gg 等是专门提供游戏素材生成的服务商,可以使游戏从业者在游戏开发过程中生成的游戏素材保持风格一致,他们的底层技术很可能就是 dreambooth 或 textual inversion。在新兴的开发游戏素材生成工具包赛道,是这些技术成为主流?还是会再出现其他技术?让我们拭目以待!
如果您对 Dreambooth 的工作流程细节感兴趣,可以查看 博客文章 阅读相关信息,也可以进入 Hugging Face 的 Dreambooth Training Space 应用体验整个流程。
在下一部分中,我们将 使用 AI 设计游戏剧情。
原文作者:Dylan Ebert
译者:SuSung-boy
审校、排版:zhongdongy (阿东)
制作 2D 素材|基于 AI 5 天创建一个农场游戏,第 4 天的更多相关文章
- AI 制作 3D 素材|基于 AI 5 天创建一个农场游戏,第 3 天
欢迎使用 AI 进行游戏开发! 在本系列中,我们将使用 AI 工具在 5 天内创建一个功能完备的农场游戏.到本系列结束时,您将了解到如何将多种 AI 工具整合到游戏开发流程中.本文将向您展示如何将 A ...
- 第 1 天|基于 AI 进行游戏开发:5 天创建一个农场游戏!
欢迎使用 AI 进行游戏开发! 在本系列中,我们将使用各种 AI 工具,在 5 天内创建一个功能完备的农场游戏.到本系列结束时,你将了解到如何将多种 AI 工具整合到游戏开发流程中.本系列文章将向你展 ...
- 基于空镜像scratch创建一个新的Docker镜像
我们在使用Dockerfile构建docker镜像时,一种方式是使用官方预先配置好的容器镜像.优点是我们不用从头开始构建,节省了很多工作量,但付出的代价是需要下载很大的镜像包. 比如我机器上docke ...
- 从头基于空镜像scratch创建一个新的Docker镜像
我们在使用Dockerfile构建docker镜像时,一种方式是使用官方预先配置好的容器镜像.优点是我们不用从头开始构建,节省了很多工作量,但付出的代价是需要下载很大的镜像包. 比如我机器上docke ...
- Unity 2D游戏开发高速入门第1章创建一个简单的2D游戏
Unity 2D游戏开发高速入门第1章创建一个简单的2D游戏 即使是如今,非常多初学游戏开发的同学.在谈到Unity的时候.依旧会觉得Unity仅仅能用于制作3D游戏的. 实际上.Unity在2013 ...
- Unity3D游戏开发从零单排(四) - 制作一个iOS游戏
提要 此篇是一个国外教程的翻译,尽管有点老,可是适合新手入门. 自己去写代码.debug,布置场景,能够收获到非常多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一 ...
- 使用Unity创建塔防游戏(Part1)
How to Create a Tower Defense Game in Unity - Part1 原文作者:Barbara Reichart 文章原译:http://www.cnblogs.co ...
- Unity3D 创建一个简单的2D游戏
开始研究Unity3d 中的2D游戏. 首先创建出一个项目: 然后创建出一个场景: 然后添加一个背景: 然后创建一个主人公对象: 可以是自己做的素材,也可以是用unity裁剪的素材, 下面贴出裁剪素材 ...
- 【Unity 3D】使用 2DToolkit 插件 制作2D精灵动画
话说博客传图也太麻烦了吧,一个一个文件一个一个传....为什么不能直接粘贴了,自动上传呢... 刚直接粘贴了,结果一张图没有,又重新截一次图,在传了一次...真是太**了 好了,吐槽完了,开始博客吧 ...
- 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包
MSBuild 的 Task 为我们扩展项目的编译过程提供了强大的扩展性,它使得我们可以用 C# 语言编写扩展:利用这种扩展性,我们可以为我们的项目定制一部分的编译细节.NuGet 为我们提供了一种自 ...
随机推荐
- Java:ArrayList的基本使用(学习笔记)
集合和数组的对比(为什么要有集合) 分为俩点 1. 长度:数组的长度是固定的,集合的长度是可变的. 2. 存储类型: 数组:可以存储基本数据类型,引用数据类型. 集合:只能存储引用数据类型. 小t ...
- vue引用MarkDown(mavonEditor)编辑器,文档
mavonEditor Install mavon-editor (安装) npm install mavon-editor --save 如何引入: 全局引用: // 全局注册 import Vue ...
- 简单的WebAssembly应用搭建
1 WebAssembly简介 WebAssembly是一种新兴的Web技术,网上的资料并不是很多,简单的可以理解为让C/C++程序运行在浏览器上,官网上用四个词来描述该技术:高效.安全.开 ...
- CentOS 7.x字符界面安装图形界面方法
1. 配置好yum源,可以使用光盘镜像源,也可以使用网络源. 阿里源下载示例: wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.ali ...
- dom xss->半自动化
前几天看了两篇文章,觉得很不错,写一笔,就当笔记记录. 第一篇文章:https://jinone.github.io/bugbounty-dom-xss/ 作者写了自己通过自动化挖dom xss,差不 ...
- 8.一个项目实战(下载CSDN博客文章)
专栏地址 ʅ(‾◡◝)ʃ 前言 要写一个下载器,首先要实现一个接口函数,而这个函数可以对请求的数据进行处理也就是爬虫,其次才是写图形化界面 接口的实现 其实CSDN的浏览器页面的接口很复杂,是直接通过 ...
- c++ trivial, standard layout和POD类型解析
目录 1. trivial类型 2. standard layout类型 3. 集大成者,POD(Plain Old Data)类型 4. 测试代码 1. trivial类型 占用一片连续的内存,编译 ...
- 【Java SE进阶】Day08 File类、递归
一.File类 1.概述java.io.File 文件和路径的抽象表示 用于文件和目录的创建.查找和删除等 分类 file--文件 directory--文件夹/目录 path--路径 2.静态成员变 ...
- JAVA里Map的一些常用方法
Map的常用方法 案例1 场景:一张建行用户体验金信息大表(百万级别),里面存在一个字段对多条数据,需要统计某个字段的多条数据累加值以供于别的服务调用. 优化前解决:直接查出来一个大list给到另一个 ...
- referer的反爬和爬虫下载视频
一.缘由 在梨视频等一些网站中会使用防盗链作为反爬的基础方法,这个反爬并不严重,只是平时的时候需要多加留意.此次实现对应链接中梨视频的下载. 二.代码实现 #1.拿到contid #2.拿到video ...