1人でゲームが作れるように修行します。2

2011/06/19(日) 03:44:59.57ID:EkbDCXyb
スレ名が「1人で〜」だから・・・?
いいんじゃないの?
ダメだったら俺もスレチだぜorz
テクスチャは○とか×とかで済ませてるけど、効果音とか無理だしなぁ・・・まだそこまでいってないケド。

チラ裏:
HPバーととかユニットの死亡処理(HP0で消す)とか作った。
次はユニット生産?とか。とりあえずボタン押したら基地からユニット出すように作ろう。。。
どっかにSLGの段階的LV表みたいなもの無いもんかな
2011/06/19(日) 12:39:30.15ID:Zcvt1Nsn
>>263
そう言われてみると、これは参加のレスですね。
昨日はうっかりして気が付きませんでした。ありがとうございます。
>>260
こちらの勘違いすみません。
自分も今使ってるサッカーフィールドはフリー素材。
参加者いつでもお待ちしてます!
2011/06/19(日) 14:11:27.41ID:lmGZwizg
260です。書きっぱで申し訳ないです。
私は恋愛ADVを作ろうとしています。
まだ企画段階で、吉里吉里もインストールしてない状態ですが、修行してがんばります。
イラストだけは描けません。
そういえば、効果音やボイスも1人だと厳しいですね。やろうとしてやれないことはないですが。。。
2011/06/19(日) 16:19:10.42ID:n6GuNgkN
恋愛ADVを作るなら、ゲーム中のどんな要素(画像、テキストや台詞、イベント類…)を
重要視したいかポイントを定めて、まずその部分を徹底的に作りこむといいんじゃないかな?

仮にそれがもしイラストなのだとすれば、
他人の素材を借りて作ったのでは自分で作ったことにはならないので(つまりスレ違いなので)、
ゲームを作りながらでなくてもいいから、普通にイラストの修行をするといいと思う。
2011/06/19(日) 16:50:25.41ID:n6GuNgkN
179氏のSLGに関しては、どのような内容か不明だけれど、
氏の発言を読み返した限りでは実装技術で困っている様子はなさそう。

しかし要素技術から行き当たりばったりにボトムアップで作ろうとしているらしい。
アクションゲーム向きな作り方だと思うけれど、SLGやRPGには不向きだと思う。

コーディングに入る前に、ゲームに登場させる要素
(キャラクター、ユーザインタフェース、状態遷移図、判定式…)の一覧表を作り、
個別の設計図と全体の工程表を作ってから作業するのがいいと思う。

あと、規模によっては要素設計用のエディタを先に作ったほうが効率的。
2011/06/19(日) 17:47:09.16ID:lmGZwizg
>>266
今のところ、一番こだわりたいのは、テキストです。
台詞とト書きだけみたいなテキストだとすごくさびしく感じていたので、
うざったくならない程度に、もうちょっと描写を入れてみたいと思っています。

現在、メインシナリオのプロット中。
がんばる。がんばる。
2011/06/19(日) 19:54:58.72ID:n6GuNgkN
まだプロットが上がっていない段階ではアドバイスにならないかもしれないけれど、
テキストで勝負するなら次の2タイプのいずれかを目指すといいと思う。
(A) テキスト中に巧妙に謎解き要素を含ませたフラグ立て謎解き形式
(B) テキスト自体が文学作品として成立するレベルのデジタルノベル形式
それによって、「こだわる」べき目標が見えてくるかも。

もちろん他のシステムでもいいと思うけれど、たとえば育成系ゲームだと
ゲームパラメータに直接関係しないテキストは追々読み飛ばされてしまうので、
こだわりの方向性が大きく違ってくる気がする。
2011/06/19(日) 23:33:27.48ID:Zcvt1Nsn
なんだかスレが伸びてる。
>>265
自分は、やる気の出たときに少しずつ続けるような感じでやっています。
お互い気楽にいきましょう。

今日は、マウス3ボタンについてクリックとドラッグの判定できるところまで進んだ。
2011/06/20(月) 12:39:53.64ID:loZm5s9w
>269
Bの方向を目指して頑張ります。

>270
はい。頑張りましょう!

メインシナリオのプロットが粗方できたのですが、全ルート作っちゃっといたほうがいいでしょうかね。
あんまり長いとダレるので、そこそこの長さに留めてみました。
2011/06/20(月) 23:46:54.40ID:fqQ6mSJs
完成できる事を一度確認して、次から好みで長さを決めるというのもありな様な気がします。

こちらは、ホイール回転によるフィールドの拡大縮小機能の実装がうまくいかない状態…。
2011/06/21(火) 00:46:16.91ID:fioCutCs
最初からあまり風呂敷広げすぎてもってやつですね。
とりあえずメインシナリオのテキスト作ってみて、早々にスクリプトの勉強はじめます。
2011/06/21(火) 03:13:54.94ID:Nb3jaiP+
>>267
ttp://gmdev.xrea.jp/st/up/356.png

