1人でゲームが作れるように修行します。2 (487レス)
1人でゲームが作れるように修行します。2 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
120: SGGK ◆6pZCoAtaxk [sage] 2010/11/01(月) 00:11:40 ID:IY/H8hBE >>119 こ…、これは気付きませんでした。ありがとうございます。 試しにサンプルで使えそうな部分をコピーしてプログラムソースに貼り付けてまさかのコンパイル。 これではおそらくバグが山積みだろうと思ったら、予想外に通った。画像の文字の意味についてはまだ理解出来てません。 サンプルでは、スクリーン上のマウス座標から直線が延びているイメージで、ワールド座標内のポリゴンに当たったらそこが黄色になるという内容だろうと解釈。 マウスを左上に持っていくとフィールドの左上が黄色、右下にもっていくと右下が黄色、フィールド外だと変化なし。 とにかく反応していることが確かめられたので、このサンプルコードを自分がやろうとしていることを実現できるように 書き変えられるか考えてみようと思います。 参考画像をうp ttp://gamdev4.hp.infoseek.co.jp/cgi-bin/up/No_0134jpg.html もちろん>>116〜118についても継続するので、並行作業で行く予定。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/120
121: 名前は開発中のものです。 [sage] 2010/11/04(木) 00:20:21 ID:DIpes90k カキコがなくて心配してたよー http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/121
122: SGGK ◆6pZCoAtaxk [sage] 2010/11/04(木) 22:06:09 ID:vVAyUmeW >>121 >118の本の学習がなかなか進まなかったため、ご無沙汰してしまいました。(汗; ときどき停止するかもしれませんが頑張ります。 本の方は8章(〜144ページ)で一区切り。とりあえず8章まで読めればなんとかなりそうなので9章までの予定は中止。 14章も一部分だけ読んでみた。残りは必要なときが来たら挑戦するつもり。 >>116氏のをもう一度読んでみたところあともう少しでわかりそうな気がしてきたので、 あとはネット検索で投影変換行列を調べてみる予定。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/122
123: SGGK ◆6pZCoAtaxk [sage] 2010/11/11(木) 00:10:14 ID:OH7eCgI8 >>116氏のアドバイスについて今の自分に出来るところまで図示で理解しようとしてみたのでUP。 視野錘台がうまく斜めに書けていないとかいろいろあるけど、 この状態からさらに理解が進めばDXライブラリを使って自分なりの関数をどのように作ればよいのかがわかるかも…、 そんな時が来るかもしれないと期待してここでいったん区切ることにしてみます。(感謝!) いつも使わせてもらってたアップローダがサービス停止のようなので、いろいろ探して以下のところにしてみた。 (アップローダを使ってるスレを探してたらNE○Tスレを偶然見てこのアップローダの存在を知った。) 他にお勧めのアップローダがあれば、柔軟に対応します。 ttp://ux.getuploader.com/sggk/ 次は>>119氏のヒントを元に次の行動を決める予定 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/123
124: 名前は開発中のものです。 [sage] 2010/11/11(木) 00:28:36 ID:Jw3X6bp+ >>116 の Lは、 GetMousePoint( &Mx, &My ) ; ConvScreenPosToWorldPos( VGet( Mx, My, 0.0f ) ) - E ; で求まるんじゃないだろうか。 そこで詰まったんじゃないの? http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/124
125: SGGK ◆6pZCoAtaxk [sage] 2010/11/11(木) 23:34:05 ID:jPJR3Unn >>124 アドバイス、ありがとうございます。 今度は練習プログラムの修正で確認してみようと思っています。 >>119と>>124の両方でやってみるつもり。 マウスが指し示すフィールド上の位置に何かオブジェクト(球体とか)を 表示出来れば上手くいったと考え、この前ベクトル化したプログラムの続きに入る予定。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/125
126: SGGK ◆6pZCoAtaxk [sage] 2010/11/13(土) 00:09:26 ID:2/KX1c8L 作業時間10分なので何も出来ず…。 とりあえず半径10の球体を(100,0,0)、(0,100,0)、(0,0,100)の順番に表示させてみた。 これによれば、X軸は左方向がプラス、Y軸は上方向がプラス、Z軸は手前方向がプラスになっていたので、 DXライブラリは左手座標系なんだな〜と思ったところで終了。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/126
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
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 343 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.008s