トピック
受付中
shoum shoum0403

スプライトについて

横スクロールアクションゲームを作るときに、スプライトを多用すると思うのですが、プチコンでは512個まで?しか使えないらしいです。地面の描写はBGでするとして、各ステージごとに敵とかブロックなどをSPRITEで配置すると512個なんてあっという間にたどり着く気がするのですが、なんか工夫とかして512個以上使えるようにする方法なんてあるのでしょうか?
1そうだね
プレイ済み
返信[1]
親投稿
TTcreation TTSOFT
指定範囲外のスプライトを消して すぐに次のスプライトを読み込むように処理してみては?
1そうだね
プレイ済み
返信[2]
親投稿
だにえる haru2016nen
画面に表示される分だけの SPを使えばいい。 スクロールすると敵が復活するような ゲームは基本そうやってるんじゃないかな。 初代スーパーマリオだって 横に進む度にステージを読み込んでたよね。
3そうだね
プレイ済み
返信[3]
親投稿
shoum shoum0403
スプライトを消すとはどういう事でしょうか
0そうだね
プレイ済み
返信[4]
親投稿
だにえる haru2016nen
っSPCLR
1そうだね
プレイ済み
返信[5]
親投稿
しんいち stgf1080
スプライト512個までっていうのは、画面内(とも限らないけど)にいっぺんに表示できる最大数なので、一度に表示する数だけをSPSETしとくようにすれば、そうそう足りなくなることは無いと思います。 横スクロールアクションですと、同じデザインの敵キャラで、出現位置だけ異なる(画面内に同時に現れない)のであれば、いちいち新たな番号を割り当てず、同じ番号のスプライト使うとか。
1そうだね
プレイ済み
返信[6]
親投稿
SPCLR使いまくると、管理番号の管理が面倒になるので、SPSET OUTと使うのがおすすめです。(理想を言えばSPFUNCも) 本題 スプライトを動かしたりしないのであれば、グラフィックという手もあります。 スプライトをグラフィック画面に描写するには、おちゃめさんのGPUTSP命令が便利です。 まぁ。前の方が仰る通り、必要以上に出さなければ、そうそう尽きることは無いと思います。
5そうだね
プレイ済み
返信[7]
親投稿
say sayer.exe
杞憂 そんなこと考えるより、落とし穴の処理を考えたほうがいいよ これの意味がわからないんなら、 「スクロールアウトしたスプライトは表示する必要がない」 でもいいよ
3そうだね
プレイ済み
返信[8]
親投稿
TERA(LL) tera0413
確かに同時表示は512個までですが、SPDEFでキャラクタ定義は4096個も用意できるので、SPCHR使えば、そうそう足らないという事は無いと思いますが・・・ (どちらかというと512個の制限より512x512ドットにいくつのキャラクターを詰め込めるか の方が難しいかも?)
2そうだね
プレイ済み
返信[9]
親投稿
BlackSoft BlackSoft.mkII3g
画面外に出たスプライトについては何も処理せずに使い回す、という手法もあります。 例えば、管理番号0~9の10個を使う場合。 画面外に出たものは処理せずに放置します。ステージが進むと、敵が次々出てきますが、割り当てる管理番号を ID=(ID+1)MOD 10 で次々SPSETしていきます。 上の式では、IDが0~9の値を繰り返す事になりますが、画面内に表示されているスプライトが最大10個であれば、表示中に消えたりせず、うまい具合に「使い回し」ができます。 画面外に出ているスプライトについては、当たり判定等の処理をしないように気を付けないといけませんけどね。 こういちさんの「SPFUNC」と組み合わせて使う手法は、もうちょっと基本的な機能を把握してからの方がスムーズに理解できるかもしれませんね。
2そうだね
プレイ済み
返信[10]
親投稿
BlackSoft BlackSoft.mkII3g
↑の手法は、ゲームの主要キャラには向いていませんね。失礼しました。 管理番号を意識しなくても良いキャラクタには使えます。例えば、 シューティングで弾が当たった時の爆煙アニメだったり レースの砂煙だったり。 主要キャラについては、皆さんが言うように、画面外に出たものはSPCLRで削除するのが良いでしょう。
2そうだね
プレイ済み
返信[11]
親投稿
キルル2 kiruru2
スプライトの数を増やせるDEF集を作りました 【NRWDKEHD】 SPSETやSPOFSといった命令の後ろに2を付けることで使えます(SPSET2,SPOFS2) また、表示にはFLIPというDEFを実行する必要があります もし良ければ使ってください
0そうだね
プレイ済み