第 1 天|基于 AI 进行游戏开发:5 天创建一个农场游戏!
欢迎使用 AI 进行游戏开发! 在本系列中,我们将使用各种 AI 工具,在 5 天内创建一个功能完备的农场游戏。到本系列结束时,你将了解到如何将多种 AI 工具整合到游戏开发流程中。本系列文章将向你展示如何将 AI 工具用于:
- 美术风格
- 游戏设计
- 3D 素材
- 2D 素材
- 剧情
想要观看视频快速了解?请 点击这里 快速了解本文内容,如果你需要掌握更多技术细节,请继续阅读!
注意:本教程面向熟悉 Unity 开发和 C# 语言的读者。如果你不熟悉这些技术,我们建议你先了解一下 Unity 然后再继续阅读,本文的作者制作了一系列 Unity 初学者视频,如果你希望我们发布到 Hugging Face 账号,请在评论区留言告诉我们。
第 1 天:确立美术风格
游戏开发流程第一步是 确立美术风格。对于要创建的农场游戏,本文将使用 Stable Diffusion 工具来帮助其美术风格的确立。Stable Diffusion 是一种基于文本描述生成图像的开源模型。接下来会介绍如何使用该工具为农场游戏创建视觉美术风格。
Stable Diffusion 基本设置
运行 Stable Diffusion 有两种方案可选:本地或在线。如果你拥有一台配备良好 GPU 的台式机并想使用全功能工具库,那么更建议本地方案。除此之外,你还可以尝试在线方案,请继续阅读本文详细查看本地方案和线上方案:
本地方案
本文将使用 Automatic1111 WebUI 在本地运行 Stable Diffusion。这是比较流行的本地运行 Stable Diffusion 的方案,不过要成功将其设置运行起来,还需要一些技术知识。如果你使用 Windows 且具有 8GB 以上内存的 Nvidia GPU,请按以下指示执行。否则,请在 代码仓库 的 README 文件中查看其他平台的运行说明,更或者可以选择在线方案。
在 Windows 上安装
要求:具有 8 GB 以上内存的 Nvidia GPU。
安装 Python 3.10.6,安装时勾选 "Add Python to PATH"
安装 git
在命令提示符中输入以下内容来克隆所需仓库
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
下载 Stable Diffusion v1.5 checkpoint,并将其移动到仓库的 models 目录下
运行
webui-user.bat来启动 WebUI浏览器中访问 localhost://7860。如果一切正常,你将看到如下内容:

在线方案
如果你不具备本地运行 Stable Diffusion 的条件,或者偏好简易的解决方案,同样有多种在线运行方案供你选择。
Hugging Face 提供的 Space 应用中包含众多免费在线方案,例如 Stable Diffusion 2.1 Demo 或 camemduru webui。你可以 查看更多在线服务,甚至可以使用 Diffusers 编写你专属的免费运行方案!你也可以查看简单的 代码示例 以快速上手。
注意: 本系列的部分内容将使用 image2image 等高级功能,有些在线服务未提供这些功能。
生成概念艺术图片
首先让我们生成一些概念图。只需几步,非常简单:
输入提示语
点击生成

但问题是,生成的图片是你真正想要的结果吗?如果不是,如何才能获得呢?这里要提醒你一下,输入提示语,本身就需要一些技巧。所以如果你生成的第一张图片非你所想也没关系,网络上有非常多神级资源可以帮助改善提示语。你可以查看 Reddit 上的帖子了解 书写指南,也可以 点击这里 查看我做的视频,带你 20 秒了解图片生成提示语的技巧!
上述书写技巧的共通之处是使用诸如 lexica.art 网站之类的图片库来查看其他创作者使用提示语在 Stable Diffusion 生成的内容范式,从中寻找与你期望风格相似的图片,从而获得书写提示语的灵感。实际上没有所谓的标准答案,不过在你使用 Stable Diffusion 1.5 生成概念艺术图片时,建议遵循以下温馨提示:
- 使用描述词: 描述词会限制生成图片的形式,如 isometric, simple, solid shapes 等。这样生成图片的美术风格在游戏中会更容易重现。
- 使用同义关键词: 一些关键词 (如 low poly) 虽然契合主题,但生成的图片质量通常较低。尝试找到它们的同义词,替换以保证生成质量。
- 使用指定艺术家的名字: 这种方式可以有效地引导模型采用指定艺术家的绘画风格,从而生成更高质量的图片。
我输入这样的提示语: isometric render of a farm by a river, simple, solid shapes, james gilleard, atey ghailan 生成图片如下:

