カレンダー

2021/06
  
   
       

広告

Twitter

記事検索

ランダムボタン

2倍速のコンピュータ的発想

by 唐草 [2022/11/17]



 プログラムで何かを処理しようとした時に人と同じ手順を採用することは最適解でない事が多い。コンピュータの機械特性を考えてアルゴリズムを作ることで、人と同じ方法の何倍も早く処理できることがある。
 ぼくは手を動かして処理している作業を自動化するためにプログラムを書くことがある。そういう場合、人間の手順をそのままコードに置き換えている。そのやり方には構造的な分かり易さはあるが、コンピュータからすれば無駄ばかりに見えていても不思議はない。ちょっとでも改良しようとするとすぐに限界が見えてしまう。人が自分の身の丈で考えたやり方には、発展性が乏しいことが多い。
 人間的発想とコンピュータ的発想の差に苦しめられたことは何度もある。しかも、正解が目の前にあるのに気が付かないこともあった。結局は、使う人の性能が大事なのだ。
 先日、古いデータの回収をしているときに思い出したことがある。
 ぼくが作ったターン制のゲームで、2倍速の敵の実装をしようと考えたことがあった。だが、当時のスキルではどうしてもそれができなかった。プレーヤーも敵も同じスピードで動かすことしかできず、プレーヤーの入力を飛ばして一部の敵だけを動かす方法をどうしても思いつけなかった。
 なので、出来上がったゲームには倍速は無しで、半分の速度になるスローだけを搭載していた。
 一体どうすれば、倍速を実現できるのか?当時よりもずっと多くのコンピュータ的発想を
身につけた今なら簡単に方法が思いつく。
 と言うか、できないと思いこんでいた当時ですら実は倍速を実装できていた。人間的発想に凝り固まっていたので、そのことに気づけなかったのだ。
 スローが実現できていたのがポイント。通常速度を名目上の倍速として扱えばスローが見かけ上の通常速度になる。
 完全にトンチだ。
 コンピュータの発想と人間の発想が等しくなければならないという思い込みが、目を曇らせていたいい例だろう。
 今のぼくなら16倍速を基本に作ってその1/4の速度を通常扱いする。こうすれば4倍速から1/4倍速(ダブルスロー)まで簡単に実装できる。