カルネージハート Advent Calendar 2019 3日目の記事です。
今回はカルネージハートから学ぶプログラミングの簡易化のススメについてです。
はじめに
- 前提条件としてカルネージハートEXAについて想定しています
- カルネージハートではTDD(テストコードの記述)などはできない想定です
- カルネージハートでは処理は1/30秒(1フレーム)単位以上の処理速度のカスタマイズはできません(WebサーバーやDBのチューニングと言った話は例外とします)
結論
- 基本的に処理(コードを)を記述すればするほど、処理が重くなり、反応速度が落ちる
- 処理が重くなるだけでなく、潜在的なバグが増えてデバッグが大変になる
簡易化のススメ
結論ありきですが、カルネージハートの世界ではプログラムは可能な限りシンプルである方が良いと言われています。
それはなぜか。例えばの例です。
- 1/30秒(1フレーム)単位で行動を制御するため、コンマ数秒の処理の遅れが命取りになりえます
- 例えば秒速1000mで進む弾丸への反応が0.1秒でも遅れると、その間に100m弾丸は進みます
- その結果弾丸が直撃します
対策としては
- 処理を遅くしないため、余計な処理は極力実行しない
また複雑な処理はもう1つのデメリットがあります。
- 潜在的なバグが増えてデバッグが大変になる
です。処理が複雑になればなるほど、分岐条件が増えて、テストしなければならない条件・状況が増えていきます。
その分デバッグが大変です。
簡易化デメリット
もちろん簡易化のデメリットもあります
- 分岐処理が減るため、汎用性が落ちる
こればっかりはトレードオフです。どこまで汎用性を持たせるかによります。
システム開発に置き換えると
- プログラミングを簡易化すると処理速度が上がり、ユーザーフレンドリーな作りになる
- 開発者もプログラミングを簡易化することでデバッグの口数が減る
汎用性が落ちるデメリットに対しては...
- 要件定義次第でなんとか...
要件定義なんとかならない場合
- できないことはできない。すっぱり諦める。
これ大事です。
諦められない要件が出た場合
- 大炎上です...辛い
最後に
事実上の最新作EXAが2010年に発売以降続編の情報が皆無ですが、一部の熱狂的ファンは大会を開催してゲームを続けています。ゲームを盛り上げることで続編も出るかもしれません。カルネジスト、ネジらーの皆様のご協力をお願いします!
カルネージハートファンのプログラミング知識を共有しましょう!
トライポッドでお茶を濁します。