1人でゲームが作れるように修行します。2 (487レス)
1人でゲームが作れるように修行します。2 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
127: 名前は開発中のものです。 [sage] 2010/11/13(土) 16:02:39 ID:V7u6UtpM カメラの向きによるでしょ http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/127
128: 名前は開発中のものです。 [sage] 2010/11/13(土) 16:11:56 ID:V7u6UtpM あ、座標系か。ゴメン http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/128
129: SGGK ◆6pZCoAtaxk [sage] 2010/11/15(月) 06:53:14 ID:vSKd6IqB >>127,128 X軸は右方向がプラスの方が確かに分かりやすいのでカメラの位置と向きは変えようと思います。 いろいろ理由があり作業が止まったりしていますが、まだ諦めてはいません。(仮眠しようとしたら朝になってしまったとか…) 今のモデルは、フィールドが511x341(何故この数字にしたか忘れてしまった…)でその中心が原点(0,0,0)、 カメラの位置は(0,340,340)でカメラの注視点が原点(0,0,0)になっています。 作業の前にやっぱり簡単な例を用意して自分で(手作業で)変換行列を考えてみるところまで やってみた方がいいかもしれないと思い始めてきたので、その作業分だけ進捗が遅れる可能性ありです。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/129
130: SGGK ◆6pZCoAtaxk [sage] 2010/11/16(火) 00:25:11 ID:MqJY7qc7 今日はエクセルで準備的な作図を途中まで進めて終了。 書いた図が結局役に立たずに時間を無駄にする可能性もあるけどやってみる。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/130
131: SGGK ◆6pZCoAtaxk [sage] 2010/12/13(月) 23:37:18 ID:X8dPGQWF む…無駄になってしまった感じ。 図は書いてみたけど、座標変換について結局あまり理解出来てない事がわかった。 悩んだ結果、恥ずかしいほどに簡単な例を用意し、それを図にして考えてみた。 オブジェクト座標からワールド座標への変換はなんとなく分かったような気がしてきた。 カメラ座標への変換(ビュー変換?)については、オブジェクト座標からワールド座標への変換と同じやり方でたぶん出来るだろうということにして省略し、 今は透視変換について考えているところ。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/131
132: SGGK ◆6pZCoAtaxk [sage] 2010/12/15(水) 00:31:39 ID:KxIpLRHt やっぱりやめることにした。 わずか一日で目標変更…。 昨日の続きをやるとなれば、また数週間経過しそうでそれでいいのだろうかという不安が急に出てきた。 透視変換についても>108の頃の自分よりは理解してるつもりなので、とりあえずプログラムに戻り、それでダメならまた別の方法を考えよう。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/132
133: SGGK ◆6pZCoAtaxk [sage] 2010/12/21(火) 22:35:38 ID:Uo1lQ495 変換についてやっぱりやめないで最後まで調べてUpするに方針変更。(葛藤し過ぎ) できなければ出来たところまでをUpするつもり。 仕事じゃないんだし…、もう少し調べてみても無駄にはならないはず…。 趣味なんだからあまり無駄とか気にしないようにしよう! 今日は>>119氏のアドバイスのテストプログラムの動きの問題について考えてた。 >>120でプログラムが動いていたのは間違いないけど、画面左上に表示される マウスでポイントした点が画面中のポリゴンと交差したところの点座標や他の情報を 表示している画面の文字がどんどん重なっていき見えなくなる問題が出ていた。 自分のプログラムでは、ClsDrawScreen と ScreenFlip() の間にゲームの中身の処理を 書いてループするようにしなければならないんだけど、テストプログラム用に無駄な箇所を消したり、注釈化していたときに 間違えてClsDrawScreenの行を //ClsDrawScreen のように注釈行化してしまっていたのが原因だとわかる。 気付くのに3日以上かかった(汗;) ちなみにDXライブラリではClsDrawScreenは今でも使えるけれど、 公式のリファレンスからは削除されていて、代わりにClearDrawScreen()になっているという事をその時知った。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/133
134: SGGK ◆6pZCoAtaxk [sage] 2010/12/30(木) 01:05:04 ID:8R77hh/I 年末休みだからとはいえさすがにもう寝なくては…。 >>131のカメラ座標への変換がなんとなくやっと理解出来たような感じ。 次は透視変換に挑戦。 ライブラリが無ければ自分は何も出来ないんだから座標変換勉強しても時間の無駄じゃないのか? …という迷いはあるけど、あともう少しなのでこのまま進めてみるつもり…orz http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/134
135: SGGK ◆6pZCoAtaxk [sage] 2010/12/30(木) 16:53:47 ID:4FkYuEBu やっと出来た。 間違いや内容不足はあるかもしれないけど、>>129の11月15日頃からの作業がやっと終了…。 1ページ目は結局使わなかった図。 2ページ目以降の8枚が勉強メモ。 ttp://ux.getuploader.com/sggk/ に オブジェクト座標系からスクリーン座標系まで勉強.zip という名前でUP。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/135
136: 名前は開発中のものです。 [sage] 2011/01/01(土) 02:34:44 ID:iSY3aMmJ P2_page001〜004を見た。 そもそも何をしたいのか読み取れなかったけれども、 最初の赤枠の大前提については、ボールの位置はワールド座標系で管理して、 必要に応じて選手目線の相対座標(オブジェクト座標)を求める方が簡単じゃないかな。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/136
137: SGGK ◆6pZCoAtaxk [sage] 2011/01/01(土) 22:31:50 ID:85GGaF9K 見てくれてありがとうございます。 自分はDXライブラリが無ければ何もプログラムできないので、 プログラムに直接影響しない事を調べてもあまり意味が無いのではないかと思う一方で 座標変換には3D入門の基本のような印象を持っていたので、 もし出来るならちょっと調べてみたいと思ったのが原因で1か月以上経過してしまいました…。 赤枠については今見ると自分もそう思います。 ボールに一番近い選手を知りたいなら選手の座標とボールの座標を フィールド基準の座標系(ワールド座標系)で表して単純に距離計算した方がよさそうです。 次にやろうとしていることは、選手のデータ作り。 ビルボードの関数で選手を表示するので、メタセコイアで板(面?)のモデルを作り テクスチャ?を貼りつける作業。2次元のデータのときには選手のアニメパターンを1枚の画像にしていたけど、 今度はそれを切り出して面のモデルに張り付けた3Dデータを何枚か用意する必要があるので、 メタセコイアの使い方を思いだしているところ。(忘れるのがものすごく早いので我ながらつらいw) http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/137
138: SGGK ◆6pZCoAtaxk [sage] 2011/01/13(木) 23:49:01 ID:XHIcVK/b データはなんとか用意出来た。32ドット四方の面に選手移動アニメの一コマを貼り、 左歩行に2枚、右歩行に2枚、赤選手と青選手があるから(2+2)x2=8個のテクスチャ付き面モデルを作成。 上と下の歩行描写は省くことにした。 テクスチャの貼り方はなんとか分かったけど、今まで使っていた16コマを1枚にしていた2Dデータから 1コマずつ切り出すのに手間取った。 EDGEというソフトを使ってみたが、マウスできちんと32x32で選べない。 なんとなく「edge グリッド表示」でネット検索してみると、「ツクールの素材を作る」という名前で以下がヒット。 ttp://tanktown.web.infoseek.co.jp/tt/g_creat/g_creat/g_creat_graphic01contents.0104.htm まさにこれが知りたかった事なので作業できた。 余談だけどEDGEは2009年で更新が止まってるようで、競合も多いだろうしフリーだから モチベーションを保てずにつぶれたのかな?と思ったらなんとiPhoneに場所を移して活動してるらしい事がわかった。 才能ある人はいろいろ出来てうらやましいと思った。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/138
139: SGGK ◆6pZCoAtaxk [sage] 2011/01/17(月) 23:51:17 ID:Px2vRAS2 >>115で言った >とりあえず次にやろうとしているのは、マウスでフィールド上の一点を指定できるようにすること。 については、どうやら出来そうな感じ。 それを表す図やテストプログラムの実行ファイルをUPしようかと思ったけど、 テストプログラムでは、試したいDXライブラリの関数をメインループにそのまま書き込んだだけなので、 今までのクラスを使ったやり方に比べ単純な例で試して上手くいったと自分が思っているだけなのかもしれないので、 今度は、今までの2Dで動かしていたプログラムの中身を少しずつ3Dのライブラリ関数に置き換えて 動作を確認していき、これでうまくいくようならUPする予定。 フィールド上の一点を指定する方法については、 >>116氏の7行目の投影変換行列の逆行列を使う方法では、 自分の力不足のため投影変換行列を作れないので断念。 座標変換、結構勉強してみたつもりだけど、さすがに投影変換行列を作るのは無理だった。 ライブラリを作れる人はすごいと思った。 >>119氏のConvScreenPosToWorldPosのサンプル内を使う案については、可能であることを>>120で確認済。 >>124氏の案についても昨日テストプログラムで試した結果、可能であることがわかった。 これでやっと>>65に取り掛かる直前の状況になってきた感じ。(感謝!) もしうっかりスルーしてしまった項目があった場合、指摘あれば対応します。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/139
140: SGGK ◆6pZCoAtaxk [sage] 2011/01/18(火) 23:06:54 ID:IAGIcn+p いざソースを書き直そうとするもののどこから手を付ければ良いのか見当がつかない。(いまさら何を言ってるのかと思われそうだけど…) 今出てる問題は、今までのプログラムにベクトルが使えるようにするために追加したクラス、関数(ベクトル同士の加算、減算とか)が 既にDXライブラリに用意されていて、当然DXライブラリの方が関数の種類も多い。 かといって今まで書いた自分のベクトル用関数もソースのあちこちに散っているので、 これをいますぐDXライブラリの関数に置き換えるのは数カ月単位の時間を要するのは確実。 とりあえず、 自分の書いたクラスVector3 ←中身はx,y,zだけ DXライブラリの構造体VECTOR ←中身は不明だけど、リファレンスを見てるとx,y,zが含まれているようだ。 の型を持つ変数同士を変換する事が出来れば、自分の書いた関数、DXライブラリの関数のどちらでも使えるのではないかと予想。 一応、以下のような感じで書いてみた。まだ書いただけなので使えるかどうかは今後の進捗次第。 //Vector3型変数をVECTOR型に変換する関数。 VECTOR Vector3_To_VECTOR(Vector3 a){ VECTOR result; result.x = a.x; result.y = a.y; result.z = a.z; return result; } //VECTOR型変数をVector3型に変換する関数。 Vector3 VECTOR_To_Vector3(VECTOR a){ Vector3 result; result.x = a.x; result.y = a.y; result.z = a.z; return result; } http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/140
141: SGGK ◆6pZCoAtaxk [sage] 2011/01/19(水) 23:11:10 ID:VXY/IGc8 念の為もうひとつ確認しておこうと思い、テストプログラムでメインループの中に Zキーを押したら選手のx座標を少しずつ増やしていく処理を追加してみた。 コンパイルして実行してみたら選手の絵がx方向に動いた。 3Dのビルボードの命令で描画した選手でもいままでの2D命令でやったとき同様に動く事が確認できた。 これで多少は安心してソースの書き直しに着手できる…と思う。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/141
142: 名前は開発中のものです。 [sage] 2011/01/20(木) 00:55:56 ID:yl8ufdN1 C#囓った俺だったら、Vecrot3にToVECTOR()関数を追加するかな Vector3 a; VECTOR b = a.ToVECTOR(); って書けるようにする 普段はVector3を使って、必要に応じてVECTORを吐き出すというイメージ VECTORからVector3への変換はしない、という仕様にした方が多分デバッグは楽になると思う http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/142
143: SGGK ◆6pZCoAtaxk [sage] 2011/01/20(木) 23:35:43 ID:hnrlJRek アドバイス、ありがとうございます。 確かに変数の型はどちらかに統一しておいた方が良さそうなので注意します。 変数はVector3に統一し、DXライブラリの関数の引数と出力の型がVECTORだった場合には、 引数に関しては、Vector3型をVECTOR型に変換した値を入力して、 VECTOR型出力に関しては、そのつど出力のx,y,z値をVector3型変数に入力すれば、>>140で言った VECTOR型変数をVector3型に変換する関数は使わなくて済むので、これでやってみます。 今日のプログラム修正は、データのロード部分のみ。少しずつ進めていく予定。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/143
144: SGGK ◆6pZCoAtaxk [sage] 2011/02/09(水) 21:46:30 ID:iFm8dF3D 修正が思い通りに進まないので悩む。 また以前のようにクラス図の様な図を書いて整理してからソースを修正した方がいいのだろうかと思ったが、 エクセルで書こうとするととても時間が掛かるので、クラス図を書くためのフリーソフトが無いか探してみた。 UMLdraw フリー版とシェア版があり、フリーでは印刷できないので不可。 UMLmemo フリー、印刷無し、ビットマップ出力ありだけど、書いたテキストの空白が改行マークで埋め尽くされて見づらいので不可。 astah* community 無償版、印刷あるけど大きさの調整不可、使い方が難しいので不可。 無理してastah* communityでクラス図もどきを途中まで書いてなんとなく思い始める。 「頑張ってプログラムソースを書き直した方がいいような気がする。」 この状況になるまで約2週間経過。無駄な事をしてしまったのかも・・・。 今は選手のデータ関係を修正中。 前スレ>>885で選手のデータを入力しやすくするために考えた関数を使わずに テキストファイルからデータ(初期位置座標など)を読み込めるように出来ないか考えているところ。 14歳シリーズのC(VS2008編)に使えそうな例が載ってたので参考にしてみるつもり。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/144
145: SGGK ◆6pZCoAtaxk [sage] 2011/02/11(金) 22:55:49 ID:83OV5fAw テキストファイルからの読み込みをやると言ってすぐ壁に突き当たる。 選手のポジション(FWなど)を列挙型定数にしているけど、これは読み込めないらしい。 全てのデータをテキストファイルから読み込む方法に変える必要はないと思うので、 これについては、選手のゲームスタート直後の座標だけをテキストから読み込めるようにすればいいかなと考えた。 選手のデータ関係の修正作業は途中だけど、ちょっと中止。(方針変更しすぎ・・・) クラス図を途中まで書いたときに感じた事だけど、状態を表す定数の追加やそれを使った分岐が ソースを見づらくしており、他にも理由がいろいろあって、このまま気になったところから直してコンパイルしてもたぶん地獄の修正作業になると思った。 全部直してからでないと修正途中でコンパイルしたところでバグしかでないぞと思っていたが、 最低限のファイルだけ残して、残りはとりあえずコンパイルの対象となるフォルダの外に場所を移しておき、 残したファイルだけでコンパイルし動作確認出来たら、移動したファイルをいくつか戻して修正して・・・を繰り返していけばよいのではと思った。 ということで、メインループ関係とフィールド画像関係だけ残して、 メインループ関係のソース内のフィールド以外(選手、ボールなど)に関する記述は//を付けてコメント化してコンパイルされないようにしてみる。 その状態でフィールドが画面に表示されるまでを目標にしてみる。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/145
146: SGGK ◆6pZCoAtaxk [sage] 2011/02/14(月) 00:35:14 ID:hwQDV7I3 11,12,13日の3連休では無理だった。(作業時間もすごく短いので・・・) エラーの数は、20個→8個→30個と変わり、結局増えてしまった。 ゲームのループとそこから呼び出す関数はそんなに変更ないけど、 そこから先は思った以上に作り直しに近い感じなってしまった。 まだ先だけど、状態管理の定数を使った分岐処理もできればメインループの外に出したい。 一つの値があったとして、その値が自作のVector3型だったり、 ある時はDXライブラリのVECTOR型だったりするため、変換の方向を Vector3 → VECTOR のみにしてソースを直すつもりだったのが想像以上に難しそうで、 プログラムソースもほとんど書き直しに近い感じになりそうなので、 この際思い切ってVECTOR型に統一して、ベクトル関係演算用関数については、 自作ではなくDXライブラリの関数を使って書き直していくやり方にしてみる・・・に方向修正。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/146
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 341 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.014s