トップページ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/
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
ファンネルと一緒にレーザーポッドが動かれてしまうと、敵に照射し続けられず、
ファンネルと一緒にブルンブルンレーザーを振り回されてしまう・・・
0053名前は開発中のものです。2010/09/27(月) 21:37:30ID:hjnz6w7p
>>51
照射して消滅するパターンだと、親の向きに同期:ONで子生成して、
生成された直後に親の向きに同期:OFFでもいけるよ
0054名前は開発中のものです。2010/09/27(月) 21:40:18ID:hjnz6w7p
レーザーポッドを消滅させずに再利用する方法(子生成は1回きり)だと、
ボタンを押すたびに、カレントのファンネルの向きを代入して向きを変えてやる方が楽だったよ
0055名前は開発中のものです。2010/09/27(月) 22:03:49ID:lNnILtjd
蒼穹紅蓮隊のロックオンマーカーみたいな感じか
0056名前は開発中のものです。2010/09/27(月) 22:19:01ID:Z2za7w2M
要するに、レーザーポットが親から受け取った向きにレーザー3回照射してる間に、
ファンネルは次の索敵に移っている(敵が死んだ場合)ってことかな。

親に向き(や座標)を同期させてないときに、向き(や座標)の親子間でのやりとりに、
シグナルの変数送信が使えますよ。って例なのかな。

3回発射するレーザーは、みな同じ方向に撃つんだよね?
敵が動いたりしてると、レーザーの2発目、3発目は空ぶってる気がするけど、そういう
兵器なのかな?

>>52
ファンネルは自機と座標を同期してるわけでなく、発射された位置に留まってると思う。
ファンネル自体は移動速度1だから(誘導するためには最低移動力1が必要)」、そんなに
めちゃくちゃに動くわけではないと思うけどな。

もしどうしてもファンネルの移動が気になるなら、ファンネルの土台を作って、子として
ファンネルを発射させて(親と座標を同期 on)、1回誘導するたびに直行移動で座標(0,0)に
戻せば、その場で留まるファンネルは表現できそうだね。
0057名前は開発中のものです。2010/09/27(月) 22:29:43ID:hVJU+GuH
プレイヤー設定で登録するオプションにすると、自動で毎ターン初期座標にリセットされる。


ちなみに、親の向きに同期のオン・オフと、親の向きを代入は、ほとんど同値。

親の向きを変数に代入する方法では、変数計算で90度・180度を加減算して、向きを調整することもできる。

だけど、親の向きをオフにしている間に、回転パネル(相対ON)で90度・180度させても同じこと。

レーザーの発射時の角度を変化させる方法だってある。
0058名前は開発中のものです。2010/09/27(月) 22:33:17ID:Z2za7w2M
おお!
初期座標リセットは、オプションという手がありましたか・・・
0059名前は開発中のものです。2010/09/27(月) 22:38:35ID:hVJU+GuH
>>敵が動いたりしてると、レーザーの2発目、3発目は空ぶってる気がするけど、そういう兵器なのかな?

全部が追尾しちゃうと、最強無敵兵器になっちゃいそう。

>>ファンネルと一緒にレーザーポッドが動かれてしまうと、敵に照射し続けられず、ファンネルと一緒にブルンブルンレーザーを振り回されてしまう・・・

これは向きのことを言ってるような気がする。
照射中に敵を追尾しちゃうと、レーザーをスイングしてしまうって意味では?
レーザーって言うよりビームサーベル状態になっちゃいそう。

>>ファンネル自体は移動速度1だから(誘導するためには最低移動力1が必要)

誘導時に最低移動力1が必要なのが結構ネックで、移動力0で進行方向だけ変更(追尾・誘導)して欲しいことが多々ある。
きっと、進行方向を割り出すのに、移動量のY/X比とか使用していて、移動量0で進行方向だけ追尾できないんだろうな・・・
(あれ?極座標移動では、速度0でも進行方向だけ変更できるなあ??)
0060名前は開発中のものです。2010/09/27(月) 22:53:06ID:Z2za7w2M
>照射中に敵を追尾しちゃうと、レーザーをスイングしてしまうって意味では?
いや、それは多分ないかな。
照射中に敵を追尾しないように、わざわざファンネルとの向き同期を切って、
1回だけ親から向きを取得→その向きに3回レーザー発射って手順を踏んでるみたいだし。

