网易首页 > 网易号 > 正文 申请入驻

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

0
分享至


【CSDN 编者按】在 AI 大模型席卷编程世界之前,很多开发者做 Side Project 靠的就是“死磕”:查文档、踩坑、调试,一个小游戏能折腾三个月。而如今,大模型不仅能写样例代码,还能帮你快速迁移业务逻辑、实现复杂规则。本文作者就用亲身经历对比了“没用大模型时花 3 个月 vs 用大模型只花 3 天”的真实差距。

原文链接:https://marianogappa.github.io/software/2025/08/24/i-made-two-card-games-in-go/

作者 | Mariano Gappa 翻译 | 郑丽媛

出品 | CSDN(ID:CSDNnews)

我写了 15 年代码,但直到最近才发现:我居然从没真正独立开发并发布过一款游戏。

小时候我在阿根廷长大,经常和朋友一起玩纸牌。于是我想,不如就做一个阿根廷人最常玩的纸牌游戏吧。于是我问 ChatGPT:

我:阿根廷最常见的纸牌游戏是什么?给个简短答案就好。 ChatGPT:Truco。

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

2024 年 6 月 18 日,我开始在业余时间开发 Truco。作为一名长期写 Go 的后端开发者,后台逻辑不难。但难点在于 UI 和“如何不花钱把游戏长期托管上线”。

于是问题逐一拆解:


当时我还没用 LLM,所以每个细节都得自己踩坑、查文档、调试。最终花了大概 3 个月才把游戏做出来。我本就没打算推广或变现,只是单纯想把项目做完,顺便让大家能再玩玩童年的游戏。一年后,我发现居然还有人在玩这个游戏,完全是意外惊喜。


Escoba:用大模型,3 天搞定

一年后我回阿根廷探亲,教侄子玩另一款经典纸牌——Escoba。这次我想:既然现在 LLM 已经这么普及了,那我要是再做一款游戏,会不会快得多?于是我决定试试。

我直接复制了 Truco 的后端,把 Escoba 的规则写成一个长提示词交给 Claude,让它改写代码。没想到,第一次就几乎完美运行——当时我甚至心里一凉:完了,工作要被替代了。

唯一的问题是,它在某处用错了 append 并修改了 action。除此之外,我只补了点“锦上添花”的功能(比如更聪明的 bot)。

但前端就没那么顺利了,我还是花了几天时间才搞定。主要原因并不是 LLM 的问题,而是我自己 React 水平有限,再加上整个架构比较奇怪——让一个黑盒 WASM 函数管理游戏状态。再加上 JavaScript 调试也很麻烦,开发过程一度令我相当头疼。

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

估计很多人读到这里会想:能不能自己也搞一个?其实用我这套技术栈并不复杂,我给大家做了个最小化的井字棋(Tic-Tac-Toe)示例仓库,直接 fork 就能上手:

后端:https://github.com/marianogappa/tictactoe-backend

前端:https://github.com/marianogappa/tictactoe-frontend

欢迎在线试玩:https://marianogappa.github.io/tictactoe-frontend/

后端逻辑(Backend)

一个回合制游戏的后端其实非常直白:

1、定义 GameState(比如棋盘初始状态、空操作列表)。

2、实现 CalculatePossibleActions,告诉前端哪些操作有效。

3、实现 RunAction,更新游戏状态。

4、如果有 bot,就写个函数根据当前状态选择操作。

这样就够了!(注意:别做“人对人”联机对战,除非你愿意掏钱买服务器。)

前端逻辑(Frontend)

虽然我不算前端专家,但流程也不复杂:

1、调用后端创建 GameState。

2、在界面上渲染出来。

3、让玩家选择一个操作。

4、把操作传给后端应用。

5、如果轮到 bot,再触发 bot 的操作。

完事!

后端编译成 WASM

为了在前端调用 Go 代码,需要把后端编译成 WASM:

GOARCH=wasm GOOS=js go build -o main.wasm main.go

但这样出来的二进制太大,尤其在手机上很慢。建议用 TinyGo 编译,体积会小很多。

编译前要准备一个专门的入口文件,导出需要给前端调用的函数,比如:

//go:build tinygo
// +build tinygo

packagemain

[...]

funcmain() {
js.Global().Set("trucoNew", js.FuncOf(trucoNew))
js.Global().Set("trucoRunAction", js.FuncOf(trucoRunAction))
js.Global().Set("trucoBotRunAction", js.FuncOf(trucoBotRunAction))
select {}
}

