キャンバスのパフォーマンス
最近、キャンバスで多くのアニメーションを作成しています。キャンバスにはイベントがないため、座標に基づいて独自のイベントシステムを作成する必要があります。つまり、衝突検出機能が必要です。ほとんどのコードは非常に長いため、自分で書き直して、そうすることで、それがいかに簡単かを理解しました。それで、ある種のゲームコードを書きました。
基本的に、キャンバス ゲームは多数の数値の一時配列であり、ほとんどの場合、0 から 64,128 または 256 の間の数値で十分です。たぶん縮小して倍数として使用
hitpoints=max*(number/256);
だから私は考えていましたこれらの値をに保存するとどうなりarraybuffer
ますか?
var array = new Float64Array(8);
array[0] = 10;
//....
例:(私はそのようにしています...もっと良いことを知っているなら、遠慮なく教えてください)
//Usable ammonition
var ammo=[
['missiles',dmg,range,radius,red,green,blue,duration],
//all appart the first are numbers between 0 and 255
['projectile',dmg,range,radius,red,green,blue,duration]
]
//Flying ammonition
//this is created inside the canvas animation everytime you shoot.
var tempAmmo=[
[id,timestarted,x,y,timepassed] //these are all integers.
// the longest is probably the timestamp
]
// i could add the ammo numbers to the tempAmmo (which is faster):
[id,timestarted,x,y,timepassed,dmg,range,radius,red,green,blue,duration]
// then i do the same double array for enemies and flyingEnemies.
すべてをアラバッファに格納する方がよいのではないでしょうか?
私の考え(間違っていたら訂正してください):
arraybuffers
バイナリデータであり、
レンダリングは高速で 、メモリは小さくする必要があります。
この 2 つの意見が正しければ、適切な配列タイプを選択して、説明されているような配列構造を適切に作成するにはどうすればよいでしょうか?
注:私の場合、私は 2 次元配列を使用しています。また、オブジェクトを使用したくありません。