そういえば、ファンネルは発射された場所に留まるって予想したけど、ショットで撃たれた
ファンネルに上下左右のワインダーがかかってれば、自機の動きに同期するファンネルに
なるのかもな。

>全部が追尾しちゃうと、最強無敵兵器になっちゃいそう
発射場所の向きだけの誘導だと、敵が高速移動してる場合に1発目も意外と空ぶったり
するケースが多い気がする。
0061名前は開発中のものです。2010/09/27(月) 22:54:59ID:D8iOoki3
>>41
スプライトは単なる画像のミスでした。

今回の壁に反射の件は諦めます
ただ他にもう一つ質問があるのでお願いします

プレイヤーの選択画面についてなのですが、
とりあえずサンプルゲームからスクリプトをコピぺして実行してみたのですが文字が出てきません
フォントはデフォルトフォントにしてあります
0から作ろうにも何をすればいいのかさっぱりです(とりあえずレイアウトとステージは作りました)

ド素人なのでできるだけ具体的に説明お願いします。度々すいませんm(_ _)m
0062名前は開発中のものです。2010/09/27(月) 23:01:45ID:hVJU+GuH
50>>それ、レーザーポッドが親の向きに同期してたら駄目なの?
52>>ファンネルと一緒にレーザーポッドが動かれてしまうと、敵に照射し続けられず、ファンネルと一緒にブルンブルンレーザーを振り回されてしまう・・・
50の方法だと、52になるってことかと思った。

>>発射場所の向きだけの誘導だと、敵が高速移動してる場合に1発目も意外と空ぶったりするケースが多い気がする。
かえって3発全弾を追尾していないのは、・・・そのためなのか?

>>今回の壁に反射の件は諦めます
いや、まだ諦めんなよ!?
0063名前は開発中のものです。2010/09/27(月) 23:03:48ID:fcj1oJjO
>>62
俺もそれだと思ってた

中々「信号の変数送信が必須」っていう例を見つけるのは難しいわ・・・
0064名前は開発中のものです。2010/09/27(月) 23:04:58ID:Z2za7w2M
空振りとかもあるから、複数のファンネルを発射させてそれぞれ3回ずつレーザー撃たせて、
画面中にレーザーの当たり判定を多く出してるのかもな。
0065名前は開発中のものです。2010/09/27(月) 23:16:52ID:hVJU+GuH
>>64
ちょっと、その壮大なファンネルのサンプル見てみたい。ぜひupして欲しいな。
ガ●ダ○の版権的な問題でダメなのか?

>>63
いや・・・、別に必須でなくても、便利だったらいいと思うんだ。

・信号送信は、相手に受信値を送れない。
・ローカルでは、自分に送られた受信値しか参照・代入できない。
→変数を送信する機能があれば、
  ローカルで自分に送られた受信値を変数に取得して、
  その変数を相手に送信することで、受信値を送信したことになるよね?

この「自分が受けた受信値を相手に送信できる」ことが、変数送信の一番のメリットじゃない?
システム変数と違って、各親子間で独立して行えるし・・・。
0066名前は開発中のものです。2010/09/27(月) 23:28:44ID:Z2za7w2M
プレイヤー選択は
 ●:選択メニュー項目用の子を発射するための「親」が必要

ってことなんだよね。その親が画面内にきちんと存在しているか、
留まっているか、そこが第一歩になると思う。

 @:「親」用のキャラクタを1個、「ステージ」の「敵配置」の
   「時間配置」の「0」の上におく
 A:そのキャラクタを、画面の中の適当な場所へ「直行移動させる」
 B:移動したら、必ず「移動停止」させてやる。
 C:「親」キャラが出現中は「出現中の時間を停止」フラグオンにする
 D:「ステージ」の「全体時間」を「100」とか「1000」とか、余裕を持った数字に設定する
   (親キャラ出現中に時間が停止するので、余裕を持った大きな値でも関係ない)

まずはこれ。

