私の友人にこのヘイストという呪文がたいそう好きな人がいます。
どのくらい好きかと言うと、D&Dの話をする場合、2回に1回がヘイストの話です。
彼にヘイストをかけて行動速度を2倍にすると、毎回ヘイストの話をしてきます。
なんだか嫌だなあ。
全然関係ないのですが、プログラムの高速化の話です。
数日前からプログラムの製作に戻り、昨日お絵描きロジックのデータ設定を始めました。
楽勝楽勝と思ってプログラムを書いていたら、何だかおかしい気がします。敵の動きが遅いのです。
はにゃ?
などと思いながら実行速度を計測してみたら、何と2倍の遅さで動いているではないですか。
私の知らないところで、とてもとても重い処理をしているようなのです。
すぐに原因はわかりました。得点表示が激重なのです。ここだけで通常の処理1回分に相当する時間がかかっているのです。
これは由々しき事態です。
さっそく色々と計測してみたら、どうも数字の描画が重いようです。数字をポリゴンで表示(無駄!)していたのですが、このポリゴンの計算に無茶苦茶時間がかかっているのです。
仕方がないのでいろいろと高速化をおこなっていました。以下行ったことです。
・数字自体の描画回数を減らす(基本です)。
・ポリゴンを分割して、計算量を減らす。
・ポリゴン描画から、矩形描画命令に変更できる部分は矩形描画命令に変更して計算量を減らす。
・数字の背景部分のバッファを初期化時に作成して保持し、バッファを任意のタイミングで戻せるようにして、描画を毎フレームおこなわないようにする。
プログラムをおこなわない人にはさっぱり謎の行為ばかりですが、これで処理時間は劇的に減りました。
秒間20フレーム(毎秒20回描画)に納まるようになりました。この高速化をおこなうまでは、毎秒10フレーム(毎秒10回描画)だったので、実に2倍の速度になりました。
ここまでの高速化でほぼ24時間。
泣きそうな程時間がかかりました。
満身創痍です。
まだ、ゲームは繋がっていません(T_T