まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
先日HSPコンテスト2007のHSPTV部門(ショートプログラム部門)に出品した「blur」の
ソースファイルを公開して、来年も参加するかどうかはわかりませんが
忘れない為に、私なりに思いついた容量削除のポイントなんかを書いてみたいと思います。
ソースはこちら↓
HSP3.1使用 HSPTVがインストールされていないと動きません。
まず、このゲームは元々HPで公開していた物を改変していったものなのですが
最初の状態は、タイトルとゲーム画面で別々のループを使って動かしていました。
この方法でも問題なく動くのですが同じ記述を2回使わないといけない場所などもあり
もったいないので、一つのループで全てを終わらすように変更しました。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
それと、スクリプトの書き方でも削減できる書き方があります。
a=a+1
と書く場合は
a+=1
と書いた方が良い
a++
よりも
a+
の方が良い
mes ""+a+""
よりも
mes""+a
の方が良い
font "MS ゴシック"
よりも
font "msgothic"
の方が良い。
さらにfont命令等の""を使う命令を沢山使う場合は
a= "msgothic"
font a
と書いた方が良い
と言った感じでした(間違ってるかもしれませんが)
これらの方法は、あと数バイト減らしたいと思った時に有効です。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
あと
if a>10 : b=0
if a<10 : b=1
(aが10以上のときはbは0。aが10以下の時はbは1)
みたいな記述の場合は
if a>10 : b=0 : else : b=1
(aが10以上のときはbは0。そうでなければbは1)
という感じでelseを使うとまとめられます(elseはそうでなければという意味合いだと思います)
で、もっと言うとelseを使うんじゃなくて
b=1
if a>10 : b=0
(bは1。でもaが10以上の時はbは0)
と書けるようにスクリプトを考えるのが一番良いように思いました。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
表示する文字は日本語よりも英語の方が容量を削れる
スコアと書くよりもSCOREと書いた方が良いです。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
数字に置き換えれる変数は数字にする。
repeat a よりも
repeat 50 と書いた方が良い
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
省略出来る命令は、なるべく省略する。
color 0,0,0よりも
color ,,の方が良いです。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
最後に同じような記述の部分を探してまとめる。
blurの場合で言うと、敵弾処理の部分がそうだったんですが
弾の速さや移動方向が違うだけで、移動するスクリプト自体は同じような物なので
弾発射用のスクリプトを作って、変数で分岐させるようにしてまとめました。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
後、やっても無駄だったこと。
{}を::に置き換える。
変数の文字数を減らす。
苦労したわりに、まったく減りませんでした^^;
と言った感じです。色々と間違ってる可能性もあるので、間違っていたらゴメンナサイ。
しかし6000バイトってのは少ないですね。他の作品を見ると、どうやって動かしてるんだ?
と思うものばかりで、私などまだまだだな~と感じました。
でも、いかに6000バイトに収めるかってのは結構面白かったので、また来年も参加出来たら
良いな~と思っています^^
ソースファイルを公開して、来年も参加するかどうかはわかりませんが
忘れない為に、私なりに思いついた容量削除のポイントなんかを書いてみたいと思います。
ソースはこちら↓
HSP3.1使用 HSPTVがインストールされていないと動きません。
まず、このゲームは元々HPで公開していた物を改変していったものなのですが
最初の状態は、タイトルとゲーム画面で別々のループを使って動かしていました。
この方法でも問題なく動くのですが同じ記述を2回使わないといけない場所などもあり
もったいないので、一つのループで全てを終わらすように変更しました。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
それと、スクリプトの書き方でも削減できる書き方があります。
a=a+1
と書く場合は
a+=1
と書いた方が良い
a++
よりも
a+
の方が良い
mes ""+a+""
よりも
mes""+a
の方が良い
font "MS ゴシック"
よりも
font "msgothic"
の方が良い。
さらにfont命令等の""を使う命令を沢山使う場合は
a= "msgothic"
font a
と書いた方が良い
と言った感じでした(間違ってるかもしれませんが)
これらの方法は、あと数バイト減らしたいと思った時に有効です。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
あと
if a>10 : b=0
if a<10 : b=1
(aが10以上のときはbは0。aが10以下の時はbは1)
みたいな記述の場合は
if a>10 : b=0 : else : b=1
(aが10以上のときはbは0。そうでなければbは1)
という感じでelseを使うとまとめられます(elseはそうでなければという意味合いだと思います)
で、もっと言うとelseを使うんじゃなくて
b=1
if a>10 : b=0
(bは1。でもaが10以上の時はbは0)
と書けるようにスクリプトを考えるのが一番良いように思いました。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
表示する文字は日本語よりも英語の方が容量を削れる
スコアと書くよりもSCOREと書いた方が良いです。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
数字に置き換えれる変数は数字にする。
repeat a よりも
repeat 50 と書いた方が良い
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
省略出来る命令は、なるべく省略する。
color 0,0,0よりも
color ,,の方が良いです。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
最後に同じような記述の部分を探してまとめる。
blurの場合で言うと、敵弾処理の部分がそうだったんですが
弾の速さや移動方向が違うだけで、移動するスクリプト自体は同じような物なので
弾発射用のスクリプトを作って、変数で分岐させるようにしてまとめました。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
後、やっても無駄だったこと。
{}を::に置き換える。
変数の文字数を減らす。
苦労したわりに、まったく減りませんでした^^;
と言った感じです。色々と間違ってる可能性もあるので、間違っていたらゴメンナサイ。
しかし6000バイトってのは少ないですね。他の作品を見ると、どうやって動かしてるんだ?
と思うものばかりで、私などまだまだだな~と感じました。
でも、いかに6000バイトに収めるかってのは結構面白かったので、また来年も参加出来たら
良いな~と思っています^^
PR
この記事にコメントする
カレンダー
10 | 2024/11 | 12 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
リンク
カテゴリー
最新記事
(04/04)
(12/26)
(12/25)
(11/17)
(10/11)
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
最古記事