第 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程序如何创建以及运行了.期间在网上找了 ...
随机推荐
- 最近无聊搭建一个齐博X1的下载页面
https://layui.wanxiangsucai.com/ 用layui官方镜像站的模版 改了个齐博X1的下载页面 https://x1.wanxiangsucai.com/ 哈哈哈!!! 还有 ...
- 知识图谱顶会论文(SIGIR-2022) MorsE:归纳知识图嵌入的元知识迁移
MorsE:归纳知识图嵌入的元知识迁移 论文题目: Meta-Knowledge Transfer for Inductive Knowledge Graph Embedding 论文地址: http ...
- NLP之基于logistic回归的文本分类
数据集下载: 链接:https://pan.baidu.com/s/17EL37CQ-FtOXhtdZHQDPgw 提取码:0829 逻辑斯蒂回归 @ 目录 逻辑斯蒂回归 1.理论 1.1 多分类 1 ...
- Java学习之Filter与Listener
0x00前言 web中的Filiter:当客户端访问服务端资源的时候,过率器可以把请求拦截下来,完成一些特殊的功能 完成的操作一般都是通用的作用:列如登录验证. web中的Listener一般用于加载 ...
- DTSE Tech Talk | 第10期:云会议带你入门音视频世界
摘要:本期直播主题是<云会议带你入门音视频世界>,华为云媒体服务产品部资深专家金云飞,与开发者们交流华为云会议在实时音视频行业中的集成应用,帮助开发者更好的理解华为云会议及其开放能力. 本 ...
- 面试官不按套路,竟然问我Java线程池是怎么统计线程空闲时间?
背景介绍: 你刚从学校毕业后,到新公司实习,试用期又被毕业,然后你又不得不出来面试,好在面试的时候碰到个美女面试官! 面试官: 小伙子,我看你简历上写的项目中用到了线程池,你知道线程池是怎样实现复用线 ...
- 【云原生 · Kubernetes】Kubernetes容器云平台部署与运维
[题目1]Deployment管理 在master节点/root目录下编写yaml文件nginx-deployment.yaml,具体要求如下: (1)Deployment名称:nginx-deplo ...
- 【SQL进阶】【CASE/IF、COUNT/SUM、多条记录拼接为一个内容】Day03:聚合分组查询
〇.今日内容概述 一.聚合函数 1.SQL类别高难度试卷得分的截断平均值[去最高最低分求平均] 自己的想法 SELECT tag, difficulty, ROUND((SUM(score)-MIN( ...
- JavaScript入门⑦-DOM操作大全
JavaScript入门系列目录 JavaScript入门①-基础知识筑基 JavaScript入门②-函数(1)基础{浅出} JavaScript入门③-函数(2)原理{深入}执行上下文 JavaS ...
- Spring IOC源码(一):IOC容器启动流程核心方法概览
Spring有两种方式加载配置,分别为xml文件.注解的方式,对于xml配置的方式相信大家都不陌生,往往通过new ClassPathXmlApplicationContext("*.xml ...