トップページgamedev
982コメント350KB

【SB】Shooting Game Builder ver10【シューティング】

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2010/09/24(金) 20:23:38ID:xbao/GdK
SB◆.if.Xu7A6c氏が作った開発ツール"ShootingGameBuilder"について語るスレ

ShootingGameBuilder公式サイト
http://maglog.jp/sb/
Twitter
http://twitter.com/StgBuilder

SHOOTINGGAMEDEVELOPERUPLOADER
http://www.esc-j.net/stg/

SB@wiki
http://www41.atwiki.jp/stgbuilder/

ニコニコ動画チュートリアル
http://www.nicovideo.jp/watch/sm8707904
http://www.nicovideo.jp/watch/sm8711074
http://www.nicovideo.jp/watch/sm8728404

前スレ
【SB】Shooting Game Builder ver9【シューティング】
http://hibari.2ch.net/test/read.cgi/gamedev/1275262039/
0002Sぷ ◆n3VrL7XRbc 2010/09/26(日) 15:12:53ID:ehP6e886
2げt
スレ立て乙。
0003名前は開発中のものです。2010/09/26(日) 15:17:34ID:wlIgVuPc
>>1
スレ立て 乙です!!
0004名前は開発中のものです。2010/09/26(日) 15:22:29ID:WuaXbrF4
前スレの>>990だけど、
ここのうpロダってどこですか?
0005名前は開発中のものです。2010/09/26(日) 15:23:15ID:wlIgVuPc
シグナルの調査結果報告:

@自分,親,子(子ID指定)へ送信できる。

A送信時の代入では、即値(または変数値)がそのまま送信される。

B送信時の加算・減算・乗算・除算は、現在のシグナル値(受信値)に対してではなく、前回の送信値に対して即値(または変数値)が演算される!!

C親や子へ送信した場合に、自分のシグナル値は変化しない!!

D親→子で受信したシグナルと、子→親で受信したシグナルは、互いに独立している!!

E前回送信値をそのまま送信したい時は、加算0,減算0,乗算1,除算1を用いる。

*信号送受信パネルのみで受信値を送信することはできない!!
(ローカル変数パネルで受信値をいったん変数に入れて、信号送信パネルでその変数を代入して送信)
0006名前は開発中のものです。2010/09/26(日) 15:24:51ID:O9LwIS5A
>>4
3番目のアドレスの右下から
00079862010/09/26(日) 15:39:36ID:3RSSmTF7
もう少し柔らかく考えてみると、

「各シグナルには、受信箱は備わっているが送信箱は備わっていない」
「変数のように、送受信箱になってるわけではない」
「受信→送信が連動していない」
あるいは、
「送信→受信に特化しているが、受信→送信は機能的に乏しい」
といえそう。

3匹の子が親に対して、それぞれ加算やら減算やらを親の受信箱目掛けてポコポコ投げ入れるみたいな感覚かな?
あるいは、自分の背中に背負った受信箱に、加算やら減算やらを自分でポコポコ投げ入れるって感じ?
だから、信号受信はしていなくとも、加算や減算や代入が複数されたあとでも、最新結果が受信箱にきちんと
入ってるってイメージかな。
その受信箱にはいっている最新結果を、必要なときに条件分岐で選別できるのが「信号受信」ってパネルなんだと思うな。

後、一応書いておくと、「ローカル変数」パネルにおけるシグナル値のやり取りは、

「シグナル」 「→」 「変数」 = シグナルの受信箱内の数値(いわゆる受信値)を変数へ取り出す
「シグナル」 「←」 「変数」 = 変数をシグナルの「受信箱」へ入れる(決して送信値を指定するものではない)

ってことみたいだから、そのあたりは変数と違ってて分かりにくいといえば分かりにくいかも。

っていうか、1000とられた〜
0008名前は開発中のものです。2010/09/26(日) 15:50:26ID:wlIgVuPc
>>986
親子間でシグナルを用いる際に少し癖がある理由がようやく理解できた

