如何 0 成本启动全员 AI 技能提升?戳> 了解详情
写点什么

零 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:009

    评论

    发布
    暂无评论

    架构师训练营第 1 期第 5 周作业

    好吃不贵

    极客大学架构师训练营

    第一周10/25

    张冬冬

    架构师训练营第五周学习总结

    文智

    极客大学架构师训练营

    架构师训练营第五周 技术选型缓存、消息队列、一致性 hash

    郎哲158

    学习 极客大学架构师训练营

    Week 5 总结

    黄立

    总结

    UML-食堂就餐卡系统

    笨笨程序猿

    极客大学架构师训练营 UML

    训练营第一周

    小一

    架构训练

    架构师训练营第一周作业

    张浩

    第一周作业

    jingx

    架构师训练营第 1 期 - 第5周课后练习

    Anyou Liu

    极客大学架构师训练营

    架构师训练营第 1 期 -- 第五周学习总结

    发酵的死神

    极客大学架构师训练营

    第五周总结

    食堂就餐卡系统

    Xuenqlve

    第一周作业

    孤星

    第 01 周——食堂就餐卡系统设计

    Airship

    极客大学架构师训练营

    作业1-食堂就餐卡系统设计

    arcyao

    架构师训练营第五周作业

    Shunyi

    极客大学架构师训练营

    架构师训练营第五周总结

    月殇

    极客大学架构师训练营

    第五周 技术选型(1)学习总结

    蓝黑

    极客大学架构师训练营

    分布式一致性Hash算法

    黄立

    架构师训练营第五周作业

    CmHuang

    第一周学习总结

    孤星

    Let's Go

    escray

    新年计划

    架构师训练营第二期-第一周作业

    john_zhang

    作业

    张荣召

    架构师训练营第五周作业

    xs-geek

    第 1 周 架构方法 学习总结

    心在那片海

    架构师训练营第一周作业-周总结

    张浩

    第五周作业

    【架构师训练营第 1 期】第五周作业

    万里

    架构2期第1周作业及总结

    supersky6

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