1人でゲームが作れるように修行します。2 (487レス)
1人でゲームが作れるように修行します。2 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
280: 260 [sage] 2011/06/22(水) 00:08:48.05 ID:TgbTdqkQ スクリプトいきなりつまずきましたが、なんとかやってます。 演出も考えながらだと、スクリプト組むだけで、相当時間がかかりますね。 くじけず頑張ります。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/280
281: 名前は開発中のものです。 [sage] 2011/06/22(水) 12:00:12.23 ID:fBrDYNiX 吉里吉里か、あれは扱いが難しいよね ちなみにデフォだとNスクリプタの方が高機能というのは知ってる? だからNスクじゃ表現できないようなら吉里吉里に乗り換えるという順番の方が良いと思うけど http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/281
282: 名前は開発中のものです。 [sage] 2011/06/22(水) 12:04:04.89 ID:9GezxZuR >>281 Nスクはライセンスがめんどい http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/282
283: 名前は開発中のものです。 [sage] 2011/06/22(水) 12:11:30.60 ID:fBrDYNiX >>282 ・無料配布であれば企業/個人の区別や配布方法を問わず無料でお使いいただけます。 ・雑誌付録にフリーウェア/シェアウェアとして収録する場合は無料でお使いいただけます。 ・商業流通作品の販売の際には、使用料を一作につき40万円いただきます。 ・同人流通作品の販売に関しては無料とさせていただきます。 特に作者(高橋直樹)への報告の義務はございません。 まとめると「商業以外なら無料で勝手に使える」 めんどいか? http://mevius.5ch.
net/test/read.cgi/gamedev/1272901469/283
284: 名前は開発中のものです。 [sage] 2011/06/22(水) 12:28:18.65 ID:9GezxZuR >>283 使用条件.txt よく読んでみた 結論:めんどい http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/284
285: 260 [sage] 2011/06/26(日) 23:51:24.50 ID:xFrZRsWs 吉里吉里やりはじめた状態でNスクに手を出すと、 いろいろごっちゃになりそうなので、とりあえず吉里吉里で進めてみます。 前回の書き込みから、実はあまり進んでいません。 よくわからないところは飛ばして、全体をとりあえず作ってみることにします。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/285
286: SGGK ◆6pZCoAtaxk [sage] 2011/06/27(月) 23:20:47.45 ID:DnwEKUYt 自分もどちらかといえば、全体を先につくってみたい方です。 拡大縮小の件、ホイール回した時のGetMouseWheelRotVol()の値をマウスのメンバ変数に保持して、 その保持した値を今度はカメラの移動関数でループ毎に足していたので、限界まで拡大縮小してしまっていた。 ホイールを回しているときだけ、足すようにしたら、上手く動いた。 次は、ホイールドラッグで画面を上下左右に動かせるようにしたいけど、最近なかなか作業時間が確保できない感じ。 確保できても動くプログ
ラムが書けるかどうかわからないのが悩むところ。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/286
287: SGGK ◆6pZCoAtaxk [sage] 2011/06/28(火) 23:10:23.97 ID:/iwsRyTC ホイールドラッグで画面を上下左右に動かせるようにする方法を考えるところまでで今日は終わり。 残り時間が少ないので、実装を後回しにして次の目標のマウス右ボタンドラッグでの回転の方法を考えてた。 ちなみに参考はメタセコイアの操作方法。右ボタンでぐるぐる回して、どういう法則で回してるのか考えてた。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/287
288: SGGK ◆6pZCoAtaxk [sage] 2011/06/28(火) 23:20:58.79 ID:/iwsRyTC 時間無い…と書くのはやめようとなんとなく思った。 もっとこう楽しくやるイメージでいかねば…(汗w 回す法則もなんとなく見えてきた感じ。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/288
289: 179 ◆SLG//siTD6 [sage] 2011/06/29(水) 01:42:07.29 ID:bFO62WPj こっちは全体ってかとりあえず実行出来るもの(最初なら真っ黒のウインドウ表示)作って後はひたすら追加ってな感じかなぁ やっぱ、動いてる物あると分かりやすいし。 そして良く分からんところはコピペでいいんだy(ぇ 初期化とか物理式とか・・・ >>277 なんというか、まさに1を練ってないせいで詰まった、みたいな?w 生産用のウインドウ作ってボタン押したら自分の基地にユニット出すってのはできたんだけど 1 SLGみたいに 生産→プール→編成(グループ?)
→出撃 にするべきか 2 このままRTSみたいにユニット選択→生産=出撃 で1ユニットごとに動かすようにするべきか・・・ たぶん1のが作りたい。しかし、すんげぇ大掛かりになりそうな気がする/(^ http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/289
290: 名前は開発中のものです。 [sage] 2011/06/29(水) 03:32:24.30 ID:HlRn2WRH >>289 1の実装 class unit; //ユニット vector<unit*> pool_list; //プール class group{ //編成(グループ) vector<unit*> group_list; }; 生産する時はpush_backして pool_list.push_back(new unit()); 編成画面でpool_listの内容を表示する どういうゲームか知らずにレスしてるので的外れだったらすまんけど 単純に考えてこんな感じじゃいかんのかな? プールは1つあれば充分、グループは何隊も作るというイメージ http://mevius.5ch.net/te
st/read.cgi/gamedev/1272901469/290
291: SGGK ◆6pZCoAtaxk [sage] 2011/06/29(水) 23:51:37.47 ID:pI8KOKmf 今思えば自分の場合、全体を先に作りたいと言っていたのは、自分自身未知の作業なので作れる自信が無かった為、 作れそうか見極めたいといった目的もあったと思っています。ちなみに全体と言ってるのは、最低限の処理の流れの実装みたいなものです。 全体とか関係なく作れる場合は、好み優先で進んだ方がモチベーションが続くかも。 ホイールドラッグで画面を上下左右に動かせるようになったけど、 メタセコイアみたいにマウスで画面をつかんで動くような感じになってないの
で、原因調査中。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/291
292: SGGK ◆6pZCoAtaxk [sage] 2011/07/02(土) 01:37:53.85 ID:Yr95b2iZ なんとか上下左右に動かせるようになった。(今日はたまたまこんな時間) >291では、画面のフィールドが突然ロケットのような勢いで画面外に出て行ってしまったりして、 もうこれが自分の限界かと思った。 ディスプレイ画面上でマウスの示す位置がaからbまで移動すれば、3D座標系内のフィールド上の投影位置も AからBに動くとして、そのベクトルABを算出して、カメラの位置ベクトルと注視点ベクトルに−ABしてやればうまくいくのではと思ってた。 これら
の計算を始めた時の最初のカメラの位置をずっと初期値としてベクトルABを計算してループすればOKと思っていたのが間違いだったようだ。 毎ループ毎に計算した新しいカメラの位置および注視点ベクトルを次のループでの初期値にするよう書き直したら、 フィールドが飛んでいく不具合が解決! http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/292
293: 179 ◆SLG//siTD6 [sage] 2011/07/05(火) 05:05:11.63 ID:oJBQ1HG/ >>290 単純だと・・・よろしいならば実装だ ttp://gmdev.xrea.jp/st/up/380.png って、勢いでプールだけ作ったけど、 グループクラス(&編成画面)実装にはやっぱ色々変更しないとだめぽ。。 あ、VECTORとかよくわからんので適当に配列(POOL[X][Y][PAGE])で実装してます(x`; 強引にやりすぎて中身がかなり汚い・・・w どういうゲームか?自分でも良く分かってない/(^ >>292 ま、まぁカメラ周りは一回作ればそんなに弄ることないから 出来てしまえばこっちのモ
ノサ 行列計算とかもうやりたくないです。ハイ http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/293
294: SGGK ◆6pZCoAtaxk [sage] 2011/07/05(火) 23:43:42.69 ID:Bc+Kj7b6 >>293 カメラ周りはまだ時間かかりそうな感じだけど頑張ります。 実はまだメタセコイアを眺めてて回転の法則が見いだせない状態(汗 横の回転はたぶんこうプログラムすればいいだろうというイメージ出来たけど、 縦の回転はあともう少しで思いつきそうな感じ。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/294
295: 名前は開発中のものです。 [sage] 2011/07/07(木) 04:17:05.86 ID:ATCSo0JT メタセコイアの視点操作って、注視点関係なしにワーク原点を基準に ヨー角ピッチ角の回転と距離だけじゃないかな? CADには適しているけれど、ゲーム用のカメラとしては参考にならないよ。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/295
296: SGGK ◆6pZCoAtaxk [sage] 2011/07/07(木) 23:37:42.40 ID:RwXcD4/0 >>295 ゲームに不向とは気付かずに作業してました。ありがとうございます。 早目にこの段階を終わらせて次いきたいと思ってます。 今日は何も出来なかったけど、いちおう回転だけは土日になんとかしたい気持ち。 縦の回転方法も考えてみたので、今度こそプログラムを書いてみます。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/296
297: 179 ◆SLG//siTD6 [sage] 2011/07/08(金) 00:03:46.32 ID:eIT69sd4 1、原点(0,0,0)でカメラの向き(角度X,角度Y,0)の回転行列を作る 2、1のマトリックスから カメラから原点までの距離(0,0, - 距離)をトランスフォーム 3、マウスでのミドルボタン平行移動は(移動量X ,移動量 Y , 移動量Z(0))で1のマトリックスからトランスフォーム 4、2と3を足す 5、カメラに各要素をセット(4のposition、角度X,角度Y,0) 3、の 移動量Zの部分はメタセコアではズーム代わりになってると思う。 多分メタセコアのはこんな感じだと思(・x
・`) 色々違ってたらゴメンナサイ、と・・・。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/297
298: SGGK ◆6pZCoAtaxk [sage] 2011/07/09(土) 00:04:38.56 ID:HknH7n3m >>297 ありがとうございます。昨年末頃3Dの本を途中まで読んでて、 それに載っていた座標変換のことを忘れてました。 なのですぐにこれをコードに落とすのはまだ難しいけど、 プログラムのどこかでまた座標変換が必要になる頃には出来るように本を読み直してみます。 座標変換でやる場合、移動量Zを変えた時に注視点をどう変えるとズームになるかがまだ自信ないけど、 本読み直す時に解決出来ればと思ってます。 今日は、マウスの右ボタンドラッグ移動量から画面で
回転させたい角度を計算するとこまで出来た。 あとは横回転はY軸に対して行い、縦回転は、注視点位置ベクトル(x、y、0)から カメラ位置ベクトルのZ成分を0にしたベクトルをマイナスして出来たベクトルを90度回転してできたベクトルに対して 回転すればいけるかもしれないというあやしい方法を考えてました。(汗 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/298
299: SGGK ◆6pZCoAtaxk [sage] 2011/07/10(日) 22:33:55.13 ID:fCX0gGeR 昨日の書き込みで間違いがあった。 縦回転は、注視点位置ベクトル(x、0、z)から カメラ位置ベクトルのY成分を0にした (略) が正解。自分のプログラムは垂直方向がY方向になってるのが理由。 メタセコイア風に画面内のフィールドを動かせるようになったような感じがする。 直接これをゲームに使う事はないかもしれないけど、いろいろ動かして、カメラの位置を検討するのに使えそう。 >>279でやった拡大方法だと、カメラの座標が変わらずに拡大縮小してし
まうので、>>276氏の方法に変更。 次からはボールの動きに挑戦。179氏の>>297も意識して作業の予定。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/299
300: SGGK ◆6pZCoAtaxk [sage] 2011/07/17(日) 22:29:42.21 ID:3PbrHQAt あまりの暑さなので今日はもう休もうみたいな感じ。 ボールの動きは、ゲーム開始直後に斜め45°で動きだすようにしてみたら動いた。 次は数値は適当だが重力方向の加速度を考慮した式にしてみたところボールは45°の角度で天井に向かってくだけで放物線にならず。 合計数時間は悩んだと思うけど、ループ毎にボール位置しか更新してなかったのが原因とわかる。 速度も加速度の影響で毎ループ変化してるので、速度も毎ループ毎に更新するようにしたら放物線のように動いた
。 次は地面やフィールドの端でボールが跳ね返るようにすることに挑戦。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/300
301: SGGK ◆6pZCoAtaxk [sage] 2011/08/01(月) 00:12:25.80 ID:MQtVPARw 時間かかってしまったけど、ボールの跳ね返り実装完了。 ボールの動きは月面歩行みたいなゆったりな動きだけど、これで良しとする。(数値の調整でなんとかできるかも) 179氏>>297のマトリックスを掛けていく方式を意識しつつも、今回も長文プログラムで対応。 (マトリックス作成がまだ自分には理解できてない様なので、勉強しないと無理そうだと今回実感した感じ。) 指定範囲外にボールが出そうになった時に跳ね返らずに壁に沿ってボールが動いたけど、 速度だけ反
転して、位置を反転して範囲内に戻してなかったのが原因。 ボールが跳ね返り、跳ね返りの高さが少しずつ小さくなり、最後は転がって止まるようにするのに苦労。 はねてる時の加速度は下向きで、転がってる時の加速(摩擦による逆向きを表現したかった)は速度と逆向きにするというような 加速度の切り替えをどうするかに時間がかかった。 ボールの位置が低い時で判定しようとするとプログラム開始時点で条件を満たして止まってしまう。 放物線の最高点での速度は水平だと思うので、水平になった時のボールの高さがある低い数値より下の場合に、 ボール
位置のy成分を0にして加速度を切り替えてみた。 水平になった時を知る方法は、速度ベクトル1と速度のy成分を0にしたベクトル2の角度がプラスマイナス1度以内ならほぼ水平と判断。 角度はベクトル1と2の内積というものからcosを計算して判定。 加速度が切り替わって速度が少しずつ小さくなるので、一定値より小さくなったら停止。 …という流れで実装出来て動いてるけど、今後も問題なく動作するかは未知な感じ。 次は>>252 >3.ラインを割った状態(スローイン、コーナーキック、ゴールキック、得点)を判定し、復帰処理をつくる。
に挑戦の予定 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/301
302: SGGK ◆6pZCoAtaxk [sage] 2011/08/06(土) 23:29:11.60 ID:p7p2W50E やっぱり、簡単にはいかない予感。問題は時間の管理。 ボールがサイドラインを割ったらスローインする場合、 割った瞬間にスローイン位置にボールを復帰させるのは超反応すぎる感じがするので、 スローイン判定が出て、ちょっとボールが転がって、その後スローイン位置にボールが出現するようにしてみたいと思った。 すると、ボールがラインを割ってから、復帰までのわずかな時間をカウントして、その中断時間中はプレイ時間をカウントしないようにするにはどうすればいいん
だという悩みが残る。 対象別に専用の時間を用意しなければならないのかと考えてみたが、それは時間測定対象が増えると大変な作業になる。 結構悩んだけど、時間の処理関数をメンバ関数に持つクラスを作って、必要な関数の数だけそのクラスのオブジェクトを作ればいいかもしれないと思った。 実は3D座標系でやってる今のプログラムは上記とは異なる理由から運よく時間関係をクラス化してたのでなんとかなるかもしれない。 2Dの時はこのクラスが無かった…というか思いつかなくて、3Dにするときに色々考えて、ソースを短くしたいという理由から時
間関係をクラスにしていた。 時間のクラスには、 void countGameTime();//時間をカウントする。 void resetGameTime();//カウントを0にリセットする void displayGameTime();//時間を画面表示 のメンバ関数があるけど、新たに void tempStopGameTime();//カウントを一時停止する void restartGameTime();//一時停止からカウント再開 を書き加える予定。 上手くいくか確認してから書いた方がいいかもしれないけど、書いてみた。(後で作業を振り返れるし。) http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/302
303: SGGK ◆6pZCoAtaxk [sage] 2011/08/17(水) 00:37:25.52 ID:gcbpVhmx >>252 >3.ラインを割った状態(スローイン、コーナーキック、ゴールキック、得点)を判定し、復帰処理をつくる。 1週間位で出来ないかなと思ったけど無理だった。 テクニックを持っていないので、if文と状態を表す変数で対応しようとしたらソースがぐちゃぐちゃになってしまった。 ノートに手書きで処理の流れを書いてからプログラムを書いてみたけど、多数の問題が発生。 一つずつ直していき、直してしまったらどんな問題だったのか思い出せないのもあったりする。
覚えている問題は、 (1)テキスト文字が表示されない。 (2)スローイン位置に復帰させたボールをけっても動かない。 (3)ボールを蹴れるようになったけど、その後再度ボールがラインを割っても何故か今度はスローインの処理に移らない。 原因と解決法 (1)原因:「ThrowIn!」のテキストがグラフィックの裏に表示されていた。(フィールドを回転できるようにしていなかったら気付かなかったかもしれない。) 解決法:フィールドを書いてからテキストを表示すればいいけど、やり方を変えて、drawText()というメンバ関数を作り、これを
メインループの最後の方に置く、 元々テキスト描画命令を書いていたところではフラグをセットして、drawText()内に移したテキスト描画命令はフラグがセットなら命令実行するようにした。 (2)原因:3秒経過した?→YES→ボールをライン際にセット → ボール状態をSTOP → ボール状態がKICKKEDか? →YES → ボール移動 という処理にしていたが、これだと、マウスクリックでボールの状態がKICKKEDになっても直前でSTOPに状態が変わるので、ボール状態がKICKKEDか? → NO となって動かない。
解決法:かなり悩んだけど、3秒経過した?→YES→m_Set01==falseか?→YES→ボールをライン際にセット → ボール状態をSTOP →m_Set01=true;→ ボール状態がKICKKEDか? →YES → ボール移動 にしたら動いた。 (3)←まだ原因不明。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/303
304: SGGK ◆6pZCoAtaxk [sage] 2011/08/17(水) 23:01:09.88 ID:umYfMU6K (3)については、ボールの移動はそもそもボールクラスのメンバ関数moveの方で計算されるので、 状態がKICKKEDなら動くようになっていて、状態がKICKKEDになってその時の速度を再計算して直後にMOVINGという状態に移ってしまうように書いていた。 つまり、昨日の「ボール状態がKICKKEDか? →YES → ボール移動」とう処理にはいいつまでたっても進まない。 正解は、 ボール状態がMOVINGか? →YES → ライン判定の状態をリセットする だった。 コーナーキック、
ゴールキックもスローインを参考にして実装した。 これで、 >3.ラインを割った状態(スローイン、コーナーキック、ゴールキック、得点)を判定し、復帰処理をつくる。 得点以外は実装完了。 次は、 4.選手をまず1人表示し、動かせるようにする。 5.選手とボールの接触判定をし、マウスクリックの代わりに選手が蹴るようにする。 を一緒にやる時に得点実装する予定。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/304
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 183 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.010s