ここのおかげでSTGの制作が終盤にさしかかってきました(体験版)
ですがこのままゲームとしてユーザーに渡した場合、重くってろくにプレイできない可能性があるので、
今回はその改善策を探しに質問させていただきます。
*環境*
まず最初に言いますが、私のPCが低スペックっというわけではございません。
(CPU自慢大会参考)
なるべく小さくしたつもりですが、100行を超えてしまいました。
一定の感覚に(g=20)弾幕を出しています。
以下がソースです。
-------------------------------------------------------
-------------------------------------------------------------
#define PI 3.14159265358979 ;(40 → 83 (EXE → 86 screen 0,380,450;サイズ frame = 0 ;フレーム ;画像を読み込む buffer 2 picload "素材7.bmp" gsel 0 ;スタート位置指定 x = 200.0 y = 420.0 ;弾幕情報初期化 maxbullet = 640 dim b ,maxbullet dimtype b_x,vartype("double"),maxbullet ;x座標 dimtype b_y,vartype("double"),maxbullet ;y座標 dimtype b_vx,vartype("double"),maxbullet ;x速度 dimtype b_vy,vartype("double"),maxbullet ;y速度 ;**********メインループ*********************** *mein ;画面クリア color 0,0,0 boxf ;矩形を塗りつぶす ;*********霊夢の移動************************** stick key,15 if (key & 1) : x = x - 0.3 ;← if (key & 2) : y = y - 0.3 ;↑ if (key & 4) : x = x + 0.3 ;→ if (key & 8) : y = y + 0.3 ;↓ ;*********円形弾幕************************** ;あまりのが1の場合 if(frame\160 == 0){ ;玉が出る感覚 g=20 ;20℃ repeat g ;180℃*2=360℃ t = PI*2*cnt / g ;+ trnd ;コメント外すとランダム弾幕 gosub *search ;サブルート if(number != -1){ ;玉の発射 b(number) = 1 b_x(number) = 200.0 ;玉のx座標 b_y(number) = 150.0 ;玉のy座標 b_vx(number) = cos(t) * 0.3 ;速さ b_vy(number) = sin(t) * 0.3 ;速さ }loop } ;玉の移動 repeat maxbullet ;640 if( b(cnt) == 1 ){ ;存在しする b_x(cnt) = b_x(cnt) + b_vx(cnt) b_y(cnt) = b_y(cnt) + b_vy(cnt) }loop ;*********描画************************** ;霊夢の描画 pos x-16 , y-16 gmode 4,29,42,255 ;横,縦,color指定した透明度 gcopy 2,1,0 ;画面コピー ;弾幕の描画 repeat maxbullet ;640 if( b(cnt) == 1 ){ ;存在しする pos b_x(cnt)-8, b_y(cnt)-8 gmode 4,16,16,255 ;横,縦,color指定した透明度 gcopy 2,141,2 ;画面コピー }loop ;画面更新 redraw 1 ;実際の画面にも反映される redraw 0 ;実際の画面にも反映されない await 0 frame = frame +1 ;フレーム goto *mein ;メイン ;*********サブルート************************** *search number = -1 ;ナンバー repeat maxbullet ;640 ;1以外のとき実行 if( b(cnt) != 1 ) : number = cnt : break ;ループから抜ける ;存在しする ;ナンバー loop return ;サブルーチンから復帰
私のPCだと「40〜50弱」の数値がでます。
私は問題なのですが、最初に言ったようにユーザーがプレイすることを考えるとこのままではまずいです。
っていうかもしユーザー全員がハイスペックPCだとしても、
負担率40〜50なんていうのは避けるべきです。
よってなんとかCPUの使用率を、出来れば20前後までにしたいと思っております。
この場合どうしたら、もっと軽くすることが可能でしょうか?
弾幕を減らすなどは、無しな方向でお願いしいたします。
それではよろしくお願いいたします。