Command and Conquer Generals natively ported to macOS, iPhone, iPad using Fable
174 points
2 hours ago
| 22 comments
| github.com
| HN
Eufrat
1 hour ago
[-]
IMHO, this is an actual good use of what sounds like a person guiding a model to do a mass conversion. Although, I wish the porting docs were a little wordsmithed by a human, the AI generated text style is grating.

The stakes are low, it’s mostly for fun and you can iterate on it. Compare this with Bun which was just like, “hey we converted everything to Bun to Rust from Zig, of course it works, what could possibly go wrong, I’ll totally write up a blogpost (that still doesn’t exist) explaining what we did, you can put this into your production environment soon!”

reply
johnfn
55 minutes ago
[-]
I don't really get the Bun thing. Bun is running Claude Code which is probably the single most actively used development app there is. You say this was a bad use of LLMs, but it's been in production for a while and I haven't heard of any evidence that Claude Code has increased a significantly larger quantity of errors, segfaults, etc, than before.
reply
Eufrat
28 minutes ago
[-]
Some people, myself included, think that announcing a conversion from Rust to Zig as an experiment then jumping to putting it in the alpha train for public testing/consumption without any real explanation in the span of around 2 weeks is irresponsible and reckless.

Blogposts were promised, details were hinted, but no, it’s just full steam ahead because the AI worked so well. The converted unit tests all worked, all the synthetic tests are okay, so what are you complaining about?

At some point, it’s less about the technical questions and more about getting that pesky human buy-in.

reply
qsort
35 minutes ago
[-]
I agree that the Bun rewrite is much more reasonable than knee-jerk reactions imply, however:

- I don't think Claude Code is using the Rust version yet in their official build