これが出来るなら、あとは
 @:項目用の子を必要な数だけ発射させる
 A:「制御、メニュー」で「プレイヤー選択」を設定
 B:「消滅」

まずは、@〜Dまでやって、「親キャラが画面に留まっているか」を確認してみてくれ。
0067名前は開発中のものです。2010/09/27(月) 23:32:00ID:Z2za7w2M
あ、そうそう、壁に反射の件は、あきらめるのではなく、
「今の段階では、まだ力量が足りずに出来なかった」と考えたほうがいい。

もっと経験を積んだら、いずれは出来るようになる。
そのときまで、がんばれ!
0068名前は開発中のものです。2010/09/27(月) 23:42:31ID:BiGUcDB5
てけとーにクソゲー量産して(公開はやめて!)
後々に神ゲーつくれ
0069名前は開発中のものです。2010/09/27(月) 23:50:37ID:Z2za7w2M
>>65
確かに、サンプルみてみたいねぇ。
>>48さん、よろしければ、サンプルおねがいしますよ。

ところで、武器lv系をあまり使ったことがない、オプションやインデックス系、
ボムもあまり触れたことないから、SB氏のテストがなかなか進まない・・・

このヴァージョンでは、リードオンリーがほとんど外れてるけど、それらが
全部書き込みも可能にしてあるってことですよねぇ、ふぅ・・・
0070名前は開発中のものです。2010/09/27(月) 23:54:59ID:JS/l1GG0
>>68
糞ゲーの中にも光る物があるから完成に近い状態なら公開して欲しい。
0071名前は開発中のものです。2010/09/28(火) 00:01:50ID:0s6Ht39j
>>70
俺がテストのために作った習作ならいいぜ
10数個ある
0072名前は開発中のものです。2010/09/28(火) 00:07:38ID:UeA5ORRW
シグナルとローカル変数とシステム変数の相関図を作り直してみました。
 *親子間限定
 *即値あり
 *送信と受信を分割
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%B02.PNG
0073名前は開発中のものです。2010/09/28(火) 00:08:45ID:us/Y6pzg
>>71
な〜にぃ〜
やっちまったな
男はだまって
うp
男はだまって
うp
本当に秀作ならいいなー


死ネタ
0074名前は開発中のものです。2010/09/28(火) 00:28:51ID:UeA5ORRW
システム変数:ATM(カードと暗証番号さえあれば、いつでも・どこでも・誰でも使える。預けたり、下ろしたり・・・)
ローカル変数:財布(個々人がそれぞれ管理している。収入が入ってきたり、支出が出て行ったり・・・)
シグナル:現金書留(指定された相手にしか届かない。中身を確認できるのは受け取った相手だけ)

<ローカル変数(財布)とシステム変数(ATM:銀行口座)>
兄の収入・・・・・・・・・・・・弟の収入
 ↓・・・・・・・・・・・・・・・・・・・↓
兄の財布←→ATM←→弟の財布
 ↓・・・・・・・・・・・・・・・・・・・↓
兄の支出・・・・・・・・・・・・弟の支出
(兄と弟は、共通の口座を共有しています)

<ローカル変数(財布)とシグナル(現金書留)>
兄の財布→現金書留(弟へ)→弟の財布
兄の財布←現金書留(兄へ)←弟の財布
(送った金額は覚えているので前回送る時に参考にできますが、中身を見れるのは受け取った人だけ)
0075名前は開発中のものです。2010/09/28(火) 00:33:08ID:0s6Ht39j
>>73
stg0728.zip
うっぷぷした
○○のR○○から○出をした○○を使ったものとかあって○○権がやばいから
安全なものだけ

たぶんSBで作ることはもう無いだろうから後でプロジェクトファイルだけのをアップするかも
(こちらは習作ではなく時間かけてきちんと作ったもの)
0076名前は開発中のものです。2010/09/28(火) 00:51:50ID:UeA5ORRW
自機弾のフレイムに感動しました。
AfterEffect並みの炎を弾幕で再現するなんて。
これがパーティクルフィジックスってヤツですか。
0077名前は開発中のものです。2010/09/28(火) 02:14:42ID:Iv31Lrgq
>>61
てゆーか俺がぱっと見で一番気になったのは、「480」という数字。
これって通常は縦のサイズだよ。
もしもサンプルゲームと同じ画面幅なのに480に設定しちゃっているのだとしたら、
遥か画面外で反射して二度と見える範囲には戻ってこないという結末になると思う。
ひょっとしたら横シューなのかな?とも思ったけど、そこらへん大丈夫?
0078名前は開発中のものです。2010/09/28(火) 04:03:35ID:vbeC4IXk
>>74
お金に例えるなら

