写点什么

零 Unity 经验卡牌策略游戏开发实录

  • 2025-10-18
    北京
  • 本文字数:3466 字

    阅读完需:约 11 分钟

大小:1.49M时长:08:40
零 Unity 经验卡牌策略游戏开发实录

本文作者:潮不报汐,TRAE 开发者用户

项目概述


作为零代码、零 Unity 使用经验的开发者,我将此次 AI 开发游戏作为初次尝试,并未设定过于复杂的目标,主要目的是验证整个开发流程的可行性。因此,本次项目聚焦于逻辑与画面均较为简洁的作品。借助 TRAE 的 Builder 模式,我成功开发出卡牌策略对战游戏。


开发初期,由于首次接触 TRAE 与 Unity,对工具操作缺乏熟悉度,曾遭遇两次推进失败。后经调整为“先搭建核心功能、再逐步叠加细节”的开发策略,成功突破技术壁垒。


游戏核心的“五行相生相克”规则、组合卡效果及 UI 交互功能,均通过 TRAE 实现。在 TapTap 上架过程中,从 SDK 接入、隐私合规调整到 Android 64 位架构配置,全程由 TRAE 完成技术落地,无需手动编写代码。


测试阶段成果:相较于以往使用传统成熟框架开发的游戏常出现的设备兼容性问题,本次开发的游戏几乎未收到玩家反馈无法进入游戏的情况,也未出现游戏完全无法运行的 BUG,基本验证了 TRAE 对零基础开发者实现游戏开发与上架的高效助力。

最终效果演示


本游戏目前处于封闭测试阶段,暂无法通过链接直接访问。后续新增内容和优化完成后,将开放正式版本。