- Claude Code is not a particularly complicated piece of software from an engineering perspective (nor it's particularly well-engineered, at least at the moment).

So in my book "it runs Claude Code" would be pretty weak evidence that the rewrite is going to be successful (the tests they've done are much better evidence, but that's a topic for another time).

reply
Wowfunhappy
2 minutes ago
[-]
> - I don't think Claude Code is using the Rust version yet in their official build

No, I'm pretty sure it is, actually, since June 17:

https://code.claude.com/docs/en/changelog#2-1-181

>> Upgraded the bundled Bun runtime to 1.4

Now, Bun 1.4 doesn't seem to officially exist on https://bun.com/blog or https://github.com/oven-sh/bun/releases, so I can't be 100% sure this is the Rust version. However, I have to do some patching of the Claude Code binary to get it to run on my OS, and version 2.1.181 coincided with some changes that make suspect it's using Rust now.

reply
gpm
37 minutes ago
[-]
> it's been in production for a while

Huh... it looks to me like bun has yet to cut a release post Zig->Rust port (the latest one on github is still on a branch that says it's written in zig in the readme). I assume that nothing is using the rust version yet...

Which also cuts against the complaints about "of course it works [...] you can put this into your production environment soon!" since they don't seem to be asserting either of those things.

reply
Eufrat
25 minutes ago
[-]
The real problem is they explained nothing and just caused a lot of mistrust. The lead developer at Bun working on this project does post here from time to time and I have never seen him answer any of this. I admire his enthusiasm, but this was badly handled mostly from Bun’s side which lead to a bunch of dogpiling.

When someone on another social media platform commented expressed some concern, his response was to ask him what the explicit bug he was talking about was and that he would generate a fix. That sound you hear is the woosh as the point flies by. And in general, this just feels like a consistent problem with Bun.

reply
MuffinFlavored
54 minutes ago
[-]
> Yes, Claude Code uses Bun. In fact, Claude Code relies on it as a core dependency and ships as a self-contained Bun executable.

I... somehow did not know that.

reply
stymaar
37 minutes ago
[-]
You missed the day when they had their bun build misconfigured which ended up leaking the entirety of Claude Code's codebase? (I wish I was joking)
reply
namuol
1 hour ago
[-]
> Built on EA's GPL v3 source release via fbraz3/GeneralsX (which did the heavy lifting of the macOS/Linux port — this fork adds the iOS/iPadOS port and a set of engine fixes).
reply
hypercube33
5 minutes ago
[-]
This needs a backport to Winx64 since this game runs like crap on modern windows
reply
asronline
1 hour ago
[-]
I have a Renegade one going that does all of this from scratch (different engine) so it's def more than capable!
reply
xg15
1 hour ago
[-]
> (tap-select, drag-box, long-press deselect, two-finger scroll, pinch zoom)

This is another "AI-ism" I noticed, mostly in coding agents - they seem to be very fond of making up new "compound nouns" (and occasionally verbs) to sum up relatively complex and specific concepts into single noun phrases. I wasn't sure if it's to save tokens or if the AI uses this to get a concise "identifier" for a concept that it can refer back to later, but I found it very noticeable.

I find the resulting sentences hard to read, though it does get better if you're aware of that tendency and make a conscious effort to parse the noun phrases. But I guess since it's just intermediate output from coding agents and not text for essays or blog posts, it's fine.

reply
marginalia_nu
54 minutes ago
[-]
Haha, I do that too sometimes.

It's a thing in some Germanic languages. Instinct is to merge nouns into word, e.g. 'lawnchair', but that gives you a red squiggly line, but 'lawn chair' also looks wrong, so 'lawn-chair' is the middle ground.

reply
trentor
1 hour ago
[-]
Maybe LLMs are just Germans.
reply
Rexxar
1 hour ago
[-]
That's the G in AGI.
reply
sscaryterry
1 hour ago
[-]
Artificial German Ingenieurwerk
reply
lacy_tinpot
34 minutes ago
[-]
This isn't good news...
reply
rossant
15 minutes ago
[-]
That, and also the very long comma-separated lists with sometimes 10+ items.
reply
jorl17
1 hour ago
[-]
Excessive-hyphenization is ai-hyperfixation
reply
f3408fh
1 hour ago
[-]
Yes! It's infuriating. I've tried prohibiting them in my AGENTS.md but it's not 100% effective.

--- AGENTS.md ---

## Plain words, not jargon

Don't use jargon-as-shorthand. Say what you actually mean.

- Don't say "load-bearing assumptions". Say "the assumptions the xyz depends on".

- Don't say "cross-service". Name both services, e.g. "whether the X service can derive duration without calling the Y service". "Cross-X" is confusing because it hides which things are involved.

- Don't deliver verdicts as abstract noun-phrases like "Cross-RCA double-counting is unfounded". Say it plainly: "I checked whether the same root cause gets counted twice across RCA runs, and it doesn't."

## No earth-shattering declarations

Don't hype findings. Skip "a critical finding changes everything", "now I have the full picture", "this changes the game", etc. Just state what you found plainly. Most findings are ordinary; report them that way.

## Don't reflexively hedge a "yes"

When the answer is yes, say yes. Don't soften every positive answer with a caveat: it erodes confidence in the "yes". Only add a caveat when there's a genuine, specific uncertainty worth flagging.

reply
skerit
1 hour ago
[-]
I thought it was just Opus 4.7 and 4.8 that did this. Do other models do this too?

Anyway: in my case Opus absolutely did not follow a similar instruction in the CLAUDE.md file. (But then again: it hardly followed _any_ CLAUDE.md instruction properly)

reply
futuraperdita
5 minutes ago
[-]
For me, Opus 4.8's thinking traces for the chatbot will sometimes willingly ignore instructions, saying something along the lines of "I've noticed an instruction in the system instructions that states I shouldn't do this, but if I don't do this, I'll not provide the answer the user is looking for. I will ignore that instruction."
reply
embedding-shape
55 minutes ago
[-]
It's stupid, but have you tried telling it to follow it? "Make sure to follow the guidelines from AGENTS/CLAUDE.md" etc, seems to (sadly) make some difference in most harnesses and models.
reply
mikeryan
31 minutes ago
[-]
In all my CLAUDE.md and AGENTS.md files I have a line to fix pre-existing issues. I don’t know what it is but every agent I’ve tried through Claude code (including deepseek and GLM) will actively try to avoid fixing pre-existing issues. I even added hooks to Claude and git to try to get them fixed. If I leave a bailout for myself agents will find it sit and ask if it can push with no-verify or an environment variable in the case of Claude hooks instead of trying to fix an issue it didn’t cause.
reply
xg15
1 hour ago
[-]
Yeah, I wonder if part of the reasoning is built around those phrases, and therefore it can't get rid of them easily.

> "now I have the full picture"

I always interpreted that phrase as a sort of marker to delimit the phase in which it explores the codebase and gathers information from the phase in which it implements the changes.

Not sure if it's still done, but I think some months ago there was discussion that some of the phrases are injected by the inference loop to "steer" the model - e.g. "But wait" if a thought block was too short etc. Obviously such phrases couldn't be influenced by the prompt.

reply
lostlogin
1 hour ago
[-]
> Yes! It's infuriating.

No, it’s good. When they stop doing this, it’ll be harder spot the machine slop.

reply
topgrain2
42 minutes ago
[-]
That’s… about how I might have written that.
reply
mikeryan
36 minutes ago
[-]
That and finishing a statement with an em dash — that’s what AI does.
reply
daveguy
1 hour ago
[-]
FYI, AI isn't fond of a goddamn thing. They have token prediction quirks that don't follow typical English.
reply
sawjet
9 minutes ago
[-]
Personification is a figure of speech. What you say is technically correct but we don't need to declare this every time humans discuss how LLMs work.
reply
evanjrowley
2 hours ago
[-]
I wanna know if these techniques would be useful for Emperor: Battle for Dune (2001). It's the first 3D RTS by Westwood Studios, predating C&C Generals by just a couple years. It's popularity was hampered by intellectual property disputes and a introduction of a new faction that diverged from the book series lore. The gameplay, soundtrack, and campaign missions were awesome.
reply
satvikpendem
49 minutes ago
[-]
Try it before July 7 when Fable disappears from Claude Code subscription pricing.
reply
farseer
1 hour ago
[-]
This was one of the best RTS of the era. Still holds up today. The music was also very good.
reply
SubiculumCode
39 minutes ago
[-]
reply
asronline
2 hours ago
[-]
Let me give it a go :)
reply
DANmode
36 minutes ago
[-]
Legend in the pub.
reply
gb2d_hn
1 hour ago
[-]
Came here to see if anyone mentioned Dune Emperor. Would love to see someone succeed
reply
kriro
1 hour ago
[-]
I loved this game. First RTS I ever played :)
reply
dools
52 minutes ago
[-]
How is it done "using Fable" when the first commit was Feb last year??
reply
Dfiesl
45 minutes ago
[-]
Probably not exclusively using Fable.
reply
dools
43 minutes ago
[-]
Yeah which is a bit underhanded. Because the implication of "using Fable" is that it was done in under ... a week? So it's just a bit of click bait.
reply
janalsncm
16 minutes ago
[-]
For that to be click bait it implies people wouldn’t have clicked on it if any other model were used. IMO the more interesting fact is they ported a game over to iOS.
reply
dools
40 seconds ago
[-]
I dunno... Command and Conquer ported to macOS/iPad in 18 months using AI coding agents probably wouldn't have the same ring to it
reply
Madmallard
27 minutes ago
[-]
That's nearly every single article on the front page of HN
reply
siva7
1 hour ago
[-]
no way fable did this. It would have stopped after the words "command and conquer" and nerfed you to opus (while also landing you on some nsa watch list)
reply
bel8
10 minutes ago
[-]
Title is click bait.

