18 ms·
Making games in Go: 3 months without LLMs vs. 3 days with LLMs
- danjl 1y agoThe LLM started with a three month headstart, both in terms of code, using the previous game as a template, and more importantly, all of the learnings and mistakes you made in the hand-coded pass.
- sneak 1y ago[flagged]
- k__ 1y agoBut they're right and you're not addressing anything
- fsloth 1y agoI don’t get these arguments. Just because LLM learned the entire internet does not mean it can’t 10x a developer. Were all standing on shoulders of giants - LLM or no LLM. LLM gives you extra pair of ladders. That are wobbly for sure. But ladders still. Using LLM invalidates nothing and the 10x stories are totally plausible. The plagiarization argument is to me moot - most of us are plagiarizing previous work, weather we know it or not.
- MyOutfitIsVague 1y agoThat wasn't the argument at all. If I wrote a card game in 3 months, then cloned the repository and used that as a base to implement a different card game, it would be significantly faster with or without LLMs. The argument is that it's not really an apples-to-apples comparison. "I wrote a game in 3 months and then used an LLM in 3 days to fork it and make some changes" is not the same thing as "I spent 3 months doing something that I could do in 3 days with LLMs". I believe LLM-driven development is powerful (though I hate seeing "10x" everywhere, and have hated it long before LLM coding was big, when it was talking about supposedly superhuman coders), but this is not a good comparison, and the argument is sound.
- ModernMech 1y agoExactly true. I've had the experience of implementing a programming language in two different languages. The first time it took half a year. The second time it was done in a month, because it was really only a matter of translating all of the code from one c-style imperative language to another, and swapping out the important library code and function calls. Maybe AI can take that process from a month down to 3 days, and that's great and all, a 10x improvement! But you don't go from 6 months to 3 days without doing the 6 months first.
- deleted 1y ago[deleted]
- virgildotcodes 1y ago[flagged]
- fsloth 1y ago” but it only did so by stochastically parroting hallucinated slop” I’m not sure what the argument here is. That you should only use the most primitive tools available? ”LLMs suck” arguments sound exactly like ”IDE:s suck! True engineers writes everything in notepad.exe”. Or ”debuggers suck! Use only printfs!” People have different ways of cognition and different strategies of problem solving and tool use. The fact you can’t understand other persons tool use is not an argument against those tools. It simply points out the tools may not be usefull to the critics mode of cognition or problem solving. Not that the tools suck.
- virgildotcodes 1y agoI was being ironic! I thought the chain of greatest hits in that phrase would give it away, if not the following words.
- petralithic 1y agoThey're being sarcastic, they're parodying common objections people have about AI, it's not about the technology at all but about their feeling of obsolescence which impacts their pride.
- keeda 1y agohttps://ai.vixra.org/pdf/2506.0065v1.pdf https://ai.vixra.org/pdf/2506.0065v1.pdf
- latexr 1y agoNot only that but it was also their first game, meaning they faced a ton of unknown unknowns which are no longer there. If they were starting to program a card game today without LLMs they would still be able to apply all the knowledge and insights they gained from the previous experience; it would take significantly less than three months.
- AIPedant 1y agoYeah, I figured this was clickbait but my jaw still dropped a bit when I saw this: I cloned the backend for Truco and gave Claude a long prompt explaining the rules of Escoba and asking it to refactor the code to implement it. How long would it take the human dev to refactor the code themselves? I think it's plausible that it would be longer than 3 days, but maybe not!
- globular-toast 1y agoI don't know I feel like rewriting a backend for one card game into a backend for another wouldn't be that difficult, especially for the original dev. Once you've worked out how to represent cards and code the rules you're basically there for any card game. Also, a refactor is by definition rewriting code without changing the behaviour. Worth knowing the difference.
- dingnuts 1y agoAs an LLM hater, I have to say, this is exactly the use case I want code generation for. If I need to figure out the problem as I develop, which is the case for new code, the model can kindly get out of my way. But if I have already written a bunch of code and I can explain the problem with the understanding that I've gained from my implementation and have the bot redo the grunt work? fine with me..
- GaggiX 1y ago>As an LLM hater I thought this was the start of a joke or something, I guess if you use LLMs you are a "LLM lover" then.
- riazrizvi 1y agoYou don’t even need to clone it. I’ve re-created months long projects from scratch and next time around it takes me around 1/3 of the time of the last, ballpark.
- deadbabe 1y agoA developer who can build a game by hand in 24 hours could probably build and publish something very polished and professional on Steam within 3 days using LLMs, which leads to some kind of software Fermi paradox: where are all the games??
- all2 1y agoIf they're like me, they finish something and then sit on it for a variety of anxiety inducing reasons. I've got a state chart library I'm sitting on that I'm quite hesitant to share...
- leetrout 1y agoShare it!
- tonyedgecombe 1y agoYes, these LLM’s need feeding.
- all2 1y agoGiven that it's human directed AI slop, they'll be feeding on themselves.
- macleginn 1y agoLLMs can't help much with assets?
- schaefer 1y agoBut image generation and cloning a visual artist’s style is one of AI’s apparent strengths. So it’s interesting to think about what the gaps are between fulfilling a single prompt and completing a project.
- 1y ago
- starchild3001 1y agoWhat I like about this post is that it highlights something a lot of devs gloss over: the coding part of game development was never really the bottleneck. A solo developer can crank out mechanics pretty quickly, with or without AI. The real grind is in all the invisible layers on top; balancing the loop, tuning difficulty, creating assets that don’t look uncanny, and building enough polish to hold someone’s attention for more than 5 minutes. That’s why we’re not suddenly drowning in brilliant Steam releases post-LLMs. The tech has lowered one wall, but the taller walls remain. It’s like the rise of Unity in the 2010s: the engine democratized making games, but we didn’t see a proportional explosion of good game, just more attempts. LLMs are doing the same thing for code, and image models are starting to do it for art, but neither can tell you if your game is actually fun. The interesting question to me is: what happens when AI can not only implement but also playtest -- running thousands of iterations of your loop, surfacing which mechanics keep simulated players engaged? That’s when we start moving beyond "AI as productivity hack" into "AI as collaborator in design." We’re not there yet, but this article feels like an early data point along that trajectory.
- danjl 1y agoAs a much lower bar, I'd love it if more of the LLMs used for coding were actually multimodal, accepting images of games as part of the context. In general, LLMs are far better at generating web apps than they are at pure 2D or 3D games that use graphical APIs. There's far less training data, and there's no way to test anywhere close to what you can do with testing on a DOM. In an interactive game, with physics, animations and game logic, the AI just falls on its face because of the complexity.
- benbreen 1y agoI realize this isn't the same thing as your point about images as part of training data, but just flagging it in case anyone isn't aware: Claude Code lets you copy and paste images into terminal. I've been designing a "universal history simulator" game for use in my history classes lately, and it is really helpful to be able to make a mockup of a ui change I want and then paste it in, rather than trying to explain it verbally. Also good for debugging graphics issues.
- kousthub 1y agoAsking for information - Is Go/wasm doing something here which React/JavaScript cannot?
- garbagepatch 1y agoThe front end is still react. But I'd be curious to know if LLM's are less prone to errors generating code for strongly typed languages over others like Javascript.
- adastra22 1y agoIn my experience, a massive YES. At least with agenetic models that have an iteration loop, and in languages like Rust where the type system is strong enough to prevent categories of bugs.
- furyofantares 1y agoFrom experience: A static type system is MUCH better for agents than dynamic. I've done a few projects both ways - the agent is just much, much better with the static system because it sees compile errors right away, and also has access to better static analysis tools. I don't know how much the types themselves help the LLM, it's better context but more tokens, but the agent seeing errors is just a huge difference. It's also much easier for you as a developer to digest the code if you need to refactor because you got lazy and accepted some slop.
- znort_ 1y agoin this case, no. it's a client game and performance isn't at all critical, so the state and loop could be trivially handled by a regular js function. if at some point a server architecture was desired, it would be trivial to host that function on node. my take: as a backend developer he was fixated with the idea of having a server no matter what (if your only tool is a hammer, everything looks like a nail), and as go was his main language he just went with that. then he figured out it didn't really have a point, but instead of just translating that simple logic to js he overengineered the whole thing and overcomplicated his design and build process by transpiling to wasm. there are some bugs, though. i just won a couple of matches at escoba (very nice little game, i hadn't played this for ... decades!) and the game state wasn't properly reset for the next. that's probably the llm ...
- bgwalter 1y ago[flagged]
- youtubeuser 1y agoWhat model did you use?
- hollowturtle 1y ago[flagged]
- hollowturtle 1y agoThe only reason I can think of is some sort of virtue signaling, like to promote one self. But even then why not spending ~6 months and super polish the game that would make you look like a rockstar? Eventually using ai in the process to learn where it can be useful... otherwise i don't understand
- epolanski 1y agoCan you show us what you have shipped solo and share how many users it has? Because if you have nothing, let me remind you that talk is cheap.
- jama211 1y agoIt’s certainly more polished than your sense of judgement for others.
- fxtentacle 1y agocough how about 24 hours? https://nordicgamejam.com/ https://nordicgamejam.com/ I've been participating in these for way longer than our current breed of LLMs or GenAI or engines. Back in the day, your best option was Microsoft's XNA and C#. (Unity had not been invented yet.) Plus most art looked like hand-drawn in paint, because it was. Still, we saw plenty of enjoyable games each year. And some made it to a wider audience, like Baba is You or Braid. The coding was never the bottleneck. I strongly believe it's the communication among team members.
- zahlman 1y ago> I strongly believe it's the communication among team members. "Communication" within your own head is often also surprisingly difficult.
- estimator7292 1y agoI like LLMs because it helps abstract code in a way that's more directly compatible with how I think about programs. When I read code, it gets turned into something akin to an AST, where functions and calls are more of an abstract notion of input and result. The LLM vastly simplifies the inverse process. Instead of having to go and find the way to represent an idea in code, or digging through my memory and code archives for an example, I can instead tell the LLM to write the boilerplate to initialize WiFi or whatever. It simplifies code into Lego pieces that I can assemble into a program that's more representative of my internal conception of the problem. I've been flying through different programming languages with LLMs. When the text and grammar can be abstracted away, I can focus on the program. I was able to do this before LLMs, but with a lot more effort. Like, sure, I don't learn a whole lot about each language as I go, but that's exactly the point. The text and semantics of any one language should be largely irrelevant to the logical flow of the program itself. The text is nothing more than a semi-standardized way of representing logic in a form that can be parsed by machines and (secondarily) by humans. First we abstracted machine code to assembly. Then low level languages like C, then higher and higher level languages until the machine itself became utterly irrelevant. It only seems natural that we'd further abstract these languages and move closer to the goal of programming instead of coding. I don't think we've even seen hints of how this will look in the end, but I'm certain that we'll spend less and less time writing and more time programming.
- jama211 1y agoWell said. And I’m sure there were people back in the day that said anyone coding in c instead of assembly didn’t truely understand the machine code and this could one day bite them in the ass. AI is a tool and it’s clearer than ever to me now that the tool’s best job is abstracting tedious implementation details away from the developer, in much the same way that I never have to bother with manual memory management in my programs written in modern languages the way I once used to with c. We no longer need to deal with segfaults, so why not also no longer having to deal with tracking down documentation or examples to implement simple blocks of code.
- Keyframe 1y agoIt took me few days on and off to do this with llm: https://www.susmel.com/stacky/ https://www.susmel.com/stacky/ overall I'd say around two working days. I used it as a test ground first for greenfield and then Brownfield development, so nothing serious, but I found myself in a loop of ever growing details I wanted tuned, more and more features (super rotations system, das, this and that).. I'd say it's maybe 10-20% of where I'd take it as a full game, even have a webgl version functional somewhere.. but I had to stop before I started making my ultimate Tetris since I don't want to get sued nor I have (probably) money for a full license to drive it through the end. I heard they charge a pretty penny.. but I am now confident I could drive it home and that's what I took, the experience, to other software development with llm now. the other day there was an interesting link here on HN about parametric functions. I got an itch then as well, and within an hour or two a playground: https://www.susmel.com/graphy https://www.susmel.com/graphy but also, details, details, details. If you know what you wanna see it's quite enjoyable actually.
- singpolyma3 1y agoIf you want an all client side game... Why do you write it as though it has a "backend"? Why use different tech for "backend" vs the whole app?
- Halian 1y agoAI slop must be abolished.
- platevoltage 1y agoGiven that the slop factories are being propped up by governments around the world, and and pretty much the reason why the stock market is inflated to the point that it is right now, probably won't happen. We as a species are going to have to collectively decide it's not acceptable.
- rustystump 1y agoI have done a decent amount of hobby game dev including completing several games. The comments here i think show a strong lack of real game dev knowledge. Coding is a hard part of game dev. Coming up with interesting novel mechanics or plays on known genres is rather easy but bringing them to life is hard esp the code. Multiplayer vampire survivors but with giant battletech mech customization. See, very easy. Good luck building that with an LLM. This uses well known card games as the mechanics which is about as interesting as snake games. This is not a knock at the op. But it is clear many people here havent done much game dev from the comments.
- jama211 1y agoI largely agree with your point, but interestingly I’ve always found the ideas and blue sky thinking game design part the hardest personally. I can code nearly any game mechanic at this point, but struggle with the writing/creativity part of game development. If you find that easy, you should consider yourself rather blessed, it doesn’t come naturally to us all.
- rustystump 1y agoPeople build up too great of expectations when the topic of “creativity” comes in. Nothing is new under the sun. Also, i press “x” to doubt you can build any game mechanic not because i have no doubt you are a talented engineer but because the domain is really that vast. Multiplayer netcode is a prime example and why I used an idea which had a multiplayer component that was realtime. Ideas are cheap. Making them real is not. It is why engineers get paid so well.
- jama211 1y agoHah. Obviously there’s probably something I can’t make but I mean it’s by far not the bottleneck for me. And funny you should say, because my last job was actually building peer to peer multiplayer netcode with fully deterministic rollback for a video game. It was hard and took years but we did it. I think you keep saying “ideas are easy” (for you) and insisting therefore they’re easy for everyone else. They’re really not, good ideas anyway.
- reactordev 1y agoI was happily reading along loving all the go until the last part. npx http-server No. Just use go. Other than that. Loved the article and I love making games (haven’t shipped one in a while, I should)
- reactordev 1y agohttps://gist.github.com/paulmach/7271283 https://gist.github.com/paulmach/7271283 It’s literally a one-liner of go to create an http server, http.FileServer that points to a directory. go run http.go You shouldn’t have to use npx when the tool at hand is perfectly capable.
- uncircle 1y agoWhy write 27 lines of Go (not one line) when you can do python -m http.server And still it is a silly argument because using npx is still less effort than having to write those 27 lines when zero will do. Sure, you dislike Javascript, do whatever you want. No need for pointless pedantry.
- reactordev 1y ago10 lines of that are comments, 4 of which are flags that aren’t required, nor is the 2 lines of white space and log lines. The guy goes through all this trouble with Golang, WASM, tinygo, just to field goal it on the 3 yard line.
- quantumHazer 1y agoThis comments shows that most of the users in this thread have not done game development. We are judging the usefulness of a LLM in a project that is really over represented in training data (a bunch of Intro to Programming courses requires a project like this, and in southern Europe countries we have a lot of similar games like the one in the blog) In the first year of college I reimplemented Moon Patrol in Python, I had no previous experience basically and it tooks me two/three months of work coding 3 days per week mostly. Coding a card game is easier than that. LLMs are useful for certain things but this is not a good way to benchmark their usefulness in any type of game development coding.
- MangoToupe 1y agoI wonder when it will sink in that greenfield projects are the worst possible project to benchmark agentic coding competency
- jongjong 1y agoIt feels like all the 'low hanging fruit' ideas in the software space are basically gone, made non-viable because of too much competition. It was already somewhat the case that software industry was very competitive, even before people could code entire apps with AI... At least you could find a niche which was too small to be of interest to big VCs. Now, it's like, regardless of whether you choose a big idea or a niche, you have to compete on a global scale with either big VC or big AI... This only leaves a few areas; niches which are both small and require very complex solutions; or software with low profit margins which have high risk of failure and short-lifespans (which is what most games are). Due to media saturation, for the former approach (complex niche), you basically have to market the solution to people door-to-door, one-by-one. My experience of the game sector is that it's very difficult. Before you even begin coding, the definition of runaway success is basically "Attain a few million views, then watch traffic dry up completely as the game becomes completely irrelevant over 6 months." I could never get into games because knowing that you probably won't get recurring income is just too demoralizing as a starting point. Building a game like Minecraft is basically outside of the realm of possibility... Games like Minecraft, World of Warcraft are essentially 1 in a million games. You're better off just buying lottery tickets. That said, I think the game sector seems to be more meritocratic than all other sectors of software that I'm aware of... Not sure that's saying much but I do think there is a correlation between quality and 'fun level' of the game and the short-term adoption of the game. Most other sectors of tech are a maze of regulatory capture, network effect monopolies or the sector is fully government-controlled to begin with. It would be nice if governments would tell people "Don't do a startup in this sector because we already decided which company will control that sector." because it sucks to find out after building a solution for 1 year.
- empressplay 1y agoWe got Claude to shim our ClayGL frontend and drop-replace it with Three.JS in a weekend. Now, there was a lot of cleanup to be sure, but it still saved a ton of work!
- spicyusername 1y agoI cloned the backend for Truco and gave Claude a long prompt explaining the rules of Escoba and asking it to refactor the code to implement it. Definitely still incredible by 2019 standards. Absolutely no doubt. But by LLM standards, feeding it the entire working codebase of a simple, similar, game you wrote by hand as context is basically doing all the work yourself still.
- sbinnee 1y agoMaybe that’s how we are supposed to work with current LLMs. Having a template or an example we understand is a big advantage. It can prevent LLM from many pitfalls, and more importantly we can easily review the output.
- zakki 1y agoon Escoba when I clicked info, I can't close the info window and I have to refresh the page. Would be helpful if there is How to Play in English.
- guywithahat 1y agoI played around with making games in go for a while and found limited benefits. Go routines, while great, have too much latency to meaningfully parallelized simple tasks between the in-game ticks per second (~60hz). Along the same lines, channels end up having too many allocations/frees and read/writes to be useful at such a normal ticks per second (TPS). The result is you can't use the best features of go, and even the 2D engine I used (ebiten) didn't use go routines or channels anywhere in the engine. I like the idea of making games in Go, but the language's best features don't shine well, and I struggle to imagine it ever taking off beyond a hobby game language. https://thomashansen.xyz/blog/ebiten-and-go.html https://thomashansen.xyz/blog/ebiten-and-go.html
- p0w3n3d 1y agoTo me the most complicated thing in every project is the business knowledge. It's the tribal knowledge like "do not send null in this endpoint" or what happens when a request A will be send after B was sent to C and the mercury was in conjunction with venus on an odd day of march (answer: everything would explode). And LLM are solving 20% of my work, while the other things are talking to people, inventing new tests etc. I wonder btw. why the LLM bubble created problems on developers' hiring market. Were those companies thinking that LLM will write the code on its own?
- DrThomasAger 1y agoNow, it's all about ideas.
- duongital 1y agoWhen it comes to game development, I think we should choose a single language for both the front end and back end. This would make it easier for Claude Code to understand the context and remove the need to explain different services to the LLM model.
- ozgrakkurt 1y agoNewsflash! A dev that doesn’t know what they are doing uses LLM to generate slop, and the slop seems better than doing it manually
- afroboy 1y agoThen where is GTA6?
- flashgordon 1y agoDang it. And here I was thinking I was a genius for working on a game written in Go and served via wasm (mainly for saving on serving costs). Well I guess il put a positive spin on it and consider it vindication:)
- bitbasher 1y agoGo's WASM binaries are huge. You can get far with tinygo, but that means you can't use anything that relies on CGO. I eventually left Go and went to Rust for better WASM support... seems to get me a lot further!
- novoreorx 1y agoI'm curious about the necessity of introducing the 'backend' concept when making a game like this. Why bother wrapping a Go backend in WASM when you can implement it directly in JavaScript?