1人でゲームが作れるように修行します。2 (487レス)
上下前次1-新
240: SGGK ◆6pZCoAtaxk 2011/05/09(月)23:53 ID:7TJ8pACL(1) AAS
>>234〜>>239
多くのアドバイス、ありがとうございます。全部活用していきます。
>>234>>235>>236>>237
なんとなく分かってきました。
昨日考えていた時は、等加速度αのt秒後の位置xの式が物理の本にあったとして、
これをゲームに応用するには、移動を始めた初期位置と初期速度に対してframetime後、2*frametime後、3*frametime後、…n*frametime後の位置を計算しなくてはと思い悩んでいたけど、
毎フレーム単位毎に常にその時の数値が初期値であると考えてframetime後の数値を計算するならば、公式がそのまま使えそうな感じ。
省12
241(1): SGGK ◆6pZCoAtaxk 2011/05/11(水)23:28 ID:dXE++lT+(1) AAS
すぐには進まないけど、当たり判定用関数の実装終了。
宣言と定義しただけで、まだ実際には使っていないので、バグが出るかもしれない。
選手がボールを蹴れるようにする実装を検討中。
>>233で言ってた
>ボールをけるボタンを押したときに選手とボールのあたりが真なら、ボールが一定の速度で移動するようにするつもり。
を実装するにはキック用キーを押した時に選手とボールの座標を取得して当たり判定をして、
当たりなら、例えばボールの状態の変数をセットしてそれに応じてボールの挙動が変化するみたいにすればよさそうだけど、
省7
242(1): SGGK ◆6pZCoAtaxk 2011/05/17(火)22:44 ID:s8XxjuX7(1) AAS
時間の流れが速すぎて生存報告のみな感じ。
ボールを蹴れるようにするにはあれが必要これが必要と考えていたら
何故かソートのプログラムで悩む。
ソートについては名前は聞いたことある位の認識なのでちょっと調べる必要があって時間かかった。
全部調べるのは無理なので最初に見たバブルソートを使う事にした。
これは時間のかかるソートだという事は調べているときに知ったけど、とりあえずこれでやることにした。
選手とボールの距離を計算してその数値が小さいものから順に並べ替えるんだけど、
省11
243(1): 2011/05/17(火)23:03 ID:z1f8XmMA(1) AAS
そんなに難しいことしないで、「選手の情報を格納しているクラス」の”ポインタの配列”をソートすればいいんじゃない?
244(2): 179 ◆SLG//siTD6 2011/05/18(水)12:20 ID:5rb+12nD(1) AAS
難しすぎて理解できないぜ・・・w
というか、最後3行あたりの用途ならソートしなくても
単純に自分よりボールに近い選手の数を数えればいいんじゃ..?
チラ裏:
ここ2週間ほど忙しくてプログラムから離れてたらクソースが読めなくなってしまったんだぜ・・・
誰だこんな汚いソース書いたのは。。
245: SGGK ◆6pZCoAtaxk 2011/05/18(水)23:50 ID:SMykIXyq(1) AAS
>>243
アドバイス、ありがとうございます。
242での説明が不足していたせいもあり、実は自分のプログラムは「選手の情報を格納しているクラス」のオブジェクト22個(選手22人分)を
配列に入れているやり方でなくて、例えば、list<FieldPlayer>m_FieldPlayerList のようにFieldPlayer型のオブジェクトをpush_back関数で次々に入れていけるメンバ、m_FieldPlayerListを定義して、
それらの要素にはイテレータ、list<FieldPlayer>::iterator it;のような命令を書いて、このitを++したり、−−したりする方法でアクセスする感じの実装なので、ポインタでのアクセスが出来なさそうです。
でも、「ポインタの配列をソートする」でネット検索すると、「検索結果ロベールのC++教室 - 第28章 たのしいソート5」というページがヒットしたので、これの1から5までを読んで、実装はまだ理解できないけど考え方がなんとなくわかりました。
これと243氏の”ポインタの配列”をソートするやり方を合わせて
省7
246(1): 179 ◆SLG//siTD6 2011/05/25(水)02:34 ID:XYH4jaxx(1) AAS
チョイ調べたらイテレータからポインターにぶち込めるみたいだったけど
p = &*it みたいな感じで。
>>244 のは、選手数えて保持すればいいんじゃって事・・・w
やってる事は選択ソートとあまり変わらないし、保持したところでアクセスにもループいるから微妙っちゃ微妙。
ポインタ配列ソートならp[7] で7番目にアクセスできるから便利だね
チラ裏:
何をやろうとしてたか忘れたので
省4
247: SGGK ◆6pZCoAtaxk 2011/05/25(水)23:02 ID:WTP3xbuq(1/2) AAS
>>246
ありがとうございます。今思うと自分のソースでも (*it).メンバ関数 のように書いてるところもあり、
*it がオブジェクトのような感じなので、それを考えれば p = &*it でやれそうなのにこれは全然思いつかなかった。
ノートに書いて忘れないようにしておきます。
ソートが今丁度出来たところなので、イテレータへのポインタ方式のソースへの適用は次回かそれ以降のソース改良のときに挑戦してみたいと思います。
ソート書くのに時間が掛かってしまい、途中で作業ペースも落ち気味になる。
ゲームスタート直後は選手とボールの距離が同じデータが複数あるので、
省4
248: SGGK ◆6pZCoAtaxk 2011/05/25(水)23:16 ID:WTP3xbuq(2/2) AAS
次回ソースUPの時に同じソースが残ってる自信がないので、簡単に説明。
d[i]がソート後の距離を指すポインタ配列
例えばd[1]には1番ボールと選手の距離が近い値へのポインタが入っていて、
*d[1]で距離を呼び出して、この距離と同じメンバ変数m_DistanceFromBallを持つ選手のオブジェクトがit++を繰り返して見つかったら、
その選手オブジェクトのソートした場合の順番を保持してるメンバ変数m_NumberFromBallにiを入力するアルゴリズム。
breakが無かったら、4,4,4,4,5,6,7…みたいな感じになるけど、以下のソースのようにbreak入れたら
1,1,1,1,5,6,7…みたいになり直った。
省11
249: SGGK ◆6pZCoAtaxk 2011/05/31(火)23:13 ID:45bt856E(1) AAS
1週間が早すぎるけどやっぱり進まず。(なかなか早く帰れないし、帰り遅いと疲れてしまって…と言い訳。)
選手がボールを蹴るキーを押したときに選手とボールのあたり判定が真ならボールの状態をKICKEDにして、(←ここまでは書けた。コンパイルは通るようになったけど、動かすと問題でるかもしれない。)
ボールの移動関数の方では、ボールの状態がKICKEDになったループの時だけ初速を計算し、状態をMOVINGにして、それ以降は速度0になるまで位置計算を繰り返すにしたいけど、この初速をプログラムのどこで計算するかに迷って時間かかってしまった。
ボールのクラスのメンバ関数でやろうとすると選手のデータを引数にしなければならず面倒に思ったから。
なぜなら初速を変える要因は選手だけでなく地面や壁やゴールバーなどもあるし、そのつどこれらを引数にすると処理が増えて複雑になりそう。
そこでボールデータクラスに初速をメンバ変数として持たせて、選手もボールも扱えるsoccergameクラス内で初速を計算してボールデータのメンバにセットして
ボール関数内ではその初速メンバにアクセスして位置を計算してみるようにしようと考えて今日は終了。
省3
250: 179 ◆SLG//siTD6 2011/06/02(木)04:01 ID:bbIJXBAa(1) AAS
ずるずるでも続いてるならいつか出来上がるさ〜
自分はあきっぽいからずるずる続けられないんだよなぁ
すでにちょっと2Dスクロールアクションみたいなの作ってみたいなとか思ったり。
が、とりあえずSLGをそれっぽく完成させてるまで我慢。
段々コードが荒っぽくなってるけどw
チラ裏:
中立資源地の占領実装した。敵の資源地とかはまだ。
省3
251: SGGK ◆6pZCoAtaxk 2011/06/02(木)23:58 ID:y33r2mcB(1) AAS
1年での完成はやっぱり無理だとしても諦める事だけは無いようにしたいな〜と思ってます。
自分もコードが早くも分かりにくくなってきてるので、危険な状態かもしれない(汗
選手がボールを蹴れる処理を書き終えてコンパイルしてみたが、
コンパイルは通るようになったものの、選手もボールも画面に表示されずで今日は終了。
252(7): 2011/06/07(火)00:00 ID:OJpa3qNa(1) AAS
一気にゲームを完成させるのが難しいなら、要素ごとにマイルストーンを設定するのがいいですよ。
3D見下ろし型サッカーゲームだったら、
1.グラウンドとゴールを描画する。カメラを動かしたいのならその動かし方も決めて調整しておく。
2.ボールを配置し、試験的にマウスでクリックすると蹴ったように動くようにする(物理運動シミュレーション)。
3.ラインを割った状態(スローイン、コーナーキック、ゴールキック、得点)を判定し、復帰処理をつくる。
4.選手をまず1人表示し、動かせるようにする。
5.選手とボールの接触判定をし、マウスクリックの代わりに選手が蹴るようにする。
省4
253(1): SGGK ◆6pZCoAtaxk 2011/06/07(火)23:23 ID:iMg7vpsC(1) AAS
>>252
ありがとうございます。このように全体を先にイメージした方がいろいろ良さそうですね。
今出来てるのは1の一部、4、8の一部ぐらいなので、あまり進んでいない様です。
どのくらい遅れているのかということに気付けるのも大事なので、完成までにやることをイメージしておくことは有効だと思います。
先は長いけれど、ここから頑張ってみます。
ボールを蹴る実装が上手くいかず。
ボール移動関数実行直後にブレーク入れてボールの座標を見ると、(-1.#IND00、-1.#IND00、-1.#IND00)になってた。
省6
254(1): 2011/06/08(水)00:39 ID:j4NqkXuU(1) AAS
>>253
>完成までにやることをイメージしておくことは有効だと思います。
全体の把握というか、パーツ毎に分けて作業化するという意味合いが強いと思う
簡単にいうと段階毎に締め切りを設けて、そのスケジュール通りにこなしていけばいつの間にか完成している、という方法
いつか完成すれば(あるいは完成しなくても)いいという人にはあまり効果はない
255: SGGK ◆6pZCoAtaxk 2011/06/09(木)00:10 ID:HLDcGlpq(1) AAS
>>254
自信が無くても締め切りを設けた方が良さそうな気がしてきました。
ありがとうございます。
>>252氏のマイルストーンを参考にして6月23日を目標にしてみます。
256: 179 ◆SLG//siTD6 2011/06/09(木)02:18 ID:n5JLQBEP(1) AAS
たしかに段階的学習スレのお題のはやりやすかった気がする・・・。
あの時は一週間くらいで一段階って自分ルール決めてたなぁ
今でも大体1週間くらいでなんか一つって感じだけど。
チラ裏:次の目標?
資源地とユニットに■マークに色つけて敵と見方分かるようにした。
敵の資源地に攻撃→HP0になったら→中立化→占領で自分の物になるようにした。
次は、弾が当たっても残りHPとか分からないのでそこらへんをなんとか
省1
257(1): SGGK ◆6pZCoAtaxk 2011/06/09(木)23:56 ID:k3OGT/+I(1) AAS
翌日になって確かに23日は厳しすぎかもしれないと思えてきました。
一週間でひとつが丁度良さそうな感じ。
とりあえずは23日目標で頑張ってみて、その結果を見て次の行動を考えてみようと思います。
AIは難しそうですね。
自分も7番でやろうとしてるけど、選手中心半径何ドットにボールが入ったらボールに向かうような処理を書いて
とりあえずAIということにしてみる予定です。
カメラを動かすとフィールド上でマウスが示す座標が変わり、
省4
258(1): 2011/06/10(金)19:38 ID:HbOQx0Jb(1) AAS
期限を守ることよりも確実に仕上げていくことが大事ですよ。
それと、安易に妥協しないことも終盤でのモチベーション維持につながると思います。
1番2番に関係しますが、>>116 は理解できましたか?
259: SGGK ◆6pZCoAtaxk 2011/06/11(土)00:17 ID:TMzi+Wx3(1) AAS
>>258
アドバイス、ありがとうございます。
そうですね。確かにそのような気もしてきました。(>>116の理解は一応大丈夫かなと思ってます。)
もう少し1番を頑張ってみてカメラを動かせるようになってから、>>257をやってみます。
260(4): 2011/06/17(金)23:39 ID:qmzwBamB(1) AAS
イラストだけフリー素材を使うのはスレチかな?
261: 2011/06/18(土)11:32 ID:j8vO9QDT(1) AAS
良いと思うよ
262: SGGK ◆6pZCoAtaxk 2011/06/19(日)00:21 ID:Zcvt1Nsn(1/3) AAS
こ…これは誤爆レスなのでしょうか?
こちらは全然進まずで、マウスでカメラ動かす為の前準備としてマウスのクリックとドラッグの判定をする関数を書こうとしているところ。
263(1): 179 ◆SLG//siTD6 2011/06/19(日)03:44 ID:EkbDCXyb(1) AAS
スレ名が「1人で〜」だから・・・?
いいんじゃないの?
ダメだったら俺もスレチだぜorz
テクスチャは○とか×とかで済ませてるけど、効果音とか無理だしなぁ・・・まだそこまでいってないケド。
チラ裏:
HPバーととかユニットの死亡処理(HP0で消す)とか作った。
次はユニット生産?とか。とりあえずボタン押したら基地からユニット出すように作ろう。。。
省1
264: SGGK ◆6pZCoAtaxk 2011/06/19(日)12:39 ID:Zcvt1Nsn(2/3) AAS
>>263
そう言われてみると、これは参加のレスですね。
昨日はうっかりして気が付きませんでした。ありがとうございます。
>>260
こちらの勘違いすみません。
自分も今使ってるサッカーフィールドはフリー素材。
参加者いつでもお待ちしてます!
265(1): 2011/06/19(日)14:11 ID:lmGZwizg(1/2) AAS
260です。書きっぱで申し訳ないです。
私は恋愛ADVを作ろうとしています。
まだ企画段階で、吉里吉里もインストールしてない状態ですが、修行してがんばります。
イラストだけは描けません。
そういえば、効果音やボイスも1人だと厳しいですね。やろうとしてやれないことはないですが。。。
266(1): 2011/06/19(日)16:19 ID:n6GuNgkN(1/3) AAS
恋愛ADVを作るなら、ゲーム中のどんな要素(画像、テキストや台詞、イベント類…)を
重要視したいかポイントを定めて、まずその部分を徹底的に作りこむといいんじゃないかな?
仮にそれがもしイラストなのだとすれば、
他人の素材を借りて作ったのでは自分で作ったことにはならないので(つまりスレ違いなので)、
ゲームを作りながらでなくてもいいから、普通にイラストの修行をするといいと思う。
267(1): 2011/06/19(日)16:50 ID:n6GuNgkN(2/3) AAS
179氏のSLGに関しては、どのような内容か不明だけれど、
氏の発言を読み返した限りでは実装技術で困っている様子はなさそう。
しかし要素技術から行き当たりばったりにボトムアップで作ろうとしているらしい。
アクションゲーム向きな作り方だと思うけれど、SLGやRPGには不向きだと思う。
コーディングに入る前に、ゲームに登場させる要素
(キャラクター、ユーザインタフェース、状態遷移図、判定式…)の一覧表を作り、
個別の設計図と全体の工程表を作ってから作業するのがいいと思う。
省1
268: 2011/06/19(日)17:47 ID:lmGZwizg(2/2) AAS
>>266
今のところ、一番こだわりたいのは、テキストです。
台詞とト書きだけみたいなテキストだとすごくさびしく感じていたので、
うざったくならない程度に、もうちょっと描写を入れてみたいと思っています。
現在、メインシナリオのプロット中。
がんばる。がんばる。
269(1): 2011/06/19(日)19:54 ID:n6GuNgkN(3/3) AAS
まだプロットが上がっていない段階ではアドバイスにならないかもしれないけれど、
テキストで勝負するなら次の2タイプのいずれかを目指すといいと思う。
(A) テキスト中に巧妙に謎解き要素を含ませたフラグ立て謎解き形式
(B) テキスト自体が文学作品として成立するレベルのデジタルノベル形式
それによって、「こだわる」べき目標が見えてくるかも。
もちろん他のシステムでもいいと思うけれど、たとえば育成系ゲームだと
ゲームパラメータに直接関係しないテキストは追々読み飛ばされてしまうので、
省1
270(1): SGGK ◆6pZCoAtaxk 2011/06/19(日)23:33 ID:Zcvt1Nsn(3/3) AAS
なんだかスレが伸びてる。
>>265
自分は、やる気の出たときに少しずつ続けるような感じでやっています。
お互い気楽にいきましょう。
今日は、マウス3ボタンについてクリックとドラッグの判定できるところまで進んだ。
271(1): 2011/06/20(月)12:39 ID:loZm5s9w(1) AAS
>269
Bの方向を目指して頑張ります。
>270
はい。頑張りましょう!
メインシナリオのプロットが粗方できたのですが、全ルート作っちゃっといたほうがいいでしょうかね。
あんまり長いとダレるので、そこそこの長さに留めてみました。
272(1): SGGK ◆6pZCoAtaxk 2011/06/20(月)23:46 ID:fqQ6mSJs(1) AAS
完成できる事を一度確認して、次から好みで長さを決めるというのもありな様な気がします。
こちらは、ホイール回転によるフィールドの拡大縮小機能の実装がうまくいかない状態…。
273(1): 2011/06/21(火)00:46 ID:fioCutCs(1/2) AAS
最初からあまり風呂敷広げすぎてもってやつですね。
とりあえずメインシナリオのテキスト作ってみて、早々にスクリプトの勉強はじめます。
274(2): 179 ◆SLG//siTD6 2011/06/21(火)03:13 ID:Nb3jaiP+(1) AAS
>>267
画像リンク[png]:gmdev.xrea.jp
今こんな感じSLGってかRTSぽい・・・w
提督の艦隊の宇宙版? ホームワールド?みたな感じにできたらいいなぁと。
ターン製はあんまり好きじゃないんでリアルタイムで。
シカシ、自分でもアクション作るほうが向いてる気はする・・・。
設計図とか書いてないけど・・・やっぱいる?(x`;
省3
275: 2011/06/21(火)04:50 ID:MHP6wZYB(1/3) AAS
>>271
過去に短編小説などを執筆し、他人に読んでもらった上で、
とりあえず作品としては成立しているレベル以上の評価を受けた経験があるなら、
バリエーションルートを含めて考えるのも自由じゃないかな。
そうでないなら、まず、メインシナリオだけに集中したほうがいいと思います。
276(2): 2011/06/21(火)05:07 ID:MHP6wZYB(2/3) AAS
>>272
マウスホイールの回転検出はできてる?
方法はいろいろあるけど、たとえばWM_MOUSEWHEELメッセージを処理する方法があるよ。
3Dゲームでパースペクティブビューを使用しているのであれば、
フィールドを拡大縮小するのではなく、カメラの座標を注視点に接近または離脱させればいい。
なお、その際には視点-注視点間の距離を一定値で増減するのではなく、一定率で乗算、除算してやると良い。
(カメラ位置をE、注視点をFとしたとき、E'= F+(E-F)*k or E'=F+(E-F)/k。 kは1.0前後の定数)
277(1): 2011/06/21(火)05:30 ID:MHP6wZYB(3/3) AAS
>>274
設計図については、他人に見せる必要はないので、しっかりしたものを作る必要はないけれど、
手書きメモ程度のもので良いのでノート上で整理してからコーディングに入ったほうが効率的だと思う。
全体的な工程の順序としては、
1.内部設計(ルール、パラメータ、バランスの調整)
2.各要素の実装
3.ユーザインタフェースの実装
省4
278(1): 260 2011/06/21(火)13:01 ID:fioCutCs(2/2) AAS
とりあえずオープニングにあたるシナリオは出来ているので、
いったん吉里吉里/KAGで組んでみます。
いろいろアドバイスありがとうございますm(__)m
279(1): SGGK ◆6pZCoAtaxk 2011/06/22(水)00:06 ID:TfzO15yA(1) AAS
>>274
既に色々な要素が画面に出てて進んでそうな感じ。期待してます!
>>278
UPお待ちしてます。自分もUPできるように頑張ります!
>>276
自分はDirectXが理解出来なくてDXライブラリで頑張ってます。
回転検出は出来てるようで、昨日はGetMouseWheelRotVol()とSetupCamera_Perspective()を使い、視錐台の視野角を変更して拡大縮小するやり方を試みて悩んでました。(ホイール止めても限界まで拡大してしまう)
省1
280: 260 2011/06/22(水)00:08 ID:TgbTdqkQ(1) AAS
スクリプトいきなりつまずきましたが、なんとかやってます。
演出も考えながらだと、スクリプト組むだけで、相当時間がかかりますね。
くじけず頑張ります。
281(1): 2011/06/22(水)12:00 ID:fBrDYNiX(1/2) AAS
吉里吉里か、あれは扱いが難しいよね
ちなみにデフォだとNスクリプタの方が高機能というのは知ってる?
だからNスクじゃ表現できないようなら吉里吉里に乗り換えるという順番の方が良いと思うけど
282(1): 2011/06/22(水)12:04 ID:9GezxZuR(1/2) AAS
>>281
Nスクはライセンスがめんどい
283(1): 2011/06/22(水)12:11 ID:fBrDYNiX(2/2) AAS
>>282
・無料配布であれば企業/個人の区別や配布方法を問わず無料でお使いいただけます。
・雑誌付録にフリーウェア/シェアウェアとして収録する場合は無料でお使いいただけます。
・商業流通作品の販売の際には、使用料を一作につき40万円いただきます。
・同人流通作品の販売に関しては無料とさせていただきます。
特に作者(高橋直樹)への報告の義務はございません。
まとめると「商業以外なら無料で勝手に使える」
省1
284: 2011/06/22(水)12:28 ID:9GezxZuR(2/2) AAS
>>283
使用条件.txt よく読んでみた
結論:めんどい
285: 260 2011/06/26(日)23:51 ID:xFrZRsWs(1) AAS
吉里吉里やりはじめた状態でNスクに手を出すと、
いろいろごっちゃになりそうなので、とりあえず吉里吉里で進めてみます。
前回の書き込みから、実はあまり進んでいません。
よくわからないところは飛ばして、全体をとりあえず作ってみることにします。
286: SGGK ◆6pZCoAtaxk 2011/06/27(月)23:20 ID:DnwEKUYt(1) AAS
自分もどちらかといえば、全体を先につくってみたい方です。
拡大縮小の件、ホイール回した時のGetMouseWheelRotVol()の値をマウスのメンバ変数に保持して、
その保持した値を今度はカメラの移動関数でループ毎に足していたので、限界まで拡大縮小してしまっていた。
ホイールを回しているときだけ、足すようにしたら、上手く動いた。
次は、ホイールドラッグで画面を上下左右に動かせるようにしたいけど、最近なかなか作業時間が確保できない感じ。
確保できても動くプログラムが書けるかどうかわからないのが悩むところ。
287: SGGK ◆6pZCoAtaxk 2011/06/28(火)23:10 ID:/iwsRyTC(1/2) AAS
ホイールドラッグで画面を上下左右に動かせるようにする方法を考えるところまでで今日は終わり。
残り時間が少ないので、実装を後回しにして次の目標のマウス右ボタンドラッグでの回転の方法を考えてた。
ちなみに参考はメタセコイアの操作方法。右ボタンでぐるぐる回して、どういう法則で回してるのか考えてた。
288: SGGK ◆6pZCoAtaxk 2011/06/28(火)23:20 ID:/iwsRyTC(2/2) AAS
時間無い…と書くのはやめようとなんとなく思った。
もっとこう楽しくやるイメージでいかねば…(汗w
回す法則もなんとなく見えてきた感じ。
289(1): 179 ◆SLG//siTD6 2011/06/29(水)01:42 ID:bFO62WPj(1) AAS
こっちは全体ってかとりあえず実行出来るもの(最初なら真っ黒のウインドウ表示)作って後はひたすら追加ってな感じかなぁ
やっぱ、動いてる物あると分かりやすいし。
そして良く分からんところはコピペでいいんだy(ぇ 初期化とか物理式とか・・・
>>277
なんというか、まさに1を練ってないせいで詰まった、みたいな?w
生産用のウインドウ作ってボタン押したら自分の基地にユニット出すってのはできたんだけど
1 SLGみたいに 生産→プール→編成(グループ?)→出撃 にするべきか
省2
290(1): 2011/06/29(水)03:32 ID:HlRn2WRH(1) AAS
>>289
1の実装
class unit; //ユニット
vector<unit*> pool_list; //プール
class group{ //編成(グループ)
vector<unit*> group_list;
};
省6
291(1): SGGK ◆6pZCoAtaxk 2011/06/29(水)23:51 ID:pI8KOKmf(1) AAS
今思えば自分の場合、全体を先に作りたいと言っていたのは、自分自身未知の作業なので作れる自信が無かった為、
作れそうか見極めたいといった目的もあったと思っています。ちなみに全体と言ってるのは、最低限の処理の流れの実装みたいなものです。
全体とか関係なく作れる場合は、好み優先で進んだ方がモチベーションが続くかも。
ホイールドラッグで画面を上下左右に動かせるようになったけど、
メタセコイアみたいにマウスで画面をつかんで動くような感じになってないので、原因調査中。
292(1): SGGK ◆6pZCoAtaxk 2011/07/02(土)01:37 ID:Yr95b2iZ(1) AAS
なんとか上下左右に動かせるようになった。(今日はたまたまこんな時間)
>291では、画面のフィールドが突然ロケットのような勢いで画面外に出て行ってしまったりして、
もうこれが自分の限界かと思った。
ディスプレイ画面上でマウスの示す位置がaからbまで移動すれば、3D座標系内のフィールド上の投影位置も
AからBに動くとして、そのベクトルABを算出して、カメラの位置ベクトルと注視点ベクトルに−ABしてやればうまくいくのではと思ってた。
これらの計算を始めた時の最初のカメラの位置をずっと初期値としてベクトルABを計算してループすればOKと思っていたのが間違いだったようだ。
毎ループ毎に計算した新しいカメラの位置および注視点ベクトルを次のループでの初期値にするよう書き直したら、
省1
293(1): 179 ◆SLG//siTD6 2011/07/05(火)05:05 ID:oJBQ1HG/(1) AAS
>>290
単純だと・・・よろしいならば実装だ
画像リンク[png]:gmdev.xrea.jp
って、勢いでプールだけ作ったけど、
グループクラス(&編成画面)実装にはやっぱ色々変更しないとだめぽ。。
あ、VECTORとかよくわからんので適当に配列(POOL[X][Y][PAGE])で実装してます(x`;
強引にやりすぎて中身がかなり汚い・・・w
省5
294: SGGK ◆6pZCoAtaxk 2011/07/05(火)23:43 ID:Bc+Kj7b6(1) AAS
>>293
カメラ周りはまだ時間かかりそうな感じだけど頑張ります。
実はまだメタセコイアを眺めてて回転の法則が見いだせない状態(汗
横の回転はたぶんこうプログラムすればいいだろうというイメージ出来たけど、
縦の回転はあともう少しで思いつきそうな感じ。
295(1): 2011/07/07(木)04:17 ID:ATCSo0JT(1) AAS
メタセコイアの視点操作って、注視点関係なしにワーク原点を基準に
ヨー角ピッチ角の回転と距離だけじゃないかな?
CADには適しているけれど、ゲーム用のカメラとしては参考にならないよ。
296: SGGK ◆6pZCoAtaxk 2011/07/07(木)23:37 ID:RwXcD4/0(1) AAS
>>295
ゲームに不向とは気付かずに作業してました。ありがとうございます。
早目にこの段階を終わらせて次いきたいと思ってます。
今日は何も出来なかったけど、いちおう回転だけは土日になんとかしたい気持ち。
縦の回転方法も考えてみたので、今度こそプログラムを書いてみます。
297(3): 179 ◆SLG//siTD6 2011/07/08(金)00:03 ID:eIT69sd4(1) AAS
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・`)
省1
298: SGGK ◆6pZCoAtaxk 2011/07/09(土)00:04 ID:HknH7n3m(1) AAS
>>297
ありがとうございます。昨年末頃3Dの本を途中まで読んでて、
それに載っていた座標変換のことを忘れてました。
なのですぐにこれをコードに落とすのはまだ難しいけど、
プログラムのどこかでまた座標変換が必要になる頃には出来るように本を読み直してみます。
座標変換でやる場合、移動量Zを変えた時に注視点をどう変えるとズームになるかがまだ自信ないけど、
本読み直す時に解決出来ればと思ってます。
省4
299: SGGK ◆6pZCoAtaxk 2011/07/10(日)22:33 ID:fCX0gGeR(1) AAS
昨日の書き込みで間違いがあった。
縦回転は、注視点位置ベクトル(x、0、z)から
カメラ位置ベクトルのY成分を0にした (略)
が正解。自分のプログラムは垂直方向がY方向になってるのが理由。
メタセコイア風に画面内のフィールドを動かせるようになったような感じがする。
直接これをゲームに使う事はないかもしれないけど、いろいろ動かして、カメラの位置を検討するのに使えそう。
>>279でやった拡大方法だと、カメラの座標が変わらずに拡大縮小してしまうので、>>276氏の方法に変更。
省1
300: SGGK ◆6pZCoAtaxk 2011/07/17(日)22:29 ID:3PbrHQAt(1) AAS
あまりの暑さなので今日はもう休もうみたいな感じ。
ボールの動きは、ゲーム開始直後に斜め45°で動きだすようにしてみたら動いた。
次は数値は適当だが重力方向の加速度を考慮した式にしてみたところボールは45°の角度で天井に向かってくだけで放物線にならず。
合計数時間は悩んだと思うけど、ループ毎にボール位置しか更新してなかったのが原因とわかる。
速度も加速度の影響で毎ループ変化してるので、速度も毎ループ毎に更新するようにしたら放物線のように動いた。
次は地面やフィールドの端でボールが跳ね返るようにすることに挑戦。
301: SGGK ◆6pZCoAtaxk 2011/08/01(月)00:12 ID:MQtVPARw(1) AAS
時間かかってしまったけど、ボールの跳ね返り実装完了。
ボールの動きは月面歩行みたいなゆったりな動きだけど、これで良しとする。(数値の調整でなんとかできるかも)
179氏>>297のマトリックスを掛けていく方式を意識しつつも、今回も長文プログラムで対応。
(マトリックス作成がまだ自分には理解できてない様なので、勉強しないと無理そうだと今回実感した感じ。)
指定範囲外にボールが出そうになった時に跳ね返らずに壁に沿ってボールが動いたけど、
速度だけ反転して、位置を反転して範囲内に戻してなかったのが原因。
ボールが跳ね返り、跳ね返りの高さが少しずつ小さくなり、最後は転がって止まるようにするのに苦労。
省12
302: SGGK ◆6pZCoAtaxk 2011/08/06(土)23:29 ID:p7p2W50E(1) AAS
やっぱり、簡単にはいかない予感。問題は時間の管理。
ボールがサイドラインを割ったらスローインする場合、
割った瞬間にスローイン位置にボールを復帰させるのは超反応すぎる感じがするので、
スローイン判定が出て、ちょっとボールが転がって、その後スローイン位置にボールが出現するようにしてみたいと思った。
すると、ボールがラインを割ってから、復帰までのわずかな時間をカウントして、その中断時間中はプレイ時間をカウントしないようにするにはどうすればいいんだという悩みが残る。
対象別に専用の時間を用意しなければならないのかと考えてみたが、それは時間測定対象が増えると大変な作業になる。
結構悩んだけど、時間の処理関数をメンバ関数に持つクラスを作って、必要な関数の数だけそのクラスのオブジェクトを作ればいいかもしれないと思った。
省11
303: SGGK ◆6pZCoAtaxk 2011/08/17(水)00:37 ID:gcbpVhmx(1) AAS
AA省
304: SGGK ◆6pZCoAtaxk 2011/08/17(水)23:01 ID:umYfMU6K(1) AAS
(3)については、ボールの移動はそもそもボールクラスのメンバ関数moveの方で計算されるので、
状態がKICKKEDなら動くようになっていて、状態がKICKKEDになってその時の速度を再計算して直後にMOVINGという状態に移ってしまうように書いていた。
つまり、昨日の「ボール状態がKICKKEDか? →YES → ボール移動」とう処理にはいいつまでたっても進まない。
正解は、
ボール状態がMOVINGか? →YES → ライン判定の状態をリセットする
だった。
コーナーキック、ゴールキックもスローインを参考にして実装した。
省7
305: SGGK ◆6pZCoAtaxk 2011/08/19(金)23:52 ID:UUBFLar3(1) AAS
選手を1人だけ移動できるようにした。
今までプログラム内で処理を飛ばしていた部分を飛ばさないようにしただけだけど、
その頃は固定カメラだったので、カメラ座標が変わっても対応できるように修正。
ボールの移動関数のソースをほぼ流用できたので、なんとか出来た。
マウスを選手1人が追いかけ続けるだけだけど、とりあえずはこれで
4番は終了!
306(1): SGGK ◆6pZCoAtaxk 2011/09/03(土)23:32 ID:+c0ztxSK(1) AAS
たまにしか作業してなかったけど、問題があって進まずの状態。
選手とボールの当たり判定があった時にマウスクリックすればボール蹴れるはずが出来ない。
ボールは選手にくっついた状態で選手と一緒に動く。
しかし、なんどもクリックすればボールも少しずつ動く(これも原因不明)。
選手の移動を止めてクリックし続け、当たり判定ゾーンからボールが出ても
何故かボールが選手と同じ速度と方向で動き続ける。
ソースを読んでも原因全く不明。幸いこのボールを蹴る処理を書く前のところまで
省1
307(1): SGGK ◆6pZCoAtaxk 2011/09/11(日)22:22 ID:T1L+oLn6(1/3) AAS
自分は作り始めて先月末で4年が経過してしまった…。
スレタイ通りの状況だけど、きっと何処かで作ってると思いながら、
自分も作業継続!
>306を何とかするために実際は8月30日頃から設計図を書くことにした。
大げさなものではなくてノートに手書きの状態遷移図もどき。
これにより、ボールの状態を
enum BALLSTATE{STOP=1,KICKKED,MOVING}; から、
省7
308: SGGK ◆6pZCoAtaxk 2011/09/11(日)22:33 ID:T1L+oLn6(2/3) AAS
実はボールの動きはかなり不自然な動きになってしまった。
選手の周りを衛星のようになって動く感じ。
Youtu●eでいろんなゲームを参考にしたけど、早すぎて動きのパターンがつかめなかったけど、
最終的にZEROC●Pというゲームを参考にしてみた。
>307で継続と言ったものの、4年でこの進み具合だとあと何年かかるのだろうか?
それ以前に完成出来るのだろうかという不安もあるので、この先どうなるかはやっぱりわかりません!(汗;
309: SGGK ◆6pZCoAtaxk 2011/09/11(日)23:00 ID:T1L+oLn6(3/3) AAS
今日はこれでラスト。
別に伏字にする事もないような気がしてきたので、Youtube、ZEROCUP が正解。
寝ようとしたけど、もう少しだけ作業したらボールをキックできた。
しかし、新しい問題が発生した。
ボールが一度しか蹴れない。
蹴ったボールを拾いにいってもボールが付いてこなくなった。
ボールがラインをはみ出したら試合経過時間が停止し、
省2
310(3): 2011/09/12(月)22:39 ID:Im+6OdM9(1/2) AAS
AA省
311(1): SGGK ◆6pZCoAtaxk 2011/09/12(月)22:48 ID:I4CSS3jX(1/2) AAS
直観的に勢いでなんとか運よく直せた感じ。
1.ボールが一度しか蹴れない。
ボールと選手が当たってPRE_KEEP→KEEPの間は、その選手とボールのあたり判定をキャンセルするフラグを立てていたが、
ボールを蹴った後、そのフラグを戻していなかったので、当たり判定が無効になり、ボールに触れても
状態を変更する命令を実行しなかったから。
2.蹴ったボールを拾いにいってもボールが付いてこなくなった。
1.の理由と同じ。
省9
312(1): 2011/09/12(月)22:53 ID:Im+6OdM9(2/2) AAS
ラインを割ったときには、その時点での(x,y,z)を控えておき、3秒間のカウンタを開始する。
その3秒間も、ボールのループごとの処理は継続する。
3秒たったら、控えておいた位置を復元するとともに、速度はゼロ、フラグは'接地'にセット
スローインしたときは、初速度は違うかもしれないが蹴ったときと同様。
(x,y,z)の控えや3秒カウンタは、ボールとは別のメインのクラスなどで管理するといいと思う。
313: SGGK ◆6pZCoAtaxk 2011/09/12(月)23:12 ID:I4CSS3jX(2/2) AAS
>>310,312
アドバイス、ありがとうございます。
書き込む前にリロードし忘れてしまい、すれ違ってしまいました。(汗;
自分のソースも似た感じの処理になってるようなのですが、
何故か原因不明でどんどん複雑化しているようです。
例えば、切り替えた状態が、知らない間に別のところで切り替えられてしまう…というような感じ。
ここから崩して作り直すのは厳しいので逆にこのまま>>252の
省4
314(1): 2011/09/13(火)19:12 ID:nrv6ZrDs(1) AAS
その残り3つ、急に段差がきつくなってると思う。
無理に進めずに、今までのところをきっちり固めてから進むべきじゃないかな。
315: SGGK ◆6pZCoAtaxk 2011/09/13(火)22:23 ID:UyS152Ji(1) AAS
>>314
書き込みありがとうございます。
AIについては何も勉強してない状態なので、ボール持ってる選手に他の選手が
近づいていくだけで、これがAIという事にしようと考えていましたが、これだけでは物足りないかもしれません。
もう少しAIっぽくしようとすると確かにきついです。
昨日は、崩して作り直すのは難しいと言ったけど、無理せず、部分的でもいいので
ソースを見直して、AIも少し調べてみようと思います。
省4
316(1): 2011/09/14(水)20:07 ID:tc3GEPcb(1/3) AAS
コーディングする気はないけれど>>252を解釈してみる。
まずは「1.グラウンドとゴールを描画する。カメラを動かしたいのならその動かし方も決めて調整しておく」から。
グラウンドは大きな板ポリゴンにテクスチャを張る方法でも、自分で芝目や白線のポリゴンを描く方法でも
どっちても良いが、ポイントは「ゴールラインの中心に適切な高さのゴールを描いているかに懸かっている。
これは、基本的な座標系の方向とスケールを正しく理解してプログラミングしているかの試金石になる。
グラウンドとゴール一式を3Dモデルとして外部からインポートするという方法も有ると思うが、
その場合でも試験的にゴール枠、ゴールライン、タッチラインにプログラムで赤線を引くなどして、
省9
317(1): 2011/09/14(水)20:42 ID:tc3GEPcb(2/3) AAS
引き続き「2.ボールを配置し、試験的にマウスでクリックすると蹴ったように動くようにする」について。
ボールクラスの実装は>>310のとおりで、メソッドは、
(1) ボールの現在位置をセットし、速度は0にする:セットプレイ専用
(2) ループごとに実行する運動方程式の処理
(3) ボールの現在位置を求める
(4) ボールが接触した面があった場合、法線ベクトルを引数に速度を反転させ、反発面上に位置補正する処理
(5) ボールの現在速度を求める
省10
318(1): 2011/09/14(水)21:02 ID:tc3GEPcb(3/3) AAS
連投大丈夫かな?「3.ラインを割った状態(スローイン、コーナーキック、ゴールキック、得点)を判定し、復帰処理をつくる」
日本サッカー協会の競技規定によると、ボールがラインを完全に割ったらアウトオブプレーとのことなので、
段階1で確認したプログラム上のフィールドサイズと、段階2のメソッド(3)によるボールの(中心の)現在位置と、
おそらく定数となるボールの半径から、インプレーかアウトオブプレーか判定ができる。
アウトの場合、タッチラインを割ったのか、ゴールラインを割ったのか、
またゴールラインの場合は、かごの内か外かまで判定できる。
しかし現時点ではコーナーキック、ゴールキックの区別はできない。
省4
319: 2011/09/15(木)06:32 ID:I5TXtYrP(1/6) AAS
「4.選手をまず1人表示し、動かせるようにする」
選手の3Dモデルデータが必要となるが、とりあえず雪だるまか、こけしか、冷蔵庫で代用することにし、
ここで本質的に重要なのは操作方法の決定とパラメータ調整ではないかと思う。
しかも、単に選手の2次元移動とはいいつつも、実際にはカメラの方向によってプレイヤーが混乱しない
ような工夫が必要なため、快適なプレイ環境を実現する操作方法というのは、実に奥が深いと思われる。
ここの作りこみ次第で、ゲームの面白さが左右されるはず。
しかしとりあえず暫定的なものにしておいて先の段階へ進みたいのであれば、
省4
320(2): SGGK ◆6pZCoAtaxk 2011/09/15(木)06:34 ID:DAY99jiD(1) AAS
>>316,317,318
ありがとうございます。
これから始めようとしているボール関係処理作り直しの参考にさせてもらいます。
「1.グラウンドとゴールを描画する。カメラを動かしたいのならその動かし方も決めて調整しておく」
いまはメタセコイアっぽい操作でカメラを動かせる段階で止まっていますが、
作業が進めば、自動も考えてみたいです。
「2.ボールを配置し、試験的にマウスでクリックすると蹴ったように動くようにする」
省11
上下前次1-新書関写板覧索設栞歴
あと 167 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.025s