FPS.cob: A first person shooter in COBOL

MBCook 117 points 64 comments June 11, 2026
github.com · View on Hacker News

Discussion Highlights (12 comments)

rroriz

Come on, we need screenshots!

ltheanine

It would be nice to have screenshots. Also it’s just a single commit, did you use AI? Quoting the readme: “FPS.cob is what you get when you decide that game development is too easy nowadays”.

spzb

Doesn't run for me. Just I/O errors and quits.

petercooper

As a few people have asked for screenshots, I spun it up. Here's a video of the basic gameplay: https://peterc.org/misc/fpscob.mp4 .. it's clunky, but it does play.

bottlepalm

You know what, that is some pretty readable code.. COBOL might have been on to something there. I've gotten so used to syntax soup this is refreshing. https://github.com/icitry/FPS.cob/blob/main/fps.cob

tlb

They should compile it to WASM and host it.

omoikane

Looks like it outputs PPM and use ffplay as a display driver: https://github.com/icitry/FPS.cob/blob/497867bb6827bcfc32d50...

localhoster

We need to start putting guardrails on hn to not allow those esoteric projects to be published. Before ai, it was impressive that a person has that much passion and dedication to go down the rabbit hole, and it usually comes back with some cool anacdotes that are nice to read. Today, it's shallow, emptied out of the content. It's not impressive that Claude wrote it, it was impressive if you have written it, OP.

cml123

This was posted on hackaday[0] last week with a link to a youtube video. In the video, the author of the project goes into depth about some of the challenges they encountered and changes they made in good technical detail. I think the complaints in this thread are not in the spirit of HN. Let's do better. 0) https://hackaday.com/2026/06/06/a-raycast-fps-in-cobol/

bitwize

I saw his YouTube video here: https://m.youtube.com/watch?v=qzpZQe7JT-o One of the things I like about it is he had to create a little front end to display the game, mirroring actual COBOL practice. Until the 80s or so, COBOL didn't support meaningful terminal I/O in its own right; it was all batch. If you were a mainframe dev and wanted to do terminal interaction, you either had to write your own routines for that in mainframe assembly or use something like CICS, IBM's application server which provided its own terminal handling and transactional database routines accessible through a language extension which got swizzled into regular COBOL by a preprocessor. Creating a layer outside of COBOL to do the things COBOL was deficient in, and using COBOL's regular I/O to communicate with it, is peak mainframe-era engineering. Other solutions to the same problem existed; there was one called InterComm, which lacked the preprocessor and required you to reserve a shared area of memory and write messages to InterComm directly into it. These days there's KICKS, an open source library API-compatible with CICS, aimed at the sort of person who faffs about with old software on Hercules.

chipx86

The author has a number of repositories going back 3 years that seem purely experimental and, to me at least, really fun to look through. https://github.com/icitry?tab=repositories And he has a YouTube channel linked to his GitHub. Here's his video on the development of this project: https://www.youtube.com/watch?v=qzpZQe7JT-o Maybe AI was involved, maybe it wasn't. I don't know. But the author seems to know what he's doing, rather than someone just giving Claude a task and posting the result to GitHub. He talks through some of the challenges in building this, some of the different implementations he tried, the kinds of bugs and crashes he hit, and ultimately what worked and what didn't. This is exactly the kind of stuff I love. Another comment said Claude has killed interest in crazy projects, but for me, as someone who likes to hand-craft some "why would you even think of that?" projects from time to time, discovering his repositories and YouTube has made my day. Thanks for posting this, MBCook :)

gigatexal

Criminal not to put a screenshot in the readme.

Semantic search powered by Rivestack pgvector
10,324 stories · 97,050 chunks indexed