・システム変数:銀行(一時的に残高を預かってくれる場所)
・シグナル :ATM(親や子の関係者のみ残高を振り込んだり引き落としたりできる)
・ローカル変数:財布(自分で出し入れする以外に残高は変わらない)

のほうがわかりやすいぞ

信号送信・受信で解り難くしている要因に送信データの中に
【自分のシグナル】が無いからだと思う
まぁ今まで無くても困らなかったので無いのだろうけど…

シグナルに変数をデータとして送信できる最大のメリットは
今まで一度変数に取得して変数分岐でチェックして不動数の信号に変換していたものを
ローカルデータの変数のまま子や親に送信できる事で
システム変数の仲介の手間がはぶける部分って事になるのかな?
0079名前は開発中のものです。2010/09/28(火) 07:39:07ID:BoIEPy3s
新しい携帯電話を買って、凄い多機能だし使い方も覚えたけど
結局普通の電話とメールだけで全てまかなえちゃう、みたいな?
0080名前は開発中のものです。2010/09/28(火) 12:35:28ID:stBTsWu1
>>66
おおできました!
ありがとうございます
>>67
そういう意味も込めたつもりだったのですが...
文才なくてすみません;;
>>77
自分のは縦シューです。
つまり、480よりも小さい数字にした方が良いという事ですかね?
0081名前は開発中のものです。2010/09/28(火) 13:14:26ID:rOw2WdNo
デフォルトと同じレイアウトで横へのフリースクロールが無いなら画面サイズは縦480、横384だよ
つまり画面反射に使う値は
X→0〜384
Y→0〜480

これでもっかいやってみ
座標取得して範囲外に出たら分岐して移動量に-1をかける、の繰り返し
簡単さー
0082名前は開発中のものです。2010/09/28(火) 13:32:58ID:EzvWN5JW
弾の反射がどういう理屈、どういう理論の元で、あのようなスクリプトが組まれているか、
それは理解できているかい?
プレイヤー選択が出来たのはおめでとうと言いたいけど、黒板に書かれた内容を、ただひたすら
ノートに書き写しているだけに見えるかな。

まずは、反射させたい弾が今どの座標にいるのか、それをしっかり把握する必要があるかもしれないね。

  ●弾の座標取得
  @:弾のx座標を変数aに読み込む
  A:弾のy座標を変数bに読み込む
  B:@、Aを、outとinでループさせ、弾の現在値を常に取得させる

  ●文字列表示
  @:弾の「キャラクタ」の「文字列表示」の「文字列を表示する」にチェックをいれる
  A:「引数1」と「引数2」に該当の変数を設定する
  B:「表示文字列」に、「%3d %3d」と入力する
    %3dの3と言う数字は、3桁の数字を表示すると言うこと。これがたとえば得点などの
    沢山の桁数を表示させたかったら、%8dとかにすれば、8桁の表示になる。

これで、弾の現在の座標がリアルタイムで弾の下に表示されるはず
0083名前は開発中のものです。2010/09/28(火) 16:42:44ID:stBTsWu1
>>82
>黒板に書かれた内容を、ただひたすらノートに書き写しているだけに見えるかな。
ズバリその通りです...

理屈も半分くらいしか分かってません...
(どちらかといえば理屈はだいたい分かっている方なのですが、
どのパネルを使うとか、何をどうするかが分からないです)
0084名前は開発中のものです。2010/09/28(火) 17:23:09ID:rOw2WdNo
・X座標を変数0、Y座標を変数1に取得(ローカル変数の項目内にある)
・変数0が0以下だったらラベル0、変数0が384以上だったらラベル0に分岐
・変数1が0以下だったらラベル1、変数1が480以上だったらラベル1に分岐
・通過(1フレーム)
↑ここまでをループさせる

