1 名前:名前は開発中のものです。 mailto:sage [2006/03/24(金) 18:31:39 ID:jNg23CIj] ( ,,,) .( ,,) スクリプト言語 HotSoupProcessor について ( ,,). ゲーム製作の視点から、また〜りと語り合うスレ。 , -──- 、 (,;::-──-; )-、 .|` ̄ ̄ ̄´;;|ヽ l * 質問する前に検索してみる事 l; :::;;;l-' / * ヲチ、ネタなどはスレ違い ,-ヽ───.'-、´.. * 歴代スレ、関連サイトは >>2-4 あたり ヽ ──── ' ONION software (本家) www.onionsoft.net/
74 名前:名前は開発中のものです。 mailto:objprm [2006/03/32(土) 12:08:28 ID:A5UdFXDI] >>73 あの命令はオブジェクトIDで指定だからなぁ。何気なくオブジェクトを追加したりすると、IDが ズレて意図した動作にならなかったり。オブジェクトに名前をつけて管理できればよいのだが。
75 名前:名前は開発中のものです。 mailto:sage [2006/03/32(土) 12:26:12 ID:yvj15ypb] オブジェクト作ったあと、statにオブジェクトIDがかえるんじゃないっけ? それ使えば、管理は楽だぞ
76 名前:名前は開発中のものです。 mailto:sage [2006/03/32(土) 16:14:15 ID:Xt0aqNzz] おお、objprmか。 >>73-75 thx
77 名前:71 mailto:sage [2006/03/32(土) 16:30:56 ID:zmwpUXRN] スマソ誤爆だ
78 名前:名前は開発中のものです。 mailto:sage [2006/04/02(日) 11:40:45 ID:QH5fW2Ln] HSPの成分解析結果 : 40%は苦労で出来ています。 38%は着色料で出来ています。 8%は雪の結晶で出来ています。 7%は夢で出来ています。 4%は祝福で出来ています。 3%は赤い何かで出来ています。 Hot Soup Processorの成分解析結果 : 86%は純金で出来ています。 10%は不思議で出来ています。 1%はアルコールで出来ています。 1%は夢で出来ています。 1%は世の無常さで出来ています。 1%は毒電波で出来ています。
79 名前:名前は開発中のものです。 mailto:sage [2006/04/02(日) 13:48:46 ID:80BY/ixY] これランダム生成だからつまんなくね?
80 名前:名前は開発中のものです。 mailto:sage [2006/04/02(日) 16:32:49 ID:P6XLNsWB] >>79 では、ランダムではないのを作ってみては?
81 名前:名前は開発中のものです。 mailto:sage [2006/04/02(日) 17:09:03 ID:aD646VFr] ランダムつーか、 一つの単語に対して常に一定の結果を出すはずだが…
82 名前:名前は開発中のものです。 mailto:sage [2006/04/02(日) 17:38:15 ID:mdRFUjdU] ランダムじゃなかったらただの辞典じゃないか
83 名前:名前は開発中のものです。 mailto:sage [2006/04/02(日) 18:51:24 ID:vFR2yPpK] hgimgのサンプルのロボデータを完全に3dAceで見る方法誰かしりませんか? 胴体の一部しかでない
84 名前:名前は開発中のものです。 mailto:sage [2006/04/02(日) 19:37:32 ID:QOw+CTfP] hsp3の数学関数マニュアルに載ってねーな どんどん隠蔽ひどくなってるw
85 名前:名前は開発中のものです。 mailto:sage [2006/04/02(日) 21:03:58 ID:8/EmiGso] リファレンスのlength3の誤植も直ってないな
86 名前:名前は開発中のものです。 mailto:sage [2006/04/03(月) 01:55:12 ID:39ZKOTf0] 単にマニュアルの整備が後回しになってるだけじゃね? 隠蔽って…する意味ないし。
87 名前:名前は開発中のものです。 [2006/04/03(月) 19:42:42 ID:jmgw6SmT] すいません、今「12歳からはじめるHSP」で勉強しているのですが テキスト通りに打ってもエラーがでます。。 X=10 *HAJIME if X>0: X=X-1 :else :goto *OWARI mes X wait 5 goto HAJIME *OWARI mes "ループ終了" stop 私が使ってるのはHSP3.0でこの本は2.6の解説をしてます。 何が原因でしょうか?
88 名前:名前は開発中のものです。 mailto:sage [2006/04/03(月) 19:45:04 ID:RTK1r/R4] goto HAJIME *がついてません、エラーが出た場合行数に注目 以下訂正 X=10 *HAJIME if X>0: X=X-1 :else :goto *OWARI mes X wait 5 goto *HAJIME *OWARI mes "ループ終了" stop
89 名前:名前は開発中のものです。 [2006/04/03(月) 19:48:53 ID:jmgw6SmT] >>88 できました!有難う御座います。 6行目に「*」は書いてないのですが、これは3.0と2.6の違いですかね?
90 名前:名前は開発中のものです。 mailto:sage [2006/04/03(月) 21:21:23 ID:XKVGGd1N] 3.0も2.6もそこは同じ。 本にそう書いてあるなら恐らくは誤植か
91 名前:89 mailto:sage [2006/04/03(月) 21:41:20 ID:5ZeaF/lc] >>90 そうですか、有り難う御座いました。 頑張って勉強してみます。
92 名前:名前は開発中のものです。 mailto:sage [2006/04/03(月) 23:16:17 ID:e7vzIC+p] ちょいと質問。HSP3.0で repeat c a = peek(print_text, cnt) ←ここ ・ ・ ・ loop この行でエラー「変数名が指定されてない」になるんだけど、何か間違ってる? 何が違ってるのかわからんorz
93 名前:名前は開発中のものです。 mailto:sage [2006/04/03(月) 23:47:44 ID:5GuHSigl] >>92 モレもHSP3.0は全然触ってないが… デバッグウィンドウを見る限り 変数は明確に初期化しないと4バイトしか確保されないみたいやね。
94 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 00:11:40 ID:lp8IWw8M] HSP3だと、実際にエラーが発生したスクリプトの行と、 エラーメッセージに報告されるエラー行が一致してないことがあるから、 そのへんも疑ってみそ。 その場合、報告された行より前にある命令文が原因なんだが。
95 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 00:27:57 ID:InBujAxF] >>92 変数print_textのサイズはいくつで cntは何の時にエラーになるとかぐらい書けよ なんで、想像しないと分からないような聞き方すんだよ >>93 >変数は明確に初期化しないと4バイトしか確保されないみたいやね。 読み取りの場合サイズの拡張はされないからな
96 名前:92 mailto:sage [2006/04/04(火) 00:55:42 ID:C0af3Zzg] レスマジ有難う。 >>93 これは問題なしでした(多分……)。 一応print_textはsdimで100文字分確保してます。 >>94 コレ結構辛いですよね。 早く改善して欲しい……というのはユーザーのエゴか? あと、実際のエラー行はこの行よりも後なんだけど この行をコメントアウトすると出なくなるのでここがエラーじゃないかと思ってます。 >>95 スマソ('A`) print_textは上で書いたとおりで cntは0ではねられてしまうんです print_textには一応テストとして TEST を代入してあります
97 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 01:21:30 ID:lp8IWw8M] >>96 …となると、あと変数cの値と、 実際のエラー行までの内容が分からないとな。長すぎてもウザいが…省略しすぎ。 sdim print_text,100 print_text="test" repeat c:a=peek(print_text, cnt):loop だけだとエラーにならないから、>>92 の質問の答えとしては ここまでに提示されたスクリプトについては「間違ってない」としか言えない。
98 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 01:24:58 ID:dDnQNPP3] print_text = "TEST" c = 10 repeat c a = peek(print_text, cnt) // ←ここ mes a loop stop 異常なし。あとは周辺に全角スペースとかタイポを探してみればどうか。
99 名前:92 mailto:sage [2006/04/04(火) 10:11:50 ID:C0af3Zzg] 重ね重ねスマソ。 全部やると邪魔なので、別に作ってみた。 これでもpeekではねられてしまう。 別のファイルに --- #module #deffunc test_mes str p_text sdim a,100 c = strlen(p_text) repeat c a = peek(p_text, cnt) ←エラー行 mes a loop return #global --- を記述してメインのスクリプトでインクルード。 メインループの所で --- test_mes "TEST" --- を実行。 何か間違いがあったらよろしければご教授下さいorz >>98 その類の文字は見つかりませんですた。
100 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 10:26:04 ID:InBujAxF] >>96 >あと、実際のエラー行はこの行よりも後なんだけど >この行をコメントアウトすると出なくなるのでここがエラーじゃないかと思ってます。 なんで、エラーの原因分かってないのに勝手に削除したのを見せるんだ・・・ >cntは0ではねられてしまうんです それは、どこでcntを見たの? 実際にエラーになる前後だけ抜き出してテストしたの? それでもエラーになるなら そのテストしたスクリプトをコピペしてくれ 原因を削除されたの見せられても分かるはずねーべ
101 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 11:04:38 ID:dDnQNPP3] >>99 バグかは分からんが、#deffuncのstrはpeekできないのかも。とりあえず、 #module #deffunc test_mes str p_text s = p_text //【追加】 sdim a,100 c = strlen(p_text) repeat c a = peek(s, cnt) //【p_textをsに変更】 mes a loop return #global test_mes "TEST" stop これで通るはず。あとバージョン依存とかは未調査れす。
102 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 11:17:08 ID:InBujAxF] うお、テレビ見ながら書いてたら・・・ 99のを試してみたら 101の人と同じ結論に・・・ 最初から#deffuncのstrって書いとけばもっと早く・・・
103 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 11:50:24 ID:InBujAxF] #deffuncのパラメータで確保した配列は通常と違うな b="TEST" test_mes b にしてarray p_textとした場合は a = peek(p_text, cnt) は問題なくなるけど foreach p_textってやっても要素分のループはされないで1回で抜けちゃう 仕様っぽいけど扱いにくい気が・・・
104 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 12:08:01 ID:InBujAxF] あ、勘違いしてた #deffunc array p_text って元が文字列型なら文字列か・・・ foreachが使えないのは正常だった って事は #deffunc str の場合だと peek("TEST", cnt)な感じでintなんかと同じような事なのかな >>99 つー事で test_mes命令の中で配列に移すか test_mes命令実行の前に配列に入れて配列として受け取るか って事だ
105 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 13:24:44 ID:bynZN5DE] すいません参考書の通り *HAJIME rnd R,10 mes R wait 5 goto *HAJIME と、打ったのですがエラーになります。 どうしてでしょうか?
106 名前:105 mailto:sage [2006/04/04(火) 13:26:46 ID:bynZN5DE] あっ、HSP3.0で 参考書は2.6を解説してます。
107 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 13:34:25 ID:dDnQNPP3] >>106 HSP3だと命令から関数に変わったのがあるから、命令とか関数ごとに[F1]キー押して確認しながらやるよろし。 ここではrndが関数なので、R = rnd(10)
108 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 13:43:07 ID:bynZN5DE] >>107 有難う御座います。 やはり2.6と3.0では、少し違ってるんですね。 気をつけます。
109 名前:92 mailto:sage [2006/04/04(火) 13:57:47 ID:C0af3Zzg] >>100-104 ご教授頂いた方法でやった所、動作しました。 質問しているのに的確に必要な情報を出せなくてすみませんでしたorz どうも有難うございました。
110 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 14:31:18 ID:bynZN5DE] 続いて申し訳ないんですが HSP3.0には、palcopyという命令はないのでしょうか? 2.6の参考書には書いてあるのですが、F1で調べてみても 見つかりませんといわれました。。 buffer 1,,,1 picload "janken.bmp" screen 0,320,260,1 palcopy 1 gmode 2 pos 30,0 :gcopy 1,0,0,200,180 stop このように使いたいのですが、エラーになります。
111 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 14:48:36 ID:0KEBcRWI] >>110 palcopyは3.0になって消えた。代用になる関数も無いらしい。 こんなのがあったんで貼っておく >HSPラウンジ「HSP3でのpalcopyの代替命令は?」 >ttp://dream.freespace.jp/perl-bin/puma/lng/joyful.cgi?print+log4/05050005.txt ところで、3.0リファレンスにあるdefcfuncのサンプルを そのままコピーして実行してもエラーになるのは何故なんだ・・・
112 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 14:51:35 ID:bynZN5DE] >>111 有難う御座います。
113 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 15:43:21 ID:InBujAxF] >>111 goto *start #defcfunc half int a return a/2 *start mes half(10) stop ・#defcfuncは直接実行される場所には書けない ・関数なので、half() 括弧でパラメータを渡す(配列)から値を読み出す感覚) ・使うときは#defcfunc定義より下の行で使うのが条件
114 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 15:59:59 ID:InBujAxF] ちょい修正 >・#defcfuncは直接実行される場所には書けない #module #defcfunc half int a return a/2 #global にすれば使用行前ならどこでも書ける 関数って便利に感じるけどサブルーチンに飛んでるのと同じようなものだからなぁ ほとんど#defineに乗り換えた(まだ処理速度気にするような物は作れてないが・・・)
115 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 18:24:51 ID:lp8IWw8M] >>109 公式の、旧HSP3掲示板 のログ(とくに過去ログ3)を "#deffunc について" で検索すると、もう少し踏み込んで検証した結果がみつかる。 あわせて、"mref"命令のヘルプにも目を通して、 ユーザー命令/関数の引数を参照する時の注意点として知っておくと良いかと。
116 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 18:31:24 ID:IK5j7QUB] (,,゚Д゚)∩先生質問です HSP3.0で複数のAVIファイルをパックしたいんですが パックしたファイルを再生出来ません。 作成したEXEファイルはAVIファイルも含んだ大きさになっています。 更に、AVIファイルを実行ファイルのカレントに置くと正常に再生されます。 オサルなもんでイマイチ解決策が分からないんですが これはどういう事なんでしょう?
117 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 21:58:40 ID:MQbHZb6i] つまりHSPはAVIをパックできないというわけ。 midもできなかったような、、、
118 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 22:06:50 ID:5f2AODM1] 正確にいえば、パックはできるけれど直利用が× ファイルとして存在してないといけない
119 名前:116 mailto:sage [2006/04/04(火) 22:36:32 ID:IK5j7QUB] >>117 >>118 なるほど。 じゃ、AVIファイルを使用して、且つ そのAVIファイルを出来る限り隠匿したい場合はどうすれば? 暗号化したものを読み込みバッファに対して復号かける とかになるんでしょうか?
120 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 22:39:13 ID:MQbHZb6i] aviを暗号化か大変そうだ・・・
121 名前:116 mailto:sage [2006/04/04(火) 22:42:45 ID:IK5j7QUB] >>120 バイナリで読み込んで適当にXORする とかでもHSPでは大変なんでしょうか?
122 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 22:46:28 ID:MQbHZb6i] あー、大変じゃないね >>120撤回w
123 名前:名前は開発中のものです。 mailto:sage [2006/04/04(火) 23:10:19 ID:OoZD/qrf] 簡単に見られたくないだけなら ファイル先頭の数百バイトだけでも良いんじゃまい
124 名前:116 mailto:sage [2006/04/04(火) 23:16:28 ID:IK5j7QUB] >>123 なるほど。 ヘッダ暗号化ツールと復号ルーチン書くか。
125 名前:116 mailto:sage [2006/04/05(水) 00:01:39 ID:IK5j7QUB] またまた(,,゚Д゚)∩先生質問です。 ヘッダの暗号化ツールのようなモノは即効出来たんですが 復号ルーチンでつまづいてます。そこで質問です。 mmload命令で読み込んだAVIファイルのポインタを取得する方法 又は、メモリ上のバッファにバイナリで読み込んだAVIファイルを mmload命令で読み込む方法 は、無いでしょうか? 全然思いつかないんですが… 再生する必要が出てきたら 暗号化ファイル読み込み→メモリ内で復号 →TMPファイルで書き出し→TMPファイルをmmload とかだとイマイチすっきりしないんですが…
126 名前:名前は開発中のものです。 mailto:sage [2006/04/05(水) 00:59:17 ID:2jcVuFI1] >>125 メモリストリーム命令 memfile ってのがあったんでいちおう試してみたけど うまくいかないね。 mmloadのヘルプによると─ 「mmload命令は、指定されたファイルが2MB以下の音声(WAV)ファイルの場合は、 メモリに内容を読み込んでおきリアルタイムに再生可能な状態にします。 それ以外の場合は、ファイル名だけが登録され、実際のファイルの読み出しは メディア再生時(mmplay実行時)に行なわれることになります。」 ─ってことだから、 mmplay命令ではメモリバッファからの動画の再生はそもそもできないんじゃないかと思った。 DirectShowを直接叩けばなんとかなりそうな気がするんだけど、 自分でもまだソコまでやったことないから分からないな。sorry
127 名前:116 mailto:sage [2006/04/05(水) 01:48:17 ID:lDQFtjKE] >>126 なるほど〜。 って事は、メモリ内で復号しながら再生、とかって方法は 自前で再生部を一からコーディングする必要があり HSP上で復号したものをmmplayで再生させるには 一度、正常な状態のファイルを迂回させないとムリポ って事なのかな。 むぅ… ありがとでした。もう少し頭を悩ませて見ます。
128 名前:名前は開発中のものです。 mailto:sage [2006/04/05(水) 15:54:04 ID:4M43MTg9] ところで、HPSで作られた凄いゲームってありませんか?
129 名前:名前は開発中のものです。 mailto:sage [2006/04/05(水) 15:57:07 ID:3N+xd79N] battlefieldとか有名かな?
130 名前:名前は開発中のものです。 mailto:sage [2006/04/05(水) 16:46:28 ID:q1jY5iG7] 凄いゲームってどんなのなんだ? 面白いゲームなら結構あるけど、最新の3D映像&高度な物理計算で超リアルな挙動のゲームとかだと無理っぽいが
131 名前:名前は開発中のものです。 mailto:sage [2006/04/05(水) 23:44:44 ID:ykcEYmvB] すごいって技術的に高度って意味なのか?
132 名前:名前は開発中のものです。 mailto:sage [2006/04/06(木) 13:29:16 ID:pd6PrNaX] ローグライクなゲーム作ろうと思っていて、部屋と入り口作成までは出来たけど通路はどうやればいいですか 一応下がソースです 無駄な処理が多数あるかもしれませんので、その辺もお願いします gamdev.org/up/img/5208.zip パスワードはdungeonです
133 名前:名前は開発中のものです。 mailto:sage [2006/04/06(木) 13:32:05 ID:ty3pDj3g] >>128 >>5
134 名前:名前は開発中のものです。 mailto:sage [2006/04/06(木) 17:58:33 ID:vrJ09cLe] 質問させてください。 たとえば円の画像を用意して、それをボタンとして使う場合、 その円をクリックしたと、チェックできる命令はありますか? 四角なら、xy座標を見ておけば、if文でできる、というのはわかるのですが。
135 名前:名前は開発中のものです。 mailto:sage [2006/04/06(木) 18:10:22 ID:qwORL9IL] 「円と点の当たり判定」でググれ
136 名前:名前は開発中のものです。 mailto:sage [2006/04/06(木) 18:32:06 ID:Q486l2gg] 円なんだからどの方向でも距離は同じなんだから 中心からの距離で判定すればいいだけ
137 名前:名前は開発中のものです。 mailto:sage [2006/04/06(木) 19:01:23 ID:L7ZanepU] 円の画像が単色な場合、且つ、円で使用している色が 他で使用されていない場合 クリックした場所の色を拾って判定する、とか。 邪道ですかそうですか。
138 名前:名前は開発中のものです。 mailto:sage [2006/04/06(木) 21:06:46 ID:JDxmH6uS] >>137 単色じゃない場合は、バッファ画面に単色の画像を作って、そっちで判定するとよろし。 まぁ、円程度の単純な判定なら、計算でやれってのが順当だけれども。
139 名前:名前は開発中のものです。 mailto:sage [2006/04/06(木) 22:34:22 ID:vrJ09cLe] なるほど。 やってみますpget命令ですね。ありがとうございます
140 名前:名前は開発中のものです。 mailto:sage [2006/04/06(木) 22:47:35 ID:AVljFjph] 平方根も何も要らんのに…
141 名前:名前は開発中のものです。 mailto:sage [2006/04/06(木) 22:48:20 ID:aXxUOitV] >>132 案外、難しいな。 どうやるんだろう。 >>134 前スレでソースをアップしたような・・・。
142 名前:名前は開発中のものです。 mailto:sage [2006/04/06(木) 23:34:39 ID:sP70u0HG] 円も四角でいいだろ そんなにシビアなのか?
143 名前:名前は開発中のものです。 mailto:sage [2006/04/06(木) 23:48:50 ID:XQpsmCoI] 俺も別に矩形で判定すりゃ良いと思うが
144 名前:名前は開発中のものです。 mailto:sage [2006/04/07(金) 00:27:00 ID:HuXDf4KI] アクションとかシューティングみたいにリアルタイムで動いてる物ならそれでもいいけど、動かない物だと結構気になるんじゃないか?
145 名前:名前は開発中のものです。 mailto:sage [2006/04/07(金) 00:46:13 ID:V45hP2+5] ;r 円の半径 ;x,y 円の中心座標とマウス位置の差 if r*r > (x*x+y*y) たったこれだけのことなのに
146 名前:名前は開発中のものです。 mailto:sage [2006/04/07(金) 00:49:53 ID:ClUYDITC] そういう手法を聞いてるだけな希ガス
147 名前:132 mailto:sage [2006/04/07(金) 19:27:33 ID:3toQ89cV] >>132 書き忘れていたけど、■が壁で☆が入り口です。
148 名前:名前は開発中のものです。 mailto:sage [2006/04/07(金) 22:46:52 ID:ClUYDITC] >>147 ソースを眺めて見たんですが オバカな俺には流れをつかむだけで疲れてw なんとなくだけど 壁と部屋空間と入り口を全部作成した後に 入り口を接続するんじゃなくて 入り口を作成する度に 接続する入り口を検索して接続したらどうだろう? 部屋も作成する時に、属性を持たせれば どの部屋とどの部屋が繋がっているかを調べやすくなるし。 アレだ。最終手段は、旅の扉で繋いじゃえwだ。 邪道ですか、そうですか。
149 名前:名前は開発中のものです。 mailto:sage [2006/04/07(金) 23:17:17 ID:HuXDf4KI] >147 pc8.2ch.net/test/read.cgi/gamedev/1027084016/ このスレみれば参考になるんじゃないか?
150 名前:ホスプロ ◆HOTsoUpxjY mailto:HSP [2006/04/07(金) 23:24:50 ID:gHVivb7j] >>132 そんな難しく考える必要はない。検索しなくても行き当たりばったりでも作れる。 ダンジョンの作成の最低限の条件は、出られればいいだけだろ。 だから最初になにはともあれ入口から出口までの通路を作る。 あとはランダムに途中に部屋をつけたり、別の通路を延ばしたり。 新しい部屋や通路ができても、クリアできなくなることはないから。 もっと難しい迷路を作りたいときは、それなりの作り方はあるけど。
151 名前:名前は開発中のものです。 mailto:sage [2006/04/07(金) 23:30:42 ID:6GYt8HFc] 超簡易版アルゴリズム □□□□□■□□□□□■□□□□□ □□★□□■□★□□□■★□□□□ □□□□□■□□□□□■□□□□□ ■■■■■■■■■■■■■■■■■ □□□□□■□□□□□■□□□□□ □□□□□■□□□★□■□□□★□ □□□★□■□□□□□■□□□□□ ■■■■■■■■■■■■■■■■■ □□□□★■□□□□□■□□□□□ □□□□□■□□□□□■□□★□□ □□□□□■□□★□□■□□□□□ 階全体をいくつか(ここでは9)に分割して、 それぞれの部屋(ここでは□)のどこかにランダムで基準点(★)を置く。 ★同士が全部繋がるように通路を上書きする。■は壁。 予め部屋を壁にしておけば、通路だけの場所も作れる。
152 名前:名前は開発中のものです。 mailto:sage [2006/04/08(土) 08:19:02 ID:VNUXxU03] >>151 お前プレゼンとかしない方がいいな。じぇんじぇん分からん。
153 名前:名前は開発中のものです。 mailto:sage [2006/04/08(土) 10:31:02 ID:o0RZQ7IA] >>152 なら補足。 ★同士の接続は迷路のアルゴリズムを使う。(すべての部屋が繋がることを保証するために) ★同士の実際の通路はマンハッタン距離だと簡単。 それぞれの区画の中で部屋の大きさをランダムで設定(ここでは最小1×1〜最大5×3) してその中に★を置けばおk
154 名前:名前は開発中のものです。 mailto:sage [2006/04/08(土) 11:59:47 ID:6OXnk+2/] えと・・・これは・・・おまえたち考えてみろ!!ということなのかな・・・ 言いたいことが意味不明。
155 名前:ホスプロ ◆HOTsoUpxjY mailto:HSP [2006/04/08(土) 12:20:57 ID:v+1GUAb4] >>150 の図説 ■=壁 □=通路 ★=スタート ☆=ゴール 1.入出口 2.正解路 3.追加路 4.部屋追加 ■■■■☆ ■■□□☆ □□□□☆ □□□□☆ ■■■■■ ■■□■■ ■■□■■ ■■□■■ ■■■■■ □□□■■ □□□□■ □□□□■ ■■■■■ □■■■■ □■■■■ □■■□□ ★■■■■ ★■■■■ ★■■■■ ★■■□□ 正解路の作り方は、常に二点間の距離が減るように動かすだけ。 後は単にボコボコ穴を開けていく。不恰好だが必ずクリアできる。 ポイントは新しく壁を作らないこと。従って最初の空間は広くする。
156 名前:名前は開発中のものです。 mailto:age [2006/04/08(土) 12:21:40 ID:Gefr8zoU] 難しいな
157 名前:ホスプロ ◆HOTsoUpxjY mailto:HSP [2006/04/08(土) 12:31:17 ID:v+1GUAb4] □□□□☆ □■■■■ □■■■■ □■■□□ ★■■□□ >>155 は最低限の方法なので、もちろん上図のようにムダな部屋も出る。 それが嫌なら「棒倒し法」「穴掘り法」などのアルゴリズムを拡張する。ググれ。 でも別にランダム生成しない限られたマップでも、周囲五マスしか見えないとか、 宝箱の中身や敵がランダムとか、そういう別の方法で複雑にできるけどね。
158 名前:名前は開発中のものです。 mailto:sage [2006/04/08(土) 12:31:28 ID:FnO5+CVP] シレンやトルネコみたいなダンジョンの話じゃないの?
159 名前:名前は開発中のものです。 mailto:sage [2006/04/08(土) 12:49:33 ID:Qw4FHBTg] □□□□☆ □○●■■ □●●●■ □■金金□ ★■■玉□
160 名前:名前は開発中のものです。 mailto:sage [2006/04/08(土) 14:18:35 ID:81b+udMF] 1□=壁:○=壁(境界線):★=基準点(ランダムで1個づつ↑↓階段作成) ○○○○○○○○○○○○○○○○○○○ ○□□□□□○□□□□□○□□□□□○ ○□□★□□○□★□□□○★□□□□○ ○□□□□□○□□□□□○□□□□□○ ○○○○○○○○○○○○○○○○○○○ ○□□□□□○□□□□□○□□□□□○ ○□□□□□○□□□★□○□□□★□○ ○□□□★□○□□□□□○□□□□□○ ○○○○○○○○○○○○○○○○○○○ ○□□□□★○□□□□□○□□□□□○ ○□□□□□○□□□□□○□□★□□○ ○□□□□□○□□□□□○□□□□□○ ○□□□□□○□□★□□○□□□□□○ ○○○○○○○○○○○○○○○○○○○ 2.★同士が全部繋がるように通路を上書きする ■=通路 ○○○○○○○○○○○○○○○○○○○ ○□□□□□○□□□□□○□□□□□○ ○□□★■■■■★■■■■★□□□□○ ○□□□□□○□□□□□○■■■□□○ ○○○○○○○○○○○○○○○■■○○ ○□□□□□○□□□□□○□□□■□○ ○□□□□□○□□□★□○□□□★□○ ○□□□★■■■■■■□○□□■■□○ ○○○○○■○○○○○○○○○■○○○ ○□□□□★○□□□□□○□□■□□○ ○□□□□■○□□■■■■■■★□□○ ○□□□□■■■■■□□○□□□□□○ ○□□□□□○□□★□□○□□□□□○ ○○○○○○○○○○○○○○○○○○○
161 名前:名前は開発中のものです。 mailto:sage [2006/04/08(土) 14:19:06 ID:81b+udMF] 3.○で仕切られた空間にランダムサイズの部屋を作成 ○○○○○○○○○○○○○○○○○○○ ○□■■■□○■■■■■○□□□□□○ ○□■★■■■■★■■■■★□■■□○ ○□■■■□○■■■■■○■■■■□○ ○○○○○○○○○○○○○○○■■○○ ○□□□□□○□□□□□○□□□■□○ ○□□■■■○□□□★□○□□□★□○ ○□□■★■■■■■■□○□□■■□○ ○○○○○■○○○○○○○○○■○○○ ○□□□□★○□■■■■○□□■□□○ ○□□□□■○□■■■■■■■★□□○ ○□□□□■■■■■■■○□□□□□○ ○□□□□□○□■★■■○□□□□□○ ○○○○○○○○○○○○○○○○○○○ こういうことだろ? そんなに難しいことは言ってないと思うんだが
162 名前:132 mailto:sage [2006/04/08(土) 15:08:54 ID:iBZGGgVA] いろいろなアドバイスありがとうございます 一応>>151 の方法で作り直してみました。 部屋と基準点は出来ましたが、やはり通路作成でとまっています;; gamdev.org/up/img/5229.zip パスワードは前回と同じです よろしくお願いします
163 名前:名前は開発中のものです。 mailto:sage [2006/04/08(土) 16:30:32 ID:FnO5+CVP] パスなしで落とせるけど中身が空っぽなのは何でだろ?
164 名前:132 mailto:sage [2006/04/08(土) 17:29:15 ID:iBZGGgVA] >>163 試しにDLしてみましたけど、中身入ってました。
165 名前:名前は開発中のものです。 mailto:sage [2006/04/08(土) 19:11:49 ID:7fJ5vK0t] >>162 ちょっと勘違いしてるように見える… 最初に基準点を通るように通路を作るんでっせ? で、基準点の周りに部屋を作る。 だよな?
166 名前:132 mailto:sage [2006/04/08(土) 19:40:31 ID:iBZGGgVA] >>165 >>160 ,161をみて、自分でも勘違いに気づいて直していましたw 一応通路作れましたので後でうpします
167 名前:名前は開発中のものです。 mailto:sage [2006/04/08(土) 20:44:50 ID:ifsvMyi3] >>166 おめ^^
168 名前:132 mailto:sage [2006/04/08(土) 21:55:56 ID:iBZGGgVA] >>167 あり^^ 通路作成完了しました でも、つながらずに取り残されてしまう部屋が出来てしまうことがあります。 gamdev.org/up/img/5240.zip パスは前回と同じです。 よろしくお願いします
169 名前:名前は開発中のものです。 mailto:sage [2006/04/08(土) 22:25:23 ID:7fJ5vK0t] >>168 おぉ。上手く出来たね。 あとは、基準点を必ず繋げるようにすれば 取り残される部屋も無くなって(゚д゚)ウマ-
170 名前:名前は開発中のものです。 mailto:sage [2006/04/08(土) 23:04:02 ID:DboM4Wxm] んーでも一本道では迷路とは言わんよな…
171 名前:名前は開発中のものです。 mailto:sage [2006/04/09(日) 00:37:04 ID:Ok2GsTc+] 最初に全ての星を通る一本道を作って、後から部屋の4方向の通路の無い場所をランダムで通路で繋げばいいんじゃないか?
172 名前:名前は開発中のものです。 mailto:sage [2006/04/09(日) 01:42:08 ID:b7GY3/W7] >★同士の接続は迷路のアルゴリズムを使う。(すべての部屋が繋がることを保証するために) 上の方の例だと、論理的な接続だけを考えて、それを迷路にする。基本はグラフ理論。 ■:概念的な壁 □:概念的な通路 ★■★■★ ■ ■ ■ ★■★■★ ■ ■ ■ ★■★■★ ↓ ★□★■★ □ □ □ ★■★■★ ■ □ □ ★□★□★ その後で、概念的な通路で繋がってる★同士を、マンハッタン距離みたいので実際のマスに繋げばおk ま、部屋の数が少ないとどちらにしろ迷路にはならないのと、元祖ローグもあまり迷路じゃないw
173 名前:132 mailto:sage [2006/04/09(日) 02:20:53 ID:OMmZyHlw] 全ての星を通るパターンをいくつか作ってみました。(まだ2つですが;;) gamdev.org/up/img/5247.zip パスは前回と同じです 今回はまだ途中なのでソースは付けていません これで取り残された部屋はなくなると思います。 では、修正場所などあったらお願いします。
174 名前:132 mailto:sage [2006/04/09(日) 09:51:10 ID:OMmZyHlw] 通路作成と部屋作成でかなり時間がかかるので、そこのループ内のawaitを消してみたらかなり高速化しました。 通路作成の所のソースがかなり見づらくなってきた;;