This started back in February and looking at commits, Fable did only a small part of the latest commits.

And maybe it wasn't even Fable, they might have downgraded to Opus.

This is the kind of frequent misinformation that makes me skeptical of Anthropic LLM claims. Whenever I compare them to GPT 5.5 on my web dev workflows, they seem trade blows, even Fable, which I started testing since it was re-enabled.

Also I bet any decent LLM could have done such port. Think GLM 5.2 or similar. People just don't have the resources to compare and imply whatever they used is the best thing ever and unlocked some new workflow.

I have seen little improvement since Opus 4.6.

reply
OsrsNeedsf2P
1 hour ago
[-]
I'm doing something similar, using AI to make Battle for Middle Earth (same engine) "open source" with AI: https://github.com/dginovker/BFME-Source-Code
reply
skerit
56 minutes ago
[-]
I've been doing something similar for some of my favourite older games. But the "byte for byte" claim has me worried. Isn't simply decompiling the sourcecode from the binary and releasing that problematic?

It's not the "clean room" approach and companies could still claim it violates some kind of copyright and get it taken down.

reply
asronline
1 hour ago
[-]
Sweet!!
reply
pjmlp
31 minutes ago
[-]
In the old days this would have required a proper team...
reply
brailsafe
22 minutes ago
[-]
I wonder if this will work on my iPad 3, maybe with some Swift... 3 backport code?
reply
HaloZero
1 hour ago
[-]
Is there any hope for Red Alert 2?
reply
HelloUsername
10 minutes ago
[-]
You can always play it in the browser https://news.ycombinator.com/item?id=45991853, sadly no Yuri's Revenge is possible there though
reply
HaloZero
1 hour ago
[-]
Looks like EA did open source the game (only the first maybe)

