ディスカッション (11件)
COBOLという言語を使って、なんと一人称視点シューティングゲーム(FPS)を実現したプロジェクト『FPS.cob』が登場しました。本来、業務システムなどのバックエンドで使われることの多いCOBOLですが、現代の技術者がその限界を押し広げるとどうなるのか。非常に興味深い技術的好奇心の塊のようなプロジェクトです。
スクリーンショットがあるといいんだけどな。それにこれってコミットが一つだけだけど、AIを使ったの?readmeの『FPS.cobは、今の時代のゲーム開発は簡単すぎると決意した時にできるもの』って引用が気になったよ。
スクリーンショットを求める声がいくつかあったから、動かしてみたよ。基本的なゲームプレイの動画はこれ:https://peterc.org/misc/fpscob.mp4 (https://peterc.org/misc/fpscob.mp4) ……動作はぎこちないけど、ちゃんと遊べるよ。
いやあ、これはかなり読みやすいコードだね……COBOLも案外悪くないのかも。最近は構文のスープみたいなコードに慣れすぎてたから、これは新鮮だわ。
https://github.com/icitry/FPS.cob/blob/main/fps.cob (https://github.com/icitry/FPS.cob/blob/main/fps.cob)
WASMにコンパイルしてホストしてほしいな。
PPMを出力して、ディスプレイのドライバとしてffplayを使っているみたいだね:
https://github.com/icitry/FPS.cob/blob/497867bb6827bcfc32d50... (https://github.com/icitry/FPS.cob/blob/497867bb6827bcfc32d504c0fd204e03966bf053/fps.cob#L3196)
HNでこういう難解なプロジェクトを投稿させないようにガイドラインを設けるべきだよ。
AIが登場する前は、人がそんなに情熱を持って沼にハマり込むのはすごいことだったし、そこから得られる面白い逸話を読むのも楽しかった。
今は内容が空っぽで浅い。
Claudeが書いたならすごいことじゃない。OPが自分で書いたならすごかったんだけどね。
これ先週hackaday[0]にYouTube動画へのリンク付きで投稿されてたよ。動画の中で著者が、直面した課題や変更点についてかなり詳細に技術的な説明をしてた。
このスレッドでの文句はHNの精神に反すると思うな。もっと建設的にいこうよ。
彼のYouTube動画をここで見たよ:https://m.youtube.com/watch?v=qzpZQe7JT-o (https://m.youtube.com/watch?v=qzpZQe7JT-o)
個人的に気に入ってる点は、実際のCOBOLの慣習を反映して、ゲームを表示するための小さなフロントエンドを自分で作る必要があったことだね。80年代頃まで、COBOL自体はまともな端末I/Oをサポートしていなかったから、全部バッチ処理だったんだ。メインフレームのエンジニアが端末操作をやりたいと思ったら、メインフレームのアセンブリで独自のルーチンを書くか、IBMのアプリケーションサーバーであるCICSを使うしかなかった。CICSは言語拡張を通じて独自の端末制御やトランザクションデータベースルーチンを提供していて、プリプロセッサがそれを普通のCOBOLに変換してくれてたんだ。COBOLに不足している機能を外部レイヤーで構築し、通常のI/Oを使って通信させるっていうのは、メインフレーム時代のエンジニアリングの極致だよ。
同じ問題に対する他の解決策もあって、InterCommっていうのはプリプロセッサを使わずに、メモリの共有領域を確保してそこに直接メッセージを書き込む必要があった。最近だとHerculesで古いソフトウェアをいじくり回す人のために、CICSとAPI互換性があるオープンソースライブラリのKICKSなんてのもあるね。
著者は3年前から純粋に実験的なリポジトリをいくつも持っていて、見ていてすごく楽しいよ。
https://github.com/icitry?tab=repositories (https://github.com/icitry?tab=repositories)
GitHubに紐付いたYouTubeチャンネルもあって、プロジェクトの開発に関する動画がこれだ:
https://www.youtube.com/watch?v=qzpZQe7JT-o (https://www.youtube.com/watch?v=qzpZQe7JT-o)
AIが関わっているかどうかなんてわからない。でも著者は、Claudeにタスクを投げて結果を投稿しただけの人とは違って、ちゃんとわかって取り組んでいるみたいだ。構築中の課題や試行錯誤した実装、遭遇したバグやクラッシュ、そして最終的に何がうまくいって何がだめだったかを話しているよ。
これこそまさに僕の大好きな類のものだ。他のコメントではClaudeが変なプロジェクトへの興味を殺したと言っているけれど、時々「なんでそんなことしようと思った?」っていうプロジェクトを手作りするのが好きな自分にとっては、彼のリポジトリとYouTubeを見つけられただけで最高の一日になったよ。
MBCook、投稿してくれてありがとう!
readmeにスクリーンショットを載せないのは犯罪級だろ。