要するに、まとめてみると
・受信値は送信値に反映されていない
・送信値は送信側では確認できないが、次回送信時に利用されている
・受信値は受信パネルの条件分岐か、ローカル変数での呼び出しでのみ確認できる

シグナルを親子間で使用するには、上記3つを理解している必要があるよう・・・
0009名前は開発中のものです。2010/09/26(日) 16:10:24ID:WuaXbrF4
>>6
何か値段が描いてあるけどよく分からないorz

誰か文字での説明お願いします
>弾が壁に当たって跳ね返るってどうすればいいの?
質問ばっかですみませんm(_ _)m
0010名前は開発中のものです。2010/09/26(日) 16:21:24ID:F4ybvzl4
壁に当たった時に移動量を反転させればいい
壁となる座標に到達(不等号で判断する)した時に、
現在のX,Y移動量に-1をかける
0011名前は開発中のものです。2010/09/26(日) 17:24:24ID:coiRfK8L
縦STGで、左右の壁で反射だったら、
@ローカル:変数1←X座標
A条件分岐:変数1<0(左端),変数1>480(右端)
Bローカル:変数2←X移動量
C計算:変数2×(-1)=変数2
これで、Y方向の速度を維持したままX方向の速度のみ反転可能

180度反射だったら、
X移動量とY移動量を両方×(-1)にして〜
0012名前は開発中のものです。2010/09/26(日) 18:38:52ID:VYUjwYOa
それ以外にはありませんか?
0013名前は開発中のものです。2010/09/26(日) 18:45:55ID:q+GcixcR
前スレ>>991
子側で「信号受信までウェイト」にしてても何らかの信号が送られてくると下に抜けちゃうんだよね
ループで信号送信し続けてると「信号受信までウェイト」は実質使えなくなる

それと、親子間で変数の値を共有したい時に信号の変数送信を使うってのは分かったけど
それってどういう時なのか具体例が欲しいな
システム変数を一個その親子用に使うってのじゃ解決しないの?
256個もあるシステム変数が足りなくなるってことはたぶん無いと思うんだけども
別に信号の変数送受信を否定する気は無いんだけど、画期的な活用法が全く思い付かない
0014名前は開発中のものです。2010/09/26(日) 18:49:27ID:coiRfK8L
速度が決まっている、自機弾とかなら、向き判定用のフラグを立てて、
画面端で、直交座標移動の左上へ行くパネルと、右上へ行くパネルを切り替える

速度が決まっていて180度方向転換なら、速度パネルで負数の移動速度を代入すると、逆方向へ向かう


鏡面反射(入射角=反射角)でなくても良ければ、左右の画面端で極座標パネルを使って、
それぞれ90度だけ右回転または左回転させる方法もあるよ
0015名前は開発中のものです。2010/09/26(日) 18:57:13ID:coiRfK8L
>>13
自機弾みたいにボタンを押す間に次々と発射される場合、
各自機弾のキャラクタがシステム変数を共有すると、挙動がおかしくなる

・・・かといって、システム変数を次々に別のものを消費していくわけにもいかないので、
独立しているけども親子間での送受信ができるシグナルは便利

例えば、自機-各自機弾だったり、各自機弾(親)-自機弾(子)だったりするけれど

複雑なスクリプトを組んでいくと、システム変数では扱いにくいけど、ローカル変数だけでは受け渡せない状況が時々ある
0016名前は開発中のものです。2010/09/26(日) 19:17:28ID:q+GcixcR
>>15
それは信号の単なる既値の送信だけじゃ事足りなくて、変数を送信出来なければ解決しないほど複雑な機構なんだね
ちょっとどういうのかさっぱり思い付かないけど、物凄く果てしなく複雑なことをやる場合にのみ必要って解釈でいい?
・・・何となくそのスクリプトってそもそも設計に問題があるんじゃないかって気もするけどw
00179862010/09/26(日) 19:46:43ID:3RSSmTF7
>子側で「信号受信までウェイト」にしてても何らかの信号が送られてくると下に抜けちゃうんだよね