https://github.com/electronicarts/CnC_Red_Alert

This seems to be the most active port saying it works on a Mac/Linux https://github.com/Daft-Freak/CnC_and_Red_Alert

reply
asronline
1 hour ago
[-]
I wish they open sourced RA2 - I love that game, I heard they lost the source code :/
reply
swat535
49 minutes ago
[-]
Yes, they have also lost Tiberian Sun and Firestorm I think.. very unfortunate.
reply
freedomben
1 minute ago
[-]
That's wild. How does that happen?
reply
8note
1 hour ago
[-]
they lost the original assets so afaik they arent gonna make a remaster

cnc-ddraw i think would get it to run fine on a steam deck though, so you should be able to play it without much issue

reply
ChrisMarshallNY
57 minutes ago
[-]
Very cool.

One big caveat with iPad and mobile, though, is battery usage. I strongly suspect that power consumption is the reason that a number of games made it to Mac, but not iPad.

reply
8note
1 hour ago
[-]
ive had opus try movin Merlin's revenge up from director/shockwave.

the result: http://jhedin.github.io/merlin-s-revenge/

reasonably it works quite close to the lingo, but this is way difficult, and not just from being rusty. steve had most things triggered on the animation frame, which opus hasnt quite figured out by looking at the code and pulling stuff out of the .dir

i do remember that playing at double scale was a lot harder in general, but theres a really clear cooldown missing between attackes

reply
OsrsNeedsf2P
1 hour ago
[-]
I just noticed a Flatpak folder in the repo. Does MacOS Support Flatpak somehow??
reply
captn3m0
55 minutes ago
[-]
upstream is a MacOS+linux build. https://github.com/fbraz3/GeneralsX.
reply
bigyabai
2 hours ago
[-]
> rendering DirectX 8 → DXVK → Vulkan → MoltenVK → Metal

Another great case study in why native Vulkan drivers would be a boon for Apple's mobile computing. That's quite the render pipeline...

reply
baq
1 hour ago
[-]
When someone ported pylint to rust this place was full of ‘who will maintain this’ and met with blank stares when the answer was ‘what do you mean’ or ‘it’ll maintain itself’.

Good job. It was inevitable, but still someone had to, please excuse me, say the words.

reply
arjie
1 hour ago
[-]
These LLMs are remarkable. I used Opus to revive for myself abandoned software and bring it up to date with the latest versions of the frameworks so I could add some features. And there's other software which I vendor and merge in upstream changes and self-manage. This would have been a near-impossibility in the past.

"Who will maintain this?" appears to be "Me with an agent". And it's great.