ラベル0の処理
・X移動量を変数0に取得(ローカル変数の項目内にある)
・変数0に-1をかける(変数0 × -1 = 変数0 でおk)
・変数0をX移動量に戻す(矢印を左向きにすればおk)
・通過(1フレーム)

ラベル1の処理
・Y移動量を変数1に取得(ローカル変数の項目内にある)
・変数1に-1をかける(変数1 × -1 = 変数1 でおk)
・変数1をY移動量に戻す(矢印を左向きにすればおk)
・通過(1フレーム)


これで分かんないならもうどうしようもないから1作か2作完成するまで消えとけ
0085名前は開発中のものです。2010/09/28(火) 18:06:07ID:stBTsWu1
できなかった...orz
でも変数の役割はなんとなく分かりました

という訳でもう消えます。迷惑かけてすいませんでした。
どっかにSBの講座とか質問受け付けてる所ってありますかね…?
0086名前は開発中のものです。2010/09/28(火) 18:09:05ID:stBTsWu1
あ、できた。
でも消えます
ありがとうございました
0087名前は開発中のものです。2010/09/28(火) 18:20:42ID:5OBypobc
>>85
SB@wikiのFAQコーナー
0088名前は開発中のものです。2010/09/28(火) 18:25:29ID:Iv31Lrgq
やっぱり480が最大の元凶か
SBの講座は俺は見たことない
俺の場合はツクールとかSRCでゲーム作ってたから難しくは感じなかったな
0089名前は開発中のものです。2010/09/28(火) 19:16:26ID:8LPh3Qra
初心者で分からないのはしょうがないんだけどね。
質問されることも別に迷惑でもなんでもないんだけどね。

でも、これから先もずっと質問を続けて、言われたことをただ書き写して行くだけなのかな。
講座なんてしっかりしたものはないんだから、自分でいじりながら覚えるしかないんだけどね。

>何か値段が描いてあるけどよく分からないorz
これって、まさか同人のバナーに興味を持ってしまったわけではないよね?
「STGDupl」っていうところをクリックしないとね。
0090名前は開発中のものです。2010/09/28(火) 19:21:13ID:8LPh3Qra
>>78
実際には銀行とATMにつながりがあるわけだから、その例えだと、システム変数とシグナルが
直接やり取りできるように見えてしまう気がするな。
0091名前は開発中のものです。2010/09/28(火) 19:47:20ID:5OBypobc
>>74
>>78

シグナルを使った印象は、送りっぱなしの書留に近いかな

システム変数はATMというか、家族共通の銀行口座かな
0092名前は開発中のものです。2010/09/28(火) 19:50:11ID:5OBypobc
新しい図はだいぶ整理されて見やすくなった

シグナルの送信・受信が別の値だというのがよくわかる

しかも、受信値はいったんローカルで変数に呼び出さないと中身を確認できない点とか

変数を送信できるようになったことで、シグナルの受信→送信サイクルがつながったわけだね
0093SB ◆.if.Xu7A6c 2010/09/28(火) 21:35:24ID:PQ8yxRHK
シグナルに関して
wikiに割と詳しい解説を書いてくれてるね

強調したいのは、シグナル受信箱は各キャラに
一つしかないこと

複数の子を持つ親がいたとして、
子が親に対して一斉に同一番号のシグナルを
送信すると親はパニックになる

うまく処理することも可能ではあるが
おすすめはしない
0094名前は開発中のものです。2010/09/28(火) 22:00:53ID:Iv31Lrgq
まあ「SBの講座」は知らないけど、ツクールとかの講座だったら探せば腐るほどあるよ
俺も昔はさんざん見て回ったもんだった
べつにSB用じゃなくてもたとえば変数の考え方なんかは全てのツールで共通の概念だから役に立つよ
0095名前は開発中のものです。2010/09/28(火) 22:01:30ID:8LPh3Qra
SB氏、お疲れ様です。

>一斉に同一番号のシグナルを送信

これは、全くの同一タイミングで送信されるケースってことですよね?
複数の子キャラが親にシグナル送信するような仕組みは、やもすると誤動作が
起こりかねないので、なるべくなら作らないほうが懸命であるってことですね。

