Tonyu(豆乳)でゲーム製作-2-
■ このスレッドは過去ログ倉庫に格納されています
___________
// \\
/ / .ヽヽ
l l l l
| | | | :
.| |______,,─=─____| | ::::::
|___ -'''''  ̄ ̄ ̄ ___| :::::::::::::
|_l__ヽ /__l__| ::::::
|_l_`ニ/ 。 ヽニ'__l__| ..............:...............
`l''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''l' ..:::::::::::::::: :::::::::::::::..
|''''''l''''''''''''''''''l'''''''l ̄ ̄ ̄l'''''''''l''''''''''''''''l'''''''|:::::::::::::::: :::::::::::::::::
|::::::|::::::::::::::::::|::::::|___|:::::::::|:::::::::::::::|:::::::| :::: :: ::: ::
|;;;;;L,,,,,,,,,,,,,,,'──────-`;;;;;;;;;;;;_l;;;;;;;| :: :::: ::: : :::: :::: :: :
|::lニl|::::::::::::l──────-l:::::::::::::lニl::::|::::::::: ::: :: :
`ニニ───────────:::::::::::::::::::::
|:::::::::::| (::○::::::::::::::::::::::::::::
|:::::::::::| |:::::::::::|
`─-' `─-'
なんだかわかりませんが、
とりあえず黒煙を撒いておきますね デリカ 前スレの888でうpったACT素材っぽいのが更新したんで乗せときますわ。
ttp://uploader.zive.net/file/12056.lzh マップにチップを並べて、実行する時マップが壊れる時が
あるのは使用なのかな >>10
正直豆乳は全然知らんが、それはお前が実行時に壊してる
だけじゃないのか? そういえば、サイズによって変な動きするとか何とか本家BBSの過去ログで見た気がする。 マップが16x12の場合
□□□□□□□□□□□□□□□□
(略)
□□□□□□□□□□□□□□□□
■の位置(16x12からはみ出た位置)にパターンを置くと
□□□□□□□□□□□□□□□□■
(略)
□□□□□□□□□□□□□□□□■
■■■■■■■■■■■■■■■■■
実行時にこうなる
■■■■■■■■■■■■■■■■■
(略)
■□□□□□□□□□□□□□□□■
■■■■■■■■■■■■■■■■■
原因は多分これ。 function test(x,y)
{
if(x>=0&&x<10&&y>=0&&y<10)
{
print("x"+x+"y"+y);
test(x+1,y);
//ここから
test(x-1,y);
test(x,y+1);
test(x,y-1);
//ここを削除するとエラーが起きなくなった
}
}
↑を実行すると読み込み違反が起きる
これでは再帰が使えないので困る >>18
test(9,0);はtest(8,0);を呼び、test(8,0);はtest(9,0);を呼びます。
つまり、永久に呼び続けることになります。
Tonyuは16階層ぐらいまでしか関数呼び出しを使えません。
それ以上深くなると呼び出し元を覚えているメモリが溢れてしまいます。 >>19
ぅゎ、ひどいミスorz
これじゃ動かないわけだ。
関数呼び出しは30階層位まで大丈夫みたいだった。 >>1見るとやっぱ厨房が多いでつね。
けどクオリティ高いのもいくつかあったりwwwwwっうぇ あくまで道具に過ぎないからな。ユーザの質が道具で決まるわけじゃない スタック領域が64(256バイト)
関数を呼ぶたびに引数の数+ローカル変数の数+1消費
関数を抜けるとその関数を呼ぶときに消費した分回復
function A(a,b,c,d,e,f,g,h,i,j)
{if(a)return A(a-1,b,c,d,e,f,g,h,i,j)*2;else return 1;}
↑A(7)なら2+10+10+10+10+10+10=62で大丈夫
A(8)だと2+10*7=72でエラー発生
64なんてあっという間に使い果たしてしまう。
256バイトと言うのはいくらなんでも節約しすぎ。
スタック領域を設定する関数が欲しい 再帰が使える仕様なのに実際には使えないなんて面白い仕様だなw
そもそもなんで豆乳ってわざわざ自前で(しかもやたら小さい)スタックなんか持ってんだろう? そんなプログラムに詳しいなら
面白いゲーム作ってよ。 VMが自前でスタックを持たなくて、ほかの何が持つんだ、と。 豆乳は一つのオブジェクトに一つのスレッドをモつんでしょ?
てことは、全てのオブジェクトにそれぞれスタックを割り当てないとダメ。
オブジェクト一つ一つだから、あまり多くを割り当てるとマズイ。
ってことじゃねーの?使ったことは無いんで実際は知らんけど。 >>1のタイピングの
main.tonyu
function keychk(variable,shift)
......
の部分が分からんのだが
誰かおせーて。 >>28
押されたキーのキーコードが何であるかをgetkey()で取得し、そのキーコードと
shiftキーの状態からアスキーコードを算出し、文字と比較している。
合っていれば1を、違っていれば-1を返す。
キーコードはaもAも関係ないのでこういう処理が必要になる。
※>>1のタイピングではCAPSキーの判定はしていない。
>>29
苦労は買ってでもしろって言うからな。
それが無料でできるなんてすばらしいじゃないか。
開発環境の優劣なんていう話にはしないでくれよ、無意味だから。 ttp://prog-etc.bbs.thebbs.jp/1106912195/
the掲示板という大規模掲示板サイトのプログラム板に
ここと似たスレがあり、公式で活躍してるごま太郎がいた。 >>30
開発環境のうんたらについて同感。
だいたい、作者が「初心者がプログラムに親しむための」と言っているんだから初心者が楽しめばそれでよさげな。
Cと比べられても困るよな^^;
ryota氏のサイトが「準備中」だとか。
以前、彼のサイトでHSPとtonyuとの速度比較の話があったんだけど、実験結果では同等の速度だったとか。
なんだかんだ言っても透明処理なんかのことを考えるとやっぱりトロい気がしてなんないけども、ちょっと救われた気分だった(笑) >>30
Thx
タイピングってメンドイな..
日本語に対応するにはどうしたらいいでつか?
「じ」だったら J+I か Z+I とか.. //日本語入力テストサンプル(Enterの判定甘いです)
extends PanelChar;
$TextEditor.setPosition(4,4,200,16);
$TextEditor.edit();
t = "";
$TextEditor.setText(t);
while (1) {
if($TextEditor.isEditing()){
if(getkey(13)){
gt = $TextEditor.getText();
if(t==gt && gt!=""){
$panel.fillRect(4,32,320,240,$Blue);
$panel.drawText(4,32,t,$clWhite);
$TextEditor.setText("");
gt = "";
}
}
t = gt;
}else{
$TextEditor.edit();
}
update();
}
//それにしても1行・1単語単位の入力処理は向かないね。
//J+IとかZ+Iとかに分けないと>>1タイピングっぽくは動かせないと思う。
//(あんまり豆乳さわってないのがバレバレで申し訳ない) >>32
シューティングで弾500個とか出したらtonyuじゃHSPにはとてもかなわないような…
>>34-35
Ryota氏かな?サンクス。
さらに複雑になったな(;´Д`)
他のタイピングもその方法なのだろうか...
>>36
いつだか忘れたけど
公式で誰か弾幕作ってた人が居て、
HP見に行ったら何かの命令をはずしたら処理が軽くなったとか書いてあった気がする。
どこのHPだか思い出せなくてスマソ それはSTG作る人には耳よりな情報だね
なにかとオブジェクト多いジャンルだし
速度が出るならわざわざフレームレート落とすこともなくなるし 最初バルカン押しっぱなしで戦っててなんだよこれと思ったけど
ミサイル→エナジータメ→音を聞いて回避→ミサイル→
が分かってくると楽しい。誘導弾を壁にぶつけさせたり
Qボタンの早いミサイルって敵に当たる? ミサイルのホーミング性能これじゃやばいと思うんだがかわしたあともっとスム
ーズに敵の方向に移動させたい、どうすればいいだろうか、やっぱ加速度じゃな
くて等速で敵の方向まで少しずつ向かせるほうがいいのか。でも等速にしてしま
うとどうもミサイルって感じがしなくて嫌だ、どうしたものか >42
本家のUPBBSのNo.1540のレスの事かしら?
今は[直接移動] [58]の所で見られる。
見てみた。フレームマネージャ−を使って高速化するという記事のとこだね。サンクス。 「あきら」と名乗る者からspamが来た。
「あらき」かと思ってしまったorz thebbs(某ネット掲示板)ならごま太郎がいたよ。誘導してみるべし オブジェクト位置はそのままに背景だけスクロールさせるのってどうすればいいんだろう もしかして全オブジェクトに対して
スクロール変数分の移動スクリプトを追加せなあかんの?
めんどくせー >>55
スクロールの変数をsx、syとしたら、
全部のオブジェクトの頭に
function onUpdate(){
x+=sx;
y+=sy;
}
とつけてみよう。 >>56
重くなったりしません?
あと、画面表示系をオブジェクト座標との関連ではなく、単純な数値でつけてきていたので、
例えば画面端設定や、敵出現位置指定を、これから全部オブジェクト座標+αで指定しなおさねばならない・・・
トホホ。 いっそ背景をオブジェクトで表示して流していければいいのだが、
それもまた面倒くさいんだよなん。
マップだけ動かせるような何かがポンとあれば苦労しないんだけど、考えたら実用性薄いか 少し高等テクニックだけど
/* CustomDXChar.tonyu */
extends DXChar;
function /*override*/ draw(){
drawScreenXY(1);
super.draw();
drawScreenXY(0);
}
こうしておいて、
extends DXChar;
となっているところはすべて
extends CustomDXChar;
に変える。
TextCharとかSpriteCharも使うなら、CustomTextCharをCustomDXCharと同じ内容で作って継承すればよい。 >>60
なんだかわからないけれど面白そうですね
とりあえず、一つのオブジェクトを座標(0,0)にして、
全ての値を$**.x+数値、$**.y+数値と組みなおしてみますわ。
ついでに
現在製作中のSTGのプランを言いますと
タイトル・・・architect(仮)
ストーリ・・・電脳世界に送り込まれた結晶化ウィルスが、悪の電脳創造主をやっつける
システム・・・
Aでショット。
Bで、ステルスダイブ発動(短時間無敵特攻)。ダイブ継続中に敵機を破壊することでダイブが継続しコンボ数も増える。
敵を溜めてからダイブで敵の間を渡り歩くゲーム。
回避不能弾幕をダイブで抜けたり、固い敵を挟んでダイブを継続して破壊することなんかが可能。 一つ、豆乳で不思議なこと。
少数計算になると何故急に数値が端数になるのだろう 作り手が面白くなくなってきたと感じる時期を乗り越えれば
ようやく遊び手が面白いと感じる出来になる
遊び手を面白くするためのスパイスは、作り手には煩雑なことが多い
がんがってちょ >>64
同感。
もっとも、俺は「面白くするためのスパイス」が抜けて作り手に優しく遊び手につまらないものしか作れないけど。 面白いと思った構想が案外つまらなかったりして悲しいものですね。
もうじきここに試作品でもUPしますわ。 なんだか、アクションゲームでマップの取得がうまくいかない。てか、取得はいいけどマップにちびっと埋まる。
32x64サイズキャラクター(ごま太郎のうんたらで試してみてた使いまわし)で左、左上中央、左上、上、右上、右上中央、右、右下中央、右下、下、左下、左下中央の十二箇所でマップを取得
@*@*@
@***@
@***@
@***@
@*@*@
の@のところでマップを取得。
ある程度はマップに埋まらないんだけど、ほんの少しだけ埋まったりすることがあって潔癖症にはつらい。
マップを取得する箇所は十分すぎるほどだと思うんで、あとはいかに「埋まらない」プログラムをするか。
何かいい方法はないかな? x+(キャラクターの幅)/2で右側判定
x-(キャラクターの幅)/2で左側判定
とかしなきゃなんないんじゃないの?
あ、あとvxとかもいれなきゃなんないか。 俺もなにもわからず最近はじめたばっかりで、いろんなとこからひっぱってきたりこねくりまわしたりしてる
while(1){
if ($map.getAt(x-16,y)==$pat_Block+0) x+=3;
if ($map.getAt(x+16,y)==$pat_Block+0) x-=3;
if ($map.getAt(x-15,y)==$pat_Block+0) x+=5;
if ($map.getAt(x+15,y)==$pat_Block+0) x-=5;
if ($map.getAt(x,y-20)==$pat_Block+0) y+=2;
if ($map.getAt(x,y+23)==$pat_Block+0) y-=4;
if ($map.getAt(x,y-23)==$pat_Block+0) y+=2;
// if ($map.getAt(x,y+20)==$pat_Block+0) y-=2;
anim.pause();
if (getkey(39) && $map.getAt(x+16,y)!=$pat_Block+0 ) {
x+=3;
f=0;
anim.swing($pat_player+0,$pat_player+2,5);
}
// ↑ カーソルキー右が押され、さらに右側が壁でなければ右へ移動
if (getkey(37) && $map.getAt(x-16,y)!=$pat_Block+0 ) {
x-=3;
f=1;
anim.swing($pat_player+0,$pat_player+2,5);
}
// ↑ カーソルキー左が押され、さらに左側が壁でなければ左へ移動
y+=vy; // vy: y 方向の速度。 yにvy を加える
if ($map.getAt(x,y+24)==$pat_Block+0 ) { // ブロックに当たっていたら
vy=0; // 落下速度を0にする
if (getkey(32) && $map.getAt(x,y+5)!=$pat_Block+0 ) vy=-10; // スペースキーを押したらジャンプ
if (getkey(32) && $map.getAt(x,y-20)==$pat_Block+0 ) vy=-1;
} else { // ブロックに当たっていなかったら
vy+=0.5; // 落下速度を上げる
}
じつにきったないが参考にでもなれば tonyu本家のアップローダーはちょっと小さくて、
音声ファイルの多い本作をUPできませんでした。
http://nyannyan3.minidns.net/uploader/File/20050319013847archi.zip
150時間で消えるようですが、やってみてくださいな >>70
文字が震える演出がとてもいいと思いました。
遊ばせ方のレパートリーがすくなさそうなゲームデザインですね >53
なかなか良いね、成長を期待。
どうでもいいが震度6弱キター >>69
どうもありがとう。
ただ、基本的なプログラムはできているので、問題はもうちょい複雑っぽ。いろいろ試してみますか。 アプ板に大量にゲームをアップしている人に言いたいことがある。
あなた、じぶんで作ったゲームを一回でも遊んだんですか?と。 やっぱTonyu公式板は消防が多いから、別の板を設けるべきだよ
っと漏れは思う。 豆乳は弾幕ゲーには不向きだ・・・
イメファイみたいなのつくりてー アクション用のはずなのに面白いゲームは別ジャンルばっかり >>87
大量のオブジェクトを出すと処理が落ちること。 敵弾100発舞うとヤバい
半透明オブジェクトのでかいのがあるだけで処理が落ちる イメファイくらいのオブジェクト数ならぎりぎりTonyuでなんとかなりそうだな
Tonyuの有名ゲーってどうも他言語よりアクションがもっさりしてる印象があるが原因不明 インベーダー作りたいんですが
豆乳とHSPではどっちのほうが手っ取り早く作れますか?
ttp://nyannyan3.minidns.net/uploader/FileShow.aspx?FileID=20050405231242
このゲームシステムでの開発はこれ以上やっても発展がなさそうなのでこれで打ち切りにしておきましょう。 >>95
HSPを知らないので判りませんが
豆乳のチュートリアルにインベーダーもどきのゲームが入っているのでやりやすいかもしれません つ ttp://tonyu.kake.info.waseda.ac.jp/uploadcenter/img/1701.lzh
まんまインベーダー。 イメファイ風のゲームが出来たのだけど
題名どーしよう。
イメファイ。
イメージイメージファイト。
イマーゲファイト。
パチモン臭のするいいタイトルだれかつけてぇ ■ このスレッドは過去ログ倉庫に格納されています