00:00 / 00:00
    1.0x
    • 3.0x
    • 2.5x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00

    开发挑战与策略调整

    首次开发的“大跃进”陷阱


    第一次使用 TRAE 开发时,我完全陷入了“贪多求快”的误区——将“选卡逻辑 + 对战流程 + 组合效果”所有功能需求一股脑交给了 Builder 模式。结果 TRAE 生成的代码如同一团乱麻:选卡后本应变灰的相克卡牌依然可点击,对战时血条数值停滞在初始值不动。


    但这并非 TRAE 的问题,而是我过于贪心。需求过多时,AI 会强行堆砌代码但忽略功能间的逻辑依赖。最令人崩溃的是,当我试图修改某一功能时,往往牵一发而动全身,比如调整选卡判定条件后,整个对战流程直接卡死。

    策略调整:拆解核心功能的“三步验证法”


    吸取教训后,我将开发拆解为“核心功能闭环→交互逻辑→数值系统”三个阶段,每步仅给 TRAE 单一目标:


    • 起牌功能:明确要求“从牌库随机生成 8 张手牌并显示在 UI 页面下方”。这次 TRAE 生成的代码非常清晰,还智能地自动添加了日志提示生成成功;

    • 选卡交互:实现“点击卡牌时向上移动,一次最多出两张牌,再次点击取消”。初期出现了层级错误,但在我将问题描述清楚后,TRAE 顺利解决了该问题;

    • 出牌逻辑:我方和对方同时出牌,出的牌在屏幕中间显示并保持,直到下一轮出牌。出完牌后要立即判断本轮出牌结果。


    TRAE 的响应变化与效率提升


    调整策略后最显著的变化是 TRAE 生成代码的模块化程度大幅提高。首次开发时所有功能挤压在一个 GameManager 脚本中,而分步开发后自动拆分成 CardSystem、BattleSystem 等独立模块。

    落地细节实现

    战斗反馈直观化实现:文字 + 音效双反馈


    为了让玩家清晰感知五行相克的战斗反馈,我在给 TRAE 的需求中提出“双感官反馈”设计:造成伤害时,不仅要计算伤害数值,还要同步显示动态效果。


    具体描述时会写:“当两张卡牌检测到相克关系并成功出牌后,受伤的一方要在指定位置显示减去的血量”;造成伤害后加上音效。


    实际测试时发现减血文字在深色背景下不够醒目,只需在 Builder 中补充“将伤害文字改为在 inspector 可配置”,TRAE 会直接定位到对应修改位置,然后指引如何在 Unity 界面修改设置。这种“描述效果→自动实现”的流程,让零代码的我也能制作出专业级反馈效果。


    组合卡效果:清单式描述让 AI 精准落地


    组合卡效果的实现得益于 TRAE 对结构化需求的高效解析。我整理了一份“组合规则清单”提供给 TRAE,然后生成对应的测试用例。测试完毕后,发现问题就将对应的问题反馈给 TRAE,让其重新处理:



    整体机制相对简单,主要包括伤害、加血和禁手。TRAE 会生成一个 combination 库,将每种组合对应的效果类型、数值、显示样式都存储其中,战斗时通过 ProcessCombinationEffect() 方法实时匹配:


    switch (combination){case"乾兑":if (opponentElement == "木")        {int baseDamage = applyDoubleDamage ? 50 : 25;int actualDamage = CalculateActualDamage(baseDamage, false);            DamageOpponent(baseDamage);            UIManager.Instance.ShowMessage($"对手出木卡,敌方受到{actualDamage}点伤害");        }elseif (opponentElement == "火")        {int baseDamage = applyDoubleDamage ? 50 : 25;int actualDamage = CalculateActualDamage(baseDamage, true);            DamagePlayer(baseDamage);            UIManager.Instance.ShowMessage($"对手出火卡,己方受到{actualDamage}点伤害");        }else        {int baseDamage = applyDoubleDamage ? 10 : 5;int actualDamage = CalculateActualDamage(baseDamage, true);            DamagePlayer(baseDamage);            UIManager.Instance.ShowMessage($"其他卡,己方受到{actualDamage}点伤害");        }break;}
    复制代码


    UI 交互调整:TRAE 充当“操作向导”


    虽然 TRAE 能生成基础 UI,但实际效果总会存在细节偏差,这时“询问 TRAE 如何修改”成了我的独门技巧。


    比如主界面的“开始游戏”按钮生成后位置偏左,我会在 Builder 中询问:“主界面的 StartButton 位置不在屏幕中央,应该在代码中修改还是在 Unity Inspector 中调整?”TRAE 会明确回复:“建议在 Canvas 的 Inspector 面板中,将 Button 的 Rect Transform 组件→Anchor Presets 设置为‘居中居中’,Pivot 保持 (0.5,0.5)”。

    SDK 接入与上架流程

    TapTap SDK 接入


    接入 TapTap SDK 时,我明确了需求描述:“仅需实现 TapTap 登录功能,支持玩家通过 TapTap 账号授权登录,无需其他扩展功能”。这种精准定位让 TRAE 避免了功能冗余,专注于核心登录模块的实现。


    TRAE 生成的代码严格遵循了 TapSDK 的集成规范,自动导入了必要的登录依赖包(TapTap_Login.unitypackage),并在初始化脚本中配置了关键参数:new TapConfig.Builder().ClientID("我的游戏 ClientID").RegionType(RegionType.CN)。整个过程无需手动修改 manifest.json 文件或处理依赖冲突,对于零代码基础的我而言,相当于跳过了“导入 SDK 包→配置权限→编写初始化代码”的复杂流程。


    登录测试时,系统能正常唤起 TapTap 客户端授权,未安装客户端时会自动切换到 WebView 登录模式,完全符合 TapSDK 的设计逻辑。

    隐私合规调整


    隐私弹框的实现经历了一次迭代。最初我让 TRAE “生成启动时的隐私协议弹框”,它默认使用 bootstrap 框架实现了一个美观的弹框,但提交审核时被 TapTap 驳回——原因是弹框在 Unity 引擎启动后才显示,不符合“启动前弹窗”的规范。


    收到 TapTap 的详细教程后,我将文档内容直接复制给 TRAE:“需在 Unity 初始化前显示隐私弹框,用户同意后才能初始化 SDK,参考示例代码:if(用户同意隐私协议){ TapTapSdk.init() }”。不到 5 分钟,TRAE 就生成了新的实现方案:通过修改 AndroidManifest.xml 将弹框 Activity 设置为启动页,同时生成了完整的弹框交互代码(包含同意/拒绝按钮逻辑、协议链接跳转),完全符合 TapTap 的合规要求。


    最终的弹框不仅通过了审核,还实现了细节优化:协议文字支持点击跳转、拒绝按钮会退出游戏、同意后会保存用户选择状态。这些都是 TRAE 根据移动应用隐私规范自动添加的功能。

    64 位架构配置:AI 充当导师,手动操作也轻松


    64 位架构配置是上架前的最后一道技术关卡。虽然 TRAE 无法直接修改 Unity 的编译设置,但它提供了堪称“保姆级”的操作指南:“在 Unity 顶部菜单选择 Edit→Project Settings→Player,展开 Other Settings 面板,在 Configuration 下的 Scripting Backend 选择 IL2CPP,在 Target Architectures 中勾选 ARM64”。


    配置完成后,构建的 APK 顺利通过了 TapTap 的 64 位兼容性检测,这对于从未接触过 Unity 编译设置的我而言,堪称“零门槛通关”。

    总结与建议


    初次开发仍然出现了诸多问题,比如新增一个功能导致之前的功能失效。后续开发中我将继续探索如何更好地运用 TRAE 规避此类问题。目前使用下来,我的建议如下:


    • 适可而止,切勿贪多


    不要一股脑输出大量需求,应明确核心需求再进行拓展。


    • 及时保存


    保存满意的版本,以防无法回溯。后续我计划尝试使用 git 进行版本同步,希望以后还有机会分享相关经验。


    • 大胆推测、小心求证


    可能会遇到某个问题始终无法解决的情况,这时可以自行推测问题所在,然后让 TRAE 在推测可能有问题的地方打印日志,确定问题位置。这种方式比出现问题直接将问题交给 TRAE 的效率要高得多。


    奖品激励+官方认证!TRAE 最佳实践征文大赛来了:https://mp.weixin.qq.com/s/mdsfX8XZrg-xTQkYl4mm0g?scene=25#wechat_redirect


    2025-10-18 12:005890

    评论

    发布
    暂无评论

    【IT运维】传统运维与云运维到底有什么不同呢?

    行云管家

    云计算 IT运维 云运维

    领域驱动设计入门与实践[上]

    LigaAI

    领域驱动设计与实践

    一文弄懂Linux下五种IO模型

    Linux服务器开发

    epoll Linux服务器开发 Linux后台开发 select IO复用

    物联网——智能点灯搭建

    kof11321

    专访 KubeVela 核心团队:如何简化云原生复杂环境下的应用交付和管理

    阿里巴巴中间件

    阿里云 云原生 OAM KubeVela

    网络安全kali之利用宏感染word文档获取shell

    侠盗安全

    网络安全 kali kali Linux

    华米科技 x StarRocks:让智能穿戴数据焕发新活力

    StarRocks

    数据库 数据分析 StarRocks

    华云数据与龙蜥社区完成产品兼容互认证,携手推动开源生态体系建设与发展

    OpenAnolis小助手

    云计算 开源社区 生态体系 华云数据 兼容互认证

    知识社会的到来:知识管理与知识协同

    小炮

    知识管理

    云计算时代服务器运维就用行云管家!功能齐全,福利多多!

    行云管家

    云计算 云管平台 服务器运维

    从 0 到 1 教你在亚马逊云科技中部署动态网站 Typecho 系统

    亚马逊云科技 (Amazon Web Services)

    php 亚马逊 typecho

    【Altium Designer】工程的组成 & 创建

    謓泽

    3月月更

    RadonDB MySQL on Kubernetes 2.1.3 发布!

    RadonDB

    MySQL 数据库 Kubernetes 高可用 RadonDB

    SpringBoot性能怎样优化

    编程江湖

    带你详细了解mongodb数据库

    编程江湖

    【高效开发】不止面对面,Cloud Studio 推出 MetaWork 云协作套件

    CODING DevOps

    疫情 协同办公 Cloud Studio 云端编码

    手把手教你搭建博客

    亚马逊云科技 (Amazon Web Services)

    MapReduce的Shuffle过程及Hadoop优化(包括:压缩、小文件、集群优化)

    编程江湖

    团队需要移动CRM系统的原因

    低代码小观

    移动 CRM 客户关系管理 CRM系统 客户关系管理系统

    【OH干货】 告别代码,让Openharmony软总线测试用例跑起来!!!

    拓维信息

    分布式软总线 OpenHarmony

    Apache ShardingSphere Agent 可观察性实用指南

    SphereEx

    数据库 ShardingSphere SphereEx apache 社区

    Flink Watermark 机制及总结

    腾讯云大数据

    大数据 flink 实战 流计算 Oceanus

    云效代码管理 Codeup 是什么?别说你还不知道

    阿里云云效

    阿里云 DevOps 云原生 云效 Codeup

    一文读懂蓝绿发布、A/B 测试和金丝雀发布的优缺点

    阿里巴巴中间件

    阿里云 云原生 中间件 蓝绿发布 A/B 测试

    每周问答精选:PolarDB 和 PolarDB-X 的区别是什么?

    阿里云数据库开源

    数据库 阿里云 开源 polarDB

    Sealer - 把 Kubernetes 看成操作系统集群维度的 Docker

    阿里巴巴中间件

    云计算 阿里云 云原生 中间件 sealer

    Figma断供大疆,对国产设计软件的启示

    ToB行业头条

    SaaS tob 国产替代

    百万大数据错题笔记

    Clarke

    面试高并发,凉了!!(全程高能,建议收藏)

    冰河

    并发编程 多线程 高并发 协程 异步编程

    科创人·36氪副总裁王坤:企服产品应重视使用者体验,36氪将推出中国版「魔力象限」

    科创人

    企业服务

    零 Unity 经验卡牌策略游戏开发实录_AI&大模型_TRAE.ai_InfoQ精选文章