確かに。たとえシグナル0の受信をウェイトしていても、そこへシグナル1でも2でも受信すると、ウェイトは
外れてしまうよね。
だから、実質信号受信までウェイトするってのは使いにくいことになる。
でもウェイトをかけるってことは、そのタスクはそこで止まってる、あるいは止めておきたいってことだよね?

そういう部分には、ループをかけて該当のシグナルを受信して、信号受信で分岐させてループの外側に
流してやるくらいしか手段はないかなと思う。

>システム変数を一個その親子用に使うってのじゃ解決しないの?
そのシステム変数を使いたい親子が、常に画面に1組しかでませんっていうのなら、システム変数経由でも
大丈夫だろうね。
だけど、自機弾みたいな、画面に同じキャラクタが複数出ますって場合は、どうする?

画面に約10個の自機弾が出たとして、そいつら全員で、一つのシステム変数を使う?なにかエラーが出そうだよね?
それでは、自機弾1個1個を別のシステム変数に割り当てる?
同じキャラクタに個性を出すには、PARAMで分けてやるとかしかないのかな?
弾幕シューティングなんかで、画面に敵弾が50個くらい出たとして、それらを別のシステム変数で使い分けるために、
その弾一つ一つをPARAMで分けて管理するか?
常に出ては消えて出ては消えてのキャラクタを。
すまないが、おれはそんな面倒くさいことはできない。
君がそっちのほうが管理がラクだというのなら、だれも止めはしないがね。
0018名前は開発中のものです。2010/09/26(日) 20:01:40ID:coiRfK8L
>>17
同感
シグナルには使い捨て的な便利さがある
システム変数はゲーム全体で、複数キャラクタで同時に共有管理が必要なものに使用するべき

シグナルをウエイトする時は、そのキャラクタのタスクが止まっているわけだから、
ウエイトを解除するためのシグナルを1種類に絞れってことなんでは・・・?
0019名前は開発中のものです。2010/09/26(日) 20:17:19ID:q+GcixcR
いや、だから、自機弾を子にしてシグナルで管理するのは分かったから
その場合にただのシグナルじゃなくて変数を使わなければいけない場合ってのが
一体どんな状態なのかを知りたかったんだけどw

つーかオプションとかならともかく、そもそも自機弾を親子で管理しなければいけない
しかもそれをただの値だけではなく変数を共有した状態にしなければならない状況ってもうちょい見直した方がいいんじゃね?
00209862010/09/26(日) 20:18:31ID:3RSSmTF7
>それってどういう時なのか具体例が欲しいな
自分はこれをどこかで使ってはいるんだろうけど、画期的な使い方はまだしていない。

そもそも前々スレだったかな?親子間で変数の受け渡しをする方法はないかってことで、
その変数範囲が-32767〜32767の範囲だっていうんで、それじゃあ変数がそのまま送れた
ほうがいいよねってことで追加された機能なんだよね。
そういう人に、どうしてその変数を送りたいのか、具体例を聞いてみたらどうか?
このスレをみていればの話だけど。

>画期的な活用法が全く思い付かない
別に、SBの機能をすべて1回以上ずつつかってゲームを作るとか、そんな縛りをしてるわけじゃ
ないんでしょう?
君が思いつかないということは、現時点では別に必要性を感じてないってことなんでしょ。
でもそれは、あくまで君個人の範囲内のことであって、他の人には他の考え方があるものなんだよね。
あなたはあなたで、「そういうことが出来る」と頭の片隅にでもおいておけば、そういう場面に出くわした時に
役に立つと思うけどね。

>・・・何となくそのスクリプトってそもそも設計に問題があるんじゃないかって気もするけどw
あのねぇ、複雑なことをするとか、そのスクリプトに問題があるかないかとかは、作ってる本人が考えることでね。