var (
state*truco.GameState// "Global variable" for the GameState
bottruco.Bot
)

注意最后一定要用 select {} 阻塞住,不然程序会立即退出。

数据交互

WASM 不能直接序列化 Go 结构体,所以要用 JSON 作为中间层。基本套路如下:

functrucoRunAction(thisjs.Value, p []js.Value) interface{} { // Always this signature
// Read the input JSON
jsonBytes:= make([]byte, p[0].Length())
js.CopyBytesToGo(jsonBytes, p[0])

// 1. Decode the input JSON to your struct
// 2. Run your Go code, return an output struct
// 3. Encode the output struct to JSON
newBytes:=_runAction(jsonBytes)

// Return the output JSON
buffer:=js.Global().Get("Uint8Array").New(len(newBytes))
js.CopyBytesToJS(buffer, newBytes)
returnbuffer
}

前端调用 WASM

在前端调用时,可以写一个封装函数:

functionjsRunAction(data) {
constencoder=newTextEncoder();
constencodedData=encoder.encode(JSON.stringify(data));
constresult=trucoRunAction(encodedData);
constjson=newTextDecoder().decode(result);
returnJSON.parse(json);
}

letgameState=jsNewGame();

// Note that RunAction doesn't take a GameState.
// WASM is the source of truth; your frontend can't mutate it.
gameState=jsRunAction(action);

WASM 是“唯一真相来源”,前端不能直接改游戏状态。每次修改后都要重新编译后端,把生成的 main.wasm 替换掉。

我写了个 Makefile 脚本来自动化:

compile_library:
cd $(GOPATH)/src/github.com/marianogappa/escoba && \
TINYGOROOT=/usr/local/Cellar/tinygo/0.38.0 tinygo build -o main.wasm -target wasm main_wasm.go && \
mv main.wasm $(CURDIR)/public/wasm/wasm.wasm && \
cp /usr/local/Cellar/tinygo/0.38.0/targets/wasm_exec.js $(CURDIR)/public/wasm/wasm_exec.js && \
cd -

别忘了 wasm_exec.js 也要拷贝,并在 HTML 里加:


 script> 


本地调试

这在 Github Pages 中会自动运行,但在本地,你需要通过 HTTP 提供文件。你可以使用 http-server:

npx http-server ./public -p 8080


总结

这一路下来我收获颇多:

● 没用 LLM 时,3 个月才勉强做完一个游戏;

● 借助 LLM 时,3 天就能上线一个可玩的版本;

● 当然,前端和 WASM 调试依然是最大挑战。

希望我的经验能帮到你,也许能激发你亲手做一款小游戏。


【活动分享】2025 全球机器学习技术大会(ML-Summit)北京站将于 2025 年 10 月 16-17 日在北京威斯汀酒店举办。大会共 12 大主题、50+ 海内外专家,聚焦大模型技术和应用变革。详情参考官网:https://ml-summit.org (或点击原文链接)。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
她赴英留学,却与上千外国男子有染并拍成视频,父母与她断绝关系

她赴英留学,却与上千外国男子有染并拍成视频,父母与她断绝关系

阿胡
2026-01-21 17:34:15
以色列递交给美国的伊朗处决证据,为何引发全球哗然?

以色列递交给美国的伊朗处决证据,为何引发全球哗然?

老马拉车莫少装
2026-01-25 08:06:06
父亲家暴15年,女儿带母亲逃离后无意翻开母亲手机,将其残忍杀害

父亲家暴15年,女儿带母亲逃离后无意翻开母亲手机,将其残忍杀害

罪案洞察者
2025-09-05 11:38:36
李湘被封禁10天后,王岳伦不再沉默,澄清两大谣言,舆论却一边倒

李湘被封禁10天后,王岳伦不再沉默,澄清两大谣言,舆论却一边倒

喜欢历史的阿繁
2026-01-27 03:39:07
中日开战可能性增大,但收场太难,若真动手,中方估计半步都不退

中日开战可能性增大,但收场太难,若真动手,中方估计半步都不退

百态人间
2026-01-03 16:42:15
U23亚洲杯结束仅1天,亚足联宣布新消息,下届分档出炉 中国第3档

U23亚洲杯结束仅1天,亚足联宣布新消息,下届分档出炉 中国第3档