了解しました〜。
0096名前は開発中のものです。2010/09/28(火) 22:16:01ID:8LPh3Qra
>>94
ああ、確かに。
おれもシューツクの講座もさんざん見て回ったな〜、なつかしい。
だから、SBでのシステム変数、ローカル変数の概念なんかはわりと迷いなく
理解できたほうかも。

システム変数が256あると知って、しかもすべて保存の有無の切り替えができるんで、
これは色々なことが出来る!とか思ったな。

ただ、SBを使いたい人が、一体どれだけSB以外の講座に行けるかってのはあるね。
とりあえずは、WIKIの充実が一番のような気がする。
0097名前は開発中のものです。2010/09/28(火) 22:34:37ID:8LPh3Qra
そういえば、
 「画面内に敵が何匹出現したか」
 「そのうちの何匹が死んだか」
 「画面内の敵がすべていなくなってから次の動作へ移行」

こんなような事をするため、敵数の計測用にシグナルでカウンター作ってるんだよな。
こんなのが、同一シグナルの混戦を一番招きそうだよな・・・
今のシステムをいじるのはもう億劫なので、次こういうことをするときは、別のシステムを
考えるかな。
0098名前は開発中のものです。2010/09/29(水) 12:39:48ID:mx50E8aJ
敵の登場時にシステム変数を加算していき、破壊時に減算する方式だと、
画面内の敵の出現数をカウントできて良いけれど、
同時に死亡したりしてフレームが重なった時に、減算し損なって0にならなくなり、
全滅フラグが発動しないことがある

指定フレーム経過後に0になるシステム変数を、
敵の出現中はどの敵も常に同じ変数を絶えず1に書き換え続けることで、
誰も書き換える人がいなくなり、全滅した時点で0のままになり発動する、
デススイッチ方式フラグもあるね
0099名前は開発中のものです。2010/09/29(水) 14:06:35ID:o9YGV8jk
それを信号でやる方法って無い?
0100名前は開発中のものです。2010/09/29(水) 19:01:04ID:o+zmGTqQ
>同時に死亡したりしてフレームが重なった時に、減算し損なって0にならなくなり、

以前、同じような疑問を持ってそういう質問をしたら、
システムをローカルに読み込む(ウェイトなし) → 減算する(ウェイトなし) → システムへ書き戻す(ウェイト1)

と、システムの読み込みと書き戻しを同時にやると、その手のエラーが起こらないという、SB氏からの回答があったな。
でも、シグナルでは同一タイミングでの混線ありって>>93でも出てるから、完全には拭えないのかな。

デススイッチフラグはいい案だな。
指定フレームってのが300くらいだった時は、キャラクタのALIVEチェックの間隔はちょい少な目の290位にしておくとかすれば、
キャラクタ大量発生時のシステム変数の読み書きの負担も軽減できるかもな。
今度取り入れてみるかな。
0101名前は開発中のものです。2010/09/29(水) 20:02:32ID:id3cSmrS
>SB氏からの回答があったな。
知らなかったわ
トンクスコ
0102名前は開発中のものです。2010/09/29(水) 20:41:12ID:cNvcGlAY
>>98
いいねそれ
色々応用も効いて便利だから使わせて頂きます
0103名前は開発中のものです。2010/09/29(水) 20:45:40ID:o+zmGTqQ
>SB氏からの回答があったな。
6スレ目の>402のレスだね。

「システム変数を取得してから書き戻すまでに
ウエイトを入れずにやれば大丈夫」

これって、最後の書き戻しでウェイト1にするってことでいいんですよね・・・
0104名前は開発中のものです。2010/09/29(水) 20:47:13ID:o+zmGTqQ
↑スマン、7番目スレッドだった...orz
0105名前は開発中のものです。2010/09/29(水) 22:18:48ID:mx50E8aJ
デススイッチの良いところは、作働が確実な点

ゴ○ゴ13もこれで手傷を負わされたんだから・・・
0106名前は開発中のものです。2010/09/30(木) 00:01:56ID:YXwJ7fQt
このデススイッチって考え方、わりとゲーム製作の基本として習うやり方だよね
■ このスレッドは過去ログ倉庫に格納されています