せっかく意見を言ってもらってるのに、「w」つきで人を小バカにするような態度はなんなんだ?
とりあえずシグナルの概要は長くなったけど説明は一通り終わったし、あとはそれを活用できるかどうかは各個人に
にまかせ、ひとまずこれで静観することにするよ。
0021名前は開発中のものです。2010/09/26(日) 20:48:11ID:q+GcixcR
あまり役に立ってない機能に見えるけど
もし画期的な使い方があってスクリプトを組む幅が大きく広がるなら幸いと思って質問しただけなんだけどね
なんかすげぇ長い文章だけどいまいち要点がはっきりしない
どうやら超上級者様の組むスパゲティーコード専用機能みたいだってことだけは分かったから俺ももういいや
0022名前は開発中のものです。2010/09/26(日) 20:53:53ID:coiRfK8L
変数を直接シグナルで送れて便利なのは、向きとか座標とか、移動量とかを判定する時じゃない?
以前はシステム変数を経由して、受け渡しをしていたから結構不便だった
0023SB ◆.if.Xu7A6c 2010/09/26(日) 21:39:14ID:HD/rUc2e
こんなドキュメントで大丈夫か?



システム変数、ローカル変数、変数、シグナル
このあたりのイメージと使い分けをさっさと
説明しろと言うことだよな
0024名前は開発中のものです。2010/09/26(日) 21:40:01ID:F4ybvzl4
>>21
>なんかすげぇ長い文章だけどいまいち要点がはっきりしない
そりゃそうだ。要点がはっきりする回答が得られるような質問じゃない
たとえば、「UVスクロールでどんなメリットがあるの?」
と聞かれて明確な答えを出せるかどうか


>超上級者様の組むスパゲティーコード
初心者ほど非再利用的なスクリプトを組むもの・・・
プログラミングなどにおいては汎用性のあるコード/オブジェクトは強固な土台となる
SBでもまた同じ
00259862010/09/26(日) 23:19:52ID:3RSSmTF7
SB氏お疲れ様です。

よろしくお願いします・・・
0026名前は開発中のものです。2010/09/26(日) 23:45:53ID:O9LwIS5A
一番いいドキュメントを頼む
0027名前は開発中のものです。2010/09/27(月) 00:56:33ID:qjWWfRUT
神は言った。SB氏がいいドキュメントで説明してくれると
0028SB ◆.if.Xu7A6c 2010/09/27(月) 01:05:38ID:+2mZstDD
ちょっとその前にテストしてくれる人募集
ロダのstg0726に

ver 0.99.35
スクリプト、ローカル変数のウエポンインデックスとレベルを代入可能に

をアップしたのでちゃんと動くかどうか
いろいろ試して欲しい
0029名前は開発中のものです。2010/09/27(月) 01:38:07ID:hVJU+GuH
>>28
乙です!!
すぐに検証いたします。

>>23
シグナルとローカル変数とシステム変数の相関図を作ってみました。
http://www41.atwiki.jp/stgbuilder?cmd=upload&act=open&pageid=432&file=%E3%82%B7%E3%82%B0%E3%83%8A%E3%83%AB%E3%83%BB%E5%A4%89%E6%95%B0.PNG
0030名前は開発中のものです。2010/09/27(月) 08:09:29ID:fcj1oJjO
親のX座標によって子の動きが変わる場合


以前

自身のX座標を取得し、条件分岐するループ
一定値になったら分岐し、子にシグナル1を送信


シグナル1を受信(ウェイト使用可)
受信したら分岐して別の行動


現在

自身のX座標を取得し、それを子に送信するループ


信号を受信(ウェイト使用不可なのでループにする)
受信した値が一定値なら分岐して別の行動


・・・まあ動き的には変わらないから好みの問題だねこれは
パネル数は現在の方が1枚少ない
シグナル送信は以前は一度だけ、現在は毎フレーム
0031名前は開発中のものです。2010/09/27(月) 10:13:35ID:q4WNLSyW
>24
UVスクロールとかラスターのあの辺も
開発者によっては全然使用しない人もいれば
擬似3Dやら反転画像とかヘリのアニメーションとか有効に人もいるしな