大秦壁虎白话体育
2026-01-26 08:14:34
比5G快24倍!美国研发140GHz超高频Wi-Fi芯片:速度达120Gbps

比5G快24倍!美国研发140GHz超高频Wi-Fi芯片:速度达120Gbps

快科技
2026-01-26 15:10:09
2月逆风翻盘,钞票多得装麻袋,这3生肖转大运,日子富得流油

2月逆风翻盘,钞票多得装麻袋,这3生肖转大运,日子富得流油

人閒情事
2026-01-22 12:05:04
原来马斯克没说错,全球抢的不是芯片,而是中国随处可见的变压器

原来马斯克没说错,全球抢的不是芯片,而是中国随处可见的变压器

老屬科普
2026-01-25 19:19:39
医生发现:那些常年吃降脂药的人,到65岁后,很多都变成了这样!

医生发现:那些常年吃降脂药的人,到65岁后,很多都变成了这样!

健康科普365
2026-01-22 07:10:09
性行为缺失会促癌?华中大最新:性行为缺失会削弱抗癌免疫力,保持性行为则有利于抗癌

性行为缺失会促癌?华中大最新:性行为缺失会削弱抗癌免疫力,保持性行为则有利于抗癌

医诺维
2026-01-26 17:02:36
回国了我才敢说:委内瑞拉,是我去过的所有国家中,最被看轻的!

回国了我才敢说:委内瑞拉,是我去过的所有国家中,最被看轻的!

阿纂看事
2026-01-09 09:48:35
2015年,全军唯一"父子上将"家族遭遇沉重打击,小儿子撒手人寰

2015年,全军唯一"父子上将"家族遭遇沉重打击,小儿子撒手人寰

磊子讲史
2026-01-04 12:58:36
主打一个相信,恩佐在埃斯特旺破门前5秒就提前开始庆祝了

主打一个相信,恩佐在埃斯特旺破门前5秒就提前开始庆祝了

懂球帝
2026-01-26 17:43:28
夫妻有属这个生肖,注定惹不起,一辈子钱财不缺,迟早享福

夫妻有属这个生肖,注定惹不起,一辈子钱财不缺,迟早享福

人閒情事
2026-01-26 10:23:01
知名女主播酒后失言,公开发表邪教言论,账号马上被封号

知名女主播酒后失言,公开发表邪教言论,账号马上被封号

新游戏大妹子
2026-01-20 11:56:15
508 米!亚历克斯·霍诺德完成了徒手攀登台北 101 大楼,传奇仍在继续

508 米!亚历克斯·霍诺德完成了徒手攀登台北 101 大楼,传奇仍在继续

理想生活实验室
2026-01-25 22:46:54
【全文+番外】晚风不识旧时约:江吟晚陆怀璟小说在线阅读大结局

【全文+番外】晚风不识旧时约:江吟晚陆怀璟小说在线阅读大结局

栖云气象
2026-01-26 13:08:07
胡春华发表署名文章

胡春华发表署名文章

社评
2025-10-31 10:11:37
牢A曝留学生圈乱象:我见过太多被毁掉的女孩,她们本不该这样!

牢A曝留学生圈乱象:我见过太多被毁掉的女孩,她们本不该这样!

云中浮生
2026-01-21 13:59:13
2026-01-27 04:39:01
CSDN incentive-icons
CSDN
成就一亿技术人
26282文章数 242221关注度
往期回顾 全部

科技要闻

印奇再上牌桌,阶跃融资50亿

头条要闻

女子被丈夫和闺蜜背叛一夜白头:听到儿子叫第三者妈妈

头条要闻

女子被丈夫和闺蜜背叛一夜白头:听到儿子叫第三者妈妈

体育要闻

叛逆的大公子,要砸了贝克汉姆这块招牌

娱乐要闻

张雨绮被抵制成功!辽视春晚已将她除名

财经要闻

从美式斩杀线看中国社会的制度韧性构建

汽车要闻

宾利第四台Batur敞篷版发布 解锁四项定制创新

态度原创

亲子
健康
家居
手机
公开课

亲子要闻

娃上课坐不住、小动作不断?不是调皮捣蛋,是大脑这个功能发育慢

耳石脱落为何让人天旋地转+恶心?

家居要闻

流韵雅居,让复杂变纯粹

手机要闻

华为Pura X2、OPPO Find N6、荣耀Magic V6,选择纠结了!

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版