reply
fnordpiglet
1 hour ago
[-]
Given the game is stable and the changes would be at the integration points, and Fable was able to do the direct integration, why would the answer not be “it’ll maintain itself” at some abstract level. The decision to maintain open source is up to the maintainers and I think the answer is “no one” 99.99% of the time, but I’ll wager if someone is willing to spend the tokens on it, a CI reintegration agent would do just fine in keeping it working as the underlying dependencies have required changes (which would really be only major changes in apple apis that aren’t backwards compatible.”

Pylint is different because it’s working against a necessarily dynamic wavefront that it has to keep parity with as it advances. All python changes, ecosystem adaptations, etc - and maintaining that with an AI harness in CI would never work. It would require a concerted effort and thought along the way.

So it’s sort of a different beast all together. In fact I think this is a great demonstration of using AI to resurrect technology built for X to work with Y, where X is dead and Y is current. Automating this feels like a net positive and because the original software is “finished” there isn’t decision making and strategy required.

reply
adamraudonis
1 hour ago
[-]
That was me! Checkout my latest Fable project with 4D splats: https://news.ycombinator.com/item?id=48786245
reply
vaygr
59 minutes ago
[-]
Tiberian Sun next.
reply
Jyaif
40 minutes ago
[-]
I tell folks there's a chance GTA6 will be ported to PC before it's officially released to PC.
reply
gigatree
1 hour ago
[-]
This is an actual dream come true
reply
asronline
1 hour ago
[-]
Right!!
reply
Madmallard
49 minutes ago
[-]
Does it actually play identically or is there going to be weird bugs all over the place?

Seems like an impossible ask to verify if you don't have an immense test suite that covers everything.

reply
advenn
2 hours ago
[-]
someone do it for debian, omg. i use debian family, it has been years, i haven't played this gem
reply
asronline
2 hours ago
[-]
I can't tell you how many new hours I've poured in it since bringing it to my iPad
reply
akho
1 hour ago
[-]
fbraz3/GeneralsX
reply
asronline
2 hours ago
[-]
EA released the Generals source under GPL v3, the GeneralsX project got it running on macOS/Linux, and I've taken it the rest of the way: native iOS and iPadOS builds of Zero Hour, plus Apple Silicon macOS.

What works (all verified on a real iPad and iPhone):

Campaign, Skirmish, and Generals Challenge: full missions, objectives, cutscenes, saves All audio: music, unit voices, EVA announcements, Challenge taunts, briefing FMVs Touch controls built for RTS: tap select, drag a selection box, long-press deselect, two-finger camera pan, pinch zoom Self-contained install: game data ships inside the app bundle It's the real engine: unmodified game logic compiled for ARM64, rendering DirectX 8 → DXVK → Vulkan → MoltenVK → Metal. Not emulation, not streaming.

No game assets are included or distributed. You need your own copy (Steam sells Zero Hour) and a script pulls the data from your own account. Code is GPL v3.

Repo, with a full engineering log of every bug and fix (the black-minimap one is a 2003 texture-format fallback that ate the alpha channel; worth a read if you like archaeology): https://github.com/ammaarreshi/Generals-Mac-iOS-iPad/blob/ma...

Building: macOS is about four commands; iPhone/iPad needs Xcode and a free Apple developer account since you sideload your own build. Known issues (long-session memory on iPad, a rare backgrounding crash) are documented in the README.

Credit: fbraz3/GeneralsX did the heavy macOS/Linux lifting, TheSuperHackers keep the community codebase alive, and EA did a genuinely good thing releasing the source. The engine fixes I found are heading upstream so every platform benefits.

(And of course, not affiliated with or endorsed by EA, and sorry China had to deal with all of those particle cannons in that demo video)

reply
DANmode
31 seconds ago
[-]
Don’t worry - China inf is for noobs

https://youtu.be/WqWFYOxjZ54?si=1pH6Z1D33TOT4Qmg&t=453

reply
digitalbase
1 hour ago
[-]
Great stuff

I found the bundle scripts already prefer VULKAN_SDK/VULKAN_SDK_ROOT, but the build script only scans ~/VulkanSDK

reply
8note
1 hour ago
[-]
nice!
reply