何がメリットを出すかなんて、この先わからんよ
0032名前は開発中のものです。2010/09/27(月) 13:12:58ID:CCSracwl
>>29
この図よく分からんw
(親子のシグナルの使い方は知ってる)
0033名前は開発中のものです。2010/09/27(月) 13:20:58ID:CCSracwl
つか単純にシグナルで変数送信が必須な例を挙げりゃいいだけじゃね?
まあ俺は思い付かないけど
0034名前は開発中のものです。2010/09/27(月) 13:35:50ID:RRqt1Zsw
シグナルで変数送信
ローカル<>シグナル<>ローカル
親子関係ならシステム変数不要って事か
0035名前は開発中のものです。2010/09/27(月) 13:41:28ID:Z2za7w2M
必須:受信している値を送信値に指定できること

それをどのように利用するかは個人個人で違うだろう。
必要と感じなければ、使う必要などまったくないわけだしな。

まあなんだ、まずはSB氏のドキュメントが出るまで待ったほうがいいな。
0036名前は開発中のものです。2010/09/27(月) 14:04:59ID:hjnz6w7p
>>32
頭大丈夫かよww(藁
さすがに、中学生でもわかる図だぜwww
0037名前は開発中のものです。2010/09/27(月) 14:13:20ID:hjnz6w7p
【システム変数 経由】
親)
 X座標→ローカル変数@
 システム変数@←ローカル変数@
子)
 システム変数@→ローカル変数@
 X座標→ローカル変数A
 ローカル変数@>ローカル変数A で分岐
----
【シグナル 経由】
親)
 X座標→ローカル変数@
 シグナル送信@←ローカル変数@
子)
 X座標→ローカル変数A
 シグナル受信@→ローカル変数@>ローカル変数A で分岐
→Xだけなら1枚節約、XとYなら2枚節約
0038名前は開発中のものです。2010/09/27(月) 14:42:35ID:CCSracwl
>>36
ごめんなwww頭悪くてwwww
でも>>29だと親子じゃなくてもシグナルが使えるように見えるし
シグナルはローカル変数を扱うことしか出来ないように見えるぜ
0039名前は開発中のものです。2010/09/27(月) 14:54:51ID:Z2za7w2M
親子間のシグナルは、

親→子は、送信というものしか出来なくて
子→親は、受信というものしか出来ない

ようにも見えるな。
0040名前は開発中のものです。2010/09/27(月) 18:34:34ID:yRPnMY7q
>>11
反射しない...orz
スプライトもバグった…lllorz
何でだろう。その通りにやった筈なのに。

スクリプトはこんな感じにしたのですが、間違ってる所ありますかね?

変数(ローカル)x座標・→・変数1
変数(条件分岐)即値0>変数1 、 変数(条件分岐)即値480<変数1
変数(ローカル)x移動量・→・変数2
変数(計算)変数2×(-1)=変数2
0041名前は開発中のものです。2010/09/27(月) 18:41:22ID:hjnz6w7p
>>38
親子じゃなくてもシグナルは使えるさ
送信先に自分があるからな

数値はシグナルもローカルもシステムも全部で扱えるから、省略してんだろう
相関図だしww

>>39
キャラクタA主体に解説されているから、確かにそういう風に見えるわ

>>40
そのスクリプトでスプライトがバグルる要素ないだろww
即値は、画面端のX座標から、キャラクタのサイズを±しておいたほうが良いみたい

最後に、変数(ローカル)x移動量・←・変数2も忘れずにな!
0042名前は開発中のものです。2010/09/27(月) 19:33:59ID:Z2za7w2M
>>40
>スプライトもバグった…lllorz
バグっていうのがどの程度のことを言ってるのかはわからないが、スクリプトの
どのあたりにエラー箇所があるのか、絞り込む技術も身につけないと、つらいぜ〜

@:スクリプトの気になるところに適当な効果音パネルを置いて、きちんとそこを通過しているか
A:該当の変数を文字列表示させてみて、希望どおりの数値が入っているか

間違ってる箇所があるかってことだけど、ケアレスミスだってあるわけだしな。
そういうところを乗り越えていければ、Lvがアップするぜ、がんばれ!
0043名前は開発中のものです。2010/09/27(月) 19:34:58ID:Z2za7w2M
スクリプトがバグったと思ったら、スプライトだったのかww
0044名前は開発中のものです。2010/09/27(月) 20:13:10ID:fcj1oJjO
信号で変数送信が必須の例を見つけたかもしれない!

