|
データがおかしいです。
バグってしまいます
開けないので新しくして
なおしてください。
明日の16時00
にまってるよーん07-01-17 18:40 by
zzzz
|
|
tonyuのバージョンは1.22でしょうか?
最新版の関数を使っているので、そのせいかもしれません。エラーメッセージをコピペしていただけるとありがたいです。07-01-19 00:41 by
ごま太郎
|
|
[Ver0.06]色々変更。
かなり、ちゃんとした3Dになっとります。
矢印で視点回転。
wasdで移動。などなど。07-01-15 19:36 by
ごま太郎
|
|
すごい。確かに3Dです。マップでコースも作れますし。
でも、渦巻きのコースを作ると、壁が点滅するのですが・・・07-01-16 09:39 by
マッキー
|
|
仕組みがよく分からないんですが、あんまりに壁を置きすぎると描写に手間取りすぎて点滅します。
ここら辺の仕組みがちゃんと分かれば、視野ももっと広げることができるんですが。。。07-01-16 13:55 by
ごま太郎
|
|
プログラムを拝見させていただきました!
そして、原因がわかりました!
TestObjのエディタにfor文があります。
その中は、1マス(壁など)の描画プログラムが書かれていますが、
そうすると、処理速度が遅くなります。
対処法は、for文の1マス分のプログラムを4マス分にしたり、
または、for分をなくして何十マス分ものプログラムを書いたりすると、点滅することがなくなると思います。
2つ目の方法は面倒ですが、処理は一番軽いと思います。
やってないので、処理速度が早くなるかどうかはわかりませんが・・・
プログラムの意味も、間違ってるかもしれません。
07-01-16 15:06 by
マッキー
|
|
for (yy=y開始点; yy<y開始点+8 && yy<=$map.Height; yy++) {
for (xx=x開始点; xx<x開始点+8 && xx<=$map.Width; xx++) {
の部分のことでしょうか?
これは、マップ配列上から視界分のマップを取り出すためのループで、今のところ毎フレーム必要なものです。
根本的なところでマッキーさんのおっしゃているのと同じことなんですが、おそらく毎フレームに$convにつっこむpointクラスの処理量が多すぎるのが原因っぽいです。
点滅時には$convの処理が重くなっているんですが、全てのpointを$convに放り込んで処理しているので1フレームの処理限界を超えるようです。
一つの壁・床を描写する事に五つのpointクラスを作成しているので・・・。たぶん、毎フレーム平気で1000近いpointクラスを扱っているんですよね。そりゃ無理もあります^^;
解決方法としては、壁の向こうの見えない壁は描写しない(線ベクトルと面のあたり判定が必要。今のところ、やり方が分からない)。
または、$convに相応するクラスを複数用意して、処理を分散する必要があります。
ちなみに、マッキーさんの螺旋迷路をちゃんと描写したいときには、とりあえず視界を阻めるのが手っ取り早いです。
for (yy=y開始点; yy<y開始点+3 && yy<=$map.Height; yy++) {
for (xx=x開始点; xx<x開始点+3 && xx<=$map.Width; xx++) {
みたいに書き換えます。
ベクトルは難しい~↓
マップを複数まとめて処理するのは、後々の汎用性が悪くなるので止めておこうと思います。ご意見ありがとうございました♪07-01-16 21:11 by
ごま太郎
|
|
[Ver0.05]さらに改良版。
相変わらずデフォの視点では見づらいことこのうえない^^;06-09-01 18:27 by
ごま太郎
|
|
[Ver0.04]訳あって、ちょっち古いバージョンの改良です。
壁を描写しています。分かりやすいように色分け中。
ちなみに、壁のあたり判定もあります。
ただ、カメラ位置の関係でそのままだと迷路が分かりづらいので、ゲームを開始したらスペースキーで視点を変更し、迷路から少し離れた位置で観察することをおすすめします。
操作方法は以下。
~共通~
w 前進
s 後退
a 左平行移動
d 右平行移動
q 視点上昇
e 視点下降
~通常~
← 左旋回
→ 右旋回
~スペースキーを押した後~
マウス 旋回06-09-01 17:35 by
ごま太郎
|
|
[Ver0.03]塗りつぶしバージョン。
線は点の集合。面は線の集合。…はい、いくらなんでも無理やりすぎます^^;05-12-18 14:19 by
ごま太郎
|
|
おおお、なんかちょっとだけポリゴンに近いかも。
また夢が広がってしまう・・・3DFPSとか、3DRPGとか・・・05-12-18 18:01 by
NaN
|
|
作れなくはないですけど、ホントtonyuでやるものではなさそうです^^;
面を作れないので(今のところの私の知識では)壁の後ろが見えないようにする定石手段の、塗りつぶし法が使えないですし動作速度が…(涙)
Xfileもノーマルでは使えません。
塗りつぶし法は、遠い壁から描写していって手前の壁で奥のかぶっている壁を塗りつぶしてしまうという荒っぽいやり方です。05-12-18 20:10 by
ごま太郎
|
|
[Ver0.02]一通り、迷路を歩くことができます。
陰線処理はしてますが面という概念が無いので壁の後ろの壁も丸見えです^^;
視界を制限して動作速度を上げたいのですが、うまくいかず四苦八苦中。。。05-12-18 12:47 by
ごま太郎
|
|
~操作方法~ v0.01準拠
←、→ 視点の回転
w 前進
s 後退
a 左に平行移動
d 右に平行移動
q 上に視点上昇
e 下に視点下降
r、f 左右に回転
スペースで視点が変更されます。変更後は←、→が使えなくなり、代わりにマウスでグリグリと辺りを見回せます。自由度はこっちのほうが高いです。
05-12-17 12:40 by
ごま太郎
|
|
凄ッ!!
私は三次元にしようとして頭がポンしたのにっ
05-12-17 13:58 by
しょさ
|
|
これで面描写ができれば、フルポリゴンも可能なんですよね・・・・
多角形塗りつぶしができればなんとかポリゴンのようなものにもなりそうですが、
ものすごく重くなってしまいそうです。
何かいい方法はあるのだろうか。
05-12-17 21:35 by
NaN
|
|
うわぁ、完璧に3Dですね。
特にマウスでの回転なんて、3Dツールのように滑らかです。
面描画については、過去あった3D戦闘で描画されていたと記憶していますが(地面だけですが)、
あれは使えないのでしょうか。05-12-18 02:39 by
アカシン
|
|
To 迦葉さん
迦葉さんのウィザードリー風味のおかげで、マップから3Dに処理するというやり方を知りました。三次元変換もhoge-氏の提供してくださったものですし、実際のところ、自分でやったのはマップの描写と全体の動作を解析することぐらいだったりします^^;
To N&Nさん
ですね。
このプログラムのおかげで色々と3Dプログラミングの基礎知識が身につけられたので、それを収穫として、あとはおとなしくワイヤーフレーム迷路を作ってみようと思います。でも、せめて長方形の面ぐらいは塗りたいなぁ…(笑)
To ロゴスさん
そういえばそうですね。これからチェックしてみます。ナイスなご意見ありがとうございます♪
ロゴスさんのtrogueに負けず劣らず、レトロに仕上げていこうと思いますのでどうぞよろしく!(笑)05-12-18 03:01 by
ごま太郎
|
|
[Ver0.01]とりあえずデス。安定のため、迷路のうち座標(0,0)から(3,3)か(4,4)までのみ描写してます。
なお、3D部分にはhoge-氏の三次元変換プログラムとアップロード掲示板にて掲載されていた利用サンプル(すみません、作者の方が分かりませんでしたm(_ _)m)を。
tonyu標準のマップから迷路をくみ上げるのには迦葉さんの副生成物からヒントをいただきました。
この場を借りてお礼申し上げます。05-12-17 12:23 by
ごま太郎
|
|