1人でゲームが作れるように修行します。2 (487レス)
上下前次1-新
356(1): SGGK ◆6pZCoAtaxk 2012/06/16(土)20:50 ID:281LS4tC(1/2) AAS
>>354>>355
アドバイス、ありがとうございます!
1人でやってると気付かなくて、言われてみると確かにそうだな〜と思える…、ような感じです。
数年やってもこんな状況なんだから、きっとこの先も完成は難しい。
まずは第一段階として、今までの経験上作業に詰まる原因になりやすかったところ、
例えば、継承やコンテナ、デザインパターンを無くすか減らす事を考え、
クラスの組み方も見直して、選手の可能な操作も減らして、それでも先に進めそうになかったら、
第二段階として、さらに簡略化して1から組み直していこうと思います。
357: SGGK ◆6pZCoAtaxk 2012/06/16(土)23:58 ID:281LS4tC(2/2) AAS
>>353でやろうとしていたステートパターンを中止。
FieldPlayerクラスがPlayerDataクラスを継承していたのをやめて、FieldPlayerクラスに一体化した。
そして選手移動関数の切り替えに使っていたストラテジーパターンの処理も外して、速度一定で歩く関数ひとつにした。
358: SGGK ◆6pZCoAtaxk 2012/06/18(月)23:32 ID:kpasVy0J(1) AAS
Application基底クラスとSoccerGame継承クラスの継承関係もなくして、
SoccerGameクラスに統一。基底クラスの変数があちこちで使われてて、直すのに苦労した。
SoccerGameクラスは印刷するとA4、10ページの分量なので、頭の中を整理中。
359: SGGK ◆6pZCoAtaxk 2012/06/19(火)23:44 ID:M4sPlsXK(1) AAS
SoccerGameクラスのソースが長すぎるので、GameTitleクラス、GamePlayクラス、GameOverクラスを作り、
SoccerGameクラスのソースをこの3つのクラスに振り分けてみた。
この3つのクラスをSoccerGameクラスの中でオブジェクト化すればなんとか出来るかもしれないので、試すつもり。
失敗してもこの直前まではバックアップあるので戻れるから大丈夫w
360(1): 2012/06/20(水)21:56 ID:trY5wmki(1) AAS
最初から作り直した方が早いかもね
361: SGGK ◆6pZCoAtaxk 2012/06/20(水)23:15 ID:/B/K6MdL(1) AAS
>>360
>>356では2段階でやるような気持ちでいたけど、いざやってみると、
クラスのつながりの一番根っこを分解したので結局全部書き直し同然の状態です。(汗)
とりあえず、スタート画面を出す為に、関係ないヘッダファイルやcppファイルはコンパイラから外して作業中…orz
362: SGGK ◆6pZCoAtaxk 2012/06/21(木)23:49 ID:ArXkgTjY(1) AAS
デザインパターン使わないと言ったけど、ちょっとだけ試してみたかった。
本に書いてたステートパターンの中で最初の1番簡単な例を使ってスタート画面を出せた。
でも実はバグの行を//付けて注釈行化して強引に表示させただけなのでまだなんとも言えない。
残りのゲームプレイとゲーム終了画面表示の遷移が出来なければswitch文使った方法に戻る。
あまり時間が無いのでゆっくり作業…。
363: SGGK ◆6pZCoAtaxk 2012/06/26(火)23:26 ID:qwjvXfmc(1) AAS
スタート画面とゲームオーバー画面をキー押しで表示切り替えできた。
ステートパターンの1番簡単な例と言いながらも苦戦した。
以前苦しんだ相互参照、前方宣言が関係してくるパターンだった。
本はその部分は知ってる前提で書いてあるので説明が無かった…orz
ネットも調べて知識を得てから考えた実装が動かず、結局試行錯誤で
インクルードと前方宣言を入れたり消したりして奇跡的に運よく動いた感じ。
せっかく書いたので、もし問題なく動くならこの部分だけはそのままにしておいて、
またバグ出たら、ifかswitchでやるしかない…orz
これ以降、遷移をさせたい処理が出てきたら、それはもちろんifかswitchでやるつもり(苦笑)
数年続けてきて自分には無理だという事がやっとわかった感じ。
やらないで諦めるよりは、やってみて気付いたんだから、よしとしよう!
とりあえずはファミコンサッカーを目標にしよう!(これすら出来るか怪しいかもしれない…)
空き時間ができたら作業を少しでも続ける気はあるので、がんばろう〜!…orz
364: SGGK ◆6pZCoAtaxk 2012/06/27(水)22:59 ID:1q/ptGIo(1) AAS
昨日のプログラムを少し変えた。
1つの状態について1ヘッダーファイル、1cppファイルというのはファイル数が多すぎて分かりずらいのでやめて、
複数の状態を1ヘッダーファイル、1cppファイルにまとめた。
ステートパターンの参考にした本、オライリーのゲームAIプログラミングもそうなっていたし…。
一応、インクルードファイルや前方宣言も本に合わせてみた。
しかし、1か所だけSoccerGameクラスのヘッダーファイルのコンストラクタの行でエラーが出た。
コンストラクタだけ実装(というか定義?)がヘッダーに書いてあったので、
この定義部分だけをcppファイルに移したらコンパイル出来た。
とりあえず、この書き方で進めよう。
タイトル、ゲームオーバー画面が出せたので、次はメインのゲーム部分を書く予定。
365(2): 2012/06/28(木)21:49 ID:ckB52e4z(1) AAS
SGGK氏には「まとめサイト」を作ることを提案します。
これまでに考えて行ってきたことと、それに対するコメントを対応付けると、
現在のご自身のポテンシャルが見えてくると思います。
また、まとめサイトを持っていたほうが、建設的なコメントが得られるように
なると思いますよ。
366: SGGK ◆6pZCoAtaxk 2012/06/29(金)00:19 ID:0PUJkiiN(1/2) AAS
>>365
な…なるほど!、ありがとうございます。
ゲームが完成するか自信がないため、まとめサイトについては考えてませんでした。
去年9月頃に受けたアドバイスの後半から追いつけなくなってしまってたので、
そういうのもまとめられたらと思います。
367: SGGK ◆6pZCoAtaxk 2012/06/29(金)00:20 ID:0PUJkiiN(2/2) AAS
ホームページは初めてだけど、頑張ってみます。
368: SGGK ◆6pZCoAtaxk 2012/07/09(月)00:12 ID:wFKWfjV1(1) AAS
できるだけ簡略化した状態で作ろうと思い、
今まで使っていたフリー素材はやめて(ラインの座標が正確にわかっていたわけでは無かったから)、
フィールドは緑の板一枚にして、ゴールの絵は無し、ラインを毎ループプログラムで書き、
そのラインも外枠だけにすることを考えた。
緑色のポリゴンの板をとりあえず作成したが、メタセコイアの使い方をすっかり忘れてて苦労した。
今度はこれを画面に表示しようとしたら画面が真っ黒。
フィールドを原点(0,0,0)において、カメラは(0,100、0)で(0,0,0)注視にしたから見えるはずなのに…。
ふと、カメラ座標を(100、100、0)にしてみたら一部が見えた。一応データは読めてるようだ。
メタセコイアで作った時の座標系やDXライブラリの座標系についていろいろ忘れてしまってるようだ…orz
ホームページは作業始めるまでにはかなり時間かかりそうだけど、あきらめずにやるつもり。
FC2で練習する計画。一応グーグルにホームページの登録はしてみた。
369: SGGK ◆6pZCoAtaxk 2012/07/09(月)23:59 ID:1ssCdaiG(1) AAS
3Dで真上から見れば2Dになるかなという考えがあったから昨日のような事をしてたんだけど、
いろいろ悩んだ結果、2Dに戻ってやり直してみようと思った。
3Dについては、今までいろいろアドバイスもらっているのに止めるのはなんだか申し訳ない気持ちもあるけど、
今年の8月末で5年経つはずだし、まずは形に出来る可能性が少しでも高い方法を選ぼうと思う。
3Dでいろいろ学んだり考えたりした経験もきっと役立つだろうし…。
当時作った2Dスクロールはがくがく振動してたけど、それでも良しとするつもり。
370(1): SGGK ◆6pZCoAtaxk 2012/07/15(日)22:56 ID:UGezkUv1(1) AAS
フィールドの画像データ作成に時間がかかってしまった。
最初はファミコンサッカーのフィールドを意識して奥行を考慮したフィールドにしようと思ったが、これはやめた。
真上から見たフィールドにしたが、ドット絵なので、例えばある点と点を結ぶ直線の太さを4ドットにした時、
どのように書けば良いのかといった事にまで悩んでしまい、一度書きあげたが、なんとなく1〜2ドットずれてるような気がした。
そこで思いついたのが、真上からの絵なのだから1/4だけ書いて、これを3枚コピーして上下左右反転してから結合するというやり方。
幸いそのような機能がついていたので、ようやくフィールドの絵が完成した。
371: SGGK ◆6pZCoAtaxk 2012/07/22(日)23:13 ID:NkhxMf+5(1) AAS
選手の絵を書き直した。
1チーム分の4コマx8方向分、キックの絵を1コマx8枚方向分まで完了。
これがもう1チーム分(色変えるだけでも結構手間な感じ)と
ゴールキーパー2人の移動も今日書いた絵を色変えるだけにして、ボールに飛びつく絵を1コマx8方向分欲しいとして…。
(32+8)x3+8x2=136枚書かなければならない…orz
絵の経験は全く無いので今まで使っていた影絵レベルに色を付けた程度のものになった。
ちなみに使用ツールはフリーソフトのEDGE。
372: SGGK ◆6pZCoAtaxk 2012/07/29(日)23:26 ID:YNDBJ1FS(1) AAS
自分に負けて今週末は残りの絵を用意出来なかった。
それでも何かしようと考え、この前書いたフィールド(今回のは、1280x420ドット)を座標(-320,60)に書いてみたら一応表示できた。
もしかすると(-319,59)かもしれないが、追及はしない…orz
グラフィックデータをロードするときのエラー関係の処理で書いてたC++の文法、throwやcatchの文も思い切ってカットした。
今度は思いつく限りの状態遷移をノートにでも書いてみようかと思う。
例えば、得点表示、時間表示、ボールがラインアウトしたとき、得点時、前半・後半・ハーフタイムの切り替わりの時どうなるかなどの遷移を整理して、それらをどうやってプログラムにまとめるかといった事を考える予定。
ゲームの設計図というものを知らないので、結局我流。
373: SGGK ◆6pZCoAtaxk 2012/07/31(火)22:11 ID:Cy8rBdoX(1) AAS
ゲームが1ループする毎に1ずつ増える変数を宣言・定義した。
この変数は、選手のアニメパターンの何コマ目を表示するかを判断するのに使われる。
「14歳から(略)C++(略)」に書いてあった手法なので特に新しいことはしてない。
つまり、自分はこの方法しか知らない…orz
374(1): SGGK ◆6pZCoAtaxk 2012/08/19(日)21:40 ID:vVyCK6D6(1) AAS
まだクラスを増やさないでテスト的にプログラム中。(作業時間をなかなか確保出来ないので…)
選手の画像データを読み込むところまで書き、バグも出なくなった。
次は、選手をキーボードで8方向移動出来るようにする予定。
今までのマウスカーソルに選手が向かう仕様はやめることにした。
375(1): 2012/08/23(木)21:40 ID:1+Zgsvnu(1) AAS
完全0の状態から小規模の3DMMORPGを作ろうとしてるんだが、勉強とトライアンドエラー続けて10年で稼働まで持っていけるだろうか。
とりあえずC言語の基礎本買ってきた。
376(1): 2012/08/24(金)05:31 ID:ZnGzYILD(1) AAS
努力の仕方次第で10年かからずとも勿論可能だろうけれど、
そのゲームシステムやデザインが10年後通用するものかどうかは解らない。
377: 2012/08/24(金)06:38 ID:RwA1Lyd+(1) AAS
>>376
レスありがとう。
たしかに。進歩するの早いからな…。
最新情報つねに仕入れつつ、とにかく始めてみる。
378(1): SGGK ◆6pZCoAtaxk 2012/08/24(金)22:58 ID:YHdN9J8K(1) AAS
>>375
自分は今年の8月末で5年経過。まだ1本も作ったことが無いのであと5年で出来るかわかりません。
今思えば、平均して1日どの程度の時間やっていたのか、集中力、やり方とかの管理や工夫が足りてなかったかもしれない。
5年やって実際何時間作業したかとか記録してなかったし…orz(今後は時間だけでもメモ!)
平均的にある程度時間を確保して継続して10年やれればなんとかなりそうに思います。
ゲーム用ライブラリは、既存のものが使えれば時間の節約になってさらに良いと思います。
379: 2012/08/25(土)07:20 ID:uvPogsDK(1) AAS
>>378
アドバイスありがとうございます。
作業工程管理って大事なのですね。
基礎を勉強しつつ、完成までに何が必要かを調べて、いつまでにこれができるようにするみたいな逆算は必要かもですね。
ライブラリもちと調べてみます!
380: SGGK ◆6pZCoAtaxk 2012/09/20(木)22:13 ID:qj08WVBT(1/3) AAS
確認し忘れてしまいましたが、
もしも学生で、しかも受験生だったりする場合は、勉強に100%専念した方がいいです。
約1ヶ月経ってしまってるけど、ちょっと気になったので…(汗;)
381: SGGK ◆6pZCoAtaxk 2012/09/20(木)22:29 ID:qj08WVBT(2/3) AAS
>>374から進まず…orz
選手の8方向移動を通常ならifかswitch文で条件分岐して、
押したキーに応じて選手の座標に数値を足し引きするだけなんだけど、
そこを関数にして、その関数を関数ポインタとかいうのを使ってうまくまとめられないかと思ってしまった。
しかし、ネットで書き方を調べてるとC言語でいう関数とC++のメンバ関数でのやり方に違いがあるようで、
なんとか空のメンバ関数を定義して関数ポインタを用意するところまでコンパイラが通るようにはなったけど、
結局、ifやswitch文が無くなるような書き方には出来なかったので、ここまでやって断念してしまった。
この作業にかなりタイムロスした。(汗;)
382: SGGK ◆6pZCoAtaxk 2012/09/20(木)22:47 ID:qj08WVBT(3/3) AAS
そして今度は選手のクラス、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
383(1): 2012/10/08(月)22:33 ID:t0Dt0rCo(1) AAS
頑張れ〜
おれもほぼ一人でRPGっぽいの作ってる。
いまマップエディタってくらい初歩的なとこ。
SGGK氏のレス全部読んでないしどんな感じかわからないけど、
サッカーだったかAIのサンプルで実例で学ぶAI入門みたいな本がある。既出だったらごめん
サンプルが↓のurlの一番下にあるファイルの4章にサッカーのボール追いかけるのがあるよ。
外部リンク:www.jblearning.com
384: SGGK ◆6pZCoAtaxk 2012/10/09(火)21:25 ID:H1xyTP7b(1) AAS
>>383
リンク紹介ありがとうございます。お互い頑張りましょ〜!
実はこれの2章だけを以前に読んでみたことがあり、その時は1/3〜1/2位しか分からなかったので、
現在停止中ですが、今のプログラムが出来たら、また頑張って読んでみようと思っています。
リンクの方もダウンロードしてみました。
早く4章のサンプルのように画面を動かせるところまで行きたいです。
385: SGGK ◆6pZCoAtaxk 2012/11/18(日)21:07 ID:7vKXgmFZ(1) AAS
訳あって作業中断してるけど、時間が出来たらまた戻ってきます…。
上下前次1-新書関写板覧索設栞歴
あと 102 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.022s