子が親の左右どちらにいるかで動きが変わる場合

以前

自身のX座標を取得し、システム変数1に代入するループ


自身のX座標をローカル変数Aに、システム変数1をローカル変数Bに代入し、比較するループ
AがBよりも小さければ左の動き、Bよりも大きければ右の動きとなる

現在

自身のX座標を取得し、それを信号送信するループ


自身のX座標をローカル変数Aに、信号受信してローカル変数Bに代入し、比較するループ
AがBよりも小さければ左の動き、Bよりも大きければ右の動きとなる


この場合、以前ならシステム変数を介するためこの親子は画面内に一組しか存在出来ないが、
現在は信号で処理するため複数組存在させることが出来る
0045名前は開発中のものです。2010/09/27(月) 20:21:38ID:fcj1oJjO
あ・・・ごめん、自信満々に言ったけどよく考えたら>>44は単に位置分岐すればいいだけだったわ

うーむ、そもそも親子間でシステム変数が必須な例を考えた方が早いかな・・・
0046名前は開発中のものです。2010/09/27(月) 20:45:52ID:lNnILtjd
何を再現したいのかさっぱりワカラン
0047名前は開発中のものです。2010/09/27(月) 20:50:30ID:D8iOoki3
皆丁寧に説明してくれてるのに
全然分からない;;
すいませんこういうのに関してはド素人なので
やっぱ変数とか完璧に知ってないとダメかな…

>>42
細かく言えば、スプライトの余白(?)の部分が透過しなくなってる
通過はちゃとしてるみたいです
0048名前は開発中のものです。2010/09/27(月) 21:14:02ID:hjnz6w7p
自機)
 ボタン判定A→ ショット:30度、60度、90度、120度、150度にファンネルを発射

ファンネル) *進行方向を向く:ON
 ループ開始:100回
 誘導:角速度3600,移動速度1,時間待ち10フレーム
 ローカル:画像の向き→変数0
 信号送信:子に代入,シグナル0←変数0
 ボタン判定:B→ 子生成:レーザー発射ポッド
 ループ終了
 消滅

レーザー発射ポッド) *親の向きに同期する:OFF
 ローカル:シグナル0→変数0
 ローカル:画像の向き←変数0
 ループ開始:3回
 ショット:画像の向きにレーザーを発射
 通過:100フレーム
 ループ終了
 消滅

Aボタンで複数のファンネルを発射、各ファンネルは個別に複数の敵を次々と捕捉、
Bボタンで各ファンネルからレーザー発射ポッドが出て、その時に補足している敵の向きに3回レーザを照射して消滅

各ファンネル−レーザーポッドは、親子間で独立しているので、各ファンネルの向きを入れたシグナルは混線しない
0049名前は開発中のものです。2010/09/27(月) 21:20:52ID:hjnz6w7p
ファンネルとレーザー発射ポッドを別にしているのは、
ファンネルをサーチ専用にして、レーザー発射ポッドを攻撃専用にすることで、
あるターゲットを捕捉してレーザー照射中に、絶えず別のターゲットを索敵して、
同時に別のターゲットにもレーザーを照射できる

まさにオールレンジ攻撃ww
0050名前は開発中のものです。2010/09/27(月) 21:24:40ID:fcj1oJjO
それ、レーザーポッドが親の向きに同期してたら駄目なの?
0051名前は開発中のものです。2010/09/27(月) 21:34:21ID:fcj1oJjO
あ・・・ごめん、>>49読んでなかった
よしじゃあ質問を変えよう
親の向きに同期してポッド作成後、向き同期フラグを切る、だと上手くいかないかな?
0052名前は開発中のものです。2010/09/27(月) 21:35:33ID:hjnz6w7p
ファンネルと一緒にレーザーポッドが動かれてしまうと、敵に照射し続けられず、
ファンネルと一緒にブルンブルンレーザーを振り回されてしまう・・・
■ このスレッドは過去ログ倉庫に格納されています