2,334
0

“用Go做游戏:没用大模型折腾3个月 vs 用大模型只花3天!”

AI拯救程序员:3个月VS3天的奇幻漂流

从前有个程序员,他的Side Project是个悲剧

曾几何时,程序员们做小项目的日常是这样的:

  • 查文档?——翻到第30页发现API已经废弃。
  • 踩坑?——一脚踩进一个“这不是Bug,这是特性”的深坑。
  • 调试?——对着屏幕上闪烁的光标怀疑人生,最后靠玄学解决了问题。
  • 一个小游戏能折腾三个月,不是因为你写代码慢,而是因为生活总爱给你惊喜

    直到AI出场:从“Truco是什么”到代码生成只需3秒

    某天,一位写了15年代码的老哥幡然醒悟——
    “等等,我竟然从没发布过一款游戏?!”
    于是,他决定重拾童年的纸牌回忆。但这次,他不打算硬刚了,而是优雅地打开ChatGPT:
    程序员:阿根廷最常见的纸牌游戏是啥?别废话,直接给答案。ChatGPT:Truco。(干脆利落,仿佛在说:就这?浪费我算力?)

    大模型的时代:程序员终于可以站着写代码了

    过去:

  • 3个月 = 查规则 + 写bug + 修bug + 重新设计 + 放弃 + 再次尝试
  • 3天 = 问AI + 复制粘贴 + 微调 + 发布
  • 这就是技术进步的意义*——
  • 让程序员少掉头发,多打游戏*(或者做游戏)。
  • 所以,下次你想做个项目时,记得先问问AI。
    毕竟,“死磕”是传统美德,但“抄AI作业”是新时代智慧
    “用Go做游戏:没用大模型折腾3个月 vs 用大模型只花3天!”

    01

    Truco:不用大模型,3 个月的折腾

    一个程序员与扑克牌的奇幻冒险

    【第一章】后端码农的UI噩梦

    在某个风和日丽的2024年夏天(精确到6月18日,因为程序员都懂——时间戳很重要!),我突然一拍大腿:“不如开发个Truco(南美祖传扑克游戏)吧!”
    作为一只Go语言老鸟,后台逻辑?小菜一碟。毕竟,if-else是我的魔法杖,goroutine是我的隐身斗篷。但当我兴冲冲打开UI设计工具时——

  • 问题1:UI是什么?能吃吗?*
  • 我的设计灵感来源于Windows 98的经典弹窗风格。
  • 按钮长得像被暴力测试过的键盘,颜色搭配仿佛彩虹糖撒进墨水瓶。
  • 用户体验?玩家能忍住不砸屏幕就算赢。
  • 【第二章】零预算的服务器大作战

    更刺激的问题是:“怎么白嫖一个长期在线的游戏服务器?”
    我的解决方案清单:

  • 借用邻居的树莓派(直到他家的猫踩断了电源线)。
  • 把电脑塞进衣柜当服务器(老婆:“为什么衣柜在嗡嗡叫?”)。
  • 在论坛哭穷求赞助(结果只收到一堆“+1”和狗头表情)。
  • 最终,我悟了——程序员的最大敌人不是Bug,而是贫穷的想象力(和钱包)……
    (未完待续,下一章:《如何让AI假装陪人打牌》)
    “用Go做游戏:没用大模型折腾3个月 vs 用大模型只花3天!”

    从代码菜鸟到怀旧游戏开发者:一段意外的旅程

    当技术没有”魔法”时

    回想那个没有LLM的年代,debug简直是一场修行。每一行代码都得用肉眼扫描,每个报错都得在论坛里大海捞针。三个月的时光,足够我:

  • 把文档翻烂
  • 屏幕盯出重影
  • 和IDE培养出”你不懂我”的微妙关系
  • 动机?比工资还单纯

    做游戏就图俩字:情怀。没想推广,更没想赚大钱,就是觉得:

  • 小时候的游戏消失得太快了
  • 总有人和我一样怀念那些像素小人
  • 自己动手比等官方重制靠谱(也更穷)
  • 惊喜来得像游戏彩蛋

    一年后突然发现:玩家居然还在线!

  • 这感觉堪比通关后解锁隐藏结局
  • 比年终奖更快乐(毕竟没年终奖)
  • 突然理解老任天堂员工的幸福感
  • 最后得出结论:用爱发电,偶尔真能亮一盏灯
    “用Go做游戏:没用大模型折腾3个月 vs 用大模型只花3天!”

    02

    Escoba:用大模型,3 天搞定

    AI抢饭碗记:从纸牌游戏到失业危机

    跨越大洋的纸牌教学

    一年后我回到阿根廷老家,准备把家族传统手艺——Escoba纸牌传给小侄子。看着小屁孩把牌甩得满地都是,我突然灵光一闪:

  • “现在AI这么猛,要是再做款游戏,应该比忽悠熊孩子容易多了吧?”*
  • 程序员の诡计

    我的计划很简单粗暴:

  • 复制粘贴大法——直接把之前写的Truco纸牌后端拿来用
  • 让AI当苦力——把Escoba规则写成小作文丢给Claude
  • 坐等奇迹发生——准备见证AI毁灭程序员工作的历史时刻
  • 惊悚时刻

    结果Claude第一次生成的代码就perfectly works!我的反应be like:
    大脑: 哇塞AI好厉害!钱包: 完蛋我要失业了!手指: 颤抖着更新了领英简历…

    后记

    现在每次看到AI新闻我都会:

  • 先给Claude买个月会员表忠心
  • 然后偷偷把简历里的”熟练掌握AI”改成”曾击败AI”
  • 毕竟,要和抢饭碗的AI搞好关系啊!(手动狗头)

  • 《人类の生存之道》新章节:如何让AI觉得你还有利用价值*
  • “用Go做游戏:没用大模型折腾3个月 vs 用大模型只花3天!”

    当代码与Bug共舞:一段开发者的奇幻漂流

  • 我的”锦上添花”时刻*
  • 不得不说,有时候给程序加点功能就像给秃顶大叔带上假发——表面看着挺聪明(bot变聪明了),但底下还是那一套老代码。我就像一个自以为是的理发师,边剪边嘟囔:”这里加点逻辑,那里优化下算法…”直到发现——

  • 那个该死的append*
  • 它就像派对上喝醉的客人,本应该安静地坐在actions列表的末尾,结果却跑到中间跳起了脱衣舞——还顺手改了action的裙子长度!

  • 前端的噩梦*
  • 如果说后端开发是在游泳池里优雅地蛙泳,那么前端就是用勺子在大西洋里划船。React?更像是让我”react”的尖叫声:”为什么这玩意儿又不工作了?!”

  • WASM的黑盒魔术*
  • 想象一下:你买了个魔术盒,说明书是用克林贡语写的,每次伸手进去摸到的不是兔子,而是一团纠缠不清的状态管理代码。”惊喜!今天游戏状态又变成了undefined!”

  • JS调试的哲学思考*
  • 控制台.log(“我开始怀疑人生”);
    // 输出:[Object object]
    原来不止我的代码难以理解,连我的生活也被JavaScript对象化了。

  • 结论*
  • 程序员的生活就像在写bug:

  • 写的时候觉得自己是天才
  • 跑起来发现自己是白痴
  • 修好后假装一切都在计划中
  • 03

    一步步来,自己做一款游戏有多难?

    人人都能当游戏开发商的时代来了!

    读到这儿,估计不少程序猿已经摩拳擦掌:”就这?我也行!”——没错,高手也是从井字棋(Tic-Tac-Toe)开始的!

    超简易版「三连珠豪华套餐」(带外送服务)

  • 后端厨房* [神秘代码传送门](假装这里有个链接)
  • 前端餐厅* [神秘代码传送门](假装这里有个链接)
  • 试玩不用换鞋 [VIP体验通道](假装这里有个链接) 温馨提示:输了请砸自家键盘,别找我赔

    为什么推荐这道”开胃菜”?

  • 代码量比相亲对象的聊天记录还短
  • 部署难度低于给路由器插电源
  • 机器人对手AI水平——和你家微波炉差不多智能
  • 温馨提醒:如果连这都看不懂…建议改行去路边摆摊卖炸串,收入可能比程序员高“用Go做游戏:没用大模型折腾3个月 vs 用大模型只花3天!”

    回合制游戏开发指南:从菜鸟到被玩家骂哭的必经之路

    后端篇:代码堆叠的艺术

  • 游戏状态的哲学思考
  • 先定义个 `GameState`,就假装你知道玩家在玩什么
  • 初始棋盘?随便啦,先塞点东西进去,反正后面会改
  • 操作列表当然是空的,不然玩家岂不是一开始就能赢?
  • 假装你很智能的“可选动作”函数
  • 写个 `CalculatePossibleActions()`,告诉玩家“你能干嘛”
  • 99% 的时候返回“你不能这么干”,让玩家怀疑人生
  • “运行操作”其实是暴力修改数据
  • `RunAction()` 其实就是随便改改游戏状态
  • 重点是让前端觉得你在做复杂计算(实际就 if-else 套娃)
  • Bot 的智慧?随机数生成器罢了
  • 写个 `BotChooseAction()`
  • 80% 情况选最优解,20% 故意犯错,假装 AI 有“性格”
  • 警告:别做联机对战!除非你想负债买服务器
  • 前端篇:渲染,点击,等待,崩溃

  • 先让界面像个游戏
  • 调用后端拿到 `GameState`
  • 画出来,确保玩家不会误以为这是个 Word 文档
  • 让玩家觉得自己有选择权
  • 展示操作按钮,然后在他们点的时候说“不行”
  • 玩家:“???”
  • 和 WASM 后端的爱恨情仇
  • 操作传给后端,后端:“我算一下……”(实际在摸鱼)
  • 如果轮到 Bot,前端假装它在思考(其实早就决定好了)
  • WASM 篇:让 Go 代码在前端痛苦挣扎

  • 编译?不如说是减肥计划
  • 标准 Go 编译 → 二进制比恐龙还大
  • TinyGo → 勉强塞进手机,祈祷用户别摔手机
  • 必须做的事
  • 用 `select {}` 卡住程序,否则 WASM 会秒退(像极了下班时的你)
  • 全局变量存放游戏状态,因为 Go 和 JS 的关系就像“我和前任”
  • 数据交流?全靠 JSON
  • 不能直接传 Go 结构体,所以 JSON 成了最大赢家
  • 反复序列化、反序列化,CPU 能量转化成热能温暖你的手
  • 前端调用 WASM:一场信任危机

  • WASM 是上帝
  • 前端只能卑微地请求修改,不能直接动手
  • 每次修改后重新编译,祈祷不会报错
  • Makefile 自动化
  • 一键编译、替换,并附赠一份“编译失败”的随机体验
  • 别忘了 `wasm_exec.js`,不然 WASM 会在浏览器里迷路
  • 本地调试?哈哈
  • `http-server` 启动本地服务,然后看着控制台疯狂报错
  • 常见错误:“这怎么又不行?!”
  • 总结

  • 后端:定义、计算、改状态,假装自己很懂游戏
  • 前端:渲染、交互、背锅,玩家骂街的第一责任人
  • WASM:让 Go 和 JS 相爱相杀,顺便烤熟你的手机
  • 最终目标*:做出一个能运行的游戏(玩家是否会喜欢?那是另一个问题了)。
  • “用Go做游戏:没用大模型折腾3个月 vs 用大模型只花3天!”

    04

    总结

    我的游戏开发进度条:从蜗牛到火箭

    从前,我是个倔强的”纯手工”游戏开发者:

  • 第一幕:蜗牛竞速模式
  • 三个月!整整三个月!我只憋出了一个勉强能跑的小游戏,期间咖啡因摄入量足以让一头大象失眠。

  • 第二幕:召唤AI外挂
  • 某天突然想通:”为什么要和效率过不去?”于是请来LLM当副驾驶——三天后,一个活蹦乱跳的游戏demo已经在对玩家抛媚眼了!

  • 终极大Boss依然存在
  • 每当听到”前端报错”或”WASM崩溃”,我就条件反射地想对着显示器打咏春拳。别担心,这是每位勇士的必经试炼。
    本文灵感来源于某神秘组织”CSDN”的加密通信。如果你的手指突然开始发痒想敲代码…不用怀疑,这就是游戏之神的召唤!

    © 版权声明

    相关文章