6 ms·
FPS.cob: A first person shooter in COBOL
- rroriz 4mo agoCome on, we need screenshots!
- ltheanine 4mo agoIt 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”.
- vintermann 4mo agoI hope for their sake that it's an agentic AI experiment.
- moregrist 4mo agoWhy the negativity? If someone wants to have fun in COBOL, let them have fun in COBOL. If it’s agentic fun, that’s cool. If it’s an interest in the language, that’s cool. It’s not like you have to have an ROI for a fun side project.
- LastTrain 4mo agoIt’s also OK to be turned off by AI use in hobby projects and it is also OK to prefer disclosure of the use of AI in projects so I can make that choice.
- networked 4mo agoSubmitted a PR: https://github.com/icitry/FPS.cob/pull/6/changes https://github.com/icitry/FPS.cob/pull/6/changes. You can see a screenshot at the link.
- MBCook 4mo agoIt’s odd it’s not linked in the repo but the author made a your video: https://www.youtube.com/watch?v=qzpZQe7JT-o https://www.youtube.com/watch?v=qzpZQe7JT-o
- johnisgood 4mo agoI have many projects with 0 commits, meaning were I to use git, it would be a single commit. It does not mean anything.
- spzb 4mo agoDoesn't run for me. Just I/O errors and quits.
- petercooper 4mo agoAs 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 https://peterc.org/misc/fpscob.mp4 .. it's clunky, but it does play.
- bottlepalm 4mo agoYou 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 https://github.com/icitry/FPS.cob/blob/main/fps.cob
- giraffe_lady 4mo agoI had to get into an old tcl program for work recently and had the same thought. I wouldn't necessarily pick it today but it was kind of nice in a way that's unfamiliar to me from modern development.
- moregrist 4mo agoThe tcl syntax is fine. And modern tcl is fine. But tcl 7.x and before was a pure string-based language. Everything was essentially a eval(). People would hit syntax errors on production code. Fun, painful times. The flip side: the interpreter is super simple and fun to write.
- IshKebab 4mo agoTcl is still entirely stringly typed. That's never changed. There are under-the-hood optimisations to make it less insanely slow but that only affects performance. Tcl is a cool hack (the interpret is simple to write) but it's insane to actually use it. I wish the EDA industry would realise that.
- kevin_thibedeau 4mo agoTcl 8 introduced dual-ported objects. Everything can exist as a typed object that is convertible back to a string in certain cases (some form of string operation typically). That plus the bytecode engine makes it work completely different than prior releases.
- IshKebab 4mo ago
- tlb 4mo agoThey should compile it to WASM and host it.
- slow_typist 4mo agoI did not know COBOL compiles to WASM until I read your comment and looked it up, thanks!
- omoikane 4mo agoLooks like it outputs PPM and use ffplay as a display driver: https://github.com/icitry/FPS.cob/blob/497867bb6827bcfc32d504c0fd204e03966bf053/fps.cob#L3196 https://github.com/icitry/FPS.cob/blob/497867bb6827bcfc32d50...
- localhoster 4mo agoWe 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.
- deadbabe 4mo agoExactly. But the damage is done. I find nothing anyone does in tech impresses or interests me anymore. The only things that interest me are things I’d like to also do myself. I imagine it’s probably the same for a lot of other people. Like OK someone vibecoded an FPS in COBOL or Pokémon emerald in a web browser with web assembly? Ok good for them, piss off karma farmer.
- rfgplk 4mo ago> Like OK someone vibecoded an FPS in COBOL or Pokémon emerald in a web browser with web assembly? Ok good for them, piss off karma farmer. Sorry, but most of these discussions reek of extreme gatekeeping. First off, neither of these things are impossibly difficult and are easily doable with some dedication by hand. LLMs simply accelerate the process, the human still has to come up with the architecture, _idea_ and plan to do something like this.
- goodmythical 4mo agoIt's only cool if it's in written in brainfuck via pencil and paper. Bonus points if it's ink on paper. Bonus points if ink and paper are hand crafted by the creator rather than the filthy casuals that rely on paper mills to make their paper for them.
- rfgplk 4mo agoMade me laugh. Thanks :)
- cml123 4mo agoThis 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/ https://hackaday.com/2026/06/06/a-raycast-fps-in-cobol/
- Gormo 4mo agoDirect link to the video: https://www.youtube.com/watch?v=qzpZQe7JT-o https://www.youtube.com/watch?v=qzpZQe7JT-o It's quite interesting, and describes how the developer used COBOL to implement a raycasting algorithm and generate a stream of PPM images to to pipe into FFplay. There's zero evidence of this being written in Claude; there are multiple clips of the developer working in VSCode, where the Claude plugin doesn't even appear to be installed.
- bitwize 4mo agoI saw his YouTube video here: https://m.youtube.com/watch?v=qzpZQe7JT-o 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.
- CobaltFire 4mo agoThat just gave me flashbacks. I wrote code on some ancient stuff that operated like you describe InterComm. Haven't done that in years, and I don't think much of anyone uses those systems anymore (Harris H100).
- lboc 4mo agoI think Intercomm is bundled in the TK5 distribution of MVS 3.8 now. They got clearance from the owners a while back as I recall. I'm assuming it's the same Intercomm you're talking about.
- bitwize 4mo agoIt is, and that's how I learned about it!
- chipx86 4mo agoThe 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 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 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 4mo agoCriminal not to put a screenshot in the readme.
- bagvader 4mo ago[flagged]
- refactor_master 4mo agoThe level of nested ifs is just pure insanity. Is this COBOL forcing this kind of style?