使用 Unity 重现概念艺术
接下来,如何使用生成的概念艺术图片来制作游戏?本文将使用流行游戏引擎 Unity 来使游戏鲜活起来。
使用带有通用渲染管道的 Unity 2021.9.3f1 创建一个 Unity 项目。
使用基本形状绘制场景草图。例如,要添加一个立方体形状,右键单击 -> 3D对象 (3D Object) -> 立方体 (Cube)

设置材质: 可以参考前面生成的概念艺术图片对各部分进行设置。这里选用 Unity 内置的基本材质

设置光照: 这里使用暖调自然光 (
#FFE08C,强度1.25) 和柔和环境光 (#B3AF91)
设置摄像机: 这里使用 正交投影 来匹配概念艺术图片的投影形式

设置水着色器: 可以给游戏场景增加一些水流,这里使用 Unity 资源商店中的程式化水着色器

最后,设置后处理效果: 这里使用 ACES 色调映射和 +0.2 曝光

至此,一个简单上手而引人入胜的游戏场景,不到一天就创建完成了!如果你有任何问题,或者想跃跃欲试参与后续内容?现在来 加入我们的 Discord 频道 与我们交流吧!
在下一篇文章中,我们将 使用 AI 进行游戏设计,敬请关注我们获得后续更新!
英文原文:https://huggingface.co/blog/ml-for-games-1
译者:SuSung-boy (苏桑),经常倒腾图像的工业视觉算法工程师。
第 1 天|基于 AI 进行游戏开发:5 天创建一个农场游戏!的更多相关文章
- Unity 2D游戏开发教程之使用脚本实现游戏逻辑
Unity 2D游戏开发教程之使用脚本实现游戏逻辑 使用脚本实现游戏逻辑 通过上一节的操作,我们不仅创建了精灵的动画,还设置了动画的过渡条件,最终使得精灵得以按照我们的意愿,进入我们所指定的动画状态. ...
- C#游戏开发高速入门 2.1 构建游戏场景
C#游戏开发高速入门 2.1 构建游戏场景 假设已经计划好了要编写什么样的游戏,在打开Unity以后.要做的第一件事情就是构建游戏场景(Scene).游戏场景就是玩家游戏时,在游戏视图中看到的一切. ...
- [Unity3D]Unity3D游戏开发《反对》说到游戏(上)——目标跟踪
朋友,大家好.我是秦培,欢迎关注我的博客.我的博客地址blog.csdn.net/qinyuanpei. 首先博主要自我反省,过了这么久才来更新博客,这段时间主要是在忙着写期末的作业,所以博主基本上没 ...
- 基于Unity的AR开发初探:第一个AR应用程序
记得2014年曾经写过一个Unity3D的游戏开发初探系列,收获了很多好评和鼓励,不过自那之后再也没有用过Unity,因为没有相关的需求让我能用到.目前公司有一个App开发的需求,想要融合一下AR到A ...
- 喵的Unity游戏开发之路 - 推球:游戏中的物理
很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始学.为此我们精选了一套国外优秀的Unity3D游戏开发教程,翻译整理后放送给大家,教您从零开始一步一步掌握Unity3D游戏开发. 本文不 ...
- 使用Phaser开发你的第一个H5游戏(一)
本文来自网易云社区 作者:王鸽 不知你是否还记得当年风靡一时的2048这个游戏,一个简单而又不简单的游戏,总会让你在空闲时间玩上一会儿. 在这篇文章里,我们将使用开源的H5框架--Phaser来重现这 ...
- Android Wear 开发入门——怎样创建一个手机与可穿戴设备关联的通知(Notification)
创建通知 为了创建在手机与可穿戴设备中都能展现的通知,能够使用 NotificationCompat.Builder.通过该类创建的通知,系统会处理该通知是否展如今手机或者穿戴设备中. 导入必要的类库 ...
- Delphi for iOS开发指南(3):创建一个FireMonkey iOS应用程序
http://cache.baiducontent.com/c?m=9d78d513d9d431a94f9d92697d60c015134381132ba1d0020fa48449e3732b4b50 ...
- ItelliJ IDEA开发工具使用—创建一个web项目
转 http://blog.csdn.net/wangyang1354/article/details/50452806 最近想用IDEA编辑器开发,但是平时都用MyEclipse和eclipse ...
- ItelliJ IDEA开发工具使用—创建一个web项目(转)
最近想用IDEA编辑器开发,但是平时都用MyEclipse和eclipse习惯了,突然间用IDEA到处碰壁的感觉.在不断的摸索之后终于苦尽甘来,学会了基本的web程序如何创建以及运行了.期间在网上找了 ...
随机推荐
- 动词时态=>2.动作的时间状态结合
动作和时间结合 现在的四种时态 现在进行时态 对于 现在这个时间点,这个 动作 还在进行当中 例如:我现在正在喝水 现在完成时态 对于 现在这个时间点,这个 动作 已然完成 例子:我现在已经喝完了水 ...
- 6.channels 配置websocket
Django默认不支持websockey,需要Django支持的话需要安装第三方组件 django channels 是django支持websocket的一个模块. 1.安装 pip3 in ...
- 搭建harbor私有仓库
2-1.项目说明 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,由VMware开源,其通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源 Docke ...
- Nginx四层负载均衡1
1.Nginx负载均衡Redis 服务器 IP地址 作用 系统版本 Nginx代理服务器 10.0.0.38 负载均衡服务器 Rocky8.6 Redis服务器1 10.0.0.18 Redis服务器 ...
- JS逆向实战5--JWT TOKEN x_sign参数
什么是JWT JWT(JSON WEB TOKEN):JSON网络令牌,JWT是一个轻便的安全跨平台传输格式,定义了一个紧凑的自包含的方式在不同实体之间安全传输信息(JSON格式).它是在Web环境下 ...
- Byte和byte的区别
Byte和byte的区别 背景 今天学习网络编程中,在建立Udp连接时,使用byte[]数组接收传输的数据,但是byte[]错写为Byte[],导致错误. //接收数据: Byt ...
- Jenkins发版通知企业微信机器人
1)开始通知 在Jenkins发版过程的第一步添加下面内容,调用下面脚本实现机器人发版通知(注意脚本路径和传参) ${BUILD_USER}是Jenkins内置变量,执行发布的用户名,需要安装插件-B ...
- vue3.0使用tui.image-editor图片编辑组件报错TypeError: Cannot convert undefined or null to object
在vue3.0的项目中使用tui.image-editor组件.一直都是报错.查看报错位置发现代码 addEventListener() { Object.keys(this.$listeners). ...
- qtCreator警告解决
警告 qtCreator Warning: QT_DEVICE_PIXEL_RATIO is deprecated. Instead use: QT_AUTO_SCREEN_SCALE_FACTOR ...
- JS笔记合集之对象
对象 对象基本使用 对象是JS中的一种复合数据类型,它相当于一个容器,在对象中可以存储各种不同类型的数据 而基本数据类型(原始值)只能存储一些简单的数据,如: 语法: 原始创建对象: let obj ...