/note/tech

某62万行だか67万行のゲーム どんなコーディングしてんのかと思ってghidraにかけてみたけど ・変数はほぼすべて...

某62万行だか67万行のゲーム

どんなコーディングしてんのかと思ってghidraにかけてみたけど

・変数はほぼすべて静的に配置されてる

・たしかにCreateWindowAから始まるとか、素のWin32 APIを使ってて、スクラッチからっぽい

・起動時に画像や音楽などすべてのリソースをメモリーに読んでる

@wdko

・VC++6のデバッグ用のmemsetだかのシグニチャが検出されました。スタックフレームを0xccでうめるコードとかはいっててデバッグ用コンパイルオプションのままで製品用プログラムが吐かれてる

・最適化オプションはoff

@wdko

・なかみは静的配置されたフラグと即値をの比較分岐の嵐。いわゆる「データドリブン」ではない。プログラムの塊でできている。

・どこでもセーブ・ロードができるのはそういうフラグデータの静的な領域をそのままファイルに書き出してるから。これはこれで皮肉なしにすごい

@wdko

・exeファイルのなかみはすっからかん。100MBをちょっと超えるサイズだが、zip圧縮すると3.2MBにまで縮まる。

・画像とサウンドはEXE外だが、たぶんマップとかはEXEプログラム内なんだろう。

@wdko

通常のプログラマーは頭が悪いので「楽をするために苦労をする」性質があり、なるべくあとから修正が楽にできるようにとか、プログラムをどのようにすれば見通しが良く保守性に優れるコードになるかを考えてるが、フォ◯ンアイルの作者は天才なのでそんなことはしない

@wdko

あまり深く考えることなしに、地道にプログラムを書き続けてできた作品であることがうかがわれる。普通の人はその前に悲鳴を上げてもっと効率の良い方法に逃げる。

プログラミングのセンスや技術は最悪だが、努力という点では他の追随を許さないのではないだろうか。

@wdko

ちなみに、普通にゲームをプレイする人にとっては、プログラミングの苦労なんてのはめっちゃどうでもいい話なので、プログラム頑張ったんだよ!は普通はアピールポイントにはしない。

頭の悪い普通のプログラマーはもっと短くコードを書いてしまうので普通はアピールしないだけだ。

@wdko

もうすちーむに返品しちゃったからわかんないよ……ゲーム自体はprotonでちゃんと動くんだが、いろいろやる気が起きなくて。申し訳ない

@wdko

グラフィックの枚数だとかそういうのはまだ自慢になるが、ふつうはプログラムコード量を自慢するのはよくない。

プログラムコード量がおおいのは、それに見合った規模のプロジェクトでない限り、「私はプログラムを効率よくコンパクトに書く能力がありません」と言ってるのに等しいので。

@wdko

中身がどうであれ、一作作り上げて完成まで持っていったのはすごいよ。低レベルな話だが、ワナビーの中には妄想だけして手を動かさずに結局何もできないやつばっかりなんだから。

@wdko