找回密码
 会员注册
查看: 11|回复: 0

AI我用AI做游戏:打造2D角色生成工作流

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
67432
发表于 2024-10-9 13:02:20 | 显示全部楼层 |阅读模式
游戏实操课 | AI我用AI做游戏:打造2D角色生成工作流 张欣玮 LitGate LitGate AI赋能游戏开发,一站式创作者社区 http://www.litgate.ai 78篇内容 2024年09月24日 18:05 广东 背景与目的:尝试尽可能使用各类AI工具的能力,做一款游戏。一方面为了完成自己设想的一款游戏玩法,另外也希望通过实践来丈量一下AI究竟可以对现有的游戏策划、设计、开发影响到什么程度。01效果展示经过几次技术方案的选型和调整,通过腾讯元宝和ComfyUI搭建了一套工作流,可以通过一句简单描述,10秒快速生成角色2D动画素材。案例1当需提供描述生成“一个年轻的女弓箭手”将腾讯元宝智能体的回答,复制到ComfyUI工作流的正向提示词中,执行可获得1张多个动作的透明底图片将画面保存至Unity,可以直接生成角色跑动画面:经过测试用相同的方式可以生成不同角色:“一个老年男魔法师”;“一个幼儿园小朋友”;“一个养老院里的老太太”.....02用途及场景延伸【用途】该效果可以快速生成一些角色动作信息,在独立游戏/小游戏开发中方便快速生成素材;有动作效果素材,可以投入到游戏局内使用。不限于概念和立绘场景。【延伸1】不限于跑步动作,可以扩展生成攻击、死亡、受击动作。获得全套的动作素材。【延伸2】配合其它画风的立绘和头像,生成与角色有关的全部美术风格。【延伸3】在一些中小型游戏中,替换掉传统选角色/捏人的环境,通过描述来生成角色效果。【延伸4】将功能应用到玩家创建角色的环节,实现玩家的千人千面。当前个人想法是通过尽可能通过AI的能力,制作一个微信小游戏+直播弹幕游戏+链游+自走棋的游戏玩法。这个主题下的其它文章也会逐步放出。如果有兴趣交流/参与的同学,可以与我联系。共享资源提示词生成器可以在腾讯元宝中搜索“像素风角色提示词生成器”或复制链接【快来认领你的AI搭子【像素风角色提示词生成器】 https://yuanbao.tencent.com/bot/app/agent/gpu4tWRHAufO 复制本条信息,打开【腾讯元宝】App查看精彩内容!】搭建的ComfyUI工作流可以从微盘下载:https://share.weiyun.com/5ioDVAyP如果是需要拿去玩耍,看到这里就足够了。03工作流的探索过程及思路分享相比拿走上面的工具,我认为自己摸索的过程更有意思些,如果你想继续调优这个方法,我把整个探索过程和踩过的坑也一并记录在下面,可以帮助你少走一些弯路。(幸好之前做失败的效果我也截了图和视频)1图生图重绘方案失败 最初的目的是为了能够快速的制作游戏角色以及动作。我希望能够使用AI的图生图能力,帮我将一些角色的精灵图根据提示词进行重绘。1)在Pinterest上找到了一些角色的精灵图(Sprite Atlas),考虑到如果是很精细的画风,在512*512的生成尺寸下,重绘的效果可能不会太好,所以选择了像素风作为目标风格。2)尝试使用了StableDiffusion,对画面进行了重绘,效果不是很理想。可控性太差了。3)接下来尝试使用了Stable Diffusion的ControlNet插件,来稳固动作,结果发现由于角色画面过多,以及受到原图影响,基本没有起效(尝试了下图12个人物动作的ControlNet,没什么效果)。考虑到重绘图片的灵活性差,多多少少会带有原图的影子,提高重绘幅度又会让画面出现千奇百怪的风格,不是一个长远的路线。至此放弃调试图生图方式,开始尝试文生图效果。2文生图初见成效 采用文生图的技术路线后,决定用Lora+ControlNet来固定画风和动作姿势。在C站上面挑选一番之后,选择了2D Pixel Toolkit (2D像素工具包), https://civitai.com/models/165876modelVersionId=186677因为看它的简介和示例内容,比像素人人https://civitai.com/models/44960/mpixel 更适合显示多个动作的精灵图的绘制方式。使用了DreamShaper(https://civitai.com/models/4384/dreamshaper)作为模型另外在搜集资料的时候有意外之喜,原本我考虑在生成图片之后,要尽可能生成纯色背景,后续再多一步用rembg进行抠图(想想这里就会比较复杂,抠图结果会有些不稳定)。结果在B站up主Nenly同学的视频里学习到了LayerDiffuse的这个插件。强烈建议对这个功能和感兴趣的同学去看下这个视频 (https://www.bilibili.com/video/BV1Xq421F7Ny/)于是重装了ForgeUI的SD,开始尝试直接生成透明底的人物角色精灵图。这里为了方便,我直接拿了2D Pixel Toolkit的图片来生成Openpose的图片。试了一下,肢体不太正确,不过也大致上有个样子了。到这一步,生成的图片是透明底,边界清晰,多个动作图片人物特征基本统一,除了动作细节不太准确,可以说文生图的这套生产链路在方向上是正确的。接下来就是调优工作。3效果调优 效果调优的时间线相互交叉,就不再以时间线描述,总结为生成动作细节的调优,提示词生成方式的调优,和工作流的搭建。 1、生成动作细节调优由于12个人物的图片生成压力比较大,我决定先实现一个4个动作的跑动画面。在制作ControlNet骨骼的时候,我发现能搜集到的一些图片效果不是很好,所以决定自己制作。于是想到从mixamo上找合适的动作,然后截出想要的画面,再用来做openpose识别(https://www.mixamo.com/#/page=1&query=run)跑步一共是21帧,每隔5帧截一个图,为了方便后面裁切,按512x512来截图,把截图分别保存下来。在figma上把图片拼接到一起,导出来。再放到Openpose识别一下,真的解析出来了。点击生成AI结果,也一下子完成了!把图片结果保存放到unity里面做切分,并生成角色动画。虽然成功的出现了Gif图,但问题是第3张的动作有些怪异,发现角色回头了。分析了一下是OpenPose在第三张图片里面少了一些肢体结构,导致生成的时候这里有随机性,头部位置并不固定。于是开始学习在Openpose Editor中对肢体结构进行修补。中间的人物重叠较多,校准他花了比较多的时间,很费神。按住空格移动画面没能识别的肢体,会不可见,点开之后初始位置在左上角全部肢体都具备之后,人物栏的火焰icon会消失校准完成的效果调整之后,在生成角色时,头部位置更加统一了,成功!放到Unity中,动作也更加顺眼一些了。这里放了一个对比视频,左侧是校准之后的动作,右侧是未校准的,仔细看可以发现未优化前的角色,中间有一帧会回头。 2、提示词生成调优在成功生成了一个角色的效果之后,为了测试不同角色的生成效果,我需要能够更好的生成提示词的工具。为了调整提示词生成,建立标准的提示词生成器,我使用混元对原有的提示词进行归类。混元给的分类不是很符合我需要的场景,这里我手动进行了整理:其中灰色部分的字是固定的,其它部分的内容可以随机生成。当我把这个指令发给混元之后,我发现他每次成功生成一组提示词之后,下一次再生成提示词的时候,混元的回答又会自动分段,换行。为了解决这个问题,我想到了训练一个智能体。在腾讯元宝下面创建一个智能体,在智能体的描述中我添加了这样的一段话你会为我生成游戏角色的提示词,当我用简单的语言描述一个游戏角色的时候,你会根据我的内容,扩展角色外形的一些细节信息。生成的提示词是英文的,总数是50到70个词语。提示词必须包含的分类有:角色职业,角色的主要配色,角色身高描述,角色胖瘦描述,头发颜色,头发长度,头饰或者帽子,皮肤颜色、以及身体的其他特征。每个分类下1~2个词语即可,词语之间不能相互矛盾。生成的提示词不需要空行,用逗号分隔。不要描述角色手中持有任何物品或者道具。另外你的回答开头是固定的内容:, full body, pixel art, highly detailed,在这之后拼接你生成的提示词。当输入这些内容之后生成的智能体赶快试用了一下,提示词有点少,不过差不多够用了。测试了几个不同类型的画面【一个男骑士】,full body, pixel art, highly detailed, male knight, silver armor, prince, royal guard, sword, shield, black hair, short, helmet with visor, fair skin, broad shoulders, tall【一个男性老魔法师】, full body, pixel art, highly detailed, old male mage, ancient wizard, wise old man, short stature, gray beard, balding head, round spectacles, wrinkled skin, frail, stooped posture【一个女弓箭手】, full body, pixel art, highly detailed, young female archer, agile, petite, blonde hair, long braids, green eyes, fair skin, leather armor, quiver on back.晚上跟爸妈视频,也给他们演示了一下,他们说【一个幼儿园小孩】, full body, pixel art, highly detailed, kindergarten child, wearing overalls, red shirt underneath, short stature, chubby, curly blonde hair, no hat, fair skin, cute smile, round face, small hands and feet.还脑洞大开尝试了【一个养老院的老太太】(没办法,因为Control Net的动作框架是一定的,所以老太太的动作也很灵活), full body, pixel art, highly detailed, elderly woman, retirement home resident, wearing a floral dress, white hair in a bun, tall with a slight hunch, thin, wrinkled skin, glasses, walking cane.看到通过优化提示词的生成方式,可以实现一句话的方式生成角色效果了。那么这部分也完成了。 3、优化工作流以上的工作流都是在Stable Diffusion ForgeUI中进行的,它实际上也是WebUI的一种。在上面这些调优工作中,我发现假如能够通过一个工作流来自动化这个过程,是一个更牢靠的方式,也更方便运用在实际生产中。于是开始接触ComfyUI,所幸由于之前的各种探索,让我对Stable Diffusion和ControlNet、Lora、Embedding、KSampler、VAE的原理都比较熟悉了,所以很快就搭建出来所需要的工作流。这里仅仅是在ControlNet,Lora和Layer Diffuse的排序稍稍绕了一些弯子,因为市面上的教学很少提到这3个结合在一起的场景,我花了一些时间测试才找到方法。总结一下,用到的工具和使用目的包含:●ComfyUI用来搭建文生图工作流●Lora为了生成统一的像素风的结果●OpenPose&ControlNet为了稳定角色动作●Layer Diffuse为了生成免抠图的透明底图片●混元元宝智能体,为了录入提示词生成规范,快速生成角色提示词最后想说一下自己的体会,曾经一篇自己的文章中,我写到"...自己并非游戏从业者,能够想到的内容只有这些。自己没有能力更进一步去制作这样的游戏..."但后面我觉得如果我不去做,那它真的可能就停留在一个想法了。在自己尝试下场动手的时候,我发现我遇到的困难比想象中的多,同时也发现我能做到的比想象中要多。回到AI这里,预感它应该会慢慢的改变我们习以为常的游戏生产方式,甚至游戏玩法,这个时间应该不会太远。以上,如果对文章内容有疑问,或者使用中遇到问题的,有优化思路的,甚至是有一起尝试合作开发游戏想法的,都欢迎与我交流。关于LitGate大家好,我是LitGate,一个专注于AI创作的游戏社区。我们的新版官网已经上线你可以在里面找到各种AI创作的实操案例,以及已经沉淀的AI游戏创意demo,相信一定能让你大开眼界!我们还有一个讨论群,如果你对AI创作感兴趣,或者有什么问题想要咨询,欢迎加入我们的讨论群,和大家一起交流学习!(PS:目前群内人数较多,为了有一个优质的讨论环境,请各位添加社区管理员企业微信账号邀请入群更多精彩活动和功能筹备上线中,敬请期待~关注我们,一起探索AI创作的无限可能吧!新版官网地址:www.litgate.ai
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-3 00:52 , Processed in 0.572328 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表