今こんな感じSLGってかRTSぽい・・・w
提督の艦隊の宇宙版? ホームワールド?みたな感じにできたらいいなぁと。
ターン製はあんまり好きじゃないんでリアルタイムで。
シカシ、自分でもアクション作るほうが向いてる気はする・・・。
設計図とか書いてないけど・・・やっぱいる?(x`;

>>273
風呂敷広げすぎてヤバイのがここに!
あ、やべ、全然すすんでない/(^o
2011/06/21(火) 04:50:18.50ID:MHP6wZYB
>>271
過去に短編小説などを執筆し、他人に読んでもらった上で、
とりあえず作品としては成立しているレベル以上の評価を受けた経験があるなら、
バリエーションルートを含めて考えるのも自由じゃないかな。

そうでないなら、まず、メインシナリオだけに集中したほうがいいと思います。
2011/06/21(火) 05:07:11.26ID:MHP6wZYB
>>272
マウスホイールの回転検出はできてる?
方法はいろいろあるけど、たとえばWM_MOUSEWHEELメッセージを処理する方法があるよ。

3Dゲームでパースペクティブビューを使用しているのであれば、
フィールドを拡大縮小するのではなく、カメラの座標を注視点に接近または離脱させればいい。
なお、その際には視点-注視点間の距離を一定値で増減するのではなく、一定率で乗算、除算してやると良い。
(カメラ位置をE、注視点をFとしたとき、E'= F+(E-F)*k or E'=F+(E-F)/k。 kは1.0前後の定数)
2011/06/21(火) 05:30:44.83ID:MHP6wZYB
>>274
設計図については、他人に見せる必要はないので、しっかりしたものを作る必要はないけれど、
手書きメモ程度のもので良いのでノート上で整理してからコーディングに入ったほうが効率的だと思う。

全体的な工程の順序としては、
1.内部設計(ルール、パラメータ、バランスの調整)
2.各要素の実装
3.ユーザインタフェースの実装
4.システム統合
5.各種エフェクトの充実
のような感じ。

まあ179氏の場合、今の進め方でも、特に詰まっている様子はなさそうですが。
278260
垢版 |
2011/06/21(火) 13:01:25.60ID:fioCutCs
とりあえずオープニングにあたるシナリオは出来ているので、
いったん吉里吉里/KAGで組んでみます。
いろいろアドバイスありがとうございますm(__)m
2011/06/22(水) 00:06:09.17ID:TfzO15yA
>>274
既に色々な要素が画面に出てて進んでそうな感じ。期待してます!
>>278
UPお待ちしてます。自分もUPできるように頑張ります!
>>276
自分はDirectXが理解出来なくてDXライブラリで頑張ってます。
回転検出は出来てるようで、昨日はGetMouseWheelRotVol()とSetupCamera_Perspective()を使い、視錐台の視野角を変更して拡大縮小するやり方を試みて悩んでました。(ホイール止めても限界まで拡大してしまう)
もう少し考えて無理な場合、カメラを移動する方法で頑張ってみます。ありがとうございます!
280260
垢版 |
2011/06/22(水) 00:08:48.05ID:TgbTdqkQ
スクリプトいきなりつまずきましたが、なんとかやってます。
演出も考えながらだと、スクリプト組むだけで、相当時間がかかりますね。
くじけず頑張ります。
2011/06/22(水) 12:00:12.23ID:fBrDYNiX
吉里吉里か、あれは扱いが難しいよね
ちなみにデフォだとNスクリプタの方が高機能というのは知ってる?
だからNスクじゃ表現できないようなら吉里吉里に乗り換えるという順番の方が良いと思うけど
2011/06/22(水) 12:04:04.89ID:9GezxZuR
>>281
Nスクはライセンスがめんどい
2011/06/22(水) 12:11:30.60ID:fBrDYNiX
>>282
・無料配布であれば企業/個人の区別や配布方法を問わず無料でお使いいただけます。
・雑誌付録にフリーウェア/シェアウェアとして収録する場合は無料でお使いいただけます。
・商業流通作品の販売の際には、使用料を一作につき40万円いただきます。
・同人流通作品の販売に関しては無料とさせていただきます。
 特に作者(高橋直樹)への報告の義務はございません。

まとめると「商業以外なら無料で勝手に使える」
めんどいか?
2011/06/22(水) 12:28:18.65ID:9GezxZuR
>>283
使用条件.txt よく読んでみた
結論:めんどい
285260
垢版 |
2011/06/26(日) 23:51:24.50ID:xFrZRsWs
吉里吉里やりはじめた状態でNスクに手を出すと、
いろいろごっちゃになりそうなので、とりあえず吉里吉里で進めてみます。

前回の書き込みから、実はあまり進んでいません。
よくわからないところは飛ばして、全体をとりあえず作ってみることにします。
2011/06/27(月) 23:20:47.45ID:DnwEKUYt
自分もどちらかといえば、全体を先につくってみたい方です。

拡大縮小の件、ホイール回した時のGetMouseWheelRotVol()の値をマウスのメンバ変数に保持して、
その保持した値を今度はカメラの移動関数でループ毎に足していたので、限界まで拡大縮小してしまっていた。
ホイールを回しているときだけ、足すようにしたら、上手く動いた。
次は、ホイールドラッグで画面を上下左右に動かせるようにしたいけど、最近なかなか作業時間が確保できない感じ。
確保できても動くプログラムが書けるかどうかわからないのが悩むところ。
2011/06/28(火) 23:10:23.97ID:/iwsRyTC
ホイールドラッグで画面を上下左右に動かせるようにする方法を考えるところまでで今日は終わり。
残り時間が少ないので、実装を後回しにして次の目標のマウス右ボタンドラッグでの回転の方法を考えてた。
ちなみに参考はメタセコイアの操作方法。右ボタンでぐるぐる回して、どういう法則で回してるのか考えてた。
2011/06/28(火) 23:20:58.79ID:/iwsRyTC
時間無い…と書くのはやめようとなんとなく思った。
もっとこう楽しくやるイメージでいかねば…(汗w
回す法則もなんとなく見えてきた感じ。
2011/06/29(水) 01:42:07.29ID:bFO62WPj
こっちは全体ってかとりあえず実行出来るもの(最初なら真っ黒のウインドウ表示)作って後はひたすら追加ってな感じかなぁ
やっぱ、動いてる物あると分かりやすいし。
そして良く分からんところはコピペでいいんだy(ぇ 初期化とか物理式とか・・・

>>277
なんというか、まさに1を練ってないせいで詰まった、みたいな?w
生産用のウインドウ作ってボタン押したら自分の基地にユニット出すってのはできたんだけど
1 SLGみたいに 生産→プール→編成(グループ?)→出撃 にするべきか
2 このままRTSみたいにユニット選択→生産=出撃 で1ユニットごとに動かすようにするべきか・・・

たぶん1のが作りたい。しかし、すんげぇ大掛かりになりそうな気がする/(^
2011/06/29(水) 03:32:24.30ID: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つあれば充分、グループは何隊も作るというイメージ
2011/06/29(水) 23:51:37.47ID:pI8KOKmf
今思えば自分の場合、全体を先に作りたいと言っていたのは、自分自身未知の作業なので作れる自信が無かった為、
作れそうか見極めたいといった目的もあったと思っています。ちなみに全体と言ってるのは、最低限の処理の流れの実装みたいなものです。
全体とか関係なく作れる場合は、好み優先で進んだ方がモチベーションが続くかも。

ホイールドラッグで画面を上下左右に動かせるようになったけど、
メタセコイアみたいにマウスで画面をつかんで動くような感じになってないので、原因調査中。
2011/07/02(土) 01:37:53.85ID:Yr95b2iZ
なんとか上下左右に動かせるようになった。(今日はたまたまこんな時間)
>291では、画面のフィールドが突然ロケットのような勢いで画面外に出て行ってしまったりして、
もうこれが自分の限界かと思った。

ディスプレイ画面上でマウスの示す位置がaからbまで移動すれば、3D座標系内のフィールド上の投影位置も
AからBに動くとして、そのベクトルABを算出して、カメラの位置ベクトルと注視点ベクトルに−ABしてやればうまくいくのではと思ってた。
これらの計算を始めた時の最初のカメラの位置をずっと初期値としてベクトルABを計算してループすればOKと思っていたのが間違いだったようだ。
毎ループ毎に計算した新しいカメラの位置および注視点ベクトルを次のループでの初期値にするよう書き直したら、
フィールドが飛んでいく不具合が解決!
2011/07/05(火) 05:05:11.63ID:oJBQ1HG/
>>290
単純だと・・・よろしいならば実装だ
ttp://gmdev.xrea.jp/st/up/380.png
って、勢いでプールだけ作ったけど、
グループクラス(&編成画面)実装にはやっぱ色々変更しないとだめぽ。。
あ、VECTORとかよくわからんので適当に配列(POOL[X][Y][PAGE])で実装してます(x`;
強引にやりすぎて中身がかなり汚い・・・w
どういうゲームか?自分でも良く分かってない/(^

>>292
ま、まぁカメラ周りは一回作ればそんなに弄ることないから
出来てしまえばこっちのモノサ
行列計算とかもうやりたくないです。ハイ
2011/07/05(火) 23:43:42.69ID:Bc+Kj7b6
>>293
カメラ周りはまだ時間かかりそうな感じだけど頑張ります。
実はまだメタセコイアを眺めてて回転の法則が見いだせない状態(汗
横の回転はたぶんこうプログラムすればいいだろうというイメージ出来たけど、
縦の回転はあともう少しで思いつきそうな感じ。
2011/07/07(木) 04:17:05.86ID:ATCSo0JT
メタセコイアの視点操作って、注視点関係なしにワーク原点を基準に
ヨー角ピッチ角の回転と距離だけじゃないかな?

CADには適しているけれど、ゲーム用のカメラとしては参考にならないよ。
2011/07/07(木) 23:37:42.40ID:RwXcD4/0
>>295
ゲームに不向とは気付かずに作業してました。ありがとうございます。
早目にこの段階を終わらせて次いきたいと思ってます。

今日は何も出来なかったけど、いちおう回転だけは土日になんとかしたい気持ち。
縦の回転方法も考えてみたので、今度こそプログラムを書いてみます。
2011/07/08(金) 00:03:46.32ID: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・`)
色々違ってたらゴメンナサイ、と・・・。
2011/07/09(土) 00:04:38.56ID:HknH7n3m
>>297
ありがとうございます。昨年末頃3Dの本を途中まで読んでて、
それに載っていた座標変換のことを忘れてました。
なのですぐにこれをコードに落とすのはまだ難しいけど、
プログラムのどこかでまた座標変換が必要になる頃には出来るように本を読み直してみます。
座標変換でやる場合、移動量Zを変えた時に注視点をどう変えるとズームになるかがまだ自信ないけど、
本読み直す時に解決出来ればと思ってます。

今日は、マウスの右ボタンドラッグ移動量から画面で回転させたい角度を計算するとこまで出来た。

あとは横回転はY軸に対して行い、縦回転は、注視点位置ベクトル(x、y、0)から
カメラ位置ベクトルのZ成分を0にしたベクトルをマイナスして出来たベクトルを90度回転してできたベクトルに対して
回転すればいけるかもしれないというあやしい方法を考えてました。(汗
2011/07/10(日) 22:33:55.13ID:fCX0gGeR
昨日の書き込みで間違いがあった。

縦回転は、注視点位置ベクトル(x、0、z)から
カメラ位置ベクトルのY成分を0にした (略)

が正解。自分のプログラムは垂直方向がY方向になってるのが理由。

メタセコイア風に画面内のフィールドを動かせるようになったような感じがする。
直接これをゲームに使う事はないかもしれないけど、いろいろ動かして、カメラの位置を検討するのに使えそう。
>>279でやった拡大方法だと、カメラの座標が変わらずに拡大縮小してしまうので、>>276氏の方法に変更。

次からはボールの動きに挑戦。179氏の>>297も意識して作業の予定。
2011/07/17(日) 22:29:42.21ID:3PbrHQAt
あまりの暑さなので今日はもう休もうみたいな感じ。
ボールの動きは、ゲーム開始直後に斜め45°で動きだすようにしてみたら動いた。
次は数値は適当だが重力方向の加速度を考慮した式にしてみたところボールは45°の角度で天井に向かってくだけで放物線にならず。
合計数時間は悩んだと思うけど、ループ毎にボール位置しか更新してなかったのが原因とわかる。
速度も加速度の影響で毎ループ変化してるので、速度も毎ループ毎に更新するようにしたら放物線のように動いた。
次は地面やフィールドの端でボールが跳ね返るようにすることに挑戦。
2011/08/01(月) 00:12:25.80ID:MQtVPARw
時間かかってしまったけど、ボールの跳ね返り実装完了。
ボールの動きは月面歩行みたいなゆったりな動きだけど、これで良しとする。(数値の調整でなんとかできるかも)
179氏>>297のマトリックスを掛けていく方式を意識しつつも、今回も長文プログラムで対応。
(マトリックス作成がまだ自分には理解できてない様なので、勉強しないと無理そうだと今回実感した感じ。)
指定範囲外にボールが出そうになった時に跳ね返らずに壁に沿ってボールが動いたけど、
速度だけ反転して、位置を反転して範囲内に戻してなかったのが原因。
ボールが跳ね返り、跳ね返りの高さが少しずつ小さくなり、最後は転がって止まるようにするのに苦労。
はねてる時の加速度は下向きで、転がってる時の加速(摩擦による逆向きを表現したかった)は速度と逆向きにするというような
加速度の切り替えをどうするかに時間がかかった。
ボールの位置が低い時で判定しようとするとプログラム開始時点で条件を満たして止まってしまう。
放物線の最高点での速度は水平だと思うので、水平になった時のボールの高さがある低い数値より下の場合に、
ボール位置のy成分を0にして加速度を切り替えてみた。
水平になった時を知る方法は、速度ベクトル1と速度のy成分を0にしたベクトル2の角度がプラスマイナス1度以内ならほぼ水平と判断。
角度はベクトル1と2の内積というものからcosを計算して判定。
加速度が切り替わって速度が少しずつ小さくなるので、一定値より小さくなったら停止。
…という流れで実装出来て動いてるけど、今後も問題なく動作するかは未知な感じ。
次は>>252
>3.ラインを割った状態(スローイン、コーナーキック、ゴールキック、得点)を判定し、復帰処理をつくる。
に挑戦の予定
2011/08/06(土) 23:29:11.60ID:p7p2W50E
やっぱり、簡単にはいかない予感。問題は時間の管理。
ボールがサイドラインを割ったらスローインする場合、
割った瞬間にスローイン位置にボールを復帰させるのは超反応すぎる感じがするので、
スローイン判定が出て、ちょっとボールが転がって、その後スローイン位置にボールが出現するようにしてみたいと思った。
すると、ボールがラインを割ってから、復帰までのわずかな時間をカウントして、その中断時間中はプレイ時間をカウントしないようにするにはどうすればいいんだという悩みが残る。
対象別に専用の時間を用意しなければならないのかと考えてみたが、それは時間測定対象が増えると大変な作業になる。
結構悩んだけど、時間の処理関数をメンバ関数に持つクラスを作って、必要な関数の数だけそのクラスのオブジェクトを作ればいいかもしれないと思った。
実は3D座標系でやってる今のプログラムは上記とは異なる理由から運よく時間関係をクラス化してたのでなんとかなるかもしれない。
2Dの時はこのクラスが無かった…というか思いつかなくて、3Dにするときに色々考えて、ソースを短くしたいという理由から時間関係をクラスにしていた。
時間のクラスには、
void countGameTime();//時間をカウントする。
void resetGameTime();//カウントを0にリセットする
void displayGameTime();//時間を画面表示
のメンバ関数があるけど、新たに
void tempStopGameTime();//カウントを一時停止する
void restartGameTime();//一時停止からカウント再開
を書き加える予定。

上手くいくか確認してから書いた方がいいかもしれないけど、書いてみた。(後で作業を振り返れるし。)
2011/08/17(水) 00:37:25.52ID: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)←まだ原因不明。
2011/08/17(水) 23:01:09.88ID:umYfMU6K
(3)については、ボールの移動はそもそもボールクラスのメンバ関数moveの方で計算されるので、
状態がKICKKEDなら動くようになっていて、状態がKICKKEDになってその時の速度を再計算して直後にMOVINGという状態に移ってしまうように書いていた。
つまり、昨日の「ボール状態がKICKKEDか? →YES → ボール移動」とう処理にはいいつまでたっても進まない。
正解は、
ボール状態がMOVINGか? →YES → ライン判定の状態をリセットする
だった。
コーナーキック、ゴールキックもスローインを参考にして実装した。
これで、
>3.ラインを割った状態(スローイン、コーナーキック、ゴールキック、得点)を判定し、復帰処理をつくる。
得点以外は実装完了。

次は、
4.選手をまず1人表示し、動かせるようにする。
5.選手とボールの接触判定をし、マウスクリックの代わりに選手が蹴るようにする。
を一緒にやる時に得点実装する予定。
2011/08/19(金) 23:52:19.80ID:UUBFLar3
選手を1人だけ移動できるようにした。
今までプログラム内で処理を飛ばしていた部分を飛ばさないようにしただけだけど、
その頃は固定カメラだったので、カメラ座標が変わっても対応できるように修正。
ボールの移動関数のソースをほぼ流用できたので、なんとか出来た。
マウスを選手1人が追いかけ続けるだけだけど、とりあえずはこれで
4番は終了!
2011/09/03(土) 23:32:25.11ID:+c0ztxSK
たまにしか作業してなかったけど、問題があって進まずの状態。
選手とボールの当たり判定があった時にマウスクリックすればボール蹴れるはずが出来ない。
ボールは選手にくっついた状態で選手と一緒に動く。
しかし、なんどもクリックすればボールも少しずつ動く(これも原因不明)。
選手の移動を止めてクリックし続け、当たり判定ゾーンからボールが出ても
何故かボールが選手と同じ速度と方向で動き続ける。

ソースを読んでも原因全く不明。幸いこのボールを蹴る処理を書く前のところまで
戻れたので、もう一度書き直してみる予定。
2011/09/11(日) 22:22:25.77ID:T1L+oLn6
自分は作り始めて先月末で4年が経過してしまった…。
スレタイ通りの状況だけど、きっと何処かで作ってると思いながら、
自分も作業継続!

>306を何とかするために実際は8月30日頃から設計図を書くことにした。
大げさなものではなくてノートに手書きの状態遷移図もどき。
これにより、ボールの状態を
enum BALLSTATE{STOP=1,KICKKED,MOVING}; から、
enum MOVE_STATE{STOP=1,FREE,PRE_KEEP,KEEP};に変更してみた。
kickは選手のメンバ関数にした。
なんとなくだけど、当たり判定関数の引数を増やして、そこにフラグ値を入れて
当たり判定の有効無効を切り替えるようにした。

ボールの移動関数はほとんど書き直しになってしまい、試行錯誤の結果、
ボールが選手に付いていくようにはなった。

まだキック関数はうまく動作してくれない。
2011/09/11(日) 22:33:24.95ID:T1L+oLn6
実はボールの動きはかなり不自然な動きになってしまった。
選手の周りを衛星のようになって動く感じ。
Youtu●eでいろんなゲームを参考にしたけど、早すぎて動きのパターンがつかめなかったけど、
最終的にZEROC●Pというゲームを参考にしてみた。

>307で継続と言ったものの、4年でこの進み具合だとあと何年かかるのだろうか?
それ以前に完成出来るのだろうかという不安もあるので、この先どうなるかはやっぱりわかりません!(汗;
2011/09/11(日) 23:00:52.21ID:T1L+oLn6
今日はこれでラスト。
別に伏字にする事もないような気がしてきたので、Youtube、ZEROCUP が正解。

寝ようとしたけど、もう少しだけ作業したらボールをキックできた。

しかし、新しい問題が発生した。

ボールが一度しか蹴れない。
蹴ったボールを拾いにいってもボールが付いてこなくなった。
ボールがラインをはみ出したら試合経過時間が停止し、
ボールをフィールドに投げ込むまでの経過時間表示はされるが、
ボールが復帰位置に表示されない。
2011/09/12(月) 22:39:19.48ID:Im+6OdM9
失礼ながら、無駄に複雑にしすぎてるような気がするね。
基本的にボールの状態変数は、(x,y,z)、(vx,vy,vz)だけあればいい。
それと便宜的に(接地 or浮いている)フラグをつけてもいい。

初期値はそれぞれ、ボールの初期位置、速度は0、フラグは'接地'状態。

ボールのループごとの処理はこんな感じ。

  if(浮いている){
   垂直方向の重力加速度を速度に加算
   速度を位置に加算
   if(速度が下向きで垂直座標が地面より下){
     位置を地表に補正
     垂直方向の速度に -0.9とか反発係数を配慮した値を掛ける
     垂直速度が小さくなったら、'接地'状態とする
   }
  }else{
   水平方向の速度に0.99など転がり摩擦係数を意識した値を掛ける
  }
  水平方向の速度を水平位置に加算

蹴った瞬間、(vx,vy,vz)に初速度を与え、'浮いている'状態にするだけ。
2011/09/12(月) 22:48:41.39ID:I4CSS3jX
直観的に勢いでなんとか運よく直せた感じ。

1.ボールが一度しか蹴れない。
ボールと選手が当たってPRE_KEEP→KEEPの間は、その選手とボールのあたり判定をキャンセルするフラグを立てていたが、
 ボールを蹴った後、そのフラグを戻していなかったので、当たり判定が無効になり、ボールに触れても
 状態を変更する命令を実行しなかったから。
2.蹴ったボールを拾いにいってもボールが付いてこなくなった。
 1.の理由と同じ。
3.ボールがラインをはみ出したら試合経過時間が停止し、ボールをフィールドに投げ込むまでの経過時間表示はされるが、ボールが復帰位置に表示されない。
 ラインのはみ出し判定処理の内部でボールの復帰位置をセットしていたが、
 セットするだけではその位置に表示されるわけではない。
 enum MOVE_STATE{STOP=1,FREE,PRE_KEEP,KEEP};という4つの状態をボールに設定していたけど、
 これらは同時には存在しない状態なのでswitch〜case文にしておいて、
 それぞれのcaseの最後でその時点のボール位置を確定して、switch文を抜けてから
 描画関数にボール位置を渡していた。ちなみに変数はstaticにしたらswitchを抜けても保持されているみたいな感じ。(自信なし)
 ところが何故かcase STOPのところだけ、位置を確定する命令を書き忘れていたので、
 case FREEの時の確定位置が変数に残っていて、こちらの位置で表示されてしまったのが理由。
2011/09/12(月) 22:53:19.97ID:Im+6OdM9
ラインを割ったときには、その時点での(x,y,z)を控えておき、3秒間のカウンタを開始する。
その3秒間も、ボールのループごとの処理は継続する。

3秒たったら、控えておいた位置を復元するとともに、速度はゼロ、フラグは'接地'にセット
スローインしたときは、初速度は違うかもしれないが蹴ったときと同様。

(x,y,z)の控えや3秒カウンタは、ボールとは別のメインのクラスなどで管理するといいと思う。

2011/09/12(月) 23:12:56.43ID:I4CSS3jX
>>310,312
アドバイス、ありがとうございます。
書き込む前にリロードし忘れてしまい、すれ違ってしまいました。(汗;

自分のソースも似た感じの処理になってるようなのですが、
何故か原因不明でどんどん複雑化しているようです。
例えば、切り替えた状態が、知らない間に別のところで切り替えられてしまう…というような感じ。
ここから崩して作り直すのは厳しいので逆にこのまま>>252

6.CPU選手をまずは1人登場させ、動くようにする。
7.ポジション別にCPU選手のAIを調整する。
8.タイム、スコア、勝敗、タイトル画面などの装飾要素を実装する。

を目指してソースをupできるようにして、そこからソースの見直しをしてみたいと思います。
2011/09/13(火) 19:12:35.87ID:nrv6ZrDs
その残り3つ、急に段差がきつくなってると思う。
無理に進めずに、今までのところをきっちり固めてから進むべきじゃないかな。
2011/09/13(火) 22:23:15.13ID:UyS152Ji
>>314
書き込みありがとうございます。
AIについては何も勉強してない状態なので、ボール持ってる選手に他の選手が
近づいていくだけで、これがAIという事にしようと考えていましたが、これだけでは物足りないかもしれません。
もう少しAIっぽくしようとすると確かにきついです。
昨日は、崩して作り直すのは難しいと言ったけど、無理せず、部分的でもいいので
ソースを見直して、AIも少し調べてみようと思います。

現時点では、直したばかりのボール移動部分をさらに見直すつもり。
今の段階でも、選手が停止した状態ではボールが蹴れないとか、
ボールがマウス方向に飛ばないとか、クリックしてもすぐに蹴れないなどの不具合が出ているので、
ここはもう一度作り直した方がよさそうな気がした。
2011/09/14(水) 20:07:55.18ID:tc3GEPcb
コーディングする気はないけれど>>252を解釈してみる。
まずは「1.グラウンドとゴールを描画する。カメラを動かしたいのならその動かし方も決めて調整しておく」から。

グラウンドは大きな板ポリゴンにテクスチャを張る方法でも、自分で芝目や白線のポリゴンを描く方法でも
どっちても良いが、ポイントは「ゴールラインの中心に適切な高さのゴールを描いているかに懸かっている。
これは、基本的な座標系の方向とスケールを正しく理解してプログラミングしているかの試金石になる。

グラウンドとゴール一式を3Dモデルとして外部からインポートするという方法も有ると思うが、
その場合でも試験的にゴール枠、ゴールライン、タッチラインにプログラムで赤線を引くなどして、
平面の座方形の向きと、プログラム内でのフィールドのスケールを視覚的に確認しておくことは必須。

また、当然その様子は透視投影画像で自由にカメラ位置を変えて確認すべきなのだが、
そんなことはライブラリに専用関数が用意されているので、むしろ0番目的な段階の話だと言える。
数字キーを押したら例えばコーナーポストの外からゴール上空を注視する景色になるとか、
いつでも任意のカメラ位置から任意の地点を注視できるように、フレームワークに組み込んでおきたい。

おそらく3Dのサッカーゲームでユーザがプレイヤーに指示を与えながら
マウスでカメラも操作しろというのは無理だと思うので、完成度が上がってきたころには
自動カメラワークのアルゴリズムを検討することいなる。
ただし、現時点では切り替え式で十分。
2011/09/14(水) 20:42:28.24ID:tc3GEPcb
引き続き「2.ボールを配置し、試験的にマウスでクリックすると蹴ったように動くようにする」について。
ボールクラスの実装は>>310のとおりで、メソッドは、
(1) ボールの現在位置をセットし、速度は0にする:セットプレイ専用
(2) ループごとに実行する運動方程式の処理
(3) ボールの現在位置を求める
(4) ボールが接触した面があった場合、法線ベクトルを引数に速度を反転させ、反発面上に位置補正する処理
(5) ボールの現在速度を求める
(6) ボールに初速度を与える:キック時専用
(7) 現在位置にボールを描画する
とする。(4)の反発は、まずは地面で、次にゴールポストとクロスバーにも反応するようにしておきたい。

とりあえずテスト用には、右クリックでセンターマークに(1)ボールをセット、
左クリックで最初は固定方向でも良いので(6)ボールに初期値を与える機能を呼び出す。

ポイントは、キックによる初速度、重力加速度定数、転がり減衰係数、反発係数などの物理パラメータを
しっかりチューニングし、気持ちよくプレイできるバランスを見つけることに尽きる。

ちなみにメンバ変数はprivateにし、不用意に外部からフラグ操作しないこと。今後もおそらくその必要はないはず。
>>311によると「当たり判定をキャンセルするフラグ」のような意味不明なフラグを導入しているようだが、
物理的にナンセンスで実際バグの元にもなっている。発想を切り替えなければならない。
2011/09/14(水) 21:02:28.23ID:tc3GEPcb
連投大丈夫かな?「3.ラインを割った状態(スローイン、コーナーキック、ゴールキック、得点)を判定し、復帰処理をつくる」

日本サッカー協会の競技規定によると、ボールがラインを完全に割ったらアウトオブプレーとのことなので、
段階1で確認したプログラム上のフィールドサイズと、段階2のメソッド(3)によるボールの(中心の)現在位置と、
おそらく定数となるボールの半径から、インプレーかアウトオブプレーか判定ができる。
アウトの場合、タッチラインを割ったのか、ゴールラインを割ったのか、
またゴールラインの場合は、かごの内か外かまで判定できる。

しかし現時点ではコーナーキック、ゴールキックの区別はできない。

アウトオブプレーを検出したらフレームワーク側でホイッスルを鳴らすなり何か表示するなどの演出を始めても良いが、
ボールの物理シミュレーションメソッド(2)は呼び続けておくのが好ましい。

演出が終わったら復帰処理となるが、タッチラインを割ったときなら飛び出た位置あたりからスローインだし、
コーナーキック、ゴールキック、あるいは得点後はセットプレー扱いなので再開位置は自動的に決まるはず。
2011/09/15(木) 06:32:14.49ID:I5TXtYrP
「4.選手をまず1人表示し、動かせるようにする」

選手の3Dモデルデータが必要となるが、とりあえず雪だるまか、こけしか、冷蔵庫で代用することにし、
ここで本質的に重要なのは操作方法の決定とパラメータ調整ではないかと思う。

しかも、単に選手の2次元移動とはいいつつも、実際にはカメラの方向によってプレイヤーが混乱しない
ような工夫が必要なため、快適なプレイ環境を実現する操作方法というのは、実に奥が深いと思われる。
ここの作りこみ次第で、ゲームの面白さが左右されるはず。

しかしとりあえず暫定的なものにしておいて先の段階へ進みたいのであれば、
カメラ位置をセンターラインの延長上空、注視点をセンターマークにし、フィールド全体が見渡せる画面とし、
選手はカーソルキーかゲームパッドで移動するようなオーソドックスな方法で構わない。

この段階において、プレイヤーはフィールドの中だけ移動できるように境界条件処理をしておくと良い。
また、ボールとの関わりについては、少なくともこの段階では相互にまったく干渉しないことも確認しておく。
2011/09/15(木) 06:34:11.75ID:DAY99jiD
>>316,317,318
ありがとうございます。
これから始めようとしているボール関係処理作り直しの参考にさせてもらいます。

「1.グラウンドとゴールを描画する。カメラを動かしたいのならその動かし方も決めて調整しておく」
いまはメタセコイアっぽい操作でカメラを動かせる段階で止まっていますが、
作業が進めば、自動も考えてみたいです。

「2.ボールを配置し、試験的にマウスでクリックすると蹴ったように動くようにする」
基本的には>>310氏の案の様にいこうと今考え始めてたところで、法線による反発は将来の課題にしようと思います。
自分はZEROCUPの操作にこだわりすぎてたようで、ZEROCUPは選手がボールにあたると
ボールが選手に対してシューティングゲームのオプションのように動くので、
このボールキープ時のボールの動きは別のアルゴリズムに切り替えないと自分には無理で、
キープ中は当たり判定をOFFにしないと毎ループキープ状態への切り替え初期化がされてしまうといった事情が重なり、
だんだん複雑になっていったのだと思います。
ただ、ボールの移動処理をシンプル化しようとした時、選手がボールに当たった時に
選手の移動方向にボールが蹴られる方式では、ドリブルしながら選手の移動方向を変えようとすると、
選手がボールに当たる瞬間に方向を変えなければ、今のマウスカーソルに選手が向かう方式では
方向変更ができないと思い、これが悩みになってました。

一応、ZEROCUPにこだわらない案も考えてみたので戻ってきたら続きを書いてみたいと思います。
2011/09/15(木) 07:07:32.22ID:I5TXtYrP
「5.選手とボールの接触判定をし、マウスクリックの代わりに選手が蹴るようにする」

先の段階で放置しておいた選手とボールの作用条件について実装する。

選手もボールもともに運動する物体であることから、まずは、
段階2の(3)および(5)で得られるボールの位置および速度を、
判定対象選手のローカル座標系における相対位置、相対速度に変換する。

その上で下記の順に判定、処理を行う
(1) ボールの相対位置が選手に十分近い(距離<ボール半径+体格半径)かつ
  相対速度ベクトルが選手側に向かってきている場合、
  ボールがコントロールできない位置で単純に当たったものとみなし、
  メソッド2の(4)による反射処理を行う。法線はワールド座標系に逆変換すること。
  その際、選手自身の移動速度の法線方向成分を加味するため、
  反発係数は1.0を超えることも有り得る。

(2) ボールの相対位置が選手正面の特定領域内にあり、
  かつ選手がコントロールする意思を持った状態の場合、
  その意思に従いトラップするなりキックするなりでボールの相対速度を決め、
  ボールメソッド2(6)を呼び出す。
  その際も、選手ローカル座標からワールド座標系に戻してから渡す。

いずれでもなければ、選手はボールに干渉しない。
2011/09/15(木) 07:32:47.70ID:I5TXtYrP
>>320
ボールをトラップするも、ドリブルも、パスもシュートも、本質的には
「選手がボールをコントロールできる相対位置・速度条件にいるとき、どのようなコントロールの意思を示すか」
によって、ボールに新しい運動速度を与えるという処理に統一できる。
つまり、選手はボールに対しては速度にしか干渉できないように制限している。

これによって、もし多数の選手が団子状になったとしても、どう転がるかわからなけれど
試合自体は進行可能になると思う。

先着選手にボールが帰属(優先キープ)してしまうようなルールだと、ゲーム性が変わってくると思うけれど、
格闘よりもフィールド戦略を主にするなら、それもありかと思う。
2011/09/15(木) 21:25:19.83ID:I5TXtYrP
「6.CPU選手をまずは1人登場させ、動くようにする」

4で書き忘れたけれど選手クラスの定義には、
・現在位置(x,yz)
・向いている方向
・移動速度
・チームの識別符号
など、描画やボールへの干渉判定に必要な状態変数を持たせる。

それを少し拡張して、
・目標位置
・目標方向
をメンバに加え、
「現在位置が目標位置から遠ければ、
 向いている方向を目標位置の方向に1フレーム期間で回れる角度だけ補正し、
 移動速度も制限速度内で目標位置の方向に加速する。
 目標位置い近くなったら、
 向いている方向を目標方向に近づけるとともに、
 目的地で静止できるように減速する」
というような処理関数を作ってみる。

すると、CPU選手には「ボールを相手ゴールに向かってコントロールできる位置と方向」を与えれば、
毎フレームごとにボールに向かって突進するはず。

ボールがコントロール可能な状態(5の(2))になったなら、敵ゴールに向かってボールを蹴り出すが、
小さくければおそらくドリブルっぽくなるだろうし、ゴールに十分近づいたら強く蹴ってシュートにすればいい。
2011/09/15(木) 22:00:59.48ID:I5TXtYrP
「7.ポジション別にCPU選手のAIを調整する」
ここまでくると脳内プログラミングでは難しくなってくるが敢えて思考実験を続けてみる。

6での拡張で、個々の選手に対して、
・ボールをコントロールできない状態なら、目的地と方向を指示する
・ボールをコントロールできる状態なら、ボールのキック方向と強さを指示する
の2パターンだけ考えればよくなった。

目的地については、チームで戦うときは必ずしもボールに向かう必要はなく、
むしろパス回しを活用していかに早く安全に敵陣深く攻め込めるかを考えた配置に
なるよう、監督になった気分でそれぞれの選手に指示するべきである。

具体的には、選手間の位置関係から、ボールをコントロールできる(可能性が最も高い)選手から、
最前線の選手までの経路探索アルゴリズムを応用しつつ、個々の選手がより有利な位置に
移動するような評価関数などを駆使して、ということになりそうだが、脳内シミュレーションでは無理っぽい。

なお、選手への指示に上の2パターンを出せば、あとは自動で動いてくれるようにしたので、
ゲームパッドで選手ひとりを直接動かす操作方法は、この段階でデバッグ機能として卒業したい。

その代わりに、プレイヤーもマウスなどを使って、「どのプレイヤーをどこへ動かす」という指示を
リアルタイムに出せるインタフェースを作っておく。
こうなると完全にサッカーチームの監督ごっこというゲームシステムが固まってくる。

もしくは、ジョイパッド操作は、チーム内で一人だけ動きが違う「キーパー」操作に割り当てても良いかも。
2011/09/15(木) 22:21:08.89ID:I5TXtYrP
このあと>>252では仕上げに入っているけれど、補足すべき要素としては、
A.選手同士の接触判定と解決処理
B.最後にボールに触れた選手によるスローイン、ゴール・コーナーキックの判別
C.オフサイドの判定
D.AI実装のための評価関数の充実
などが必要じゃないかと思う。

「8.タイム、スコア、勝敗、タイトル画面などの装飾要素を実装する」については、
まあ、そのまんま好きなように作りこめば良い。

長々書いたけれど一応これで脳内では完成したつもり。
本当に実装できるか確かめていないので何の保証もないけれど、
なにか一部でも参考になれば嬉しいので自由に使ってくださいな。
2011/09/15(木) 23:35:53.55ID:7ihcTlmB
戻ってきたので>>320の続きです。
「3.ラインを割った状態(スローイン、コーナーキック、ゴールキック、得点)を判定し、復帰処理をつくる」
「4.選手をまず1人表示し、動かせるようにする」
どちらも一応大体は組み込めたような感じです。修正は今後もあると思います。
まだポリゴンキャラはやったことなく、ここで教わったビルボードというのでやってます。
いまの自分のレベルだとポリゴンキャラ実装はかなり先になりそうです…。

「5.選手とボールの接触判定をし、マウスクリックの代わりに選手が蹴るようにする」
しばらくの間は、この段階で頑張る事になると思います。
選手自身のボール反射は全く考えてなかったので、それ以外のキック、ドリブルなどの書き直しが
上手く出来たら、挑戦してみます。

「6.CPU選手をまずは1人登場させ、動くようにする」
方向をメンバに持たすのを考えてませんでした。
ポリゴンキャラじゃないので、絵的に表現させるのはまだまだ無理なので、
足元に矢印を表す直線を書いて向きを表現しようと思います。

「7.ポジション別にCPU選手のAIを調整する」
ここは未知の領域なのでまだ先ですが、この段階までこれたら参考にしたいと思います。

>>325も含めて多くの助言、ありがとうございました。
回答できなかった部分も今後の進捗に合わせて細部に取り込んでいこうと思います!

それと、ZEROCUPにこだわらない案
ドリブルキーを押すと選手とボールの位置関係と、蹴りたい方向を考慮して
選手があるていどオートで動く。
例えば、まっすぐドリブル中に90度右に動くようにマウスカーソルを動かした時に
丁度ボールを蹴りだしてしまったら、そのボールまで選手が動き、そこでマウスカーソル方向に蹴って、
選手もマウスカーソル方向に動くようになるという感じ。
2011/10/06(木) 23:08:47.15ID:9XiSdH1l
選手がボールと当たってたらボールを蹴れるようになるなどの処理を消して、
ボールの移動処理を簡素化してバグが出なくなるまで出来た。
しかし、ボールが表示されない。
とりあえず、マウスクリックでボールを蹴れるところまで戻せるよう頑張るつもり。
2011/10/17(月) 22:36:26.10ID:PMZ6FiGu
ちょっと停滞している状況にあるけど、まだ諦めてはいない(汗;
ボールが描画されなかった理由は、ボールの座標値に異常な大きさの数値が設定されていた為と思われる。
ソースを目で追うと、座標値計算の途中で0で割ろうとしている箇所があり、そこを直したらボールが表示された。
kick関数は選手のメンバ関数だったのをボールのメンバ関数に移し、左マウスクリックでkick関数を実行するようにしたら、
ボールは動くけどまだおかしい。
ボールは浮かずに常に右側にまっすぐ移動し、ラインを出てもラインアウトの判定がされなくなっている。
直接の原因はまだ不明だけど、ボールのメンバ変数にY軸回転角度と射出角度と速度の絶対値を持たせるように変えたことで、
まだ気付いていない未修正のところがあるからだと考えてる。
2011/11/06(日) 22:32:37.41ID:+A7uxjdP
あれこれ書き直している内にラインアウトの判定がいつの間にか直っていた。
ボールの軌跡がプログラムの意図と無関係な動きをする問題でつまづく。
左マウスをクリックしたときにボールの速度初期値に変更を加える方式だけど、
変更を単純にしてみたり、ボールの状態を一定にしてみてもダメ。
ふと、マウスの状態を決める箇所のプログラムを目で追っていると、
マウスを左クリックした場合、他のマウス操作をするまでずっとその状態がクリックしたままで
プログラム内で保持されている事に気づく。
そこを直したら、ボールの軌跡が直った。
前バージョンのプログラムでは何故問題なかったのか不思議だが、時間も無いのでこのまますすめることにした。
ボールの動きをバグ探しの為にかなり単純化してしまったので、
これを戻す過程でまた別のバグが出るかもしれない。
2011/11/07(月) 23:05:47.86ID:Ci/pCY6w
次に出た問題はボールを例えば傾斜60度で動かそうとしても動かない問題。
やり方はボールからマウスに向かうベクトルをY軸中心で90度回転する行列で回転させて、
そのベクトルを軸にしてボールからマウスに向かうベクトル(大きさは速度と一致させておく)を60度回転させる。

−60度にしてみたら放物線のように動いた。

なので、上記のやり方の中で、Y軸中心で−90度回転させてから、
そのベクトルを軸にして60度回転させるようにして解決。

マウスクリックでボールを動かせるようになったので、やっと選手で蹴れるかどうかというところまで戻った。
2011/11/08(火) 02:48:47.25ID:x9yT+23z
原因がジンバルロックなら一旦クォータニオンを経由させれば回避できるよ
2011/11/08(火) 23:40:07.79ID:3rFIMhjp
見てくれてありがとうございます!
プログラムの方はたぶんその可能性は無さそうな感じです。
プログラムはワールド座標系だけで書いてあり、選手から見た座標系をフィールド基準の座標系に行列一回で変換するような書き方はまだ出来てません。
ジンバルロックとクォータニオンについては難解なので、キーワードとして覚え、プログラムのレベルが上がってきたら挑戦してみたいと思います。

昨日の動作の件は、DXライブラリでの回転の正負方向が分からず、
60度で空中に向かってると思ったら、地中に60度で向かっているようで、
何故かボールが地面で反射せず、地面上を這うような動きになっていたのが原因です。

次の予定はドリブル実装に挑戦!
2011/12/31(土) 22:10:55.60ID:OIfdTnQa
気付けば今年ももう終わり…。
実はまた転勤の話が出て、その準備の所為で>>332から進んでないけど、それは言い訳だと思い反省…。
本当に無理だと思う状況にならない限りは諦めないでゆっくり細々でも続けるつもり!
2012/01/18(水) 00:32:02.30ID:JkO8yqpq
見てるぞ、がんばれ〜。
2012/01/21(土) 00:43:07.08ID:GhL59l/a
ありがとうございます!
まだドリブル実装で止まってますが諦めずに頑張ります。
2012/01/21(土) 01:10:41.85ID:GhL59l/a
>>65のキー割り当てと異なってくるかもしれないけど、

マウスカーソルに向かって歩く Zキー押し続ける
マウスカーソルに向かって走る Xキー押し続ける
選手の進行方向固定      Shiftキー押し続ける
ドリブル(選手はボールに向かって移動し、ボールに近づくと
     ボールをマウスカーソルに向かって蹴る。
     これを繰り返す)  Dキーを押し続ける
ロングパス    ドリブル中にマウス左クリック

これだと、選手の進行方向を固定して進行方向以外に向けて
ノールックっぽくロングパスを出そうとすると、
Z、Dを押しながらマウスを操作しなければならず、操作性が良くないような気がしてきた…。
深夜になってしまった。(汗;
2012/01/29(日) 23:10:06.09ID:IMaOAms7
しばらくプログラムから離れててソースの中身を忘れてるかもしれないのでリハビリ的に短時間作業。
選手の移動関数内には選手がボールを蹴れる当たり判定範囲を円で示す処理があるんだけど、
その処理部分を別の関数を作ってそちらに移して、選手の移動関数内には
その別に作った関数を書けばいいようにした。
これから先、選手の移動関数内にはいろいろな状態を表すフラグが増えてきて
ソースが見づらくなる事が予想されるので、ちょっと整理してみようと思った。
2012/01/30(月) 23:23:48.35ID:9k8tvKVu
次は>>116を参考にした処理がプログラム内に散らばっているので、これも整理しようと思う。
昨日と違い面倒なところがあるので時間かかるかもしれない。
昨日のはひとつのクラス内での話なので、一部分の処理を関数として書き直したい場合、
そのクラス内のメンバ関数として定義して使えば動くけど、
今回やろうとしているのは、処理がいろいろなクラスで使われているので、
今考えられるやり方としては、その処理を行う関数をメンバ関数にもつ新しいクラスを作って、
その新しいクラスのオブジェクトを>>116の処理を使っているいろいろなクラス内で定義する。
あとはその新しいクラスのオブジェクト経由?で>>116の処理を行うメンバ関数を呼び出せばなんとかできるのではと期待。
2012/01/30(月) 23:29:08.24ID:9k8tvKVu
下から2行目は、「定義する」ではなくて「実体化する」と書いた方が良かったかもしれない。
自信ないけど、なんとなく気になったので訂正。(汗;)
2012/02/01(水) 22:32:47.56ID:3gp/rYmv
>>338で言った関数を作成。
プログラムの一か所を試しにこの関数で置き換えたところ動いた。
他のところの置き換えはその都度やることにして、>>336に戻る。
2012/02/02(木) 22:41:13.33ID:Y5t1e3wS
あれこれ考えたけど良いのが思い浮かばない。
ドリブルの移動関数を別に用意して、選手がボールに当たったらその選手がドリブル権を持っていることにして、
その間はドリブル関数で動くようにして、他の選手がボールに触れたらドリブル権がその選手に移り、
以下同様に繰り返す…というのを考えたが、なんだか以前に失敗したときと同じことになりそうな感じがした。
そこで別の案を偶然思いついた。
22人の選手が一つの変数を共有して、ボールに当たった選手はその変数を自分のIDに書き換えて
移動処理にきたときにその共有変数を見て、自分のIDと一致した場合、移動関数をドリブル関数にする。
そんな変数できるかと思ったがこれも偶然思い出した。
自信は無いけど、静的メンバ変数を宣言して、この変数を外部定義すればよいというところまで調べて思い出した。
なので、今日は
選手クラスにID(←いままで無かった)と静的メンバ変数とそのメンバ変数に読み書きできるように
get、set関数を用意した(メンバ変数がstaticだからこれらの関数が必要だった。)。
上手くいくかどうかは全く未知な状態。
2012/02/06(月) 23:22:29.56ID:fDWM60Br
上の文の下から2行目のは「staticでprivateだから」の間違いのような気がしてきたけど自信なし。
今は作業を続ける前にボール関係のクラスをプリントアウトして
寝る時にこれを見ながらプログラムの中身を思い出そうとしている最中。

何故、そんな事してるかというと単純に中身を忘れたので思い出す必要があるというのと、
現在マウス左クリックでボールを蹴りだせるようにしている箇所を関数として
ボールのクラスに移して残しておきたいと思ったから。
2012/02/13(月) 23:48:23.39ID:Z7ePs7lw
ボールクラスの宣言内にボールを蹴ったときの処理をするメンバ関数の名前だけ書き、
その定義をcppファイルに書いた。でも、中身はまだ空の状態。
>>342の「現在マウス左クリックでボールを蹴りだせるようにしている箇所を関数」にしようとすると、
ボールを蹴る関数が、マウスと選手の位置情報を持つ必要があり、ボールを蹴る関数が複雑になるので、
現在マウス左クリックでボールを蹴りだせるようにしている箇所でボールを蹴ろうとする方向とその大きさを計算して、
それをボールを蹴る関数に引数として渡すようにしようと思ったところで終了。
いろいろあってなかなか進まない…orz
2012/02/27(月) 23:06:42.46ID:7NsJmhpt
>>341
>22人の選手が一つの変数を共有して、ボールに当たった選手はその変数を自分のIDに書き換えて

のプログラムを書き、コンパイラが通るところまで出来た。
ドリブルの関数をどうするかについてまだちょっとはっきりしてない感じ。
2012/02/28(火) 23:55:54.65ID:3O5AYFZZ
>>341
>移動処理にきたときにその共有変数を見て、自分のIDと一致した場合、移動関数をドリブル関数にする。

のプログラムを書いた。
選手の移動関数の目標座標がいままではマウスカーソルだったのを選手がボールにタッチした時に目標をボール座標に切り替わるようにしただけ。
ある程度の距離分ボールを蹴りだす処理を書いていないので、ボールにタッチすると同時に選手の動きがその位置で止まってしまう。
2012/03/03(土) 22:58:58.76ID:7buMobyS
しかし、良く見ると自分の選手がボールにタッチする前から選手全員がボールに向かおうとしてることに気付く。
移動出来る選手は自分が動かす1人だけだけで他選手は足元から移動方向に短い線を引くようにしていたので気付いた。
原因はボールにタッチした場合にボールに向かい、タッチしてない場にマウスカーソルに向かうのを
反対にプログラムしていたから。

次は、それでもボールが蹴れない問題。

it=(*listfp).begin();
while(it!=(*listfp).end()){
      押してるキーで移動関数(歩く・走る)を切り替える
}
++it;
}
この1行を忘れてた → it=(*listfp).begin();
while(it!=(*listfp).end()){
      ボールにタッチすると判定用変数を選手IDに上書きして、選手の移動目標をボールにして、ボールを蹴る。
}
++it;
}

しかし、ボールの動きが良くない。
最初は選手がボールを押してるような感じでずるずる動いたかと思うと
次の瞬間、勢いよく蹴ってしまう。
2012/03/11(日) 13:42:44.02ID:Ow6aUl7a
ボールが当たり判定に入り、計算されたボール速度がまだ遅いために当たり判定からボールが出ないことによって
速度がどんどん加算されてしまい、当たり判定から出れる速度になる時には大きな速度になっている…などという想像をしてみたが、
確かめる方法が思いつかなかった。
今のプログラムはボールをキックやドリブルするときには、その瞬間のボールの速度に
キックやドリブルの速度を合計するやり方だが、これをやめて、キックやドリブルの瞬間、
つまり当たり判定に触れた時にボールの速度を0にしてからキックやドリブルで設定していた速度で
蹴るようにしたら上手く動いた。
これだと神がかりなトラップになるけど、ゲームなのでとりあえず今はこれでよしとした。
でも、選手にボールがぶつかった時のはねかえり表現ができなくなるので、いつかプログラムを書き直す可能性もある。
2012/03/11(日) 14:04:38.88ID:Ow6aUl7a
しばらくの間、進まなくなるかもしれないので、UP。

ttp://ux.getuploader.com/sggk/ のsggk028です。

例えば、shiftキーを押すと選手の移動方向が一定になるようにしてあるけど、
これをドリブル中にやるとドリブルを放棄して選手が一定方向に進んでしまう。

何か新要素をプログラムに加えるたびにあちこち不具合が出てしまい、直すのにものすごく時間がかかってしまう。
あちこちにif文を使ってるので難しい。
まだどちらかといえば初期の段階なのにこれだけ難しくなるということは
何かテクニックが必要なのかもしれないので、ちょっと調べてみるつもり。
以前このスレで紹介してもらったゲームAIプログラミングの最初の方だけ読んでみようと思うけど、
前読んだ時もあまりよくわからなかったので、もし駄目だったら、このUPがラストの可能性あり…orz
2012/04/15(日) 23:49:55.88ID:vuiViXZE
一ヶ月少々経過。時間過ぎるの早すぎる。
読んでいる本の最初の方というのは、第2章だけの44ページ程度のこと。
たぶん8回ぐらいは読んだと思うが、前半がぼんやりと解ったような気持ちになるだけで、後半はまだまだだな〜という感じ。
サンプルソースをダウンロードしておかないと分からない個所がところどころにあり、幸いダウンロードは出来た。
趣味なので諦めずできるときに少しずつゆっくりと…orz
2012/05/07(月) 22:02:50.51ID:Q0zXyG9A
http://ux.getuploader.com/sggk/index/1/date/desc>>348でUPしたSGGK028のクラス図をUP。(正確さに自信は無いけど、ソースを読む参考用)
また1カ月経過しようとしている。
>>349の後、同じ個所を2回読み、合計10回程度は読んだはずなのに駄目そうな感じ。
でも、そう言いつつもさらにもう少し頑張れば分かるかもという気も何故かしている。

ここは気持ちを切り替えて、いったん今やれそうな範囲で進めてみようと思う。
クラス図のUPはその気持ちの表れ。
今、改めてソースを見ると、soccergame.cppの中の処理で
選手のメンバ変数 m_MouseTargetが shiftキーを押したらfalse 、
押さなければ true になるようにし、選手移動関数では、m_MouseTargetを見て、
falseならば、その時点の選手移動方向をマウスカーソルに向かって更新しないことで一定方向に進み、
その間はフリーになったマウスカーソルに向かってボールを蹴れるようにしてある。
2012/05/07(月) 22:11:35.39ID:Q0zXyG9A
そこで考えたのは、
1.ボールの移動目標、
2.選手の移動目標
という2つの変数を用意し、これを状態を表す変数だと考える。
ボールや選手の移動関数はこの2つの中身を見て移動先を知るようにプログラムをもっとわかりやすく書けるのではと思った。

そのための次の作業は、ボールの移動目標、選手の移動目標の状態遷移図を書くこと。
2012/05/07(月) 22:32:50.84ID:Q0zXyG9A
説明不足だったかもしれないので…、
>>350のプログラムの場合、ある場所でフラグをセットして、
そのフラグを別な場所のif文で利用して処理を進めるやり方になり、
これは後々ソースが分かりにくくなるような気がしたので、>>351のようにしてみようと思ったという事。

>>350のリンクで最初のhを取り忘れてしまった。
もしかすると直接クリックしてもアプロダのページにいかないかもしれないので、
アドレスをコピペすればページが見れると思います。
2012/06/12(火) 23:21:21.15ID:LaJwmlYj
生存報告。なかなか作業進まず。
選手の移動目標の状態遷移図は書いてみた。
この遷移を本で見たステートデザインパターンを使ってFieldPlayerクラスの中に実装できないかを思い、
FieldPlayerクラスがPlayerDataクラスを継承しているところにPlayerDataクラスがBaseGameEntityクラスを継承、
つまり継承の継承のように3段階にしたら、
「 クラス、構造体、共用体に既定のコンストラクタがありません 」というエラーが出た。
とりあえず、デフォルトコンストラクタを書いてないクラスがあったので書いてみたらコンパイラを通ったけど、
選手が真っ直ぐ動くだけでマウスについて行かなくなった。そろそろ限界かもしれない…。
2012/06/15(金) 22:27:24.54ID:PTxBNQ6c
ちょっと難しくやろうとしすぎてるのでは?
BetterCな感じで関数型な組み方してとりあえず完成に持っていった方がモチベ維持できるかも

見たところオブジェクト指向に移行しきれてないみたいな感じもあるから継承とか使ってても余計ややこしくなってるだけかも
2012/06/16(土) 18:28:14.57ID:44+Yj3Br
影ながら応援していたけど
初めから難しい物を作りすぎてるって感じがするなぁ

今までの経験を生かして新たに1から出来るだけシンプルに
ファミコンレベルのサッカーとして動くものを作ってみて
それを改造していく方がいいんじゃないかなと
2012/06/16(土) 20:50:48.24ID:281LS4tC
>>354,>>355
アドバイス、ありがとうございます!
1人でやってると気付かなくて、言われてみると確かにそうだな〜と思える…、ような感じです。
数年やってもこんな状況なんだから、きっとこの先も完成は難しい。

まずは第一段階として、今までの経験上作業に詰まる原因になりやすかったところ、
例えば、継承やコンテナ、デザインパターンを無くすか減らす事を考え、
クラスの組み方も見直して、選手の可能な操作も減らして、それでも先に進めそうになかったら、
第二段階として、さらに簡略化して1から組み直していこうと思います。
2012/06/16(土) 23:58:57.88ID:281LS4tC
>>353でやろうとしていたステートパターンを中止。
FieldPlayerクラスがPlayerDataクラスを継承していたのをやめて、FieldPlayerクラスに一体化した。
そして選手移動関数の切り替えに使っていたストラテジーパターンの処理も外して、速度一定で歩く関数ひとつにした。
2012/06/18(月) 23:32:07.93ID:kpasVy0J
Application基底クラスとSoccerGame継承クラスの継承関係もなくして、
SoccerGameクラスに統一。基底クラスの変数があちこちで使われてて、直すのに苦労した。
SoccerGameクラスは印刷するとA4、10ページの分量なので、頭の中を整理中。
2012/06/19(火) 23:44:58.47ID:M4sPlsXK
SoccerGameクラスのソースが長すぎるので、GameTitleクラス、GamePlayクラス、GameOverクラスを作り、
SoccerGameクラスのソースをこの3つのクラスに振り分けてみた。
この3つのクラスをSoccerGameクラスの中でオブジェクト化すればなんとか出来るかもしれないので、試すつもり。
失敗してもこの直前まではバックアップあるので戻れるから大丈夫w
2012/06/20(水) 21:56:07.67ID:trY5wmki
最初から作り直した方が早いかもね
2012/06/20(水) 23:15:46.22ID:/B/K6MdL
>>360
>>356では2段階でやるような気持ちでいたけど、いざやってみると、
クラスのつながりの一番根っこを分解したので結局全部書き直し同然の状態です。(汗)
とりあえず、スタート画面を出す為に、関係ないヘッダファイルやcppファイルはコンパイラから外して作業中…orz
2012/06/21(木) 23:49:12.39ID:ArXkgTjY
デザインパターン使わないと言ったけど、ちょっとだけ試してみたかった。
本に書いてたステートパターンの中で最初の1番簡単な例を使ってスタート画面を出せた。
でも実はバグの行を//付けて注釈行化して強引に表示させただけなのでまだなんとも言えない。
残りのゲームプレイとゲーム終了画面表示の遷移が出来なければswitch文使った方法に戻る。
あまり時間が無いのでゆっくり作業…。
2012/06/26(火) 23:26:56.00ID:qwjvXfmc
スタート画面とゲームオーバー画面をキー押しで表示切り替えできた。
ステートパターンの1番簡単な例と言いながらも苦戦した。
以前苦しんだ相互参照、前方宣言が関係してくるパターンだった。
本はその部分は知ってる前提で書いてあるので説明が無かった…orz
ネットも調べて知識を得てから考えた実装が動かず、結局試行錯誤で
インクルードと前方宣言を入れたり消したりして奇跡的に運よく動いた感じ。
せっかく書いたので、もし問題なく動くならこの部分だけはそのままにしておいて、
またバグ出たら、ifかswitchでやるしかない…orz
これ以降、遷移をさせたい処理が出てきたら、それはもちろんifかswitchでやるつもり(苦笑)

数年続けてきて自分には無理だという事がやっとわかった感じ。
やらないで諦めるよりは、やってみて気付いたんだから、よしとしよう!

とりあえずはファミコンサッカーを目標にしよう!(これすら出来るか怪しいかもしれない…)
空き時間ができたら作業を少しでも続ける気はあるので、がんばろう〜!…orz
2012/06/27(水) 22:59:33.76ID:1q/ptGIo
昨日のプログラムを少し変えた。
1つの状態について1ヘッダーファイル、1cppファイルというのはファイル数が多すぎて分かりずらいのでやめて、
複数の状態を1ヘッダーファイル、1cppファイルにまとめた。
ステートパターンの参考にした本、オライリーのゲームAIプログラミングもそうなっていたし…。
一応、インクルードファイルや前方宣言も本に合わせてみた。
しかし、1か所だけSoccerGameクラスのヘッダーファイルのコンストラクタの行でエラーが出た。
コンストラクタだけ実装(というか定義?)がヘッダーに書いてあったので、
この定義部分だけをcppファイルに移したらコンパイル出来た。
とりあえず、この書き方で進めよう。
タイトル、ゲームオーバー画面が出せたので、次はメインのゲーム部分を書く予定。
2012/06/28(木) 21:49:03.02ID:ckB52e4z
SGGK氏には「まとめサイト」を作ることを提案します。
これまでに考えて行ってきたことと、それに対するコメントを対応付けると、
現在のご自身のポテンシャルが見えてくると思います。

また、まとめサイトを持っていたほうが、建設的なコメントが得られるように
なると思いますよ。
2012/06/29(金) 00:19:39.71ID:0PUJkiiN
>>365
な…なるほど!、ありがとうございます。
ゲームが完成するか自信がないため、まとめサイトについては考えてませんでした。
去年9月頃に受けたアドバイスの後半から追いつけなくなってしまってたので、
そういうのもまとめられたらと思います。
2012/06/29(金) 00:20:46.65ID:0PUJkiiN
ホームページは初めてだけど、頑張ってみます。
2012/07/09(月) 00:12:38.91ID:wFKWfjV1
できるだけ簡略化した状態で作ろうと思い、
今まで使っていたフリー素材はやめて(ラインの座標が正確にわかっていたわけでは無かったから)、
フィールドは緑の板一枚にして、ゴールの絵は無し、ラインを毎ループプログラムで書き、
そのラインも外枠だけにすることを考えた。
緑色のポリゴンの板をとりあえず作成したが、メタセコイアの使い方をすっかり忘れてて苦労した。
今度はこれを画面に表示しようとしたら画面が真っ黒。
フィールドを原点(0,0,0)において、カメラは(0,100、0)で(0,0,0)注視にしたから見えるはずなのに…。
ふと、カメラ座標を(100、100、0)にしてみたら一部が見えた。一応データは読めてるようだ。
メタセコイアで作った時の座標系やDXライブラリの座標系についていろいろ忘れてしまってるようだ…orz

ホームページは作業始めるまでにはかなり時間かかりそうだけど、あきらめずにやるつもり。
FC2で練習する計画。一応グーグルにホームページの登録はしてみた。
2012/07/09(月) 23:59:59.89ID:1ssCdaiG
3Dで真上から見れば2Dになるかなという考えがあったから昨日のような事をしてたんだけど、
いろいろ悩んだ結果、2Dに戻ってやり直してみようと思った。
3Dについては、今までいろいろアドバイスもらっているのに止めるのはなんだか申し訳ない気持ちもあるけど、
今年の8月末で5年経つはずだし、まずは形に出来る可能性が少しでも高い方法を選ぼうと思う。
3Dでいろいろ学んだり考えたりした経験もきっと役立つだろうし…。
当時作った2Dスクロールはがくがく振動してたけど、それでも良しとするつもり。
2012/07/15(日) 22:56:50.87ID:UGezkUv1
フィールドの画像データ作成に時間がかかってしまった。
最初はファミコンサッカーのフィールドを意識して奥行を考慮したフィールドにしようと思ったが、これはやめた。
真上から見たフィールドにしたが、ドット絵なので、例えばある点と点を結ぶ直線の太さを4ドットにした時、
どのように書けば良いのかといった事にまで悩んでしまい、一度書きあげたが、なんとなく1〜2ドットずれてるような気がした。
そこで思いついたのが、真上からの絵なのだから1/4だけ書いて、これを3枚コピーして上下左右反転してから結合するというやり方。
幸いそのような機能がついていたので、ようやくフィールドの絵が完成した。
2012/07/22(日) 23:13:51.85ID:NkhxMf+5
選手の絵を書き直した。
1チーム分の4コマx8方向分、キックの絵を1コマx8枚方向分まで完了。
これがもう1チーム分(色変えるだけでも結構手間な感じ)と
ゴールキーパー2人の移動も今日書いた絵を色変えるだけにして、ボールに飛びつく絵を1コマx8方向分欲しいとして…。
(32+8)x3+8x2=136枚書かなければならない…orz
絵の経験は全く無いので今まで使っていた影絵レベルに色を付けた程度のものになった。
ちなみに使用ツールはフリーソフトのEDGE。
2012/07/29(日) 23:26:09.03ID:YNDBJ1FS
自分に負けて今週末は残りの絵を用意出来なかった。
それでも何かしようと考え、この前書いたフィールド(今回のは、1280x420ドット)を座標(-320,60)に書いてみたら一応表示できた。
もしかすると(-319,59)かもしれないが、追及はしない…orz
グラフィックデータをロードするときのエラー関係の処理で書いてたC++の文法、throwやcatchの文も思い切ってカットした。
今度は思いつく限りの状態遷移をノートにでも書いてみようかと思う。
例えば、得点表示、時間表示、ボールがラインアウトしたとき、得点時、前半・後半・ハーフタイムの切り替わりの時どうなるかなどの遷移を整理して、それらをどうやってプログラムにまとめるかといった事を考える予定。
ゲームの設計図というものを知らないので、結局我流。
2012/07/31(火) 22:11:31.45ID:Cy8rBdoX
ゲームが1ループする毎に1ずつ増える変数を宣言・定義した。
この変数は、選手のアニメパターンの何コマ目を表示するかを判断するのに使われる。
「14歳から(略)C++(略)」に書いてあった手法なので特に新しいことはしてない。
つまり、自分はこの方法しか知らない…orz
2012/08/19(日) 21:40:11.74ID:vVyCK6D6
まだクラスを増やさないでテスト的にプログラム中。(作業時間をなかなか確保出来ないので…)
選手の画像データを読み込むところまで書き、バグも出なくなった。
次は、選手をキーボードで8方向移動出来るようにする予定。
今までのマウスカーソルに選手が向かう仕様はやめることにした。
2012/08/23(木) 21:40:24.24ID:1+Zgsvnu
完全0の状態から小規模の3DMMORPGを作ろうとしてるんだが、勉強とトライアンドエラー続けて10年で稼働まで持っていけるだろうか。
とりあえずC言語の基礎本買ってきた。
2012/08/24(金) 05:31:27.52ID:ZnGzYILD
努力の仕方次第で10年かからずとも勿論可能だろうけれど、
そのゲームシステムやデザインが10年後通用するものかどうかは解らない。
2012/08/24(金) 06:38:37.94ID:RwA1Lyd+
>>376
レスありがとう。
たしかに。進歩するの早いからな…。
最新情報つねに仕入れつつ、とにかく始めてみる。
2012/08/24(金) 22:58:53.06ID:YHdN9J8K
>>375
自分は今年の8月末で5年経過。まだ1本も作ったことが無いのであと5年で出来るかわかりません。
今思えば、平均して1日どの程度の時間やっていたのか、集中力、やり方とかの管理や工夫が足りてなかったかもしれない。
5年やって実際何時間作業したかとか記録してなかったし…orz(今後は時間だけでもメモ!)
平均的にある程度時間を確保して継続して10年やれればなんとかなりそうに思います。
ゲーム用ライブラリは、既存のものが使えれば時間の節約になってさらに良いと思います。
2012/08/25(土) 07:20:40.77ID:uvPogsDK
>>378
アドバイスありがとうございます。
作業工程管理って大事なのですね。
基礎を勉強しつつ、完成までに何が必要かを調べて、いつまでにこれができるようにするみたいな逆算は必要かもですね。
ライブラリもちと調べてみます!
2012/09/20(木) 22:13:17.22ID:qj08WVBT
確認し忘れてしまいましたが、
もしも学生で、しかも受験生だったりする場合は、勉強に100%専念した方がいいです。

約1ヶ月経ってしまってるけど、ちょっと気になったので…(汗;)
2012/09/20(木) 22:29:34.23ID:qj08WVBT
>>374から進まず…orz
選手の8方向移動を通常ならifかswitch文で条件分岐して、
押したキーに応じて選手の座標に数値を足し引きするだけなんだけど、
そこを関数にして、その関数を関数ポインタとかいうのを使ってうまくまとめられないかと思ってしまった。
しかし、ネットで書き方を調べてるとC言語でいう関数とC++のメンバ関数でのやり方に違いがあるようで、
なんとか空のメンバ関数を定義して関数ポインタを用意するところまでコンパイラが通るようにはなったけど、
結局、ifやswitch文が無くなるような書き方には出来なかったので、ここまでやって断念してしまった。
この作業にかなりタイムロスした。(汗;)
2012/09/20(木) 22:47:31.90ID:qj08WVBT
そして今度は選手のクラス、FieldPlayerクラスを作ってから作業した方がやりやすそうだと思い、以下のエラーが発生。

(略)
#include "fieldplayer.h"
class SoccerGame;
(略)で、
error C2236: 予期しない 'class' 'SoccerGame' です。';' が入力されていることを確認してください。

これは、fieldplayer.hの中に書いてあるFieldPlayerクラスの宣言の最後の}の次に;を付け忘れたのが原因だと分かった。。
しかし、修正しても同じエラーメッセージが出続けて先に進まなくなった。
数日悩み、VC++の画面での修正内容が実際のfieldplayer.h内部には書き込まれていなかったのが原因だとわかった。
fieldplayer.hをメモ帳で開いてみて気がついた。

何故そうなったかは分からないが、VC++で書いたプログラムが保存されるsourceフォルダがあり、
自分はfieldplayer.hをVC++画面メニューから作ってソリューションエクスプローラに登録した後、
fieldplayer.hが何故かsourceフォルダの外に作られていた事に後で気づき、fieldplayer.hをドラッグ&ドロップして
sourceフォルダにいれようとしたら、偶然前のプログラムの同じ名前のfieldplayer.hが残っていたので上書きした事を思い出した。

この作業が何らかの影響を与えていたのかもしれない。

ソリューションエクスプローラからfieldplayer.hを外して、追加→既存の項目で再度sourceフォルダ内のfieldplayer.hを登録したら
プログラムのエラーが出なくなり動くようになった。

これだけで約一カ月経過…orz
2012/10/08(月) 22:33:19.85ID:t0Dt0rCo
頑張れ〜
おれもほぼ一人でRPGっぽいの作ってる。
いまマップエディタってくらい初歩的なとこ。

SGGK氏のレス全部読んでないしどんな感じかわからないけど、
サッカーだったかAIのサンプルで実例で学ぶAI入門みたいな本がある。既出だったらごめん
サンプルが↓のurlの一番下にあるファイルの4章にサッカーのボール追いかけるのがあるよ。
http://www.jblearning.com/Catalog/9781556220784/student/
2012/10/09(火) 21:25:42.44ID:H1xyTP7b
>>383
リンク紹介ありがとうございます。お互い頑張りましょ〜!
実はこれの2章だけを以前に読んでみたことがあり、その時は1/3〜1/2位しか分からなかったので、
現在停止中ですが、今のプログラムが出来たら、また頑張って読んでみようと思っています。
リンクの方もダウンロードしてみました。
早く4章のサンプルのように画面を動かせるところまで行きたいです。
2012/11/18(日) 21:07:31.77ID:7vKXgmFZ
訳あって作業中断してるけど、時間が出来たらまた戻ってきます…。
2014/02/26(水) 16:03:18.21ID:RJ/hanrh
乗っ取り
2014/03/02(日) 20:07:34.97ID:OCTlKWu3
ドキュ読む気力はあるがコード書く気力なし
2014/04/12(土) 10:02:19.06ID:vC4zhho5
>>386-387
将来コードを自分で書きたくなった時に読んだ経験を活かせると思うし、
共にがんばりましょ〜!(^^

約1年5カ月経過。いろいろあって結局何も進められなかったけど、

1.>>365「まとめサイト」を作る
2.やってきたことを忘れてるので復習する

が出来たら、次をどうするか決めようと思ってます。
2014/04/21(月) 23:22:00.49ID:kHfkeR/E
ホームページを初めて作ったのでまだ練習用だけど「まとめサイト」を作ってみた。
自分のコメントを残して、いままで何やってきたのかを振り返りやすくする程度には使えるけど、まとめとしては物足りないかもしれない。
でも時間がないので、これで発進!

http://gameprogram10.web.fc2.com/

復習するといったけど、もし再開するなら復習しないで全く0からまたやりなおすのが濃厚な感じ・・・。
2014/04/22(火) 23:03:02.00ID:K5qRm0YZ
やり方自体を見直さないと、0からやり直しても、同じ失敗を繰り返しますよ。

過去ログを一通り眺めましがが、前スレ778氏の指摘が実に的確だと思いました。
そのほかにも、すでに十分な技術的アドバイスも出ているような気がしますが、
おそらくほとんどが消化不良になっているように読めます。

ちょうど長期間のブランクがあったところですし、とりあえずプログラミングからは一旦離れて、
作ろうとしているゲームの設計書を丁寧に書きなおすことからやり直してみてはいかがですか?
2014/04/24(木) 23:07:06.02ID:EZFAmAoI
>>390
見てくれてありがとうございます。
14歳からのC++本のソースを理解し、それを改造してサッカーゲームを作ってみようと言う思いで始め、
本のソースを理解するためにクラス図なども書いてみたりして数年間やったけど、結局こうなってしまった。・・・orz
このスレの後半ではマイルストーンの提案もあってそれに沿う考えでいたけど、まずは設計書を書く方針でいっていみようと思います。
マイルストーン案も設計後に改めてやることになると思うのでスルーするわけではないです。

作業が中断しがちなので、ファミコンサッカーレベルでやると言っておいて申し訳ないけど
さらに簡略化した画像構成でつくる計画です。>>370、371で自作した絵も結局使わなかったし、
絵の経験もなく素材を自分で用意しようとすると時間が掛かりモチベーションが下がりやすくなることが分かったから。

スクロールもなし、3Dもなし、グラフィック素材の類は一切なしで、
DXライブラリの線画で代用し、その代わりにゲームの流れとか遷移のようなものを
作れ無さそうでもいいから設計図に書いてみる予定。
2014/06/14(土) 00:47:58.80ID:JnSSCGMy
ActionScript3.0でゲームを作ろうと1から勉強しているのですが、ポインターが無いの不自由でーす
2014/06/14(土) 21:56:59.17ID:JnSSCGMy
画像が表示できた。
ただそれだけなのに、今日は何か嬉しいでーす
2014/06/15(日) 22:46:59.94ID:8sVw3dle
こんばんは。ActionScriptに関して知識・経験がないのでお役に立てませんが、作業が進んでいるようでなによりです。(^^)
こちらはいろいろ事情があって、また作業が止まってるけど、なんとか8月までには再開して、できれば作業を習慣化したいな〜と思っています。
2014/06/16(月) 00:50:34.16ID:RCqw2fGb
>>394
こんばんは、はじままして。
mp3を鳴らせるようになりましたが、リピートの瞬間に一瞬無音の時間があってガクッっときまーす
2014/06/16(月) 23:41:05.88ID:F/7hmRJ3
文字も出せればもう何かが作れそうですね(^^
自分はホームページもソースもちょっと離れただけですぐ忘れてしまうので、思い出すところからの再開です。^^
2014/06/20(金) 22:22:35.84ID:YzmN3eb0
今、自分の書き込みを見直すと少し言い間違えてた(^^;
まず最初にやるのは設計図からということで現在はゲーム製作に関する作業は停止中。
目標は8月の連休前後ごろから出来るだけ習慣的に(趣味的に)製作作業を続けられるようになること。

停止してるならその事をここに書いておいた方がいいかなと思ったので・・・

今度こそもっと作業が続けられるようにするために今は部屋を片付けたりして
身のまわりを整理しているところ。
2014/06/21(土) 15:21:35.71ID:Cw+IxUfs
あるときはis-a、そしてあるときはhas-a。
小手先のクラス構造を変えるだけの日々で、まったく前に進まないでーす。
2014/06/22(日) 22:38:01.40ID:xv2opLzk
部屋の片付けはやっぱり8月まで掛かりそう。汚部屋レベルまではちらかってないと思うけど、置く場所がなくて・・・orz
クラスについては中断後長くて忘れてるけどまた頑張って思い出そうと思っていて、
設計はファミコンが出る前のピンポンやホッケーのレベルまで下げる予定だから、今度こそ形にしたいです。
2014/07/01(火) 07:06:55.78ID:MuOSn+GY
ActionScript、1割5分ぐらいは分かって来た!
ダラダラとしたこの勢いで、STGに挑戦してみまーす
2014/07/02(水) 22:23:03.63ID:eocX1eqT
8月が近づいてきて、片付けもある程度で済ませて設計を考える時期になってきました。
1年以上前のあの頃のプログラムの書き方、今の自分に思い出せるか不安・・・
2014/07/03(木) 03:08:42.45ID:7ivVj8mD
>>401
>思い出せるか不安

分かる!
その瞬間だけは、コメントやデバック文の重要性に気がつくw
引数の範囲チェックとか、本当、後で読み返すと本当に助かる。

でも、結局コメントやデバック文は手抜きになりまーす
2014/07/03(木) 23:36:09.15ID:0kkgGw/5
たぶんコンパイラの使い方や言語も忘れてるので頑張って思い出さねばならなくなる予感。
後で中身を思い出せるようにコメントも書いていく予定です。
2014/07/05(土) 09:36:50.19ID:nyHVx1H7
つ 「サッカーゲームの作り方教えろ」
    ttp://peace.2ch.net/test/read.cgi/gamedev/1024411633/l50
2014/07/06(日) 00:23:07.15ID:kEJ3/V9n
ありがとうございます。ヾ(。・ω・)ノ
これを2ヶ月で完成させるとは凄いです。プロかもしれませんね。
2014/07/14(月) 04:48:03.53ID:JeWS0vJt
ActionScriptにも随分と慣れて、一般化・再利用可能な部分はライブラリ(.swc)に切り出し始めー。
も、色々いじっていると、ライブラリ部分を大幅に変更したくなり・・・。
大作業になってまーす。
2014/07/15(火) 22:47:27.16ID:futVki6y
こちらはホームページの練習を少しやってみた程度で、
インターネットが始まったころによく見かけた単純そうに見えてたホームページでも
自分で書こうとするとかなり苦戦しそうな感じ。
夏の暑さの所為であまり進んでないかもです。
2014/07/15(火) 23:48:27.61ID:JIykXzag
>>407
暑さもストレスなので、それに打ち勝ち気分を乗せて継続するのが大変。

私も、ホームページの領域を用意して、単純なページを作り始めー。
たった、2〜3ページの.htmlを作るだけなのに凄い時間が掛かる。
今風のお洒落なページを作れる人を、純粋に尊敬するわ。

ただ、こういう色々な事をしてる時間が、楽しいでーす
2014/07/16(水) 23:39:40.41ID:oElFmIqA
今作ろうとしてるホームページは本の作例そのままのヘッダ2段+コラムx3+フッタ1段タイプ。
説明を見ながら真似してるけど、自分がやろうとしてる画面切り替えの部分が本と異なるので、そこは自分で考えなければならなくて、
これがうまく言ったらアップの予定。
2014/07/17(木) 00:20:43.62ID:tzXVOLR2
>>409
言葉で見ると、なにやら難しそうな事をしてますね。

私は、ゲーム内の画面遷移の一般化や、ゲームがフォーカスを失ったときの一時中断画面に手を出し中ー。
ゲームの状態を保ちつつ、動きを全部止める。
まだ、ゲーム部分は全く出来ていないので余計な事を見なくて良いけれども、色々考えるのがメンドクサイでーす。
2014/07/18(金) 00:03:16.17ID:mw1VOQFj
もう遷移まで進んでるとなるとゲーム部分もすぐ来そうですね。自分もがんばります(`・ω・)

ホームページ作成は慣れればなんとかなるのかもしれないけど、いろいろ出てくる言葉を忘れない程度に少しずつ作業をしてます。
真ん中に3つ並ぶはずの文章を書くための領域がずれるので直すのにちょっと時間がかかりそうです。
2014/07/18(金) 01:33:30.95ID:1PgB79S6
ホームページは作りこむのが大変なので、ブログも併用してお手軽に行こうと思っていますー。

画面遷移に来て、立ち往生。
ActionScriptは、Windowの概念がないらしく(私が、知らないだけかも・・・)、擬似的なWindowを自分で実装しないといけないみたい。
画面遷移を実装する前に、Windowクラスを作っておかないと大変な事になりそうで、ちょっとクラクラ来ていまーす。
2014/07/18(金) 23:57:32.01ID:mw1VOQFj
表示のずれが直った。練習はもう少し続きそうだけど、これが長引きそうだとブログに挑戦する可能性もありそうです。

自分が当時使っていた環境はCとC++でたしかVS2008用のDXライブラリで、
いまだに1本も完成できてないレベルなので、自分はプログラミングにあまり詳しくないです。
Windowクラスとかちょっと難しくてイメージができないです・・・orz
でも出来ればこの連休にこれらの環境を復活させて記憶を戻す作業にも入りたいです。
設計図はほとんどフィールドの絵が1枚とルールを数行書く程度を予定しています。
2014/07/19(土) 01:11:58.40ID:ESlabbYG
順調に進んでいるようですね。

私は、画面遷移で絶賛立ち往生中ー。
無理に汎用的にしないで、ある程度クラス内を汚す方向で行こうかなと。
とりあえず、簡単なゲームを1つ作り上げてみて、使い勝手とか不具合とかを実際に見てみない事には、私の脳みそでは着いていけないでーす orz
2014/07/20(日) 00:24:33.45ID:S943MOnH
自分も今回は出来るだけ簡単なゲームにして最後まで出来るか試してみようと思ってます。

久しぶりにDXライブラリのページを見るとVS2008もあることにはあるけど、
VS2013版があるそうなので、どうせやるならと気が変わってvs2013EXPRESSをインストールしてみたところまで。
2014/07/20(日) 01:19:47.27ID:szYAb/5R
開発環境が整いつつあるのですね。

私は、Webで先駆者の方々の文章を色々読んで、自分なりに消化しているところー。
様々な考え方、見かた、捕らえ方があって、面白いと思いつつ読んでいまーす
2014/07/20(日) 23:54:52.21ID:S943MOnH
自分も出来る限りネットで情報収集していこうと思っています。
DXライブラリもパソコンに入ったので、設計図とホームページが用意できたら時間は掛かると思うけど、
少しずつ以前の記憶を取り戻していきたいです。
2014/07/22(火) 18:11:20.25ID:a+DdXevL
旅行に行ってて、2,3日製作から離れていたら、色々大変な事に。
作業はしないでも、毎日5分とか短い時間で良いから、製作のことも考えないとなー。
なんて、思っていまーす
2014/07/22(火) 23:36:12.98ID:czUmBmCk
人それぞれのペースでオッケーだと思います。
自分は趣味で作ろうとしていて、その都度実生活を優先しているので数年経過してるけど、
設計を小規模なものにして、その実装をするところまではなんとか実現したいです。(^^
2014/08/06(水) 19:14:14.40ID:jwFCe5up
仕事を始めたら、ゲーム製作をする時間と体力が無くなってしまった。
業務に慣れるまで、封印でーす
2014/08/09(土) 14:56:41.71ID:FAp7nCFE
生活があっての趣味なので落ち着いたらまたいつでもどーぞ^^
自分も作業が止まっているけど、気長にやって行きます。

(アクセス禁止中なのでp2で書いたら2chscなのか不明なサイトに飛ばされてた...
アク禁のときは練習中のホームページに書いておくので、
そちらを見てもらえると安心です。^^)
2014/08/23(土) 23:31:46.64ID:ilc/4Wul
書けるかな?
2014/08/23(土) 23:51:56.62ID:ilc/4Wul
書けた。
簡単な説明用の絵を書こうとしても絵書き用ソフトが使えそうにないので、エクセルで書くことにした。(過去と同じ流れ)
2014/09/17(水) 20:19:05.62ID:ecgibK/Q
Azpainter2などの手ぶれ補正(max40で使え)はいいぞー
大きめのキャンバスを設定して、
描いた後で縮小すれば、がたがたな線でも綺麗に見える。
アドバイスがもらえるので お絵描きpink版をお薦め
(ただし、嵐等が常駐していて精神攻撃も強烈なので、タフな人向け)
2014/09/21(日) 23:47:30.99ID:K3kQU6Hc
遅レスになってしまいましたが、ありがとうございます。今後の参考にします。
今も作業は止まってて、やっぱり自分にはゲーム製作は難易度が高過ぎたかなーと今更思ったりするけど、
時間が出来てあと少しだけ進められたら、その先どうするか考えてみようと思ってます。
426名前は開発中のものです。
垢版 |
2015/12/30(水) 11:18:32.82ID:Pi7wCdZl
保守
427名前は開発中のものです。
垢版 |
2015/12/30(水) 13:06:30.21ID:aeZjP3fX
もうそのまま自然消滅確定だろ
お前にゃ無理
さっさと消え失せろや
428名前は開発中のものです。
垢版 |
2015/12/31(木) 17:55:12.58ID:zs8/1u84
お前が消えろやクズ
2016/01/16(土) 20:11:14.20ID:LlENkMHY
test
2016/01/16(土) 22:53:06.78ID:LlENkMHY
お久しぶりです。

>>427
厳しいレスがついてしまった。
10年ほども粘って結局何も作れなかったのだから、言われてもしかたない・・・

制作ギブアップ宣言をしておいた方がよかったのかな?
でも、言わなくてもいいかな。
そのときこそ「自然消滅」なのだから・・・

>>428
(TдT)ありがとう!!
2016/01/17(日) 22:37:01.89ID:BewUXIkS
完全にスレのタイトルと同じ状況になってしまったか…
まぁ、他のスレも似たような状況だし、この板自体が過疎化してるから仕方が無いとも言える
これも時代の流れ
腕のある人はスマホで稼ごうとしてみんなそちらに流れていくし、
求められるクオリティも個人で出来る範囲をはるかに超えてる
普通ならあきらめるよね?
いまどきパソコンでゲームを作る人なんてきっと少数派なのだろう

正直、自分も今度ばかりはどうしようかと悩んだ(10年経ってコレだし…)
本当に作りたいのか?いいかげん他の趣味でも探してはどうか?という具合に考えた
でも、完全にやめるほどの代わりの趣味や、サッカーゲーム制作をやめる理由は結局でてこなかった
よって懲りずに再開を試みることにした
寿命がくるか自然消滅するかまで繰り返し続ける事をとりあえずの目標としようか

まずは、ホームページを最低限のものでいいから自前で用意する。
コンパイラを一度アンインストールして、コンパイラとDXライブラリを
パソコンに入れるところからはじめて、作業記録を発信することを自分に課す。

発進するネタは、ものすごくサッカーを簡単化したものの制作記録にする。
これが設計の代わりとなる。

実生活にあまり時間の余裕がないので
目標期限はホームページが5月ごろまで
制作記録は12月ごろまで

今年は、これで自分の気持ちを確認することにした…orz
2016/01/18(月) 21:23:25.60ID:7epjie3L
いつの時代であっても、どんな経験者でも、
最初から人に見せられるクォリティでゲームを作ろうなんて考えないほうがいいよ。

初めは、「コントローラの入力値を垂れ流し表示する」「画面の座標軸を確認する」
のような、およそゲームとは呼べないようなテストプログラムを散々作って、
手持ちカードをじっくり増やしてから、ゲーム制作に挑戦する。

途中で行き詰まったときは、モチベーションの続く限り試行錯誤し、
どうにもならなければゲームデザインを変更してでも、
まずは完成と呼べるものにまとめる。

それを客観的に見て、人様に見せられるものかどうか考えて、反省し、
次の制作のモチベーションにしていく。

このサイクルを、例えば1週間、長くても1か月程度で回してみるといいと思うよ。
2016/01/19(火) 22:34:41.90ID:6lBDJRXb
人がいた!、ありがとぅ〜♪( ^ω^)ノ ←今年から少し明るいイメージで

自分もいろいろ反省点はあるので言語の勉強を並行していった方がいいかなとも思ってます。
C言語とか。入門書にちょっと目を通しただけだったから…
ゲーム制作本の真似するだけの基礎言語力がそもそも自分に無かったし。
たぶん今の自分だとどんなに簡素化したゲームでも作れるか微妙。
10年近く何をやっていたと言われそう…
まずこの1年、続けられるかどうかで自分で自分の見極めをしてみようと思ってます。
他の趣味に移行もせず、同じパターンを繰り返し続けているようで、
もしかして自分は何かの心の病気なんじゃないかと思う時もあります…orz
2016/01/24(日) 15:45:40.29ID:YuKcV9Os
ふと思ったが>>1はマイコンBASICマガジンとか読んだことあるんだろうか

ああいう入門の裾野がなくなっちゃったからな…
2016/01/24(日) 19:50:43.28ID:vmSAB2Qt
実は自分(SGGK)は、>>1とは別人です。
>>1氏は、このスレを立ててくれた人です。

SGGKの元ネタを知らない人もいるだろうから、これを機会にIDをスレタイに合わせて
「 1人 」にしようとしたのを略して「1」にしてました。
たしかにこれは紛らわしかったので、ちょっと反省…(^^)

自分もベーマガは結構読んでました。懐かしいですね〜!
主に漫画とゲームの記事の方ばかり読んでたような記憶があります…
たしかに今、雑誌で入門的なのはなくなっちゃいましたね
書籍では、○○歳シリーズぐらいしか思い当たらない…。

振り返ってみると、あのときBASICのソースコードを習得してゲーム投稿の流れに自分が行ってなかった時点で、
自分は「作る側」に向いてなかったのが既に見えていたのかもしれないけど、もう少しだけがんばってみようかな〜と思ってます。
2016/01/26(火) 20:46:33.89ID:EFSQD3B4
やっぱり名前を元に戻します!
最終目標にふさわしいSGGKにしときます。
久しぶりに復帰したせいで自分は思考がどうかしてたのかもしれない・・・
2016/01/26(火) 21:58:30.24ID:lCSaZ72+
ベーマガは独学のための教科書だっただけでなく、勉強の動機付けになってた気がする。

最初はわけもわからず、コードを入力して、動かずに、間違い探しをしていたのが、
だんだんと読めるようになり、思い通りに改造できるようになり、やがて
作品を投稿するようになり、ついには掲載されるようになった。

自分の身の回りにベーマガしか情報収集源と発信源がなかった時代と比べれば、
今は恵まれていると思うけど、学校帰りに書店で自分の本名とプログラムが掲載された
雑誌を見つけたときの、恥ずかしくも誇らしい気持ちは、もう味わえないのかな、
と思うとちょっと切ない。
2016/01/27(水) 20:43:22.33ID:ZtAong0j
ベーマガは電子書籍でもいいので復活してくれたらありがたい。
そしたら自分も雑誌掲載にトライしてみたいな〜!
今の時代は、そういうのを味わうのはたしかに難しくなってきたかもですね
読者コーナーをもつ雑誌というか作る系の雑誌が見当たらない・・・
2016/01/27(水) 23:41:43.32ID:VDw6Dqmf
そういう、待ちの姿勢が問題なんじゃないだろうか?
今どきなら、個人がウェブサイトを持って、
電子書籍を発行することだってできるというのに。
2016/01/28(木) 21:39:02.49ID:Z2b56YBB
ウェブサイトは超簡素なのを用意するだけでも自分にはせいいっぱいな感じ。
いずれそのうちに・・・
電子書籍に関しては、自分は勉強からやりなおしてて、コードを一行も書いてないのでネタが0ですね〜
そういう副収入には興味あるけど、自分は何ももってないので・・・

C言語から勉強してるけど、勉強だけで終わらないように頑張らねば!(^^;
2016/01/31(日) 20:26:47.83ID:70P5fz4M
今日は、Visual Studio Express 2013 for Windows Desktop をアンインストールした。
そして再インストールすれば、ユーザー登録画面が出てくるのではと期待したけど、出なかった。
何故それを期待していたのかというと、ユーザー登録画面で画面右上のユーザー名をSGGKに変えたかったから。
しかし、そのユーザー登録画面は再インストール時に出てくることがなく、1日悩んでしまった。

なんとかネットで情報を探して、
1.アカウントの設定
2.ユーザー情報画面でVisualStudioプロファイルを押す
3.情報画面が出るので、そこから「情報の編集」画面にとんで、ユーザー名を変更する。
というのを見つけ、その通りにしてみると
ユーザー情報画面の表示では変更が反映されてるけど、
開発画面の右上は変更が全く反映されていない。
非常に悩んだが、なんとなく3.情報画面を見ると、
「資格情報を再入力してください」というリンクがあったので、
押して、ログインのような事をしただけで、他には何も入力しなかったが、今度は開発画面右上にも変更が反映された。
そして、「資格情報を再入力してください」というリンクはもう表示されなくなっていた。

この最後の作業について触れているホームページには結局ヒットしなかったので、ある意味あぶなかった。
気付くことができて1日で解決できたのは運が良かった。

…とまぁ、今月はここまでしかできなかった。
C言語の本も1冊読めればいいなと思っていたが、やっと半分読めた状況。
2016/02/29(月) 20:27:29.55ID:IyKLLB3A
もう2月も終わりか、一ヶ月が早すぎる・・・。
C言語の本は1冊読み終わったけど、2月後半はちょっとペースがダウンしてきて、
モチベーションの維持が難しい感じ。
また週末から「14歳からはじめるC言語(ry」で感覚を取り戻しつつ、
C++の復習も並行したいな(できればの話だけど)
この1年でなんとかしたい(無理か)
2016/03/31(木) 21:01:48.55ID:uHzYY4BA
1カ月単位なら多少は進められるかなという思いもあったけど現実はこんなもの。
やる気が無くなった訳ではないので、次以降は何か機会があれば書き込みます。では。
2016/05/01(日) 12:56:40.53ID:lWbU5OEK
やる気はあるけど4月も作業が進まなかったな…
431でHPは5月頃に形にするようなことを書いたけど全然手つかずのままだった。
1人でやってるから予定変更は自由自在なんだけど、それってなんか違うような気もするし…
442で言った「14歳からはじめるC言語(ry」も読んでない。
今は別の本を読んでいて、この本の4分の1程を読み終えればプログラムの方を始められるのではと思う。
以前、「フィールドをキャラが歩いてゴールしたらGOALと表示される」というプログラムを書いたのが
ハードディスクのどこかに眠っているはずだから、見た目はそれと同じだけど、
中身は今読んでる本のやり方にしたプログラムにしてみたい。
ただし、その本があまりにも難しいのでしばらく無理かもしれない。
2016/05/02(月) 22:14:32.29ID:np5fjAnn
^_^しせさす
2016/05/03(火) 21:41:05.88ID:hCfT08eP
書き込みが!?
作業を早く先に進めたい気持ちがUP!

本の方は、今読んでるソースのbreak文の行き先を自分が勘違いしてたのにやっと気付いて、
そこから少し先に読み進めることができたぐらいで、自分には複雑で難解なソースなので
4分の1ぐらい読み終えるまで、よくてあと1カ月はかかるかもな状況。
2016/05/04(水) 21:49:58.25ID:nIaJHX6n
本を読むのも大事だけど
プログラムを組んで動かす方がさらに大事だと思うよ
単純なPONを作って完成させてみたら?

PONも作れないようなら本当に向いていないのかもね
2016/05/05(木) 00:02:11.95ID:pdRQAZX3
PONとはピンポンのことでしょうか?
た…たしかに読書だけでは前に進まないし、本を読むのが遅くなってもいいから
プログラムを組む練習も並行したほうがよさそう。
ホームページに載せる事ができれば、そこまでやってみたいですね
アップローダだといつ消えるか不安なので…
2016/05/05(木) 01:31:53.46ID:PIx8IiIs
PONじゃなくて正しくはPONGだった
単純なゲームだけどこれが作れないならサッカーゲームは絶対作れないから
まずは一つ単純なゲームを完成させた方がいいよ

http://media1.gameinformer.com/imagefeed/featured/gamerculture/pong/pongbrains_610.jpg
2016/05/05(木) 22:06:20.27ID:pdRQAZX3
どんな感じのゲームなのか分かりました。
読書の予定は少し後回しにして、実際にプログラムを書く方に力を入れてみます。
過去に書いたプログラムの内容をたぶん忘れてるので思い出すとこからだけどなんとかしてみる!
2016/05/05(木) 23:30:32.16ID:PIx8IiIs
PONGは単純だから過去のプログラムは無視して
始めらから作ればいいんじゃないかな。

あとクラス設計やオブジェクト指向とか初めから考えるとそこだけで難しいから、
手続き型の書き方でいいので、とにかく動くプログラムを作った方がいいと思うよ。
設計やオブジェクト指向は何個もプログラムを作っていって上達していけばいい。

低い山から徐々に高い山を目指して行けばいいと思うんだよね。
2016/05/06(金) 22:16:46.85ID:IdB3c4NA
PONGのゲームロジックは単純だし、原点ではあると思う。

けれど、それよりもむしろ、もっと基礎的な部分、例えばウィンドウを開いて
線を1本を描画するだけのプログラムが書けないと何も始まらないのだが、
それをAPIを叩いて実現するという場合に、必要な処理の手数の多さや、
専門用語が初心者の障壁になっている気がする。

それを補うのが各種SDKや、それに付属するサンプルプログラムなので、
まずは適切な開発環境とSDKのセットアップを行い、付属サンプルを熟読すること、
出来ればサンプルソースを全部プリントアウトして蛍光ペン等を活用して
勉強するのが、独学の王道じゃないだろうか。
2016/05/06(金) 23:41:26.19ID:jvIfmPs9
>>451
まずプログラムを書いてみて可能ならホームページにUPしてみようと思います。
過去にプログラムを分割して苦労したことがあるので、ソースファイルは分けないでやってみる予定。
>>452
10年近く経過した今でも知識経験が浅いので今まで通りDXライブラリでいこうと思います。
オンライン3Dネットワーク11VS11対戦サッカーゲームが目標だけど、APIの知識がなくても作れたら幸いと思ってます…。
2016/05/07(土) 00:08:59.45ID:rf8SJyVJ
急がば回れで一ヶ月に一本ぐらいのペースでPONGのようなミニゲームを量産するといいよ
それを一年ぐらい続ければファミコンレベルのサッカーゲームは作れるようになっているはず

初心者がいきなり難易度の高い事をやって失敗する事が多いのだけど
まさにそのパターンだったと思うから、やり方を変えなくて上手くいかないんじゃないかな。
2016/05/07(土) 00:38:00.70ID:rf8SJyVJ
「PONGのようなミニゲームを量産」と言ったけど補足すると
PONGの規模の色々な種類のミニゲームを量産するという意味だったから。
サッカーゲームが目的なら、エアホッケー、パッドゴルフとか球を中心とするミニゲームがいいだろうね。
あとミニゲームは画像や音などの素材はこだわらないで簡単な棒とかでいいと思うよ。
2016/05/07(土) 23:03:33.78ID:aQ6mm+se
コンパイラの使い方もすっかり忘れてることが今日分かったし、
ホームページの書き方も過去に少しやってみただけなので忘れてて、ふりだしに戻った気持ち。
月1ペースは難しいかもしれないけど、作業が長期間途切れて何もかも忘れてまたやり直しに
時間をかけることにならないようにがんばっていこうと思います。

過去の経験では、画像データを自作するスキルが0で時間がかかり、モチベーションがダウンしやすいから
しばらくは線(まさに棒の感じ)でやってみる予定。
2016/06/01(水) 21:28:38.24ID:pJwelftJ
1カ月経つのが早いな〜。
コンパイラについてはプロジェクトを新規で作るたびに設定を1からやりなおすのが面倒だし、
操作をすぐ忘れるので、そういうのがモチベダウンの原因のひとつだったけど、14歳からはじめるわくわくC言語のvs2013版では、
プロジェクトをコピーして、ソリューションフォルダ?に入ってる一部のファイルの名前を変えて、不要なファイルは削除して、ファイルの中身を一部変えれば、
最初から設定しなくても使えるという方法が紹介されていたので、少しは楽になるかもしれない。
操作については、以前やっていた程度には大体思い出せたと思う。
ホームページの方も超初級のHTMLとCSSので、いずれ作りなおせるだろうとちょっと甘めに予想。
PONGの方は、矢印上下でラケットが上下するとこだけをためしに書いてみたところ
動きが滑らかでないので、なんでだろうという気持ちだけど、ゆっくりやる予定。
土日以外はあまりやれないし、土日やらないと翌週送りで1カ月なんてアッと言う間に過ぎるのが難点。
2016/06/17(金) 23:12:00.66ID:E14boNTx
動きが滑らかでない原因は描画を裏画面に指定する関数を入れ忘れたから。
たぶん表に書いて、何も無い画面を表に出して、その表に書いての繰り返しになっていたんだと思う。

ところでだけど、PONGのUPが遅れそうな状況。
実は間違えてフォルダごと全部消してしまった・・・orz
先週の日曜日夕方にUPしようとして、その前にふとデスクトップがショートカットだらけだから
片付けようと思い、片付けたらフォルダが消失していた。
検索しても出てこないから他のフォルダに入れた可能性は薄い。
ゴミ箱がアヤシイと思い、ファイル復活ソフトのお試し版を何種類か試したけどダメだった。

それにしてもこれは痛い。
プログラムのソースだけでなく、今年の1月からの勉強の記録や、
ホームページの練習ファイル、コンパイラの設定の仕方のメモとか
いろいろ全部を一つのフォルダに入れてて、それが消えた。
6ヶ月分が全部パーになった。

もう敗北宣言を出そうかと思ったが、別にそんなことしなくても次回の書き込みが10年後だっていいじゃないか!
わざわざあきらめたなんて書くことないよ!
・・・とも思ったりして今後の活動については保留中。

でも、PONGをもう一度書くところまではガンバってみるつもり!
2016/07/02(土) 12:04:22.08ID:G7R2y+xo
大事なのはやる気と根気だよ
2016/07/03(日) 19:36:33.06ID:aOJPDcmQ
データの消えてしまったPONGは昨日、なんとか完成。ホームページができたら一緒に書きこもうとした結果、今日になりました。
ホームページのページを複数にする作り方を忘れてしまい、一枚のページに変更。
1MB以上のファイルアップロードが禁止のため、やむを得ず他のアップローダにアップして、そこのリンクを貼る方法に変更。

いろいろ苦労して燃え尽きたので、やる気と根気が0になったかも・・・

サッカーゲームプログラミング修行伝説
ttp://gameprogram10.web.fc2.com/
2016/07/04(月) 19:31:29.66ID:SR/Dvz76
この板では一つのゲームすら完成させる事が無く消えていく人達ばかりなのに
完成まで作ったのは凄い。

基本的な部分は出来ているので後は経験を積んで目標のサッカーゲームを作ればいいんじゃない。
462SGGK ◆6pZCoAtaxk
垢版 |
2016/07/04(月) 22:25:38.08ID:fNmVPOId
見てくれてありがとうございます。
おかげでやる気と根気も回復してきた感じがします。
また不定期になるかもしれないけど、次をどうするか考えながらやっていこうと思います。
2016/07/04(月) 22:29:09.66ID:fNmVPOId
sageを入れてなかった・・・orz
2016/08/02(火) 21:37:41.29ID:bN/vBAZL
何故かやり遂げてしまったような感覚になって、この1カ月は進捗ほとんど0
ここから先の進む方向はいろいろ考えられる。
ブロック崩し等、少しずつ内容を難しくしたゲームを書いてみる努力をしていくとか、
このピンポンを改造してサッカーにしていくなど。
時間がないということを考えると後者がいいかも。
ゲームにこだわらず、例えばマウスの座標を表示しつづけるだけの
プログラムを書いてみる等、そういう練習もしながらどうしていくか考えていく予定。
2016/08/17(水) 21:20:44.10ID:42+zcCOM
ポンができただけでもすごいけど……

試しに、座標を少しずらしたバーを左右それぞれ11個ずつにしてみたら?
あと、縦じゃなくて、横に動くバーを入れてみたり
2016/08/18(木) 21:38:34.26ID:xRUbFn8n
実は今月も進んでない・・・orz
最近やろうとしたことといえば、ホームページのTOPを目次にして、
1記事1ページにしてリンクを貼れるようにできないかなと思っただけで、
結局まだ何もしてないけど、あせらずいこ〜!

>>465
それも>464でいうところの後者なので、やってみようかなと思ってます。
でも、今のソースの当たり判定のやりかたでできるかどうか自信がなく、
その前にソースを整理して、いくつかのファイルに分割して、
少しソースを見やすくしてから作業に入る予定。
ソースの分割方法も忘れてしまったので、少々日数がかかると思います。
2016/08/22(月) 00:29:15.94ID:YEsXYkxk
がんばってね
プログラムは何年かやると、ある日、開眼して飛躍的に進歩するよ
2016/08/23(火) 21:57:25.23ID:ST70ip4K
いろいろあって進み具合は遅いかもしれないけど、、
その日が来るのを期待しながら続けていこうと思います。
2016/09/04(日) 22:30:11.87ID:mw2cD+wV
先週パソコンが壊れてしまい(データは無事)、今日はVisualStudioExpress2013forWDをインストールしなおそうとしてた。
参考書についてるCDを使えばよかったんだけど、ダウンロードサイトから落とせば最新版が入手できると思い、
TOPページからダウンロードページにいくボタンを押すと、一瞬画面が見えるけど、すぐにVS2015のダウンロードしかできない画面に
変わってしまう。しばらく悩んだ結果、よく見ると画面右上に「このページはベータ版です」のような意味の小さなボタンがあり、
これを押すと、感想の星マークを要求する小ウィンドウが出てきて、これをスルーして、もう一度ダウンロードボタンを押すと、
やっとVS2013ダウンロードができる画面が出てきた。長かった・・・

インストール後にサインインしたら、以前SGGKへのアカウント変更に苦労した設定内容がマイクロソフト側に残ってたらしく、
違うパソコンにインストールしたばかりなのにアカウント名SGGKがすぐに表示された。それ以降の作業は何もしなくてもよくなり、ホッとしたが、アカウント名の横のアイコンも
しっかりと表示されてた・・・。これは、もしかして恥ずかしいアイコンを設定してたらマイクロソフトに見られてしまってるということを意味するのだろうか?
まぁ、気にしてもしかたないので、来週から作業を再開しよう!
2016/09/11(日) 22:20:45.36ID:adF2Gp/w
10年は使うつもりでいたパソコンが約7年でダメになってしまったのは想定外だったけど、
やっと元通りの環境に戻せたので、来週こそは作業を再開したい。
いつものゆっくりペース。
2016/10/02(日) 22:20:45.65ID:OnPw603U
実はまだできてない・・・。
時間管理やモチベーション維持が上手くなくてあまり作業してないからかな。
ソースを印刷して眺めて、手が止まってる感じ。
今のソースは全部グローバルにしてるので、それをそのままヘッダファイルに
入れるような分け方にしたら、そのヘッダファイルはおそらくほとんどの関数の定義ファイルでも
読み込むことになるから、それだと分割したというよりは単にソースの長く見える部分を
ヘッダファイルに押し込めて見えなくして短くしただけでしかなくなるからなんだか変だなという気持ちになり、
ではどうすればというのが見えなかったのも作業が止まった理由かもしれない。
2016/10/16(日) 21:59:40.60ID:GCXndWPE
ソースを分割すると何がいいんだろうか?・・・とふと思った。
>>466のときは、なんとなく分割するとファイルが見やすくなると思ってたけど、
何年か前にC++の14歳シリーズの本のソースを変えて作ってた頃に
1関数1ソースファイル+1ヘッダファイルにして書いてて、ファイル数がすごく増えてしまって、
インクルードファイルのところで引っかかって悩んだのを思い出した。
つまり、見やすかったわけではなかったのではと疑問がわいてきた。

ソースを分割すると何がいいのかについて、ネットで少し調べてから作業しようと思った。
サイトによっていろいろだけど、ソースファイルを分割すれば、
1.関数の再利用がしやすくなる。
2.ヘッダファイルだけを見せて、関数定義部分はリンク前のコンパイル済みのファイルだけを渡せば関数を勝手に書き換えられない。
3.ファイル単位でコンパイルできるので、コンパイル時間が短くなる。
ほかにもあるかもしれないけど、このぐらいで作業に入ってもいいかなと思った。
1〜3だけで考えると、チーム開発を想定してみて、ソースファイルをどんなふうに分けたらいいのかと考えて分けてみるといいかもと思った。

まずは、ソースプログラムを1つのソースファイルと1つのヘッダファイルに分けてみようと思う。

分割したファイルが問題なくリンクできるように変数の定義と宣言をかき分けたり、
外部変数の扱い方がよく分かってないので、少しずつ分解していく予定。

準備としてソースを上から以下の順に整理してみた。
1.#define文
2.関数の宣言、構造体、共用体の定義やtypedef
3.外部変数の定義
4.ソース本体

1〜2がヘッダファイル、3〜4がソースファイルになるのかな?

次は、プログラムソースにどんな関数が出ているかをエクセルに書いて整理して、
どんなふうにソースを分割したらいいか考えてみる予定。
2016/10/23(日) 23:01:08.09ID:5P+w/FSj
472の考えで分離できた。ソースが2個、ヘッダファイルが2個。
この数は途中で変わるかもしれないけど、次はプログラムの中身を少し修正したい。
ラケットやフィールドの寸法を#defineで記号定数定義してたのは、
初期化の関数を作って、その中で静的変数に保存する方法にして、動作するかを試す予定。
ホームページは更新する余裕がないので、そのまま・・・orz
来週土日は用事があるので早くても再来週からの作業となりそう・・・。
2016/12/04(日) 21:06:49.17ID:5t9Ya2+q
473から全然進めてなくてダメな状況。
その他はホームページを少し直そうと思い、たまに調べものをするものの、
結局書き直しはしない程度の作業をしただけ・・・。
2017/02/19(日) 12:38:32.60ID:QRXz6Znb
生存報告。

もう10年ほど経過してる気がするけど、今年も続けることにしました。(中断を繰り返してもよし!)
476名前は開発中のものです。
垢版 |
2017/12/31(日) 20:41:34.38ID:/rN76OKL
簡単にお金が稼げる方法興味ある人だけ見てください。

グーグル検索⇒『来島のモノノリウエ』

N88OV5L2K4
2018/02/17(土) 08:28:20.67ID:G/oBdhuK
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
478名前は開発中のものです。
垢版 |
2019/01/14(月) 19:17:50.45ID:Zlj4hCYA
保守
479底辺リーマン ◆h2TYnqW5/M
垢版 |
2019/04/23(火) 17:39:34.29ID:r4lU/Sqh
ここでやろう
480底辺リーマン ◆h2TYnqW5/M
垢版 |
2019/04/23(火) 17:46:29.13ID:r4lU/Sqh
修行中
2021/09/18(土) 13:06:33.32ID:JhbyQZUc
期待age
2021/11/27(土) 09:43:02.35ID:xSIb15vb
人生詰んだけどやる気でねぇし
一人でゲームが作れるように修行します
2021/11/27(土) 09:54:22.05ID:xSIb15vb
作りたいゲームに近いチュートリアルがアンリアルにあるけど
使いたいのはユニティ、どうするアイフル
2021/11/27(土) 09:56:59.63ID:xSIb15vb
どっちも知識実績ねぇからアンリアル行ってみるか

お前もそう思うだろ?
2023/09/06(水) 18:30:45.38ID:YQi1gcag
修行僧はいねがー
2024/01/01(月) 08:32:07.66ID:nv07y9WS
カムヒアー!
2025/01/30(木) 21:23:15.49ID:6NjzpMH6
>>484
いや、そうは思わないな
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況