こちらは、balldata.h を作成。
2次元でやってた時のヘッダファイルに修正を加えて作成。
メンバ変数をプライベート変数にしてget関数、set関数の宣言まで。
このような修正をボール、ゴール、レーダー関係のファイルに行わなければならず、
残りは全部で8ファイル。
探検
1人でゲームが作れるように修行します。2
185SGGK ◆6pZCoAtaxk
2011/03/31(木) 23:16:16.15ID:K/Mu7f7g186179
2011/04/01(金) 00:43:22.10ID:wHWoDhco なんという手間のかかる作業を。。。
グローバルで適当に書いて放置してる誰かさんとはえらい違いだなぁ
ぃゃ直しますよ…後で…イツカ,タブン。
今日の作業:マウスアイコン作って動かせるようにした。
なんかsprintfとかの警告でまくってるけど気にしない。
ユニットとマップの大きさどうしよかな…。
グローバルで適当に書いて放置してる誰かさんとはえらい違いだなぁ
ぃゃ直しますよ…後で…イツカ,タブン。
今日の作業:マウスアイコン作って動かせるようにした。
なんかsprintfとかの警告でまくってるけど気にしない。
ユニットとマップの大きさどうしよかな…。
187SGGK ◆6pZCoAtaxk
2011/04/02(土) 00:05:59.97ID:7Uv0Gp7Y ファイルを分けているのは14歳シリーズC++本の影響でたまたまこのやり方しか知らないのが理由。
このやり方だとオブジェクトを増やす毎に新しいファイルを増やさなければいけないので大変だけど頑張ってみます。
今日は進捗なし。自信ないけど土日で>>185のファイルを片づけたい。もう4月…。
このやり方だとオブジェクトを増やす毎に新しいファイルを増やさなければいけないので大変だけど頑張ってみます。
今日は進捗なし。自信ないけど土日で>>185のファイルを片づけたい。もう4月…。
188179
2011/04/02(土) 01:41:08.85ID:YKJBI5s3 オブジェクト毎に1ファイルというのはこちらも似たような感じなんですが、
その…GET、SET関数書くのがメンドくてそのままパブリックで書いて直接・・・
なんてダメな事をやってる所を放置したままで・・・w
以下日記:中身の何も無い板ポリユニット表示した。
ちょっとソースを綺麗にしようと思ったら
同じようなクラスが2個出来上がって汚くなった。
どうしてこうなったorz
その…GET、SET関数書くのがメンドくてそのままパブリックで書いて直接・・・
なんてダメな事をやってる所を放置したままで・・・w
以下日記:中身の何も無い板ポリユニット表示した。
ちょっとソースを綺麗にしようと思ったら
同じようなクラスが2個出来上がって汚くなった。
どうしてこうなったorz
189名前は開発中のものです。
2011/04/02(土) 08:01:26.08ID:0qk/4v/F メンバ変数を読み書きして外で処理するのではなく、
メンバ関数にハンドルを渡して中で処理させる設計に変えるといいんじゃないかな。
メンバ関数にハンドルを渡して中で処理させる設計に変えるといいんじゃないかな。
190179
2011/04/02(土) 21:31:56.76ID:YKJBI5s3 class HUMAN_UNIT
{
public:
void Damage(int point);
void Heal(int point);
private:
int hp;
};
void HUMAN_UNIT::Damage(int point)
{
hp -= point;
return;
}
void HUMAN_UNIT::Heal(int point)
{
hp += point;
return;
}
ハンドルとか良く分かって無いですが、こういう事?
んでも↓みたいな事やるときにhp取り出すのがめんどくて
ついpublicに置いてしまう…w
HUMAN_UNIT yuusya , souryo;
if(yuusya.hp > souryo.hp)souryo.Heal();
if(yuusya.hp < souryo.hp)yuusya.Heal();
{
public:
void Damage(int point);
void Heal(int point);
private:
int hp;
};
void HUMAN_UNIT::Damage(int point)
{
hp -= point;
return;
}
void HUMAN_UNIT::Heal(int point)
{
hp += point;
return;
}
ハンドルとか良く分かって無いですが、こういう事?
んでも↓みたいな事やるときにhp取り出すのがめんどくて
ついpublicに置いてしまう…w
HUMAN_UNIT yuusya , souryo;
if(yuusya.hp > souryo.hp)souryo.Heal();
if(yuusya.hp < souryo.hp)yuusya.Heal();
191STG
2011/04/02(土) 21:33:37.28ID:piT73rrN192SGGK ◆6pZCoAtaxk
2011/04/03(日) 00:07:22.30ID:1D3iDnp3 自分は>>155からget、set関数方式への書き直しを進行中だけど、書き直しにものすごい時間がかかってます。
そして今更ながらそのように直すメリットを見つけられないような気がしてきて不安だけど、
もうほとんど書き直してしまったし、ソースも多少見やすくなったような感じはするので、このまま頑張ってみます!。
今日は、ボール関係をなんとか実装したけど、ボールはフィールド中央に表示され続けるのみとし、まだ蹴れないようにしておく。
レーダー関係は何故かレーダーが表示されないので、原因を調べているところ。
そして今更ながらそのように直すメリットを見つけられないような気がしてきて不安だけど、
もうほとんど書き直してしまったし、ソースも多少見やすくなったような感じはするので、このまま頑張ってみます!。
今日は、ボール関係をなんとか実装したけど、ボールはフィールド中央に表示され続けるのみとし、まだ蹴れないようにしておく。
レーダー関係は何故かレーダーが表示されないので、原因を調べているところ。
193SGGK ◆6pZCoAtaxk
2011/04/03(日) 22:57:24.10ID:FQAs1SPd 昨日はget、set関数方式のメリットを見つける自信が無いような事を書いてしまったけど、
ネットで検索してみると、異常な数値がセットされないようにset関数の中でチェックしたり、
get、set関数のどちらかをあえて書かない事でプライベート変数を書き込み専用、読み込み専用にすることも可能といったメリットがあるとの話。
自分の場合、今までx、y座標を別々の変数にしてたときは、(オブジェクト).x のようにしてたのが、途中でVECTOR構造体を使おうということになって、
そうなると今までのソースを(オブジェクト).x から(オブジェクト).(構造体変数).x に全部書き変えなければならなくて面倒だったので、
これが、(オブジェクト).getX() にしてあったら、getX()の中身を return x から return(構造体変数).x にするだけで済んだのでは?との思いがあって、
同じような事がそう何度も出てくるとは思わないけど、get、set関数に変えてみたという話。
完全に直しきれたかどうかは自信なし。
なんとか>>185の修正が終わった。
但し、ボールは中央表示のみで蹴れない。
選手もマウスカーソルを追うのみ。
画面は固定。
レーダーが最初画面に表示されなかった原因は分からなかった。
レーダーの座標はベクトルのx,yだけを変数記憶用に使おうとしていたけど、
あえてやめて、以前のx、yの2変数を用意して、そこに記憶させた。なんとなくだけど。
とりあえず、いろいろな条件分岐というか状態遷移のようなプログラムを書く直前の状態までを書いたような感じ。
ここまでを一区切りにするつもり。
ネットで検索してみると、異常な数値がセットされないようにset関数の中でチェックしたり、
get、set関数のどちらかをあえて書かない事でプライベート変数を書き込み専用、読み込み専用にすることも可能といったメリットがあるとの話。
自分の場合、今までx、y座標を別々の変数にしてたときは、(オブジェクト).x のようにしてたのが、途中でVECTOR構造体を使おうということになって、
そうなると今までのソースを(オブジェクト).x から(オブジェクト).(構造体変数).x に全部書き変えなければならなくて面倒だったので、
これが、(オブジェクト).getX() にしてあったら、getX()の中身を return x から return(構造体変数).x にするだけで済んだのでは?との思いがあって、
同じような事がそう何度も出てくるとは思わないけど、get、set関数に変えてみたという話。
完全に直しきれたかどうかは自信なし。
なんとか>>185の修正が終わった。
但し、ボールは中央表示のみで蹴れない。
選手もマウスカーソルを追うのみ。
画面は固定。
レーダーが最初画面に表示されなかった原因は分からなかった。
レーダーの座標はベクトルのx,yだけを変数記憶用に使おうとしていたけど、
あえてやめて、以前のx、yの2変数を用意して、そこに記憶させた。なんとなくだけど。
とりあえず、いろいろな条件分岐というか状態遷移のようなプログラムを書く直前の状態までを書いたような感じ。
ここまでを一区切りにするつもり。
194179
2011/04/04(月) 00:25:07.83ID:1C3wAcIh 最近、処理してから数値返したりする場面が出てきたような気がする
が、無駄な関数ががんがん増えてる気がしないでもない。
ソースを綺麗にする作業は挫折しました。。。
>>193
表示したら動かしたくなりませんか…?w
テンション上がって強引に動作実装、
→バグだらけ→バグ取りでテンションダウン→汚いソースの出来上がり
なんてやってしまうんですが。
日記の(ry
ユニットをマウスで移動できるようにした。
マップの大きさをとりあえず適当な数値で仮定して
ミニマップレーダーを作ろう…。
が、無駄な関数ががんがん増えてる気がしないでもない。
ソースを綺麗にする作業は挫折しました。。。
>>193
表示したら動かしたくなりませんか…?w
テンション上がって強引に動作実装、
→バグだらけ→バグ取りでテンションダウン→汚いソースの出来上がり
なんてやってしまうんですが。
日記の(ry
ユニットをマウスで移動できるようにした。
マップの大きさをとりあえず適当な数値で仮定して
ミニマップレーダーを作ろう…。
195名前は開発中のものです。
2011/04/04(月) 01:24:50.54ID:zaeNjYQd やっぱりこのスレがいちばん居心地いいなあ
月曜火曜休みなので、この連休は本気出す!
寝て起きたら、もやもやしながらゲームや2chに明け暮れずVisualStudio立ち上げて何か事を起こす!
小難しい本読んでたら、ホントに小難しすぎておもろうてやがて悲し
教科書を超えて念仏レベルで、ただ文字を追いかけてるだけ
すべてのメンバ変数privateにして無条件ゲトセトは俺も馬鹿だなと思う。
そんなことするくらいならpublicでいい
利点なんて、挙動不審なときに一括検索で代入してるところ洗い出せるぐらいかなと思ってる
月曜火曜休みなので、この連休は本気出す!
寝て起きたら、もやもやしながらゲームや2chに明け暮れずVisualStudio立ち上げて何か事を起こす!
小難しい本読んでたら、ホントに小難しすぎておもろうてやがて悲し
教科書を超えて念仏レベルで、ただ文字を追いかけてるだけ
すべてのメンバ変数privateにして無条件ゲトセトは俺も馬鹿だなと思う。
そんなことするくらいならpublicでいい
利点なんて、挙動不審なときに一括検索で代入してるところ洗い出せるぐらいかなと思ってる
196SGGK ◆6pZCoAtaxk
2011/04/05(火) 00:03:40.76ID:S0hRYVkN >>194
以前、動くところまで書いたのですが、試合前半後半で選手の向きを入れ替えたりとか
いろいろ条件を加えていくうちにソースがわかりにくくなってきた事があったので、
もしまたそうなっても、今の状態からならやり直しやすいだろうと思い、ここを区切りにして保存しておこうと思ってます。
>>195
ともに頑張りましょう!
get、set関数の件、たしかにそのとおりで、直すときは検索つかえばいいんだし、これから書く部分はpublicにしてみます。
今日は、プログラムをリリースモードでコンパイルしようとしてバグ。
どうもユニコードとかの文字コードの何かが原因らしいけど、ネット検索で見つけたコンパイラの設定画面が表示されず、
しようがないので、ソース内の”文字”をTEXT(”文字”)にしたという例を真似してみたり、
他にもいろいろやってみた結果、コンパイルは通ったけど、デバッグモードでは22人の選手が表示されるのに、
リリースモードでは2人しか表示されない…。解決には時間かかる予感。
以前、動くところまで書いたのですが、試合前半後半で選手の向きを入れ替えたりとか
いろいろ条件を加えていくうちにソースがわかりにくくなってきた事があったので、
もしまたそうなっても、今の状態からならやり直しやすいだろうと思い、ここを区切りにして保存しておこうと思ってます。
>>195
ともに頑張りましょう!
get、set関数の件、たしかにそのとおりで、直すときは検索つかえばいいんだし、これから書く部分はpublicにしてみます。
今日は、プログラムをリリースモードでコンパイルしようとしてバグ。
どうもユニコードとかの文字コードの何かが原因らしいけど、ネット検索で見つけたコンパイラの設定画面が表示されず、
しようがないので、ソース内の”文字”をTEXT(”文字”)にしたという例を真似してみたり、
他にもいろいろやってみた結果、コンパイルは通ったけど、デバッグモードでは22人の選手が表示されるのに、
リリースモードでは2人しか表示されない…。解決には時間かかる予感。
197名前は開発中のものです。
2011/04/05(火) 02:28:26.89ID:t5qV24Bh あーそういえばC++は文字列が鬼門だよな
UNICODEかSHIFT-JISかっていうのは、要はwcharかcharかって事だ
だからwchar〜charを変換する関数作っておくといいかもしれない
ちなみに俺は基本的に文字列はstringで扱って
wcharとかcharを要求する関数を使う時にstringから渡せるような作りにしてる
もうしばらく使ってないから、マクロで組んだか関数だったかは忘れたけど
UNICODEかSHIFT-JISかっていうのは、要はwcharかcharかって事だ
だからwchar〜charを変換する関数作っておくといいかもしれない
ちなみに俺は基本的に文字列はstringで扱って
wcharとかcharを要求する関数を使う時にstringから渡せるような作りにしてる
もうしばらく使ってないから、マクロで組んだか関数だったかは忘れたけど
198名前は開発中のものです。
2011/04/05(火) 02:29:52.15ID:t5qV24Bh あー
使ってないっていうのは、C++触ってないっていう意味ね
使ってないっていうのは、C++触ってないっていう意味ね
199SGGK ◆6pZCoAtaxk
2011/04/06(水) 00:31:39.07ID:0VHuOF2K な…なるほど、変換する関数が必要となると、それは自分には難易度の高い対策方法なので、もうしばらく考えてみます。
もしかするとコンパイラがこわれてしまったかもしれない様子。
もしかするとコンパイラがこわれてしまったかもしれない様子。
200名前は開発中のものです。
2011/04/06(水) 01:27:19.44ID:T5BENq16201179
2011/04/06(水) 23:50:41.54ID:Qi29hSL7 VC++のデバック関数でなんか開放忘れのメモリリークを簡単に見つけられるとか
WEBに乗ってたのを試したら余裕でリークしてた。。。
直してたら今度はdeleteがエラー出す、なにこのスパイラル
本体が進まない罠
WEBに乗ってたのを試したら余裕でリークしてた。。。
直してたら今度はdeleteがエラー出す、なにこのスパイラル
本体が進まない罠
202SGGK ◆6pZCoAtaxk
2011/04/07(木) 00:03:18.39ID:1CreScRP やっぱり自分は永遠に初心者のようです…。
>>200 MultiByteToWideChar、調べてみました。
引数にコードページというのがあって、いきなりここから躓いてしまうレベルなので、APIの難しさがよくわかりました。
感謝します。いつかもっと勉強してAPIの領域まで入っていけるようになってみたいです。
まず、DXライブラリを疑ってみる。
DXライブラリのホームページを見ると更新履歴に何箇所かユニコードがどうのこうののバグを解決みたいな事が
書いてあったので期待して最新のバージョンにしたけど、こちらのバグは解決できなかった。
文字コード関係とは別に気になっていた現象があったので、今日はこれの解決を試みる。
コンパイラの下の画面にいつごろからか、「コマンド プロンプトで 'VCExpress / resetskippkgs' と入力してください」という文字が表示されるようになって、
でも2D座標系のプログラム書いていた時にはデバッグ、リリースモードどちらもコンパイル出来ていたので気にしていなかった。
でも、もしやと思い、コマンドプロンプトで試したが、VCExpressは外部コマンドでも内部でも無い…みたいなメッセージが出てうまくいかない。
resetskippkgsを検索してもハードディスク内には無い様子。
昨日、コンパイラがこわれてしまったかもしれないと書いたのはこの事。
やむを得ず、VC++2008をアンインストールして、もう一度インストールしてみることにした。
「'VCExpress / resetskippkgs' と入力してください」のメッセージは出なくなった。
コンパイルしてみると今度は、「error LNK2001: 外部シンボル "_main" は未解決です」というエラーメッセージが出た。
これも苦しんだけど、なんとか運よく今日中にクリア出来た。
でも、今度は画面がおかしくなってしまったので、明日頑張ります。
>>200 MultiByteToWideChar、調べてみました。
引数にコードページというのがあって、いきなりここから躓いてしまうレベルなので、APIの難しさがよくわかりました。
感謝します。いつかもっと勉強してAPIの領域まで入っていけるようになってみたいです。
まず、DXライブラリを疑ってみる。
DXライブラリのホームページを見ると更新履歴に何箇所かユニコードがどうのこうののバグを解決みたいな事が
書いてあったので期待して最新のバージョンにしたけど、こちらのバグは解決できなかった。
文字コード関係とは別に気になっていた現象があったので、今日はこれの解決を試みる。
コンパイラの下の画面にいつごろからか、「コマンド プロンプトで 'VCExpress / resetskippkgs' と入力してください」という文字が表示されるようになって、
でも2D座標系のプログラム書いていた時にはデバッグ、リリースモードどちらもコンパイル出来ていたので気にしていなかった。
でも、もしやと思い、コマンドプロンプトで試したが、VCExpressは外部コマンドでも内部でも無い…みたいなメッセージが出てうまくいかない。
resetskippkgsを検索してもハードディスク内には無い様子。
昨日、コンパイラがこわれてしまったかもしれないと書いたのはこの事。
やむを得ず、VC++2008をアンインストールして、もう一度インストールしてみることにした。
「'VCExpress / resetskippkgs' と入力してください」のメッセージは出なくなった。
コンパイルしてみると今度は、「error LNK2001: 外部シンボル "_main" は未解決です」というエラーメッセージが出た。
これも苦しんだけど、なんとか運よく今日中にクリア出来た。
でも、今度は画面がおかしくなってしまったので、明日頑張ります。
203SGGK ◆6pZCoAtaxk
2011/04/07(木) 00:21:04.82ID:1CreScRP >>201
メモリリークは難しくてわかりませんが、バグの為に本体を進められない気持ちは自分にもよくわかります。
1日ソースから離れてもう一度見るとふと原因が分かったりすることもあるので、お互い頑張っていきましょう!
メモリリークは難しくてわかりませんが、バグの為に本体を進められない気持ちは自分にもよくわかります。
1日ソースから離れてもう一度見るとふと原因が分かったりすることもあるので、お互い頑張っていきましょう!
204名前は開発中のものです。
2011/04/07(木) 02:08:35.75ID:ATP6AwEd >>201
さあ早くスマートポインタに移行するんだ
さあ早くスマートポインタに移行するんだ
205SGGK ◆6pZCoAtaxk
2011/04/08(金) 00:00:34.46ID:WGj3ab+N 昨日は説明が不足していたので補足。
コンパイラがこわれたのではと思ったのは他にも理由があり、プロジェクトのプロパティ画面が出てこなかった事。
画面を出そうとすると、共通言語ランタイムに問題があるといった感じのメッセージや.NETがどうのこうのというメッセージが出てどうにもならなかったので、
コンパイラのアンインストール、インストールに踏み切った訳。
その結果、プロパティ画面を出せるようになり、14歳シリーズVC++2008編にあるやり方で再設定できるようになった。
設定は文字セットとランタイムライブラリのところ。
文字セットはマルチバイトセットを使用する。
ランタイムライブラリは、Debug構成ではマルチスレッドデバッグ、Release構成ではマルチスレッドにすればOK。本にやり方が書いてなかったら自分は何も出来ない…。
たぶんなんらかの原因で文字セットの設定がユニコードに変えられてしまったのがバグの原因だったのかなと思う。
そして、「error LNK2001: 外部シンボル "_main" は未解決です」が出る件。
これは、プロジェクトを作成するときに設定画面でWin32プロジェクトを選択すべきところを間違えてwin32コンソールアプリケーションを選択したから。
コンソールアプリケーションだとプログラムの始まりはmain関数である必要があるのに自分のソースはWinMainだから、それがエラーになった原因だった。
14歳シリーズの最初の方のページ見て設定したのが間違えた原因。
本の最初の方はコンソールアプリケーションで解説しようとしてたから。そのとおり設定すれば当然間違える。
最後に画面がおかしい件、おかしいというのはフィールド画面に貼ったはずのBMP画像が表示されずに灰色になってしまう状態になってしまってること。
これは、フィールドモデルをメタセコイアで表示させて運よく気が付いた。
原因はフィールドモデルに貼るテクスチャ用BMPファイルの置き場所が実際の場所と異なっていたこと。
何故そうなったかというと、コンパイラをインストールしなおしたときにゲーム作成関係フォルダをどうせだからと思って、
もう少し上の階層に移してしまったから。
これですっきり。
コンパイラがこわれたのではと思ったのは他にも理由があり、プロジェクトのプロパティ画面が出てこなかった事。
画面を出そうとすると、共通言語ランタイムに問題があるといった感じのメッセージや.NETがどうのこうのというメッセージが出てどうにもならなかったので、
コンパイラのアンインストール、インストールに踏み切った訳。
その結果、プロパティ画面を出せるようになり、14歳シリーズVC++2008編にあるやり方で再設定できるようになった。
設定は文字セットとランタイムライブラリのところ。
文字セットはマルチバイトセットを使用する。
ランタイムライブラリは、Debug構成ではマルチスレッドデバッグ、Release構成ではマルチスレッドにすればOK。本にやり方が書いてなかったら自分は何も出来ない…。
たぶんなんらかの原因で文字セットの設定がユニコードに変えられてしまったのがバグの原因だったのかなと思う。
そして、「error LNK2001: 外部シンボル "_main" は未解決です」が出る件。
これは、プロジェクトを作成するときに設定画面でWin32プロジェクトを選択すべきところを間違えてwin32コンソールアプリケーションを選択したから。
コンソールアプリケーションだとプログラムの始まりはmain関数である必要があるのに自分のソースはWinMainだから、それがエラーになった原因だった。
14歳シリーズの最初の方のページ見て設定したのが間違えた原因。
本の最初の方はコンソールアプリケーションで解説しようとしてたから。そのとおり設定すれば当然間違える。
最後に画面がおかしい件、おかしいというのはフィールド画面に貼ったはずのBMP画像が表示されずに灰色になってしまう状態になってしまってること。
これは、フィールドモデルをメタセコイアで表示させて運よく気が付いた。
原因はフィールドモデルに貼るテクスチャ用BMPファイルの置き場所が実際の場所と異なっていたこと。
何故そうなったかというと、コンパイラをインストールしなおしたときにゲーム作成関係フォルダをどうせだからと思って、
もう少し上の階層に移してしまったから。
これですっきり。
206179
2011/04/09(土) 00:10:09.82ID:rY2c9kYC207SGGK ◆6pZCoAtaxk
2011/04/10(日) 00:36:34.94ID:TFhm8weY >>206
お互いバグとれて良かったですね。
プログラムはバグ取れなければ先に進まなくなってしまうのでいつも冷汗です。
今日はファイルをまとめてUP
前から見てる人は知ってるので大丈夫だけど、最近見た人がすごいの作ってると誤解されてると心配なので昔UPしたのもUPしてます。
間違えて変なファイルとか書き込みとかしてるかもしれない…
SGGK019 : 2Dで書いていた時の最終版
SGGK020 : 019に体力ゲージ付けた
3D_TEST : >>139で言っていた >それを表す図やテストプログラムの実行ファイルをUPしようかと思ったけど ←のテストプログラムの実行ファイル
3D_TEST説明 : >>139で言っていた >それを表す図やテストプログラムの実行ファイルをUPしようかと思ったけど ←のそれを表す図
SGGK024 : 今書いてる最新版、選手がマウスカーソルを追いかけるだけ
置き場所
ttp://ux.getuploader.com/sggk/
お互いバグとれて良かったですね。
プログラムはバグ取れなければ先に進まなくなってしまうのでいつも冷汗です。
今日はファイルをまとめてUP
前から見てる人は知ってるので大丈夫だけど、最近見た人がすごいの作ってると誤解されてると心配なので昔UPしたのもUPしてます。
間違えて変なファイルとか書き込みとかしてるかもしれない…
SGGK019 : 2Dで書いていた時の最終版
SGGK020 : 019に体力ゲージ付けた
3D_TEST : >>139で言っていた >それを表す図やテストプログラムの実行ファイルをUPしようかと思ったけど ←のテストプログラムの実行ファイル
3D_TEST説明 : >>139で言っていた >それを表す図やテストプログラムの実行ファイルをUPしようかと思ったけど ←のそれを表す図
SGGK024 : 今書いてる最新版、選手がマウスカーソルを追いかけるだけ
置き場所
ttp://ux.getuploader.com/sggk/
208SGGK ◆6pZCoAtaxk
2011/04/10(日) 23:13:37.24ID:Opp/fMA0 今日は進捗無し。来週は現実の方がいろいろあり、作業が進まない予感。
とりあえずの目標は、2D座標系でやったのと同じ事が3D座標系でも出来るようにしたい。
時間、得点表示、前半、ハーフ、後半の切り替え関係などの実装を予定。
2Dの時はメインループの中にそのまま処理を書いてしまったため、メインがすごい長文になり読みにくかったので、
メインからは関数が呼ばれて、その関数の中に色々処理を書くようにしたい。
それと昨年末に読みかけだった3Dの本をもう少し読んでみたい。
今のままだと当たり判定をどうすればよいのかわからないのでそのヒントを探すのが目的。
とりあえずの目標は、2D座標系でやったのと同じ事が3D座標系でも出来るようにしたい。
時間、得点表示、前半、ハーフ、後半の切り替え関係などの実装を予定。
2Dの時はメインループの中にそのまま処理を書いてしまったため、メインがすごい長文になり読みにくかったので、
メインからは関数が呼ばれて、その関数の中に色々処理を書くようにしたい。
それと昨年末に読みかけだった3Dの本をもう少し読んでみたい。
今のままだと当たり判定をどうすればよいのかわからないのでそのヒントを探すのが目的。
209179
2011/04/12(火) 01:29:16.27ID:iONqvBHy 動かしてみました。普通にもりもり動きましたよ〜
2D版でボール蹴ってゴールまで持っていこうと思ったけど体力切れて動けなくなったw
説明JPGは良く理解できなかったぜ…
日記の裏:
前回ユニットリストを表示させようとかなんとか言ってたけど
気がついたらWINDOWシステムを作っていた
何を言ってるか分からないと思うg(ry
なんか難しい…最初から固定表示にしとけば良かったんだ。。。
2D版でボール蹴ってゴールまで持っていこうと思ったけど体力切れて動けなくなったw
説明JPGは良く理解できなかったぜ…
日記の裏:
前回ユニットリストを表示させようとかなんとか言ってたけど
気がついたらWINDOWシステムを作っていた
何を言ってるか分からないと思うg(ry
なんか難しい…最初から固定表示にしとけば良かったんだ。。。
210SGGK ◆6pZCoAtaxk
2011/04/13(水) 05:32:57.65ID:c5UQB0E3 >>209
使ってみてくれてありがとうございます。
体力ゲージについては今度実装するときには修正してみます。
説明JPGについては今見直してみると説明というよりは説明図だけのような作りになってるので
また似た事をやるときがあればもう少し改善しようと思います。
関数はDXライブラリのものを使っていると注意書きしておけば良かったと今反省。
ユニットリストがマウスドラッグ出来るようになってるとか?
もしかして他者製ライブラリを使わないAPIいろいろ使うWINDOWSプログラミングで組んでると想像。
>208の「2D座標系でやったのと同じ事が3D座標系でも出来るようにしたい」に向けてちょっと復習。
2Dでやってたプログラムソースは、時間、当たり判定、状態遷移の3つ(まだ他にもあるかもしれない)がソースのあちこちで絡み合いワケがわからなくなってきていたので見やすくしたい。
とりあえず、選手関係のソース見て、どんな位置関係にオブジェクトがあればお互いデータやりとり出来てるとか、関数使わないとアドレス渡せないのかとか、
そういったコピペでやり過ごしてきた部分を見直してみた。
なんとなくこういうのはノート&手書きの方が頭に入りそうな感じがしたので今回はエクセル使わないでノートに手書きでやってみた。
ほんの少しだけ頭の中が整理されたような気がしたので、まず画面に試合経過時間を表示できるようにしたい。
時間は条件分岐に使うので、時間表示を優先したのが理由。
使ってみてくれてありがとうございます。
体力ゲージについては今度実装するときには修正してみます。
説明JPGについては今見直してみると説明というよりは説明図だけのような作りになってるので
また似た事をやるときがあればもう少し改善しようと思います。
関数はDXライブラリのものを使っていると注意書きしておけば良かったと今反省。
ユニットリストがマウスドラッグ出来るようになってるとか?
もしかして他者製ライブラリを使わないAPIいろいろ使うWINDOWSプログラミングで組んでると想像。
>208の「2D座標系でやったのと同じ事が3D座標系でも出来るようにしたい」に向けてちょっと復習。
2Dでやってたプログラムソースは、時間、当たり判定、状態遷移の3つ(まだ他にもあるかもしれない)がソースのあちこちで絡み合いワケがわからなくなってきていたので見やすくしたい。
とりあえず、選手関係のソース見て、どんな位置関係にオブジェクトがあればお互いデータやりとり出来てるとか、関数使わないとアドレス渡せないのかとか、
そういったコピペでやり過ごしてきた部分を見直してみた。
なんとなくこういうのはノート&手書きの方が頭に入りそうな感じがしたので今回はエクセル使わないでノートに手書きでやってみた。
ほんの少しだけ頭の中が整理されたような気がしたので、まず画面に試合経過時間を表示できるようにしたい。
時間は条件分岐に使うので、時間表示を優先したのが理由。
211179
2011/04/14(木) 01:35:15.18ID:euSLNc/U アレダデスヨネ、カメラからマウスの座標にレイ飛ばしてYが0になる場所を求めどうのこうのってヤツ。
それが良く分からなかったらから2Dに逃げた(ぉぃ
イエ、ハイ、勉強するのが嫌だっただけですゴメンナサイw
メニューバーをマウスドラッグで動かせるように〜ってヤツですね
WIN APIにその変の便利なのあるかもしれないけどWIN API良く分からないので
自前でメニューバーのボックス(唯のポリゴンの板です)とマウスポインタと当たり判定して
マウスクリック中なら移動させるってのをやろうと思った。
一応移動させるのはできたのは出来たけど、
バーどうしが重なったりすると両方動いたり下に潜り込んだり…。
位置固定にして、表示と非表示の切り替えだけにすりゃ良かったナァ、と。
それが良く分からなかったらから2Dに逃げた(ぉぃ
イエ、ハイ、勉強するのが嫌だっただけですゴメンナサイw
メニューバーをマウスドラッグで動かせるように〜ってヤツですね
WIN APIにその変の便利なのあるかもしれないけどWIN API良く分からないので
自前でメニューバーのボックス(唯のポリゴンの板です)とマウスポインタと当たり判定して
マウスクリック中なら移動させるってのをやろうと思った。
一応移動させるのはできたのは出来たけど、
バーどうしが重なったりすると両方動いたり下に潜り込んだり…。
位置固定にして、表示と非表示の切り替えだけにすりゃ良かったナァ、と。
212SGGK ◆6pZCoAtaxk
2011/04/14(木) 23:22:03.79ID:XhLhjLQN WINDOWは難しそうなテーマですね。
画面内のWINDOW全てが奥側から数えて何番目にあるかを記憶してその順番に描画してみるとか。
マウスでクリックしたら奥から一番最後の番号が付けられるとか。
でも複数のWINDOWが重なったらどうすればよいのかわからなくなってくる…。
今日は作業時間ほんのわずか。
2Dの最後のプログラムSGGK019(020はソース見づらいので使わない)のdrawGameMain()関数から抜き出した時間関係の行を使って、
GameTimeクラスを宣言してみた。このクラスのヘッダファイル作成作業がまだまだ途中。
それと>>207でUPした理由の補足
完成度に対する誤解を最小限にしておきたかった他に
自分が何らかの理由により作成続行不可能になった時、たとえわずかでもここで得たものを残しておこうかな〜と思ったこと。
作業を続けてソースが複雑化し、結局やり直すことになった場合、このSGGK024の段階が丁度良いので区切りとして残しておきたかったこと。
画面内のWINDOW全てが奥側から数えて何番目にあるかを記憶してその順番に描画してみるとか。
マウスでクリックしたら奥から一番最後の番号が付けられるとか。
でも複数のWINDOWが重なったらどうすればよいのかわからなくなってくる…。
今日は作業時間ほんのわずか。
2Dの最後のプログラムSGGK019(020はソース見づらいので使わない)のdrawGameMain()関数から抜き出した時間関係の行を使って、
GameTimeクラスを宣言してみた。このクラスのヘッダファイル作成作業がまだまだ途中。
それと>>207でUPした理由の補足
完成度に対する誤解を最小限にしておきたかった他に
自分が何らかの理由により作成続行不可能になった時、たとえわずかでもここで得たものを残しておこうかな〜と思ったこと。
作業を続けてソースが複雑化し、結局やり直すことになった場合、このSGGK024の段階が丁度良いので区切りとして残しておきたかったこと。
213SGGK ◆6pZCoAtaxk
2011/04/14(木) 23:30:34.53ID:XhLhjLQN 最後から2行目は自分のプログラムの進捗的なものがわずかという意味であり、
ここで得たものがわずかという意味では無いので念の為。
ここではいろいろ多く学ばせてもらってますので…(汗;
読み直してあせった。言葉って難しい。
ここで得たものがわずかという意味では無いので念の為。
ここではいろいろ多く学ばせてもらってますので…(汗;
読み直してあせった。言葉って難しい。
215179
2011/04/16(土) 03:34:02.42ID:WryT+KpS IF文とboolフラグのオンパレードになってきた…orz
とりあえずの×ボタンは簡単に実装できたけど、
消したのを表示するのは作ってない罠
経過時間は1フレーム毎の時間を求めてカウンタに足していくか引いてくか
するのがいいんじゃないカナー
gettimeとかの関数で取り出したのをそのまま使うと
ポーズとかややこしい事になりそうw
static int frame_time , time_know, time_back = GetNowCount(); //初期化
if(time_back != know_time;)time_back = time_know;
time_know = GetNowCount();
frame_time = time_back - time_know;
この3行を毎回回しとけばframe_time が求められるので、後は試合時間にframe_time を足してくだけ。
試合停止中は足さなければ良い。
リセットするときは試合時間を0にすれば良い…と。
とりあえずの×ボタンは簡単に実装できたけど、
消したのを表示するのは作ってない罠
経過時間は1フレーム毎の時間を求めてカウンタに足していくか引いてくか
するのがいいんじゃないカナー
gettimeとかの関数で取り出したのをそのまま使うと
ポーズとかややこしい事になりそうw
static int frame_time , time_know, time_back = GetNowCount(); //初期化
if(time_back != know_time;)time_back = time_know;
time_know = GetNowCount();
frame_time = time_back - time_know;
この3行を毎回回しとけばframe_time が求められるので、後は試合時間にframe_time を足してくだけ。
試合停止中は足さなければ良い。
リセットするときは試合時間を0にすれば良い…と。
216179
2011/04/16(土) 03:42:37.35ID:WryT+KpS あ、初期化ミス…↓こうでしたorz
//初期化
static int frame_time = 0
static inttime_know = GetNowCount() - 1;
static inttime_back = GetNowCount() - 1;
//1フレームの時間を求める処理
if(time_back != know_time;)time_back = time_know;
time_know = GetNowCount();
frame_time = time_back - time_know;
//初期化
static int frame_time = 0
static inttime_know = GetNowCount() - 1;
static inttime_back = GetNowCount() - 1;
//1フレームの時間を求める処理
if(time_back != know_time;)time_back = time_know;
time_know = GetNowCount();
frame_time = time_back - time_know;
217名前は開発中のものです。
2011/04/16(土) 15:03:11.50ID:aTo50Zu7 サッカーゲームのような、フレームごとの計算を繰り返していくタイプのプログラムの場合、
経過時間の管理は、実際の(現実世界の)経過時間ではなく、
処理したフレーム数で管理するほうが、合理的な結果が得られると思います。
経過時間の管理は、実際の(現実世界の)経過時間ではなく、
処理したフレーム数で管理するほうが、合理的な結果が得られると思います。
218SGGK ◆6pZCoAtaxk
2011/04/17(日) 00:44:52.38ID:mWz5D8BJ >>215,216
ありがとうございます。
自分はいままでbackとknowに相当するコードをなぜかソース内の別々の場所に書いてあり、ソースが読みにくくなっていたけど、
これを見て3行続けて書ける事が分かりましたので、早速修正してみます。
今回はメインループ内に書かれるソースコードを減らしてみたくてこの3行に相当する機能をクラス化することに挑戦。
結果、クラス内の行数はかなり増えてしまうけどreleaseモードでは成功。
debugモードでは時間表示が正しくなく、プログラムを終了させると「ヒープが壊れていることが原因として考えられます。」のようなエラーメッセージ。
いちおう半分はうまくいってるので、ゆっくり考えるつもり。
>>217
アドバイスありがとうございます。現時点のプログラムソースでは、
1フレーム計算毎に1ずつ増えていく変数を用意し、これを使って選手のアニメパターンを決定したりしてますが、
上記のdebugモードでの不具合が取れなかった場合、フレームタイムxループ回数を時間に単位変更して画面表示するようなやり方も検討してみます。
ありがとうございます。
自分はいままでbackとknowに相当するコードをなぜかソース内の別々の場所に書いてあり、ソースが読みにくくなっていたけど、
これを見て3行続けて書ける事が分かりましたので、早速修正してみます。
今回はメインループ内に書かれるソースコードを減らしてみたくてこの3行に相当する機能をクラス化することに挑戦。
結果、クラス内の行数はかなり増えてしまうけどreleaseモードでは成功。
debugモードでは時間表示が正しくなく、プログラムを終了させると「ヒープが壊れていることが原因として考えられます。」のようなエラーメッセージ。
いちおう半分はうまくいってるので、ゆっくり考えるつもり。
>>217
アドバイスありがとうございます。現時点のプログラムソースでは、
1フレーム計算毎に1ずつ増えていく変数を用意し、これを使って選手のアニメパターンを決定したりしてますが、
上記のdebugモードでの不具合が取れなかった場合、フレームタイムxループ回数を時間に単位変更して画面表示するようなやり方も検討してみます。
219SGGK ◆6pZCoAtaxk
2011/04/17(日) 01:48:23.54ID:mWz5D8BJ そういえば以前にもdebugモードでダメでreleaseモードではOKというのは、
releaseモードではチェックがされていないだけなので、バグが無いという意味ではないとこのスレで教わったのを思い出す。
まだ、この前UPしたバージョンにちょっと書き足しただけなんだから、
どこかに内容的な間違いがあるはずと思い良く見てみると1か所あったので直してコンパイルしてみたら直った!
これがなんでヒープ壊れる事につながっていたのかは結局わからずだけど、
とりあえずすっきり。(寝)
releaseモードではチェックがされていないだけなので、バグが無いという意味ではないとこのスレで教わったのを思い出す。
まだ、この前UPしたバージョンにちょっと書き足しただけなんだから、
どこかに内容的な間違いがあるはずと思い良く見てみると1か所あったので直してコンパイルしてみたら直った!
これがなんでヒープ壊れる事につながっていたのかは結局わからずだけど、
とりあえずすっきり。(寝)
220SGGK ◆6pZCoAtaxk
2011/04/17(日) 23:21:42.93ID:VrjRr7OP 昨日は起きていたのがいつもより遅かったので書けなかったけど、
昨日の間違いというのは、メインループ内のゲーム処理関数の最初の行に書いた2行の順序が逆だったこと。
(間違い)
m_Time.countGameTime();
if(m_Time.m_GameTimeState==CONTINUE){m_Time.displayGameTime();}
(正解)
if(m_Time.m_GameTimeState==CONTINUE){m_Time.displayGameTime();}
m_Time.countGameTime();
時間の測定はループ1回毎に時間を測定して、前回のループでの測定値との差を毎回足していくんだけど、
1回目のループでは前回のループの測定値がまだ存在しないので、差を計算しては困るので、
時間クラスに2つの状態STARTとCONTINUEという定数を定義しておいて、
初期値はSTARTにしておき、STARTの場合には差を計算しない。CONTINUEなら差を計算する。
1回目のループではSTARTなので時間の測定だけして、差は計算しない。そして状態をCONTINUEに変更する。
そしたら2回目のループ以降は差を計算してくれる。
間違いの例だと1行目で状態がCONTINUEに変更されてるので、まだ差を計算してないのに時間を画面に表示しようとしてしまう。
正解例の順にするとバグが出なくなった。
実は>>216で初期化値がGetNowCount() - 1となっている理由がわからなくて全部0にしてしまったので、
そこに何か関係があるのかと思ったりもしたけど、上記の方法でバグが出なくなったのでたぶん大丈夫。
昨日の間違いというのは、メインループ内のゲーム処理関数の最初の行に書いた2行の順序が逆だったこと。
(間違い)
m_Time.countGameTime();
if(m_Time.m_GameTimeState==CONTINUE){m_Time.displayGameTime();}
(正解)
if(m_Time.m_GameTimeState==CONTINUE){m_Time.displayGameTime();}
m_Time.countGameTime();
時間の測定はループ1回毎に時間を測定して、前回のループでの測定値との差を毎回足していくんだけど、
1回目のループでは前回のループの測定値がまだ存在しないので、差を計算しては困るので、
時間クラスに2つの状態STARTとCONTINUEという定数を定義しておいて、
初期値はSTARTにしておき、STARTの場合には差を計算しない。CONTINUEなら差を計算する。
1回目のループではSTARTなので時間の測定だけして、差は計算しない。そして状態をCONTINUEに変更する。
そしたら2回目のループ以降は差を計算してくれる。
間違いの例だと1行目で状態がCONTINUEに変更されてるので、まだ差を計算してないのに時間を画面に表示しようとしてしまう。
正解例の順にするとバグが出なくなった。
実は>>216で初期化値がGetNowCount() - 1となっている理由がわからなくて全部0にしてしまったので、
そこに何か関係があるのかと思ったりもしたけど、上記の方法でバグが出なくなったのでたぶん大丈夫。
221179
2011/04/18(月) 02:43:15.47ID:OTLjhXG7 最初の初期化で GetNowCount() - 1 を入れてるのは
最初のループ部分でバグった値を入れないようにするためですw
なのでGetNowCount() を取っちゃうと当然バグります
-1 は入れなくてもいいのですが最初のループに最速で到達しても1msを返すように設定してあるだけです
初期値に0を入れてしまうと
if(time_back != know_time;)time_back = time_know; //一回目は0 と 0 の比較になるので変化無し
time_know = GetNowCount(); //know が xxxxxxxxxxくらい?の数値になる
frame_time = time_back - time_know; //一回目はbackは0のままなので -xxxxxxxxxx桁くらいの数値が引かれてフレームタイムが-値でバグる
プログラム開始から終了までずっと測ってる前提で作ったので(タイトル画面等でも測定だけしてる)
ある部分だけ測るという場合はフラグ管理する、初期化を呼び出す等必要ですねぇ
ここまで書いてあれなんですが>>217さんの言う通り
経過時間 += 17ms 等で固定した方がいいかも知れないで
まぁFPSが固定されてるなら問題は出ないので余り気にする事も無いカモ…。
最初のループ部分でバグった値を入れないようにするためですw
なのでGetNowCount() を取っちゃうと当然バグります
-1 は入れなくてもいいのですが最初のループに最速で到達しても1msを返すように設定してあるだけです
初期値に0を入れてしまうと
if(time_back != know_time;)time_back = time_know; //一回目は0 と 0 の比較になるので変化無し
time_know = GetNowCount(); //know が xxxxxxxxxxくらい?の数値になる
frame_time = time_back - time_know; //一回目はbackは0のままなので -xxxxxxxxxx桁くらいの数値が引かれてフレームタイムが-値でバグる
プログラム開始から終了までずっと測ってる前提で作ったので(タイトル画面等でも測定だけしてる)
ある部分だけ測るという場合はフラグ管理する、初期化を呼び出す等必要ですねぇ
ここまで書いてあれなんですが>>217さんの言う通り
経過時間 += 17ms 等で固定した方がいいかも知れないで
まぁFPSが固定されてるなら問題は出ないので余り気にする事も無いカモ…。
222179
2011/04/18(月) 02:55:13.67ID:OTLjhXG7 あれ?
式間違ってるじゃん・・・/(^o^)\
ゴメンナサイ3行目 backとknow逆デシタ
f(time_back != know_time;)time_back = time_know; //一回目は0 と 0 の比較になるので変化無し
time_know = GetNowCount(); //know が xxxxxxxxxxくらい?の数値になる
frame_time = time_know - time_back; //一回目はbackは0のままなので xxxxxxxxxx - 0 でxxxxxxxxxくらいの値がフレームタイムに入る
ついでにちら裏:
WINDOWぽいのはなんとか形になった気がする
ので次の作業へー
フィールドの資源地とか基地ぽいの作るカナー
式間違ってるじゃん・・・/(^o^)\
ゴメンナサイ3行目 backとknow逆デシタ
f(time_back != know_time;)time_back = time_know; //一回目は0 と 0 の比較になるので変化無し
time_know = GetNowCount(); //know が xxxxxxxxxxくらい?の数値になる
frame_time = time_know - time_back; //一回目はbackは0のままなので xxxxxxxxxx - 0 でxxxxxxxxxくらいの値がフレームタイムに入る
ついでにちら裏:
WINDOWぽいのはなんとか形になった気がする
ので次の作業へー
フィールドの資源地とか基地ぽいの作るカナー
223SGGK ◆6pZCoAtaxk
2011/04/18(月) 23:13:36.71ID:kLP7Gc7/ >>221,222
ループが最速で到達した場合というのは想定してなかったので勉強になりました。
ありがとうございました。
今日は次の目標を考えて終了。
次の目標は、前半、ハーフタイム、後半、試合結果表示の4つの状態遷移実装。
ループが最速で到達した場合というのは想定してなかったので勉強になりました。
ありがとうございました。
今日は次の目標を考えて終了。
次の目標は、前半、ハーフタイム、後半、試合結果表示の4つの状態遷移実装。
224SGGK ◆6pZCoAtaxk
2011/04/19(火) 22:59:14.08ID:Y5+hNJcp 状態遷移は以下のような感じで実装。SGGK_019のソースの頃に比べれば短くなった感じ。
でも、これに選手の前半後半の攻撃方向入れ替えや得点表示などを組み込むとなると混乱しそうな予感。
switch (m_MatchState) {
case FIRST_HALF:
if(m_Time.m_TotalGameTime >= FIRST_HALF_GAME_TIME){
m_MatchState=HALF_TIME;
m_Time.resetGameTime();
}
break;
case HALF_TIME:
if(m_Time.m_TotalGameTime >= HALF_GAME_TIME){
m_MatchState=SECOND_HALF;
m_Time.resetGameTime();
}
break;
case SECOND_HALF:
if(m_Time.m_TotalGameTime >= SECOND_HALF_GAME_TIME){
m_MatchState=RESULT_DISPLAY;
m_Time.resetGameTime();
}
break;
case RESULT_DISPLAY:
if(m_Time.m_TotalGameTime >= RESULT_DISPLAY_TIME){
setGameState(GAME_OVER);
m_Time.resetGameTime();
}
break;
default:
break;
}
でも、これに選手の前半後半の攻撃方向入れ替えや得点表示などを組み込むとなると混乱しそうな予感。
switch (m_MatchState) {
case FIRST_HALF:
if(m_Time.m_TotalGameTime >= FIRST_HALF_GAME_TIME){
m_MatchState=HALF_TIME;
m_Time.resetGameTime();
}
break;
case HALF_TIME:
if(m_Time.m_TotalGameTime >= HALF_GAME_TIME){
m_MatchState=SECOND_HALF;
m_Time.resetGameTime();
}
break;
case SECOND_HALF:
if(m_Time.m_TotalGameTime >= SECOND_HALF_GAME_TIME){
m_MatchState=RESULT_DISPLAY;
m_Time.resetGameTime();
}
break;
case RESULT_DISPLAY:
if(m_Time.m_TotalGameTime >= RESULT_DISPLAY_TIME){
setGameState(GAME_OVER);
m_Time.resetGameTime();
}
break;
default:
break;
}
225SGGK ◆6pZCoAtaxk
2011/04/20(水) 22:43:09.69ID:rAZcxTJj でも、もっと良いやり方があるはずなので、
「ゲームプログラム 状態遷移」でネット検索。
以前も挫折したけど、また少しだけ調べてみるつもり。
「ゲームプログラム 状態遷移」でネット検索。
以前も挫折したけど、また少しだけ調べてみるつもり。
226179@SLG?
2011/04/23(土) 00:02:41.30ID:EVcHPUn1 うーん、基地というか資源地ぽいクラスを作ったけど
中身がユニットと変わらない罠・・・
後、マウスの座標をWINDOWSのアイコンの位置から取るようにしたら
なんかバグって座標がずれてたりしたけどなんとか直した。
手間食ったけど、やっとALT+TAB押さないと違うWINDOW行けない仕様から
普通にマウスでいけるようになった(ノ∀`)
中身がユニットと変わらない罠・・・
後、マウスの座標をWINDOWSのアイコンの位置から取るようにしたら
なんかバグって座標がずれてたりしたけどなんとか直した。
手間食ったけど、やっとALT+TAB押さないと違うWINDOW行けない仕様から
普通にマウスでいけるようになった(ノ∀`)
227SGGK ◆6pZCoAtaxk
2011/04/24(日) 00:01:37.30ID:rFlUji0A こちらの進捗は調べたり休んだりを繰り返しながら実質何も進まずな状態が続きそうな予感…(汗
228SGGK ◆6pZCoAtaxk
2011/04/25(月) 00:12:59.17ID:oJBn91bE >>224でも短くなった方だけど、ゲームのメイン処理の先頭にこれを書くのは
まだ長いような感じがした。それと、ゲームの時間帯の状態を表す定数と時間のリセットの処理を一緒に書くのも
後々わかりにくくなるような気がした。今はたまたま、この定数の切り替わりが起きる条件と時間のリセットが起きる条件が一緒だから
このように書けているだけなので、将来の想定外の変更を考えて分ける事を考えた。
ゲーム時間帯の状態を表す定数を決める関数を>>224の改造で作成。
>>224から時間のリセットの行を削除しただけのもの。
calMatchState()という名前にでもしておく。
そして時間のリセットを行う関数をそのあとに書けばいい。
但し、calMatchState()で先にゲーム時間帯の状態を変更されてしまうので、
状態の切り替わりが検知できるように状態を表す変数をもう一つ用意して現時点のゲーム時間帯の状態を表す定数値を保持しておく。
そうしておけば、直前の関数でゲーム時間帯の状態を表す定数値が変わったら、その値と保持していた値が異なるので、
その時に時間をリセットして、現時点のゲーム時間帯の状態を表す定数値は更新する。
いちおうこれでプログラムは同じように動いてくれた。
時間リセットを判定する関数は以下の様な感じ。
void SoccerGame::calTimeResetState()
{
if(m_MatchState!=m_MatchState1){
m_Time.resetGameTime();
m_MatchState1=m_MatchState;
}
}
まだ長いような感じがした。それと、ゲームの時間帯の状態を表す定数と時間のリセットの処理を一緒に書くのも
後々わかりにくくなるような気がした。今はたまたま、この定数の切り替わりが起きる条件と時間のリセットが起きる条件が一緒だから
このように書けているだけなので、将来の想定外の変更を考えて分ける事を考えた。
ゲーム時間帯の状態を表す定数を決める関数を>>224の改造で作成。
>>224から時間のリセットの行を削除しただけのもの。
calMatchState()という名前にでもしておく。
そして時間のリセットを行う関数をそのあとに書けばいい。
但し、calMatchState()で先にゲーム時間帯の状態を変更されてしまうので、
状態の切り替わりが検知できるように状態を表す変数をもう一つ用意して現時点のゲーム時間帯の状態を表す定数値を保持しておく。
そうしておけば、直前の関数でゲーム時間帯の状態を表す定数値が変わったら、その値と保持していた値が異なるので、
その時に時間をリセットして、現時点のゲーム時間帯の状態を表す定数値は更新する。
いちおうこれでプログラムは同じように動いてくれた。
時間リセットを判定する関数は以下の様な感じ。
void SoccerGame::calTimeResetState()
{
if(m_MatchState!=m_MatchState1){
m_Time.resetGameTime();
m_MatchState1=m_MatchState;
}
}
229SGGK ◆6pZCoAtaxk
2011/04/29(金) 23:24:14.14ID:r0lSNY0W 今、自分に負け気味な感じなのでしばらくダメかもしれない予感…。
いろいろ考えがあり、次は当たり判定をクラスで実装しようとしたけれど、
本当にクラスにした方がいいのか迷う。
当たり判定の関数を持つクラスのオブジェクトを選手やボールのオブジェクトに
メンバとして持たせるつもりだけど、時間が掛かりそうな予感。(理由は1行目)
いろいろ考えがあり、次は当たり判定をクラスで実装しようとしたけれど、
本当にクラスにした方がいいのか迷う。
当たり判定の関数を持つクラスのオブジェクトを選手やボールのオブジェクトに
メンバとして持たせるつもりだけど、時間が掛かりそうな予感。(理由は1行目)
230179 ◆SLG//siTD6
2011/05/01(日) 01:09:31.11ID:wJ8tL1/e トリップてすと。
プログラムの方はサボり気味で余りすすんでないけど
とりあえずユニットから弾撃てるようにしてみた。
実験的に実装したんで中身がスカスカだけどw
>>229
当たり判定はどうするか迷うねぇ
こっちも当たり判定はかなりややこしい事になってる・・・w
プログラムの方はサボり気味で余りすすんでないけど
とりあえずユニットから弾撃てるようにしてみた。
実験的に実装したんで中身がスカスカだけどw
>>229
当たり判定はどうするか迷うねぇ
こっちも当たり判定はかなりややこしい事になってる・・・w
231SGGK ◆6pZCoAtaxk
2011/05/02(月) 00:20:50.39ID:iqr3WKp3 >>230
トリップの文字にSLGが入ってる!
当たり判定のクラスは、当たり判定の範囲を示す四角の情報をメンバ変数に持ち、
そのメンバ変数を取り込んで番号を付けるメンバ関数、
当たり判定をしたいオブジェクトの四角情報を取り込み、その情報を基に判定する関数があればいいかなと考えてるけど、
まだ考えてるだけで実装が進んでない状況。ヘッダファイルだけは書いてみたけど、あまり自信無し。
トリップの文字にSLGが入ってる!
当たり判定のクラスは、当たり判定の範囲を示す四角の情報をメンバ変数に持ち、
そのメンバ変数を取り込んで番号を付けるメンバ関数、
当たり判定をしたいオブジェクトの四角情報を取り込み、その情報を基に判定する関数があればいいかなと考えてるけど、
まだ考えてるだけで実装が進んでない状況。ヘッダファイルだけは書いてみたけど、あまり自信無し。
232SGGK ◆6pZCoAtaxk
2011/05/08(日) 00:12:20.39ID:K9cPT3KQ 試行錯誤した挙句自分には>>231を実装するのは無理と判断…。
これをやりたかった理由は、選手のアニメパターンがジャンプしたりキックしたり変化した時にそれぞれに応じた
当たり判定を呼び出せるようなしくみがこの先必要なんじゃないかと思ったからだけど、とりあえず断念。
その他
今日は、ボールをメタセコイアモデルにしていたのをあえて以前の2Dに戻した。
当たり判定は、選手の足元xz平面上に32x32の矩形があるとし、
ボールも同様に8x8の矩形があるとし、これで書いてみる予定。
選手とボールが接触してなくても当たってしまうけど無視!
ジャンプしたら判定できなくなるけど、とりあえず最低限の実装を優先。
内容がかなり後退した感じ。
これをやりたかった理由は、選手のアニメパターンがジャンプしたりキックしたり変化した時にそれぞれに応じた
当たり判定を呼び出せるようなしくみがこの先必要なんじゃないかと思ったからだけど、とりあえず断念。
その他
今日は、ボールをメタセコイアモデルにしていたのをあえて以前の2Dに戻した。
当たり判定は、選手の足元xz平面上に32x32の矩形があるとし、
ボールも同様に8x8の矩形があるとし、これで書いてみる予定。
選手とボールが接触してなくても当たってしまうけど無視!
ジャンプしたら判定できなくなるけど、とりあえず最低限の実装を優先。
内容がかなり後退した感じ。
233SGGK ◆6pZCoAtaxk
2011/05/08(日) 22:55:14.85ID:MKRAe4w3 今日もあまり進まず。
当たり判定クラスの中に作った矩形当たり判定用メンバ関数は最初は、
bool CollisionCheck::isHit(FieldPlayer *, BallData *);//選手とボールの当たり判定
のようなものを考えていたけど、
bool CollisionCheck::isHit(VECTOR,int,int,VECTOR,int,int);//引数:オブジェクト座標、当たり矩形縦、横、オブジェクト座標、当たり矩形縦、横
に変更してみた。1番目の方は選手とボールにしか使えないけど、2番目のようにすれば汎用性が高いのではと考えたのが理由。
ボールをけるボタンを押したときに選手とボールのあたりが真なら、ボールが一定の速度で移動するようにするつもり。
そのときに何回ループしたらボール停止というのではなく、ボールの速度が少しずつ0に近づき、0になったら停止するようにしたいけど、
物理を忘れてしまってるし、当時の記憶がよみがえったとしても問題は解けなかったと思うので、
紙に点と矢印を書いて、どうするか考えてるところ。
当たり判定クラスの中に作った矩形当たり判定用メンバ関数は最初は、
bool CollisionCheck::isHit(FieldPlayer *, BallData *);//選手とボールの当たり判定
のようなものを考えていたけど、
bool CollisionCheck::isHit(VECTOR,int,int,VECTOR,int,int);//引数:オブジェクト座標、当たり矩形縦、横、オブジェクト座標、当たり矩形縦、横
に変更してみた。1番目の方は選手とボールにしか使えないけど、2番目のようにすれば汎用性が高いのではと考えたのが理由。
ボールをけるボタンを押したときに選手とボールのあたりが真なら、ボールが一定の速度で移動するようにするつもり。
そのときに何回ループしたらボール停止というのではなく、ボールの速度が少しずつ0に近づき、0になったら停止するようにしたいけど、
物理を忘れてしまってるし、当時の記憶がよみがえったとしても問題は解けなかったと思うので、
紙に点と矢印を書いて、どうするか考えてるところ。
234名前は開発中のものです。
2011/05/08(日) 23:55:10.30ID:45vHEn5A235名前は開発中のものです。
2011/05/08(日) 23:58:57.92ID:45vHEn5A すまん訂正、-moveにしないとダメだなw
f=-move/2
-moveを使うと常に移動方向と逆向きに力がかかる
f=-move/2
-moveを使うと常に移動方向と逆向きに力がかかる
236名前は開発中のものです。
2011/05/09(月) 00:20:15.21ID:Q5/CRoYG F=ma
v+=aΔt
x+=vΔt
だろ
v+=aΔt
x+=vΔt
だろ
237名前は開発中のものです。
2011/05/09(月) 01:17:50.08ID:SHBGDval238名前は開発中のものです。
2011/05/09(月) 03:49:37.28ID:FkwWv0YK >>231
ボールとの当たり判定をするなら矩形よりも円(球)の方が自然じゃないでしょうか。
プレイヤー側も球体の集合として定義しておき、
ボール中心とプレイヤー判定球の中心間の距離<ボール半径+プレイヤー判定球の半径
となったら、接触していることになります。
プレイヤー判定球に頭、足、手などの属性をつければ、どこに当たっているかも判定できると思います。
ボールとの当たり判定をするなら矩形よりも円(球)の方が自然じゃないでしょうか。
プレイヤー側も球体の集合として定義しておき、
ボール中心とプレイヤー判定球の中心間の距離<ボール半径+プレイヤー判定球の半径
となったら、接触していることになります。
プレイヤー判定球に頭、足、手などの属性をつければ、どこに当たっているかも判定できると思います。
239名前は開発中のものです。
2011/05/09(月) 03:54:43.87ID:FkwWv0YK >>233
物理的には、
・重力
・跳ね返りによるロス…地面やゴールポストとのバウンドの際、運動エネルギーの一部が消失
・ころがり摩擦抵抗…ボールが着地しているときのみ
・空気抵抗…ボールの高度に関わらず場の空気の流れ(風)との速度差に応じて加速
風が無い環境なら、極端な例だと紙風船を思い切り投げたときのようになります。
・ボールのスピン…減速要因ではありませんが空気抵抗による曲げ加速の一種
空気抵抗に配慮するなら合わせて検討してみてください。
などが考えられます。
ちなみに摩擦によるボールの減速については、ボールの速度ベクトル(の水平成分)に対して
1より小さい数(0.995とか)を毎フレームごとに掛けるという簡易な方法でも、それらしく見えると思います。
物理的には、
・重力
・跳ね返りによるロス…地面やゴールポストとのバウンドの際、運動エネルギーの一部が消失
・ころがり摩擦抵抗…ボールが着地しているときのみ
・空気抵抗…ボールの高度に関わらず場の空気の流れ(風)との速度差に応じて加速
風が無い環境なら、極端な例だと紙風船を思い切り投げたときのようになります。
・ボールのスピン…減速要因ではありませんが空気抵抗による曲げ加速の一種
空気抵抗に配慮するなら合わせて検討してみてください。
などが考えられます。
ちなみに摩擦によるボールの減速については、ボールの速度ベクトル(の水平成分)に対して
1より小さい数(0.995とか)を毎フレームごとに掛けるという簡易な方法でも、それらしく見えると思います。
240SGGK ◆6pZCoAtaxk
2011/05/09(月) 23:53:46.13ID:7TJ8pACL >>234〜>>239
多くのアドバイス、ありがとうございます。全部活用していきます。
>>234,>>235,>>236,>>237
なんとなく分かってきました。
昨日考えていた時は、等加速度αのt秒後の位置xの式が物理の本にあったとして、
これをゲームに応用するには、移動を始めた初期位置と初期速度に対してframetime後、2*frametime後、3*frametime後、…n*frametime後の位置を計算しなくてはと思い悩んでいたけど、
毎フレーム単位毎に常にその時の数値が初期値であると考えてframetime後の数値を計算するならば、公式がそのまま使えそうな感じ。
アドバイスのと同じ内容ですけど、たぶん、
frametime後の位置=現在位置+(現在速度 x frametime)+ ((加速度xframetime)x frametime/2 )
(注:加速度は実際の動きを見ながらマイナスの小さい値を設定)
を毎ループ繰り返していけば出来そうな予感。
>>238
前のプログラムが矩形当たり判定で他に判定方法を知らなかったのが理由ですが、
矩形だと斜め45度からボールに近づくと水平に近づくより有利になってしまうし、
円(球)形方式ならその問題もなくて良さそうなのでこれに挑戦してみます。
>>239
今回のプログラムでは、
・重力、・跳ね返りによるロス、・ころがり摩擦抵抗までを簡易な方法で実装していきたいと思ってます。
いずれは、スピンも表現できるようにして、レベルが上がると2回曲がるシュートが出せるようになる等やってみたいです!
多くのアドバイス、ありがとうございます。全部活用していきます。
>>234,>>235,>>236,>>237
なんとなく分かってきました。
昨日考えていた時は、等加速度αのt秒後の位置xの式が物理の本にあったとして、
これをゲームに応用するには、移動を始めた初期位置と初期速度に対してframetime後、2*frametime後、3*frametime後、…n*frametime後の位置を計算しなくてはと思い悩んでいたけど、
毎フレーム単位毎に常にその時の数値が初期値であると考えてframetime後の数値を計算するならば、公式がそのまま使えそうな感じ。
アドバイスのと同じ内容ですけど、たぶん、
frametime後の位置=現在位置+(現在速度 x frametime)+ ((加速度xframetime)x frametime/2 )
(注:加速度は実際の動きを見ながらマイナスの小さい値を設定)
を毎ループ繰り返していけば出来そうな予感。
>>238
前のプログラムが矩形当たり判定で他に判定方法を知らなかったのが理由ですが、
矩形だと斜め45度からボールに近づくと水平に近づくより有利になってしまうし、
円(球)形方式ならその問題もなくて良さそうなのでこれに挑戦してみます。
>>239
今回のプログラムでは、
・重力、・跳ね返りによるロス、・ころがり摩擦抵抗までを簡易な方法で実装していきたいと思ってます。
いずれは、スピンも表現できるようにして、レベルが上がると2回曲がるシュートが出せるようになる等やってみたいです!
241SGGK ◆6pZCoAtaxk
2011/05/11(水) 23:28:32.89ID:dXE++lT+ すぐには進まないけど、当たり判定用関数の実装終了。
宣言と定義しただけで、まだ実際には使っていないので、バグが出るかもしれない。
選手がボールを蹴れるようにする実装を検討中。
>>233で言ってた
>ボールをけるボタンを押したときに選手とボールのあたりが真なら、ボールが一定の速度で移動するようにするつもり。
を実装するにはキック用キーを押した時に選手とボールの座標を取得して当たり判定をして、
当たりなら、例えばボールの状態の変数をセットしてそれに応じてボールの挙動が変化するみたいにすればよさそうだけど、
それをどこに書くかが悩むところで、選手のクラス内にも書けるし、ボールのクラス内でも書けそうな気がする。
でも、今回は選手やボールに関係するオブジェクト、その他のオブジェクトをメンバ変数に持っているSoccerGameクラスの中に
メンバ関数calVariousState()を定義して、その中でやってみるつもり。
SoccerGameクラス内のメンバ関数からなら他のメンバになってる選手やボールのオブジェクトとも情報のやりとりが
しやすそうだし、既に書いてあるcalMatchState()や calTimeResetState()と似た役割の関数になると思うので書きやすいかもしれない。
calVariousState()の中でいろいろなオブジェクトの状態を表す変数を更新して、その結果が他のオブジェクトに反映されるイメージ。
できるかどうか自信無し…。
宣言と定義しただけで、まだ実際には使っていないので、バグが出るかもしれない。
選手がボールを蹴れるようにする実装を検討中。
>>233で言ってた
>ボールをけるボタンを押したときに選手とボールのあたりが真なら、ボールが一定の速度で移動するようにするつもり。
を実装するにはキック用キーを押した時に選手とボールの座標を取得して当たり判定をして、
当たりなら、例えばボールの状態の変数をセットしてそれに応じてボールの挙動が変化するみたいにすればよさそうだけど、
それをどこに書くかが悩むところで、選手のクラス内にも書けるし、ボールのクラス内でも書けそうな気がする。
でも、今回は選手やボールに関係するオブジェクト、その他のオブジェクトをメンバ変数に持っているSoccerGameクラスの中に
メンバ関数calVariousState()を定義して、その中でやってみるつもり。
SoccerGameクラス内のメンバ関数からなら他のメンバになってる選手やボールのオブジェクトとも情報のやりとりが
しやすそうだし、既に書いてあるcalMatchState()や calTimeResetState()と似た役割の関数になると思うので書きやすいかもしれない。
calVariousState()の中でいろいろなオブジェクトの状態を表す変数を更新して、その結果が他のオブジェクトに反映されるイメージ。
できるかどうか自信無し…。
242SGGK ◆6pZCoAtaxk
2011/05/17(火) 22:44:39.91ID:s8XxjuX7 時間の流れが速すぎて生存報告のみな感じ。
ボールを蹴れるようにするにはあれが必要これが必要と考えていたら
何故かソートのプログラムで悩む。
ソートについては名前は聞いたことある位の認識なのでちょっと調べる必要があって時間かかった。
全部調べるのは無理なので最初に見たバブルソートを使う事にした。
これは時間のかかるソートだという事は調べているときに知ったけど、とりあえずこれでやることにした。
選手とボールの距離を計算してその数値が小さいものから順に並べ替えるんだけど、
選手の情報を格納しているリスト構造のコンテナクラス?の並びは変えないで、
もしソートしたらこの要素は何番目になるという情報を全ての選手のデータに格納できるようにしたかったので、てこずった。
今はやっと方法を思いついたところで、それで上手くいくかどうかによって今後の作業の進み具合も変わりそうな感じ。
やり方は22人分のデータを3つの数値a,b,cを持つ構造体型配列にもたせる。
aには、1、2、3、…、22の数値、bにはボールjとの距離、cの初期値は0にしておく。
bの値で構造体型配列をバブルソートして、隣同士の配列の順番入れ替えが起きたら、それぞれのcの値をプラス1したら一方はマイナス1する。
aの値は入れ替えを何度やってもソート終了まで変更なしのそのまま。
ソートが終わったら、例えばa=1の構造体配列のcが5なら、1+5=6
なので、リスト構造1番目の選手データはボールとの距離でソートしたら、6番目になるというこの6だけを
リスト構造の1番目の選手のメンバ変数に保持させておくイメージ。
まだ上手くいくかわからないうちに書いてしまった…(汗;
ボールを蹴れるようにするにはあれが必要これが必要と考えていたら
何故かソートのプログラムで悩む。
ソートについては名前は聞いたことある位の認識なのでちょっと調べる必要があって時間かかった。
全部調べるのは無理なので最初に見たバブルソートを使う事にした。
これは時間のかかるソートだという事は調べているときに知ったけど、とりあえずこれでやることにした。
選手とボールの距離を計算してその数値が小さいものから順に並べ替えるんだけど、
選手の情報を格納しているリスト構造のコンテナクラス?の並びは変えないで、
もしソートしたらこの要素は何番目になるという情報を全ての選手のデータに格納できるようにしたかったので、てこずった。
今はやっと方法を思いついたところで、それで上手くいくかどうかによって今後の作業の進み具合も変わりそうな感じ。
やり方は22人分のデータを3つの数値a,b,cを持つ構造体型配列にもたせる。
aには、1、2、3、…、22の数値、bにはボールjとの距離、cの初期値は0にしておく。
bの値で構造体型配列をバブルソートして、隣同士の配列の順番入れ替えが起きたら、それぞれのcの値をプラス1したら一方はマイナス1する。
aの値は入れ替えを何度やってもソート終了まで変更なしのそのまま。
ソートが終わったら、例えばa=1の構造体配列のcが5なら、1+5=6
なので、リスト構造1番目の選手データはボールとの距離でソートしたら、6番目になるというこの6だけを
リスト構造の1番目の選手のメンバ変数に保持させておくイメージ。
まだ上手くいくかわからないうちに書いてしまった…(汗;
243名前は開発中のものです。
2011/05/17(火) 23:03:28.52ID:z1f8XmMA そんなに難しいことしないで、「選手の情報を格納しているクラス」の”ポインタの配列”をソートすればいいんじゃない?
244179 ◆SLG//siTD6
2011/05/18(水) 12:20:58.07ID:5rb+12nD 難しすぎて理解できないぜ・・・w
というか、最後3行あたりの用途ならソートしなくても
単純に自分よりボールに近い選手の数を数えればいいんじゃ..?
チラ裏:
ここ2週間ほど忙しくてプログラムから離れてたらクソースが読めなくなってしまったんだぜ・・・
誰だこんな汚いソース書いたのは。。
というか、最後3行あたりの用途ならソートしなくても
単純に自分よりボールに近い選手の数を数えればいいんじゃ..?
チラ裏:
ここ2週間ほど忙しくてプログラムから離れてたらクソースが読めなくなってしまったんだぜ・・・
誰だこんな汚いソース書いたのは。。
245SGGK ◆6pZCoAtaxk
2011/05/18(水) 23:50:48.43ID:SMykIXyq >>243
アドバイス、ありがとうございます。
242での説明が不足していたせいもあり、実は自分のプログラムは「選手の情報を格納しているクラス」のオブジェクト22個(選手22人分)を
配列に入れているやり方でなくて、例えば、list<FieldPlayer>m_FieldPlayerList のようにFieldPlayer型のオブジェクトをpush_back関数で次々に入れていけるメンバ、m_FieldPlayerListを定義して、
それらの要素にはイテレータ、list<FieldPlayer>::iterator it;のような命令を書いて、このitを++したり、−−したりする方法でアクセスする感じの実装なので、ポインタでのアクセスが出来なさそうです。
でも、「ポインタの配列をソートする」でネット検索すると、「検索結果ロベールのC++教室 - 第28章 たのしいソート5」というページがヒットしたので、これの1から5までを読んで、実装はまだ理解できないけど考え方がなんとなくわかりました。
これと243氏の”ポインタの配列”をソートするやり方を合わせて
「選手の情報を格納しているクラス」内のメンバ変数で順番を知りたいデータ(距離とか)を構造体配列に移して、それにアクセスするポインタ配列を用意し、そのポインタ配列がソートされるといった仕組みを内部に持っている関数、
つまり、選手の番号を入れたらボールの近さが22人中何番目かがリターンされる関数を作ってみようと思います。
>>244
実はまだ考えてないのですが、今わかってる距離の利用法として、ボールに近い選手を両チームから1人ずつ選び頭付近にマークを出すとか、
ボールから7番目以降の距離にいる選手は守りの動きをするなど、1ループで何度かボールとの距離情報が必要になると思われるので、
その都度同じソートをすると時間がかかりそうなので、一度計算したソート結果を選手のオブジェクトのメンバ変数に保持させておこうかなと思ったため>>242のようになってしまってます。
自分も作業からしばらく離れてて、あれッ?と思うほどに読めなくなった事がよくありましたので気持ちがよくわかります。(汗;
アドバイス、ありがとうございます。
242での説明が不足していたせいもあり、実は自分のプログラムは「選手の情報を格納しているクラス」のオブジェクト22個(選手22人分)を
配列に入れているやり方でなくて、例えば、list<FieldPlayer>m_FieldPlayerList のようにFieldPlayer型のオブジェクトをpush_back関数で次々に入れていけるメンバ、m_FieldPlayerListを定義して、
それらの要素にはイテレータ、list<FieldPlayer>::iterator it;のような命令を書いて、このitを++したり、−−したりする方法でアクセスする感じの実装なので、ポインタでのアクセスが出来なさそうです。
でも、「ポインタの配列をソートする」でネット検索すると、「検索結果ロベールのC++教室 - 第28章 たのしいソート5」というページがヒットしたので、これの1から5までを読んで、実装はまだ理解できないけど考え方がなんとなくわかりました。
これと243氏の”ポインタの配列”をソートするやり方を合わせて
「選手の情報を格納しているクラス」内のメンバ変数で順番を知りたいデータ(距離とか)を構造体配列に移して、それにアクセスするポインタ配列を用意し、そのポインタ配列がソートされるといった仕組みを内部に持っている関数、
つまり、選手の番号を入れたらボールの近さが22人中何番目かがリターンされる関数を作ってみようと思います。
>>244
実はまだ考えてないのですが、今わかってる距離の利用法として、ボールに近い選手を両チームから1人ずつ選び頭付近にマークを出すとか、
ボールから7番目以降の距離にいる選手は守りの動きをするなど、1ループで何度かボールとの距離情報が必要になると思われるので、
その都度同じソートをすると時間がかかりそうなので、一度計算したソート結果を選手のオブジェクトのメンバ変数に保持させておこうかなと思ったため>>242のようになってしまってます。
自分も作業からしばらく離れてて、あれッ?と思うほどに読めなくなった事がよくありましたので気持ちがよくわかります。(汗;
246179 ◆SLG//siTD6
2011/05/25(水) 02:34:04.49ID:XYH4jaxx チョイ調べたらイテレータからポインターにぶち込めるみたいだったけど
p = &*it みたいな感じで。
>>244 のは、選手数えて保持すればいいんじゃって事・・・w
やってる事は選択ソートとあまり変わらないし、保持したところでアクセスにもループいるから微妙っちゃ微妙。
ポインタ配列ソートならp[7] で7番目にアクセスできるから便利だね
チラ裏:
何をやろうとしてたか忘れたので
とりあえず資源関係を追加してみた。
TOPバーに数個のボタンと資源の残量表示するようにした。
次は資源基地の占領とか作ってみるかなぁ
あーでもユニットクラスの再設計もいるような・・・アニメーションクラスも作ってないし・・・orz
p = &*it みたいな感じで。
>>244 のは、選手数えて保持すればいいんじゃって事・・・w
やってる事は選択ソートとあまり変わらないし、保持したところでアクセスにもループいるから微妙っちゃ微妙。
ポインタ配列ソートならp[7] で7番目にアクセスできるから便利だね
チラ裏:
何をやろうとしてたか忘れたので
とりあえず資源関係を追加してみた。
TOPバーに数個のボタンと資源の残量表示するようにした。
次は資源基地の占領とか作ってみるかなぁ
あーでもユニットクラスの再設計もいるような・・・アニメーションクラスも作ってないし・・・orz
247SGGK ◆6pZCoAtaxk
2011/05/25(水) 23:02:14.26ID:WTP3xbuq >>246
ありがとうございます。今思うと自分のソースでも (*it).メンバ関数 のように書いてるところもあり、
*it がオブジェクトのような感じなので、それを考えれば p = &*it でやれそうなのにこれは全然思いつかなかった。
ノートに書いて忘れないようにしておきます。
ソートが今丁度出来たところなので、イテレータへのポインタ方式のソースへの適用は次回かそれ以降のソース改良のときに挑戦してみたいと思います。
ソート書くのに時間が掛かってしまい、途中で作業ペースも落ち気味になる。
ゲームスタート直後は選手とボールの距離が同じデータが複数あるので、
例えば1,1,1,1,5,6,7…になるはずのが、4,4,4,4,5,6,7…になってしまい悩んだけど、
番号付けるループ内にbreak文を入れたら直った。
これだけだと説明不足だけど、今回のはものすごく長いので、ソースの次回UPで見てもらえると助かります。
これで>>241まで戻ってボールを蹴る処理の実装に取り組めそうな予感。
ありがとうございます。今思うと自分のソースでも (*it).メンバ関数 のように書いてるところもあり、
*it がオブジェクトのような感じなので、それを考えれば p = &*it でやれそうなのにこれは全然思いつかなかった。
ノートに書いて忘れないようにしておきます。
ソートが今丁度出来たところなので、イテレータへのポインタ方式のソースへの適用は次回かそれ以降のソース改良のときに挑戦してみたいと思います。
ソート書くのに時間が掛かってしまい、途中で作業ペースも落ち気味になる。
ゲームスタート直後は選手とボールの距離が同じデータが複数あるので、
例えば1,1,1,1,5,6,7…になるはずのが、4,4,4,4,5,6,7…になってしまい悩んだけど、
番号付けるループ内にbreak文を入れたら直った。
これだけだと説明不足だけど、今回のはものすごく長いので、ソースの次回UPで見てもらえると助かります。
これで>>241まで戻ってボールを蹴る処理の実装に取り組めそうな予感。
248SGGK ◆6pZCoAtaxk
2011/05/25(水) 23:16:38.45ID:WTP3xbuq 次回ソース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…みたいになり直った。
なんとか説明できた!
it=(*fp).begin();
while(it!=(*fp).end()){
for(i=0;i<=21;i++){
if(*(d[i])==(*it).m_DistanceFromBall){
(*it).m_NumberFromBall=i+1;
break;
}
}
it++;
}
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…みたいになり直った。
なんとか説明できた!
it=(*fp).begin();
while(it!=(*fp).end()){
for(i=0;i<=21;i++){
if(*(d[i])==(*it).m_DistanceFromBall){
(*it).m_NumberFromBall=i+1;
break;
}
}
it++;
}
249SGGK ◆6pZCoAtaxk
2011/05/31(火) 23:13:10.10ID:45bt856E 1週間が早すぎるけどやっぱり進まず。(なかなか早く帰れないし、帰り遅いと疲れてしまって…と言い訳。)
選手がボールを蹴るキーを押したときに選手とボールのあたり判定が真ならボールの状態をKICKEDにして、(←ここまでは書けた。コンパイルは通るようになったけど、動かすと問題でるかもしれない。)
ボールの移動関数の方では、ボールの状態がKICKEDになったループの時だけ初速を計算し、状態をMOVINGにして、それ以降は速度0になるまで位置計算を繰り返すにしたいけど、この初速をプログラムのどこで計算するかに迷って時間かかってしまった。
ボールのクラスのメンバ関数でやろうとすると選手のデータを引数にしなければならず面倒に思ったから。
なぜなら初速を変える要因は選手だけでなく地面や壁やゴールバーなどもあるし、そのつどこれらを引数にすると処理が増えて複雑になりそう。
そこでボールデータクラスに初速をメンバ変数として持たせて、選手もボールも扱えるsoccergameクラス内で初速を計算してボールデータのメンバにセットして
ボール関数内ではその初速メンバにアクセスして位置を計算してみるようにしようと考えて今日は終了。
たしか今年の8月で4年が経つはずだけどなかなか進まない…。
いっそのことあと1年で完成させる!
という無理な目標でも立てて頑張った方がずるずるいかなくていいのかもしれないと変な事考えてしまったりして…。
選手がボールを蹴るキーを押したときに選手とボールのあたり判定が真ならボールの状態をKICKEDにして、(←ここまでは書けた。コンパイルは通るようになったけど、動かすと問題でるかもしれない。)
ボールの移動関数の方では、ボールの状態がKICKEDになったループの時だけ初速を計算し、状態をMOVINGにして、それ以降は速度0になるまで位置計算を繰り返すにしたいけど、この初速をプログラムのどこで計算するかに迷って時間かかってしまった。
ボールのクラスのメンバ関数でやろうとすると選手のデータを引数にしなければならず面倒に思ったから。
なぜなら初速を変える要因は選手だけでなく地面や壁やゴールバーなどもあるし、そのつどこれらを引数にすると処理が増えて複雑になりそう。
そこでボールデータクラスに初速をメンバ変数として持たせて、選手もボールも扱えるsoccergameクラス内で初速を計算してボールデータのメンバにセットして
ボール関数内ではその初速メンバにアクセスして位置を計算してみるようにしようと考えて今日は終了。
たしか今年の8月で4年が経つはずだけどなかなか進まない…。
いっそのことあと1年で完成させる!
という無理な目標でも立てて頑張った方がずるずるいかなくていいのかもしれないと変な事考えてしまったりして…。
250179 ◆SLG//siTD6
2011/06/02(木) 04:01:33.97ID:bbIJXBAa ずるずるでも続いてるならいつか出来上がるさ〜
自分はあきっぽいからずるずる続けられないんだよなぁ
すでにちょっと2Dスクロールアクションみたいなの作ってみたいなとか思ったり。
が、とりあえずSLGをそれっぽく完成させてるまで我慢。
段々コードが荒っぽくなってるけどw
チラ裏:
中立資源地の占領実装した。敵の資源地とかはまだ。
けど占領しても何も変わらないので自分のものになったか分からない、っていう。
ついでにユニットクラスの再設計?ちょっとコード読みやすくした。
ら、FPSが200→100まで落ち込んだ、HAHAHAワロス・・・
自分はあきっぽいからずるずる続けられないんだよなぁ
すでにちょっと2Dスクロールアクションみたいなの作ってみたいなとか思ったり。
が、とりあえずSLGをそれっぽく完成させてるまで我慢。
段々コードが荒っぽくなってるけどw
チラ裏:
中立資源地の占領実装した。敵の資源地とかはまだ。
けど占領しても何も変わらないので自分のものになったか分からない、っていう。
ついでにユニットクラスの再設計?ちょっとコード読みやすくした。
ら、FPSが200→100まで落ち込んだ、HAHAHAワロス・・・
251SGGK ◆6pZCoAtaxk
2011/06/02(木) 23:58:31.42ID:y33r2mcB 1年での完成はやっぱり無理だとしても諦める事だけは無いようにしたいな〜と思ってます。
自分もコードが早くも分かりにくくなってきてるので、危険な状態かもしれない(汗
選手がボールを蹴れる処理を書き終えてコンパイルしてみたが、
コンパイルは通るようになったものの、選手もボールも画面に表示されずで今日は終了。
自分もコードが早くも分かりにくくなってきてるので、危険な状態かもしれない(汗
選手がボールを蹴れる処理を書き終えてコンパイルしてみたが、
コンパイルは通るようになったものの、選手もボールも画面に表示されずで今日は終了。
252名前は開発中のものです。
2011/06/07(火) 00:00:23.92ID:OJpa3qNa 一気にゲームを完成させるのが難しいなら、要素ごとにマイルストーンを設定するのがいいですよ。
3D見下ろし型サッカーゲームだったら、
1.グラウンドとゴールを描画する。カメラを動かしたいのならその動かし方も決めて調整しておく。
2.ボールを配置し、試験的にマウスでクリックすると蹴ったように動くようにする(物理運動シミュレーション)。
3.ラインを割った状態(スローイン、コーナーキック、ゴールキック、得点)を判定し、復帰処理をつくる。
4.選手をまず1人表示し、動かせるようにする。
5.選手とボールの接触判定をし、マウスクリックの代わりに選手が蹴るようにする。
6.CPU選手をまずは1人登場させ、動くようにする。
7.ポジション別にCPU選手のAIを調整する。
8.タイム、スコア、勝敗、タイトル画面などの装飾要素を実装する。
の順番がおすすめです。
3D見下ろし型サッカーゲームだったら、
1.グラウンドとゴールを描画する。カメラを動かしたいのならその動かし方も決めて調整しておく。
2.ボールを配置し、試験的にマウスでクリックすると蹴ったように動くようにする(物理運動シミュレーション)。
3.ラインを割った状態(スローイン、コーナーキック、ゴールキック、得点)を判定し、復帰処理をつくる。
4.選手をまず1人表示し、動かせるようにする。
5.選手とボールの接触判定をし、マウスクリックの代わりに選手が蹴るようにする。
6.CPU選手をまずは1人登場させ、動くようにする。
7.ポジション別にCPU選手のAIを調整する。
8.タイム、スコア、勝敗、タイトル画面などの装飾要素を実装する。
の順番がおすすめです。
253SGGK ◆6pZCoAtaxk
2011/06/07(火) 23:23:39.99ID:iMg7vpsC >>252
ありがとうございます。このように全体を先にイメージした方がいろいろ良さそうですね。
今出来てるのは1の一部、4、8の一部ぐらいなので、あまり進んでいない様です。
どのくらい遅れているのかということに気付けるのも大事なので、完成までにやることをイメージしておくことは有効だと思います。
先は長いけれど、ここから頑張ってみます。
ボールを蹴る実装が上手くいかず。
ボール移動関数実行直後にブレーク入れてボールの座標を見ると、(-1.#IND00、-1.#IND00、-1.#IND00)になってた。
ネットで調べたらどこかで0で割ってるところがあるという意味らしい。
最初は気付かなかったが、速度ベクトルの大きさを1にする必要があるためVNorm(速度ベクトル)という関数を使ってた箇所があり、
初期化したときの速度ベクトルは(0,0,0)にしてたので、VNorm(速度ベクトル)の中でたぶん、大きさを1にするためにベクトルをベクトルの大きさで割ってるはずで、
そのベクトルの大きさが0なので、ここが怪しいと思い、VNorm(速度ベクトル)の直後でブレークして、
ボールの座標を見たら、(-1.#IND00、-1.#IND00、-1.#IND00)だった。
ここを直そうと思ったところで終了。
ありがとうございます。このように全体を先にイメージした方がいろいろ良さそうですね。
今出来てるのは1の一部、4、8の一部ぐらいなので、あまり進んでいない様です。
どのくらい遅れているのかということに気付けるのも大事なので、完成までにやることをイメージしておくことは有効だと思います。
先は長いけれど、ここから頑張ってみます。
ボールを蹴る実装が上手くいかず。
ボール移動関数実行直後にブレーク入れてボールの座標を見ると、(-1.#IND00、-1.#IND00、-1.#IND00)になってた。
ネットで調べたらどこかで0で割ってるところがあるという意味らしい。
最初は気付かなかったが、速度ベクトルの大きさを1にする必要があるためVNorm(速度ベクトル)という関数を使ってた箇所があり、
初期化したときの速度ベクトルは(0,0,0)にしてたので、VNorm(速度ベクトル)の中でたぶん、大きさを1にするためにベクトルをベクトルの大きさで割ってるはずで、
そのベクトルの大きさが0なので、ここが怪しいと思い、VNorm(速度ベクトル)の直後でブレークして、
ボールの座標を見たら、(-1.#IND00、-1.#IND00、-1.#IND00)だった。
ここを直そうと思ったところで終了。
254名前は開発中のものです。
2011/06/08(水) 00:39:22.18ID:j4NqkXuU >>253
>完成までにやることをイメージしておくことは有効だと思います。
全体の把握というか、パーツ毎に分けて作業化するという意味合いが強いと思う
簡単にいうと段階毎に締め切りを設けて、そのスケジュール通りにこなしていけばいつの間にか完成している、という方法
いつか完成すれば(あるいは完成しなくても)いいという人にはあまり効果はない
>完成までにやることをイメージしておくことは有効だと思います。
全体の把握というか、パーツ毎に分けて作業化するという意味合いが強いと思う
簡単にいうと段階毎に締め切りを設けて、そのスケジュール通りにこなしていけばいつの間にか完成している、という方法
いつか完成すれば(あるいは完成しなくても)いいという人にはあまり効果はない
255SGGK ◆6pZCoAtaxk
2011/06/09(木) 00:10:01.09ID:HLDcGlpq256179 ◆SLG//siTD6
2011/06/09(木) 02:18:24.59ID:n5JLQBEP たしかに段階的学習スレのお題のはやりやすかった気がする・・・。
あの時は一週間くらいで一段階って自分ルール決めてたなぁ
今でも大体1週間くらいでなんか一つって感じだけど。
チラ裏:次の目標?
資源地とユニットに■マークに色つけて敵と見方分かるようにした。
敵の資源地に攻撃→HP0になったら→中立化→占領で自分の物になるようにした。
次は、弾が当たっても残りHPとか分からないのでそこらへんをなんとか
他ユニットのダメージ判定とか。プチAIとか。
あの時は一週間くらいで一段階って自分ルール決めてたなぁ
今でも大体1週間くらいでなんか一つって感じだけど。
チラ裏:次の目標?
資源地とユニットに■マークに色つけて敵と見方分かるようにした。
敵の資源地に攻撃→HP0になったら→中立化→占領で自分の物になるようにした。
次は、弾が当たっても残りHPとか分からないのでそこらへんをなんとか
他ユニットのダメージ判定とか。プチAIとか。
257SGGK ◆6pZCoAtaxk
2011/06/09(木) 23:56:56.45ID:k3OGT/+I 翌日になって確かに23日は厳しすぎかもしれないと思えてきました。
一週間でひとつが丁度良さそうな感じ。
とりあえずは23日目標で頑張ってみて、その結果を見て次の行動を考えてみようと思います。
AIは難しそうですね。
自分も7番でやろうとしてるけど、選手中心半径何ドットにボールが入ったらボールに向かうような処理を書いて
とりあえずAIということにしてみる予定です。
カメラを動かすとフィールド上でマウスが示す座標が変わり、
これによるプログラム全体への影響箇所を短期間で直すのは無理なので、
今回はカメラ固定として、とりあえず1番は完了にする。
今は2番で、マウスがクリックされた瞬間のフィールド上でマウスが示す座標を取得する関数を
どうするか考えているところ。
一週間でひとつが丁度良さそうな感じ。
とりあえずは23日目標で頑張ってみて、その結果を見て次の行動を考えてみようと思います。
AIは難しそうですね。
自分も7番でやろうとしてるけど、選手中心半径何ドットにボールが入ったらボールに向かうような処理を書いて
とりあえずAIということにしてみる予定です。
カメラを動かすとフィールド上でマウスが示す座標が変わり、
これによるプログラム全体への影響箇所を短期間で直すのは無理なので、
今回はカメラ固定として、とりあえず1番は完了にする。
今は2番で、マウスがクリックされた瞬間のフィールド上でマウスが示す座標を取得する関数を
どうするか考えているところ。
258名前は開発中のものです。
2011/06/10(金) 19:38:35.81ID:HbOQx0Jb259SGGK ◆6pZCoAtaxk
2011/06/11(土) 00:17:49.91ID:TMzi+Wx3260名前は開発中のものです。
2011/06/17(金) 23:39:19.78ID:qmzwBamB イラストだけフリー素材を使うのはスレチかな?
261名前は開発中のものです。
2011/06/18(土) 11:32:10.91ID:j8vO9QDT 良いと思うよ
262SGGK ◆6pZCoAtaxk
2011/06/19(日) 00:21:13.27ID:Zcvt1Nsn こ…これは誤爆レスなのでしょうか?
こちらは全然進まずで、マウスでカメラ動かす為の前準備としてマウスのクリックとドラッグの判定をする関数を書こうとしているところ。
こちらは全然進まずで、マウスでカメラ動かす為の前準備としてマウスのクリックとドラッグの判定をする関数を書こうとしているところ。
263179 ◆SLG//siTD6
2011/06/19(日) 03:44:59.57ID:EkbDCXyb スレ名が「1人で〜」だから・・・?
いいんじゃないの?
ダメだったら俺もスレチだぜorz
テクスチャは○とか×とかで済ませてるけど、効果音とか無理だしなぁ・・・まだそこまでいってないケド。
チラ裏:
HPバーととかユニットの死亡処理(HP0で消す)とか作った。
次はユニット生産?とか。とりあえずボタン押したら基地からユニット出すように作ろう。。。
どっかにSLGの段階的LV表みたいなもの無いもんかな
いいんじゃないの?
ダメだったら俺もスレチだぜorz
テクスチャは○とか×とかで済ませてるけど、効果音とか無理だしなぁ・・・まだそこまでいってないケド。
チラ裏:
HPバーととかユニットの死亡処理(HP0で消す)とか作った。
次はユニット生産?とか。とりあえずボタン押したら基地からユニット出すように作ろう。。。
どっかにSLGの段階的LV表みたいなもの無いもんかな
264SGGK ◆6pZCoAtaxk
2011/06/19(日) 12:39:30.15ID:Zcvt1Nsn265名前は開発中のものです。
2011/06/19(日) 14:11:27.41ID:lmGZwizg 260です。書きっぱで申し訳ないです。
私は恋愛ADVを作ろうとしています。
まだ企画段階で、吉里吉里もインストールしてない状態ですが、修行してがんばります。
イラストだけは描けません。
そういえば、効果音やボイスも1人だと厳しいですね。やろうとしてやれないことはないですが。。。
私は恋愛ADVを作ろうとしています。
まだ企画段階で、吉里吉里もインストールしてない状態ですが、修行してがんばります。
イラストだけは描けません。
そういえば、効果音やボイスも1人だと厳しいですね。やろうとしてやれないことはないですが。。。
266名前は開発中のものです。
2011/06/19(日) 16:19:10.42ID:n6GuNgkN 恋愛ADVを作るなら、ゲーム中のどんな要素(画像、テキストや台詞、イベント類…)を
重要視したいかポイントを定めて、まずその部分を徹底的に作りこむといいんじゃないかな?
仮にそれがもしイラストなのだとすれば、
他人の素材を借りて作ったのでは自分で作ったことにはならないので(つまりスレ違いなので)、
ゲームを作りながらでなくてもいいから、普通にイラストの修行をするといいと思う。
重要視したいかポイントを定めて、まずその部分を徹底的に作りこむといいんじゃないかな?
仮にそれがもしイラストなのだとすれば、
他人の素材を借りて作ったのでは自分で作ったことにはならないので(つまりスレ違いなので)、
ゲームを作りながらでなくてもいいから、普通にイラストの修行をするといいと思う。
267名前は開発中のものです。
2011/06/19(日) 16:50:25.41ID:n6GuNgkN 179氏のSLGに関しては、どのような内容か不明だけれど、
氏の発言を読み返した限りでは実装技術で困っている様子はなさそう。
しかし要素技術から行き当たりばったりにボトムアップで作ろうとしているらしい。
アクションゲーム向きな作り方だと思うけれど、SLGやRPGには不向きだと思う。
コーディングに入る前に、ゲームに登場させる要素
(キャラクター、ユーザインタフェース、状態遷移図、判定式…)の一覧表を作り、
個別の設計図と全体の工程表を作ってから作業するのがいいと思う。
あと、規模によっては要素設計用のエディタを先に作ったほうが効率的。
氏の発言を読み返した限りでは実装技術で困っている様子はなさそう。
しかし要素技術から行き当たりばったりにボトムアップで作ろうとしているらしい。
アクションゲーム向きな作り方だと思うけれど、SLGやRPGには不向きだと思う。
コーディングに入る前に、ゲームに登場させる要素
(キャラクター、ユーザインタフェース、状態遷移図、判定式…)の一覧表を作り、
個別の設計図と全体の工程表を作ってから作業するのがいいと思う。
あと、規模によっては要素設計用のエディタを先に作ったほうが効率的。
268名前は開発中のものです。
2011/06/19(日) 17:47:09.16ID:lmGZwizg >>266
今のところ、一番こだわりたいのは、テキストです。
台詞とト書きだけみたいなテキストだとすごくさびしく感じていたので、
うざったくならない程度に、もうちょっと描写を入れてみたいと思っています。
現在、メインシナリオのプロット中。
がんばる。がんばる。
今のところ、一番こだわりたいのは、テキストです。
台詞とト書きだけみたいなテキストだとすごくさびしく感じていたので、
うざったくならない程度に、もうちょっと描写を入れてみたいと思っています。
現在、メインシナリオのプロット中。
がんばる。がんばる。
269名前は開発中のものです。
2011/06/19(日) 19:54:58.72ID:n6GuNgkN まだプロットが上がっていない段階ではアドバイスにならないかもしれないけれど、
テキストで勝負するなら次の2タイプのいずれかを目指すといいと思う。
(A) テキスト中に巧妙に謎解き要素を含ませたフラグ立て謎解き形式
(B) テキスト自体が文学作品として成立するレベルのデジタルノベル形式
それによって、「こだわる」べき目標が見えてくるかも。
もちろん他のシステムでもいいと思うけれど、たとえば育成系ゲームだと
ゲームパラメータに直接関係しないテキストは追々読み飛ばされてしまうので、
こだわりの方向性が大きく違ってくる気がする。
テキストで勝負するなら次の2タイプのいずれかを目指すといいと思う。
(A) テキスト中に巧妙に謎解き要素を含ませたフラグ立て謎解き形式
(B) テキスト自体が文学作品として成立するレベルのデジタルノベル形式
それによって、「こだわる」べき目標が見えてくるかも。
もちろん他のシステムでもいいと思うけれど、たとえば育成系ゲームだと
ゲームパラメータに直接関係しないテキストは追々読み飛ばされてしまうので、
こだわりの方向性が大きく違ってくる気がする。
270SGGK ◆6pZCoAtaxk
2011/06/19(日) 23:33:27.48ID:Zcvt1Nsn なんだかスレが伸びてる。
>>265
自分は、やる気の出たときに少しずつ続けるような感じでやっています。
お互い気楽にいきましょう。
今日は、マウス3ボタンについてクリックとドラッグの判定できるところまで進んだ。
>>265
自分は、やる気の出たときに少しずつ続けるような感じでやっています。
お互い気楽にいきましょう。
今日は、マウス3ボタンについてクリックとドラッグの判定できるところまで進んだ。
271名前は開発中のものです。
2011/06/20(月) 12:39:53.64ID:loZm5s9w >269
Bの方向を目指して頑張ります。
>270
はい。頑張りましょう!
メインシナリオのプロットが粗方できたのですが、全ルート作っちゃっといたほうがいいでしょうかね。
あんまり長いとダレるので、そこそこの長さに留めてみました。
Bの方向を目指して頑張ります。
>270
はい。頑張りましょう!
メインシナリオのプロットが粗方できたのですが、全ルート作っちゃっといたほうがいいでしょうかね。
あんまり長いとダレるので、そこそこの長さに留めてみました。
272SGGK ◆6pZCoAtaxk
2011/06/20(月) 23:46:54.40ID:fqQ6mSJs 完成できる事を一度確認して、次から好みで長さを決めるというのもありな様な気がします。
こちらは、ホイール回転によるフィールドの拡大縮小機能の実装がうまくいかない状態…。
こちらは、ホイール回転によるフィールドの拡大縮小機能の実装がうまくいかない状態…。
273名前は開発中のものです。
2011/06/21(火) 00:46:16.91ID:fioCutCs 最初からあまり風呂敷広げすぎてもってやつですね。
とりあえずメインシナリオのテキスト作ってみて、早々にスクリプトの勉強はじめます。
とりあえずメインシナリオのテキスト作ってみて、早々にスクリプトの勉強はじめます。
274179 ◆SLG//siTD6
2011/06/21(火) 03:13:54.94ID:Nb3jaiP+275名前は開発中のものです。
2011/06/21(火) 04:50:18.50ID:MHP6wZYB >>271
過去に短編小説などを執筆し、他人に読んでもらった上で、
とりあえず作品としては成立しているレベル以上の評価を受けた経験があるなら、
バリエーションルートを含めて考えるのも自由じゃないかな。
そうでないなら、まず、メインシナリオだけに集中したほうがいいと思います。
過去に短編小説などを執筆し、他人に読んでもらった上で、
とりあえず作品としては成立しているレベル以上の評価を受けた経験があるなら、
バリエーションルートを含めて考えるのも自由じゃないかな。
そうでないなら、まず、メインシナリオだけに集中したほうがいいと思います。
276名前は開発中のものです。
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前後の定数)
マウスホイールの回転検出はできてる?
方法はいろいろあるけど、たとえばWM_MOUSEWHEELメッセージを処理する方法があるよ。
3Dゲームでパースペクティブビューを使用しているのであれば、
フィールドを拡大縮小するのではなく、カメラの座標を注視点に接近または離脱させればいい。
なお、その際には視点-注視点間の距離を一定値で増減するのではなく、一定率で乗算、除算してやると良い。
(カメラ位置をE、注視点をFとしたとき、E'= F+(E-F)*k or E'=F+(E-F)/k。 kは1.0前後の定数)
277名前は開発中のものです。
2011/06/21(火) 05:30:44.83ID:MHP6wZYB >>274
設計図については、他人に見せる必要はないので、しっかりしたものを作る必要はないけれど、
手書きメモ程度のもので良いのでノート上で整理してからコーディングに入ったほうが効率的だと思う。
全体的な工程の順序としては、
1.内部設計(ルール、パラメータ、バランスの調整)
2.各要素の実装
3.ユーザインタフェースの実装
4.システム統合
5.各種エフェクトの充実
のような感じ。
まあ179氏の場合、今の進め方でも、特に詰まっている様子はなさそうですが。
設計図については、他人に見せる必要はないので、しっかりしたものを作る必要はないけれど、
手書きメモ程度のもので良いのでノート上で整理してからコーディングに入ったほうが効率的だと思う。
全体的な工程の順序としては、
1.内部設計(ルール、パラメータ、バランスの調整)
2.各要素の実装
3.ユーザインタフェースの実装
4.システム統合
5.各種エフェクトの充実
のような感じ。
まあ179氏の場合、今の進め方でも、特に詰まっている様子はなさそうですが。
278260
2011/06/21(火) 13:01:25.60ID:fioCutCs とりあえずオープニングにあたるシナリオは出来ているので、
いったん吉里吉里/KAGで組んでみます。
いろいろアドバイスありがとうございますm(__)m
いったん吉里吉里/KAGで組んでみます。
いろいろアドバイスありがとうございますm(__)m
279SGGK ◆6pZCoAtaxk
2011/06/22(水) 00:06:09.17ID:TfzO15yA280260
2011/06/22(水) 00:08:48.05ID:TgbTdqkQ スクリプトいきなりつまずきましたが、なんとかやってます。
演出も考えながらだと、スクリプト組むだけで、相当時間がかかりますね。
くじけず頑張ります。
演出も考えながらだと、スクリプト組むだけで、相当時間がかかりますね。
くじけず頑張ります。
281名前は開発中のものです。
2011/06/22(水) 12:00:12.23ID:fBrDYNiX 吉里吉里か、あれは扱いが難しいよね
ちなみにデフォだとNスクリプタの方が高機能というのは知ってる?
だからNスクじゃ表現できないようなら吉里吉里に乗り換えるという順番の方が良いと思うけど
ちなみにデフォだとNスクリプタの方が高機能というのは知ってる?
だからNスクじゃ表現できないようなら吉里吉里に乗り換えるという順番の方が良いと思うけど
282名前は開発中のものです。
2011/06/22(水) 12:04:04.89ID:9GezxZuR >>281
Nスクはライセンスがめんどい
Nスクはライセンスがめんどい
283名前は開発中のものです。
2011/06/22(水) 12:11:30.60ID:fBrDYNiX >>282
・無料配布であれば企業/個人の区別や配布方法を問わず無料でお使いいただけます。
・雑誌付録にフリーウェア/シェアウェアとして収録する場合は無料でお使いいただけます。
・商業流通作品の販売の際には、使用料を一作につき40万円いただきます。
・同人流通作品の販売に関しては無料とさせていただきます。
特に作者(高橋直樹)への報告の義務はございません。
まとめると「商業以外なら無料で勝手に使える」
めんどいか?
・無料配布であれば企業/個人の区別や配布方法を問わず無料でお使いいただけます。
・雑誌付録にフリーウェア/シェアウェアとして収録する場合は無料でお使いいただけます。
・商業流通作品の販売の際には、使用料を一作につき40万円いただきます。
・同人流通作品の販売に関しては無料とさせていただきます。
特に作者(高橋直樹)への報告の義務はございません。
まとめると「商業以外なら無料で勝手に使える」
めんどいか?
284名前は開発中のものです。
2011/06/22(水) 12:28:18.65ID:9GezxZuR285260
2011/06/26(日) 23:51:24.50ID:xFrZRsWs 吉里吉里やりはじめた状態でNスクに手を出すと、
いろいろごっちゃになりそうなので、とりあえず吉里吉里で進めてみます。
前回の書き込みから、実はあまり進んでいません。
よくわからないところは飛ばして、全体をとりあえず作ってみることにします。
いろいろごっちゃになりそうなので、とりあえず吉里吉里で進めてみます。
前回の書き込みから、実はあまり進んでいません。
よくわからないところは飛ばして、全体をとりあえず作ってみることにします。
286SGGK ◆6pZCoAtaxk
2011/06/27(月) 23:20:47.45ID:DnwEKUYt 自分もどちらかといえば、全体を先につくってみたい方です。
拡大縮小の件、ホイール回した時のGetMouseWheelRotVol()の値をマウスのメンバ変数に保持して、
その保持した値を今度はカメラの移動関数でループ毎に足していたので、限界まで拡大縮小してしまっていた。
ホイールを回しているときだけ、足すようにしたら、上手く動いた。
次は、ホイールドラッグで画面を上下左右に動かせるようにしたいけど、最近なかなか作業時間が確保できない感じ。
確保できても動くプログラムが書けるかどうかわからないのが悩むところ。
拡大縮小の件、ホイール回した時のGetMouseWheelRotVol()の値をマウスのメンバ変数に保持して、
その保持した値を今度はカメラの移動関数でループ毎に足していたので、限界まで拡大縮小してしまっていた。
ホイールを回しているときだけ、足すようにしたら、上手く動いた。
次は、ホイールドラッグで画面を上下左右に動かせるようにしたいけど、最近なかなか作業時間が確保できない感じ。
確保できても動くプログラムが書けるかどうかわからないのが悩むところ。
287SGGK ◆6pZCoAtaxk
2011/06/28(火) 23:10:23.97ID:/iwsRyTC ホイールドラッグで画面を上下左右に動かせるようにする方法を考えるところまでで今日は終わり。
残り時間が少ないので、実装を後回しにして次の目標のマウス右ボタンドラッグでの回転の方法を考えてた。
ちなみに参考はメタセコイアの操作方法。右ボタンでぐるぐる回して、どういう法則で回してるのか考えてた。
残り時間が少ないので、実装を後回しにして次の目標のマウス右ボタンドラッグでの回転の方法を考えてた。
ちなみに参考はメタセコイアの操作方法。右ボタンでぐるぐる回して、どういう法則で回してるのか考えてた。
288SGGK ◆6pZCoAtaxk
2011/06/28(火) 23:20:58.79ID:/iwsRyTC 時間無い…と書くのはやめようとなんとなく思った。
もっとこう楽しくやるイメージでいかねば…(汗w
回す法則もなんとなく見えてきた感じ。
もっとこう楽しくやるイメージでいかねば…(汗w
回す法則もなんとなく見えてきた感じ。
289179 ◆SLG//siTD6
2011/06/29(水) 01:42:07.29ID:bFO62WPj こっちは全体ってかとりあえず実行出来るもの(最初なら真っ黒のウインドウ表示)作って後はひたすら追加ってな感じかなぁ
やっぱ、動いてる物あると分かりやすいし。
そして良く分からんところはコピペでいいんだy(ぇ 初期化とか物理式とか・・・
>>277
なんというか、まさに1を練ってないせいで詰まった、みたいな?w
生産用のウインドウ作ってボタン押したら自分の基地にユニット出すってのはできたんだけど
1 SLGみたいに 生産→プール→編成(グループ?)→出撃 にするべきか
2 このままRTSみたいにユニット選択→生産=出撃 で1ユニットごとに動かすようにするべきか・・・
たぶん1のが作りたい。しかし、すんげぇ大掛かりになりそうな気がする/(^
やっぱ、動いてる物あると分かりやすいし。
そして良く分からんところはコピペでいいんだy(ぇ 初期化とか物理式とか・・・
>>277
なんというか、まさに1を練ってないせいで詰まった、みたいな?w
生産用のウインドウ作ってボタン押したら自分の基地にユニット出すってのはできたんだけど
1 SLGみたいに 生産→プール→編成(グループ?)→出撃 にするべきか
2 このままRTSみたいにユニット選択→生産=出撃 で1ユニットごとに動かすようにするべきか・・・
たぶん1のが作りたい。しかし、すんげぇ大掛かりになりそうな気がする/(^
290名前は開発中のものです。
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つあれば充分、グループは何隊も作るというイメージ
1の実装
class unit; //ユニット
vector<unit*> pool_list; //プール
class group{ //編成(グループ)
vector<unit*> group_list;
};
生産する時はpush_backして
pool_list.push_back(new unit());
編成画面でpool_listの内容を表示する
どういうゲームか知らずにレスしてるので的外れだったらすまんけど
単純に考えてこんな感じじゃいかんのかな?
プールは1つあれば充分、グループは何隊も作るというイメージ
291SGGK ◆6pZCoAtaxk
2011/06/29(水) 23:51:37.47ID:pI8KOKmf 今思えば自分の場合、全体を先に作りたいと言っていたのは、自分自身未知の作業なので作れる自信が無かった為、
作れそうか見極めたいといった目的もあったと思っています。ちなみに全体と言ってるのは、最低限の処理の流れの実装みたいなものです。
全体とか関係なく作れる場合は、好み優先で進んだ方がモチベーションが続くかも。
ホイールドラッグで画面を上下左右に動かせるようになったけど、
メタセコイアみたいにマウスで画面をつかんで動くような感じになってないので、原因調査中。
作れそうか見極めたいといった目的もあったと思っています。ちなみに全体と言ってるのは、最低限の処理の流れの実装みたいなものです。
全体とか関係なく作れる場合は、好み優先で進んだ方がモチベーションが続くかも。
ホイールドラッグで画面を上下左右に動かせるようになったけど、
メタセコイアみたいにマウスで画面をつかんで動くような感じになってないので、原因調査中。
292SGGK ◆6pZCoAtaxk
2011/07/02(土) 01:37:53.85ID:Yr95b2iZ なんとか上下左右に動かせるようになった。(今日はたまたまこんな時間)
>291では、画面のフィールドが突然ロケットのような勢いで画面外に出て行ってしまったりして、
もうこれが自分の限界かと思った。
ディスプレイ画面上でマウスの示す位置がaからbまで移動すれば、3D座標系内のフィールド上の投影位置も
AからBに動くとして、そのベクトルABを算出して、カメラの位置ベクトルと注視点ベクトルに−ABしてやればうまくいくのではと思ってた。
これらの計算を始めた時の最初のカメラの位置をずっと初期値としてベクトルABを計算してループすればOKと思っていたのが間違いだったようだ。
毎ループ毎に計算した新しいカメラの位置および注視点ベクトルを次のループでの初期値にするよう書き直したら、
フィールドが飛んでいく不具合が解決!
>291では、画面のフィールドが突然ロケットのような勢いで画面外に出て行ってしまったりして、
もうこれが自分の限界かと思った。
ディスプレイ画面上でマウスの示す位置がaからbまで移動すれば、3D座標系内のフィールド上の投影位置も
AからBに動くとして、そのベクトルABを算出して、カメラの位置ベクトルと注視点ベクトルに−ABしてやればうまくいくのではと思ってた。
これらの計算を始めた時の最初のカメラの位置をずっと初期値としてベクトルABを計算してループすればOKと思っていたのが間違いだったようだ。
毎ループ毎に計算した新しいカメラの位置および注視点ベクトルを次のループでの初期値にするよう書き直したら、
フィールドが飛んでいく不具合が解決!
293179 ◆SLG//siTD6
2011/07/05(火) 05:05:11.63ID:oJBQ1HG/294SGGK ◆6pZCoAtaxk
2011/07/05(火) 23:43:42.69ID:Bc+Kj7b6 >>293
カメラ周りはまだ時間かかりそうな感じだけど頑張ります。
実はまだメタセコイアを眺めてて回転の法則が見いだせない状態(汗
横の回転はたぶんこうプログラムすればいいだろうというイメージ出来たけど、
縦の回転はあともう少しで思いつきそうな感じ。
カメラ周りはまだ時間かかりそうな感じだけど頑張ります。
実はまだメタセコイアを眺めてて回転の法則が見いだせない状態(汗
横の回転はたぶんこうプログラムすればいいだろうというイメージ出来たけど、
縦の回転はあともう少しで思いつきそうな感じ。
295名前は開発中のものです。
2011/07/07(木) 04:17:05.86ID:ATCSo0JT メタセコイアの視点操作って、注視点関係なしにワーク原点を基準に
ヨー角ピッチ角の回転と距離だけじゃないかな?
CADには適しているけれど、ゲーム用のカメラとしては参考にならないよ。
ヨー角ピッチ角の回転と距離だけじゃないかな?
CADには適しているけれど、ゲーム用のカメラとしては参考にならないよ。
296SGGK ◆6pZCoAtaxk
2011/07/07(木) 23:37:42.40ID:RwXcD4/0 >>295
ゲームに不向とは気付かずに作業してました。ありがとうございます。
早目にこの段階を終わらせて次いきたいと思ってます。
今日は何も出来なかったけど、いちおう回転だけは土日になんとかしたい気持ち。
縦の回転方法も考えてみたので、今度こそプログラムを書いてみます。
ゲームに不向とは気付かずに作業してました。ありがとうございます。
早目にこの段階を終わらせて次いきたいと思ってます。
今日は何も出来なかったけど、いちおう回転だけは土日になんとかしたい気持ち。
縦の回転方法も考えてみたので、今度こそプログラムを書いてみます。
297179 ◆SLG//siTD6
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・`)
色々違ってたらゴメンナサイ、と・・・。
2、1のマトリックスから カメラから原点までの距離(0,0, - 距離)をトランスフォーム
3、マウスでのミドルボタン平行移動は(移動量X ,移動量 Y , 移動量Z(0))で1のマトリックスからトランスフォーム
4、2と3を足す
5、カメラに各要素をセット(4のposition、角度X,角度Y,0)
3、の 移動量Zの部分はメタセコアではズーム代わりになってると思う。
多分メタセコアのはこんな感じだと思(・x・`)
色々違ってたらゴメンナサイ、と・・・。
298SGGK ◆6pZCoAtaxk
2011/07/09(土) 00:04:38.56ID:HknH7n3m >>297
ありがとうございます。昨年末頃3Dの本を途中まで読んでて、
それに載っていた座標変換のことを忘れてました。
なのですぐにこれをコードに落とすのはまだ難しいけど、
プログラムのどこかでまた座標変換が必要になる頃には出来るように本を読み直してみます。
座標変換でやる場合、移動量Zを変えた時に注視点をどう変えるとズームになるかがまだ自信ないけど、
本読み直す時に解決出来ればと思ってます。
今日は、マウスの右ボタンドラッグ移動量から画面で回転させたい角度を計算するとこまで出来た。
あとは横回転はY軸に対して行い、縦回転は、注視点位置ベクトル(x、y、0)から
カメラ位置ベクトルのZ成分を0にしたベクトルをマイナスして出来たベクトルを90度回転してできたベクトルに対して
回転すればいけるかもしれないというあやしい方法を考えてました。(汗
ありがとうございます。昨年末頃3Dの本を途中まで読んでて、
それに載っていた座標変換のことを忘れてました。
なのですぐにこれをコードに落とすのはまだ難しいけど、
プログラムのどこかでまた座標変換が必要になる頃には出来るように本を読み直してみます。
座標変換でやる場合、移動量Zを変えた時に注視点をどう変えるとズームになるかがまだ自信ないけど、
本読み直す時に解決出来ればと思ってます。
今日は、マウスの右ボタンドラッグ移動量から画面で回転させたい角度を計算するとこまで出来た。
あとは横回転はY軸に対して行い、縦回転は、注視点位置ベクトル(x、y、0)から
カメラ位置ベクトルのZ成分を0にしたベクトルをマイナスして出来たベクトルを90度回転してできたベクトルに対して
回転すればいけるかもしれないというあやしい方法を考えてました。(汗
299SGGK ◆6pZCoAtaxk
2011/07/10(日) 22:33:55.13ID:fCX0gGeR300SGGK ◆6pZCoAtaxk
2011/07/17(日) 22:29:42.21ID:3PbrHQAt あまりの暑さなので今日はもう休もうみたいな感じ。
ボールの動きは、ゲーム開始直後に斜め45°で動きだすようにしてみたら動いた。
次は数値は適当だが重力方向の加速度を考慮した式にしてみたところボールは45°の角度で天井に向かってくだけで放物線にならず。
合計数時間は悩んだと思うけど、ループ毎にボール位置しか更新してなかったのが原因とわかる。
速度も加速度の影響で毎ループ変化してるので、速度も毎ループ毎に更新するようにしたら放物線のように動いた。
次は地面やフィールドの端でボールが跳ね返るようにすることに挑戦。
ボールの動きは、ゲーム開始直後に斜め45°で動きだすようにしてみたら動いた。
次は数値は適当だが重力方向の加速度を考慮した式にしてみたところボールは45°の角度で天井に向かってくだけで放物線にならず。
合計数時間は悩んだと思うけど、ループ毎にボール位置しか更新してなかったのが原因とわかる。
速度も加速度の影響で毎ループ変化してるので、速度も毎ループ毎に更新するようにしたら放物線のように動いた。
次は地面やフィールドの端でボールが跳ね返るようにすることに挑戦。
301SGGK ◆6pZCoAtaxk
2011/08/01(月) 00:12:25.80ID:MQtVPARw 時間かかってしまったけど、ボールの跳ね返り実装完了。
ボールの動きは月面歩行みたいなゆったりな動きだけど、これで良しとする。(数値の調整でなんとかできるかも)
179氏>>297のマトリックスを掛けていく方式を意識しつつも、今回も長文プログラムで対応。
(マトリックス作成がまだ自分には理解できてない様なので、勉強しないと無理そうだと今回実感した感じ。)
指定範囲外にボールが出そうになった時に跳ね返らずに壁に沿ってボールが動いたけど、
速度だけ反転して、位置を反転して範囲内に戻してなかったのが原因。
ボールが跳ね返り、跳ね返りの高さが少しずつ小さくなり、最後は転がって止まるようにするのに苦労。
はねてる時の加速度は下向きで、転がってる時の加速(摩擦による逆向きを表現したかった)は速度と逆向きにするというような
加速度の切り替えをどうするかに時間がかかった。
ボールの位置が低い時で判定しようとするとプログラム開始時点で条件を満たして止まってしまう。
放物線の最高点での速度は水平だと思うので、水平になった時のボールの高さがある低い数値より下の場合に、
ボール位置のy成分を0にして加速度を切り替えてみた。
水平になった時を知る方法は、速度ベクトル1と速度のy成分を0にしたベクトル2の角度がプラスマイナス1度以内ならほぼ水平と判断。
角度はベクトル1と2の内積というものからcosを計算して判定。
加速度が切り替わって速度が少しずつ小さくなるので、一定値より小さくなったら停止。
…という流れで実装出来て動いてるけど、今後も問題なく動作するかは未知な感じ。
次は>>252
>3.ラインを割った状態(スローイン、コーナーキック、ゴールキック、得点)を判定し、復帰処理をつくる。
に挑戦の予定
ボールの動きは月面歩行みたいなゆったりな動きだけど、これで良しとする。(数値の調整でなんとかできるかも)
179氏>>297のマトリックスを掛けていく方式を意識しつつも、今回も長文プログラムで対応。
(マトリックス作成がまだ自分には理解できてない様なので、勉強しないと無理そうだと今回実感した感じ。)
指定範囲外にボールが出そうになった時に跳ね返らずに壁に沿ってボールが動いたけど、
速度だけ反転して、位置を反転して範囲内に戻してなかったのが原因。
ボールが跳ね返り、跳ね返りの高さが少しずつ小さくなり、最後は転がって止まるようにするのに苦労。
はねてる時の加速度は下向きで、転がってる時の加速(摩擦による逆向きを表現したかった)は速度と逆向きにするというような
加速度の切り替えをどうするかに時間がかかった。
ボールの位置が低い時で判定しようとするとプログラム開始時点で条件を満たして止まってしまう。
放物線の最高点での速度は水平だと思うので、水平になった時のボールの高さがある低い数値より下の場合に、
ボール位置のy成分を0にして加速度を切り替えてみた。
水平になった時を知る方法は、速度ベクトル1と速度のy成分を0にしたベクトル2の角度がプラスマイナス1度以内ならほぼ水平と判断。
角度はベクトル1と2の内積というものからcosを計算して判定。
加速度が切り替わって速度が少しずつ小さくなるので、一定値より小さくなったら停止。
…という流れで実装出来て動いてるけど、今後も問題なく動作するかは未知な感じ。
次は>>252
>3.ラインを割った状態(スローイン、コーナーキック、ゴールキック、得点)を判定し、復帰処理をつくる。
に挑戦の予定
302SGGK ◆6pZCoAtaxk
2011/08/06(土) 23:29:11.60ID:p7p2W50E やっぱり、簡単にはいかない予感。問題は時間の管理。
ボールがサイドラインを割ったらスローインする場合、
割った瞬間にスローイン位置にボールを復帰させるのは超反応すぎる感じがするので、
スローイン判定が出て、ちょっとボールが転がって、その後スローイン位置にボールが出現するようにしてみたいと思った。
すると、ボールがラインを割ってから、復帰までのわずかな時間をカウントして、その中断時間中はプレイ時間をカウントしないようにするにはどうすればいいんだという悩みが残る。
対象別に専用の時間を用意しなければならないのかと考えてみたが、それは時間測定対象が増えると大変な作業になる。
結構悩んだけど、時間の処理関数をメンバ関数に持つクラスを作って、必要な関数の数だけそのクラスのオブジェクトを作ればいいかもしれないと思った。
実は3D座標系でやってる今のプログラムは上記とは異なる理由から運よく時間関係をクラス化してたのでなんとかなるかもしれない。
2Dの時はこのクラスが無かった…というか思いつかなくて、3Dにするときに色々考えて、ソースを短くしたいという理由から時間関係をクラスにしていた。
時間のクラスには、
void countGameTime();//時間をカウントする。
void resetGameTime();//カウントを0にリセットする
void displayGameTime();//時間を画面表示
のメンバ関数があるけど、新たに
void tempStopGameTime();//カウントを一時停止する
void restartGameTime();//一時停止からカウント再開
を書き加える予定。
上手くいくか確認してから書いた方がいいかもしれないけど、書いてみた。(後で作業を振り返れるし。)
ボールがサイドラインを割ったらスローインする場合、
割った瞬間にスローイン位置にボールを復帰させるのは超反応すぎる感じがするので、
スローイン判定が出て、ちょっとボールが転がって、その後スローイン位置にボールが出現するようにしてみたいと思った。
すると、ボールがラインを割ってから、復帰までのわずかな時間をカウントして、その中断時間中はプレイ時間をカウントしないようにするにはどうすればいいんだという悩みが残る。
対象別に専用の時間を用意しなければならないのかと考えてみたが、それは時間測定対象が増えると大変な作業になる。
結構悩んだけど、時間の処理関数をメンバ関数に持つクラスを作って、必要な関数の数だけそのクラスのオブジェクトを作ればいいかもしれないと思った。
実は3D座標系でやってる今のプログラムは上記とは異なる理由から運よく時間関係をクラス化してたのでなんとかなるかもしれない。
2Dの時はこのクラスが無かった…というか思いつかなくて、3Dにするときに色々考えて、ソースを短くしたいという理由から時間関係をクラスにしていた。
時間のクラスには、
void countGameTime();//時間をカウントする。
void resetGameTime();//カウントを0にリセットする
void displayGameTime();//時間を画面表示
のメンバ関数があるけど、新たに
void tempStopGameTime();//カウントを一時停止する
void restartGameTime();//一時停止からカウント再開
を書き加える予定。
上手くいくか確認してから書いた方がいいかもしれないけど、書いてみた。(後で作業を振り返れるし。)
303SGGK ◆6pZCoAtaxk
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)←まだ原因不明。
>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)←まだ原因不明。
304SGGK ◆6pZCoAtaxk
2011/08/17(水) 23:01:09.88ID:umYfMU6K (3)については、ボールの移動はそもそもボールクラスのメンバ関数moveの方で計算されるので、
状態がKICKKEDなら動くようになっていて、状態がKICKKEDになってその時の速度を再計算して直後にMOVINGという状態に移ってしまうように書いていた。
つまり、昨日の「ボール状態がKICKKEDか? →YES → ボール移動」とう処理にはいいつまでたっても進まない。
正解は、
ボール状態がMOVINGか? →YES → ライン判定の状態をリセットする
だった。
コーナーキック、ゴールキックもスローインを参考にして実装した。
これで、
>3.ラインを割った状態(スローイン、コーナーキック、ゴールキック、得点)を判定し、復帰処理をつくる。
得点以外は実装完了。
次は、
4.選手をまず1人表示し、動かせるようにする。
5.選手とボールの接触判定をし、マウスクリックの代わりに選手が蹴るようにする。
を一緒にやる時に得点実装する予定。
状態がKICKKEDなら動くようになっていて、状態がKICKKEDになってその時の速度を再計算して直後にMOVINGという状態に移ってしまうように書いていた。
つまり、昨日の「ボール状態がKICKKEDか? →YES → ボール移動」とう処理にはいいつまでたっても進まない。
正解は、
ボール状態がMOVINGか? →YES → ライン判定の状態をリセットする
だった。
コーナーキック、ゴールキックもスローインを参考にして実装した。
これで、
>3.ラインを割った状態(スローイン、コーナーキック、ゴールキック、得点)を判定し、復帰処理をつくる。
得点以外は実装完了。
次は、
4.選手をまず1人表示し、動かせるようにする。
5.選手とボールの接触判定をし、マウスクリックの代わりに選手が蹴るようにする。
を一緒にやる時に得点実装する予定。
305SGGK ◆6pZCoAtaxk
2011/08/19(金) 23:52:19.80ID:UUBFLar3 選手を1人だけ移動できるようにした。
今までプログラム内で処理を飛ばしていた部分を飛ばさないようにしただけだけど、
その頃は固定カメラだったので、カメラ座標が変わっても対応できるように修正。
ボールの移動関数のソースをほぼ流用できたので、なんとか出来た。
マウスを選手1人が追いかけ続けるだけだけど、とりあえずはこれで
4番は終了!
今までプログラム内で処理を飛ばしていた部分を飛ばさないようにしただけだけど、
その頃は固定カメラだったので、カメラ座標が変わっても対応できるように修正。
ボールの移動関数のソースをほぼ流用できたので、なんとか出来た。
マウスを選手1人が追いかけ続けるだけだけど、とりあえずはこれで
4番は終了!
306SGGK ◆6pZCoAtaxk
2011/09/03(土) 23:32:25.11ID:+c0ztxSK たまにしか作業してなかったけど、問題があって進まずの状態。
選手とボールの当たり判定があった時にマウスクリックすればボール蹴れるはずが出来ない。
ボールは選手にくっついた状態で選手と一緒に動く。
しかし、なんどもクリックすればボールも少しずつ動く(これも原因不明)。
選手の移動を止めてクリックし続け、当たり判定ゾーンからボールが出ても
何故かボールが選手と同じ速度と方向で動き続ける。
ソースを読んでも原因全く不明。幸いこのボールを蹴る処理を書く前のところまで
戻れたので、もう一度書き直してみる予定。
選手とボールの当たり判定があった時にマウスクリックすればボール蹴れるはずが出来ない。
ボールは選手にくっついた状態で選手と一緒に動く。
しかし、なんどもクリックすればボールも少しずつ動く(これも原因不明)。
選手の移動を止めてクリックし続け、当たり判定ゾーンからボールが出ても
何故かボールが選手と同じ速度と方向で動き続ける。
ソースを読んでも原因全く不明。幸いこのボールを蹴る処理を書く前のところまで
戻れたので、もう一度書き直してみる予定。
307SGGK ◆6pZCoAtaxk
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は選手のメンバ関数にした。
なんとなくだけど、当たり判定関数の引数を増やして、そこにフラグ値を入れて
当たり判定の有効無効を切り替えるようにした。
ボールの移動関数はほとんど書き直しになってしまい、試行錯誤の結果、
ボールが選手に付いていくようにはなった。
まだキック関数はうまく動作してくれない。
スレタイ通りの状況だけど、きっと何処かで作ってると思いながら、
自分も作業継続!
>306を何とかするために実際は8月30日頃から設計図を書くことにした。
大げさなものではなくてノートに手書きの状態遷移図もどき。
これにより、ボールの状態を
enum BALLSTATE{STOP=1,KICKKED,MOVING}; から、
enum MOVE_STATE{STOP=1,FREE,PRE_KEEP,KEEP};に変更してみた。
kickは選手のメンバ関数にした。
なんとなくだけど、当たり判定関数の引数を増やして、そこにフラグ値を入れて
当たり判定の有効無効を切り替えるようにした。
ボールの移動関数はほとんど書き直しになってしまい、試行錯誤の結果、
ボールが選手に付いていくようにはなった。
まだキック関数はうまく動作してくれない。
308SGGK ◆6pZCoAtaxk
2011/09/11(日) 22:33:24.95ID:T1L+oLn6 実はボールの動きはかなり不自然な動きになってしまった。
選手の周りを衛星のようになって動く感じ。
Youtu●eでいろんなゲームを参考にしたけど、早すぎて動きのパターンがつかめなかったけど、
最終的にZEROC●Pというゲームを参考にしてみた。
>307で継続と言ったものの、4年でこの進み具合だとあと何年かかるのだろうか?
それ以前に完成出来るのだろうかという不安もあるので、この先どうなるかはやっぱりわかりません!(汗;
選手の周りを衛星のようになって動く感じ。
Youtu●eでいろんなゲームを参考にしたけど、早すぎて動きのパターンがつかめなかったけど、
最終的にZEROC●Pというゲームを参考にしてみた。
>307で継続と言ったものの、4年でこの進み具合だとあと何年かかるのだろうか?
それ以前に完成出来るのだろうかという不安もあるので、この先どうなるかはやっぱりわかりません!(汗;
309SGGK ◆6pZCoAtaxk
2011/09/11(日) 23:00:52.21ID:T1L+oLn6 今日はこれでラスト。
別に伏字にする事もないような気がしてきたので、Youtube、ZEROCUP が正解。
寝ようとしたけど、もう少しだけ作業したらボールをキックできた。
しかし、新しい問題が発生した。
ボールが一度しか蹴れない。
蹴ったボールを拾いにいってもボールが付いてこなくなった。
ボールがラインをはみ出したら試合経過時間が停止し、
ボールをフィールドに投げ込むまでの経過時間表示はされるが、
ボールが復帰位置に表示されない。
別に伏字にする事もないような気がしてきたので、Youtube、ZEROCUP が正解。
寝ようとしたけど、もう少しだけ作業したらボールをキックできた。
しかし、新しい問題が発生した。
ボールが一度しか蹴れない。
蹴ったボールを拾いにいってもボールが付いてこなくなった。
ボールがラインをはみ出したら試合経過時間が停止し、
ボールをフィールドに投げ込むまでの経過時間表示はされるが、
ボールが復帰位置に表示されない。
310名前は開発中のものです。
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)に初速度を与え、'浮いている'状態にするだけ。
基本的にボールの状態変数は、(x,y,z)、(vx,vy,vz)だけあればいい。
それと便宜的に(接地 or浮いている)フラグをつけてもいい。
初期値はそれぞれ、ボールの初期位置、速度は0、フラグは'接地'状態。
ボールのループごとの処理はこんな感じ。
if(浮いている){
垂直方向の重力加速度を速度に加算
速度を位置に加算
if(速度が下向きで垂直座標が地面より下){
位置を地表に補正
垂直方向の速度に -0.9とか反発係数を配慮した値を掛ける
垂直速度が小さくなったら、'接地'状態とする
}
}else{
水平方向の速度に0.99など転がり摩擦係数を意識した値を掛ける
}
水平方向の速度を水平位置に加算
蹴った瞬間、(vx,vy,vz)に初速度を与え、'浮いている'状態にするだけ。
311SGGK ◆6pZCoAtaxk
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の時の確定位置が変数に残っていて、こちらの位置で表示されてしまったのが理由。
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の時の確定位置が変数に残っていて、こちらの位置で表示されてしまったのが理由。
312名前は開発中のものです。
2011/09/12(月) 22:53:19.97ID:Im+6OdM9 ラインを割ったときには、その時点での(x,y,z)を控えておき、3秒間のカウンタを開始する。
その3秒間も、ボールのループごとの処理は継続する。
3秒たったら、控えておいた位置を復元するとともに、速度はゼロ、フラグは'接地'にセット
スローインしたときは、初速度は違うかもしれないが蹴ったときと同様。
(x,y,z)の控えや3秒カウンタは、ボールとは別のメインのクラスなどで管理するといいと思う。
その3秒間も、ボールのループごとの処理は継続する。
3秒たったら、控えておいた位置を復元するとともに、速度はゼロ、フラグは'接地'にセット
スローインしたときは、初速度は違うかもしれないが蹴ったときと同様。
(x,y,z)の控えや3秒カウンタは、ボールとは別のメインのクラスなどで管理するといいと思う。
313SGGK ◆6pZCoAtaxk
2011/09/12(月) 23:12:56.43ID:I4CSS3jX >>310,312
アドバイス、ありがとうございます。
書き込む前にリロードし忘れてしまい、すれ違ってしまいました。(汗;
自分のソースも似た感じの処理になってるようなのですが、
何故か原因不明でどんどん複雑化しているようです。
例えば、切り替えた状態が、知らない間に別のところで切り替えられてしまう…というような感じ。
ここから崩して作り直すのは厳しいので逆にこのまま>>252の
6.CPU選手をまずは1人登場させ、動くようにする。
7.ポジション別にCPU選手のAIを調整する。
8.タイム、スコア、勝敗、タイトル画面などの装飾要素を実装する。
を目指してソースをupできるようにして、そこからソースの見直しをしてみたいと思います。
アドバイス、ありがとうございます。
書き込む前にリロードし忘れてしまい、すれ違ってしまいました。(汗;
自分のソースも似た感じの処理になってるようなのですが、
何故か原因不明でどんどん複雑化しているようです。
例えば、切り替えた状態が、知らない間に別のところで切り替えられてしまう…というような感じ。
ここから崩して作り直すのは厳しいので逆にこのまま>>252の
6.CPU選手をまずは1人登場させ、動くようにする。
7.ポジション別にCPU選手のAIを調整する。
8.タイム、スコア、勝敗、タイトル画面などの装飾要素を実装する。
を目指してソースをupできるようにして、そこからソースの見直しをしてみたいと思います。
314名前は開発中のものです。
2011/09/13(火) 19:12:35.87ID:nrv6ZrDs その残り3つ、急に段差がきつくなってると思う。
無理に進めずに、今までのところをきっちり固めてから進むべきじゃないかな。
無理に進めずに、今までのところをきっちり固めてから進むべきじゃないかな。
315SGGK ◆6pZCoAtaxk
2011/09/13(火) 22:23:15.13ID:UyS152Ji >>314
書き込みありがとうございます。
AIについては何も勉強してない状態なので、ボール持ってる選手に他の選手が
近づいていくだけで、これがAIという事にしようと考えていましたが、これだけでは物足りないかもしれません。
もう少しAIっぽくしようとすると確かにきついです。
昨日は、崩して作り直すのは難しいと言ったけど、無理せず、部分的でもいいので
ソースを見直して、AIも少し調べてみようと思います。
現時点では、直したばかりのボール移動部分をさらに見直すつもり。
今の段階でも、選手が停止した状態ではボールが蹴れないとか、
ボールがマウス方向に飛ばないとか、クリックしてもすぐに蹴れないなどの不具合が出ているので、
ここはもう一度作り直した方がよさそうな気がした。
書き込みありがとうございます。
AIについては何も勉強してない状態なので、ボール持ってる選手に他の選手が
近づいていくだけで、これがAIという事にしようと考えていましたが、これだけでは物足りないかもしれません。
もう少しAIっぽくしようとすると確かにきついです。
昨日は、崩して作り直すのは難しいと言ったけど、無理せず、部分的でもいいので
ソースを見直して、AIも少し調べてみようと思います。
現時点では、直したばかりのボール移動部分をさらに見直すつもり。
今の段階でも、選手が停止した状態ではボールが蹴れないとか、
ボールがマウス方向に飛ばないとか、クリックしてもすぐに蹴れないなどの不具合が出ているので、
ここはもう一度作り直した方がよさそうな気がした。
316名前は開発中のものです。
2011/09/14(水) 20:07:55.18ID:tc3GEPcb コーディングする気はないけれど>>252を解釈してみる。
まずは「1.グラウンドとゴールを描画する。カメラを動かしたいのならその動かし方も決めて調整しておく」から。
グラウンドは大きな板ポリゴンにテクスチャを張る方法でも、自分で芝目や白線のポリゴンを描く方法でも
どっちても良いが、ポイントは「ゴールラインの中心に適切な高さのゴールを描いているかに懸かっている。
これは、基本的な座標系の方向とスケールを正しく理解してプログラミングしているかの試金石になる。
グラウンドとゴール一式を3Dモデルとして外部からインポートするという方法も有ると思うが、
その場合でも試験的にゴール枠、ゴールライン、タッチラインにプログラムで赤線を引くなどして、
平面の座方形の向きと、プログラム内でのフィールドのスケールを視覚的に確認しておくことは必須。
また、当然その様子は透視投影画像で自由にカメラ位置を変えて確認すべきなのだが、
そんなことはライブラリに専用関数が用意されているので、むしろ0番目的な段階の話だと言える。
数字キーを押したら例えばコーナーポストの外からゴール上空を注視する景色になるとか、
いつでも任意のカメラ位置から任意の地点を注視できるように、フレームワークに組み込んでおきたい。
おそらく3Dのサッカーゲームでユーザがプレイヤーに指示を与えながら
マウスでカメラも操作しろというのは無理だと思うので、完成度が上がってきたころには
自動カメラワークのアルゴリズムを検討することいなる。
ただし、現時点では切り替え式で十分。
まずは「1.グラウンドとゴールを描画する。カメラを動かしたいのならその動かし方も決めて調整しておく」から。
グラウンドは大きな板ポリゴンにテクスチャを張る方法でも、自分で芝目や白線のポリゴンを描く方法でも
どっちても良いが、ポイントは「ゴールラインの中心に適切な高さのゴールを描いているかに懸かっている。
これは、基本的な座標系の方向とスケールを正しく理解してプログラミングしているかの試金石になる。
グラウンドとゴール一式を3Dモデルとして外部からインポートするという方法も有ると思うが、
その場合でも試験的にゴール枠、ゴールライン、タッチラインにプログラムで赤線を引くなどして、
平面の座方形の向きと、プログラム内でのフィールドのスケールを視覚的に確認しておくことは必須。
また、当然その様子は透視投影画像で自由にカメラ位置を変えて確認すべきなのだが、
そんなことはライブラリに専用関数が用意されているので、むしろ0番目的な段階の話だと言える。
数字キーを押したら例えばコーナーポストの外からゴール上空を注視する景色になるとか、
いつでも任意のカメラ位置から任意の地点を注視できるように、フレームワークに組み込んでおきたい。
おそらく3Dのサッカーゲームでユーザがプレイヤーに指示を与えながら
マウスでカメラも操作しろというのは無理だと思うので、完成度が上がってきたころには
自動カメラワークのアルゴリズムを検討することいなる。
ただし、現時点では切り替え式で十分。
317名前は開発中のものです。
2011/09/14(水) 20:42:28.24ID:tc3GEPcb 引き続き「2.ボールを配置し、試験的にマウスでクリックすると蹴ったように動くようにする」について。
ボールクラスの実装は>>310のとおりで、メソッドは、
(1) ボールの現在位置をセットし、速度は0にする:セットプレイ専用
(2) ループごとに実行する運動方程式の処理
(3) ボールの現在位置を求める
(4) ボールが接触した面があった場合、法線ベクトルを引数に速度を反転させ、反発面上に位置補正する処理
(5) ボールの現在速度を求める
(6) ボールに初速度を与える:キック時専用
(7) 現在位置にボールを描画する
とする。(4)の反発は、まずは地面で、次にゴールポストとクロスバーにも反応するようにしておきたい。
とりあえずテスト用には、右クリックでセンターマークに(1)ボールをセット、
左クリックで最初は固定方向でも良いので(6)ボールに初期値を与える機能を呼び出す。
ポイントは、キックによる初速度、重力加速度定数、転がり減衰係数、反発係数などの物理パラメータを
しっかりチューニングし、気持ちよくプレイできるバランスを見つけることに尽きる。
ちなみにメンバ変数はprivateにし、不用意に外部からフラグ操作しないこと。今後もおそらくその必要はないはず。
>>311によると「当たり判定をキャンセルするフラグ」のような意味不明なフラグを導入しているようだが、
物理的にナンセンスで実際バグの元にもなっている。発想を切り替えなければならない。
ボールクラスの実装は>>310のとおりで、メソッドは、
(1) ボールの現在位置をセットし、速度は0にする:セットプレイ専用
(2) ループごとに実行する運動方程式の処理
(3) ボールの現在位置を求める
(4) ボールが接触した面があった場合、法線ベクトルを引数に速度を反転させ、反発面上に位置補正する処理
(5) ボールの現在速度を求める
(6) ボールに初速度を与える:キック時専用
(7) 現在位置にボールを描画する
とする。(4)の反発は、まずは地面で、次にゴールポストとクロスバーにも反応するようにしておきたい。
とりあえずテスト用には、右クリックでセンターマークに(1)ボールをセット、
左クリックで最初は固定方向でも良いので(6)ボールに初期値を与える機能を呼び出す。
ポイントは、キックによる初速度、重力加速度定数、転がり減衰係数、反発係数などの物理パラメータを
しっかりチューニングし、気持ちよくプレイできるバランスを見つけることに尽きる。
ちなみにメンバ変数はprivateにし、不用意に外部からフラグ操作しないこと。今後もおそらくその必要はないはず。
>>311によると「当たり判定をキャンセルするフラグ」のような意味不明なフラグを導入しているようだが、
物理的にナンセンスで実際バグの元にもなっている。発想を切り替えなければならない。
318名前は開発中のものです。
2011/09/14(水) 21:02:28.23ID:tc3GEPcb 連投大丈夫かな?「3.ラインを割った状態(スローイン、コーナーキック、ゴールキック、得点)を判定し、復帰処理をつくる」
日本サッカー協会の競技規定によると、ボールがラインを完全に割ったらアウトオブプレーとのことなので、
段階1で確認したプログラム上のフィールドサイズと、段階2のメソッド(3)によるボールの(中心の)現在位置と、
おそらく定数となるボールの半径から、インプレーかアウトオブプレーか判定ができる。
アウトの場合、タッチラインを割ったのか、ゴールラインを割ったのか、
またゴールラインの場合は、かごの内か外かまで判定できる。
しかし現時点ではコーナーキック、ゴールキックの区別はできない。
アウトオブプレーを検出したらフレームワーク側でホイッスルを鳴らすなり何か表示するなどの演出を始めても良いが、
ボールの物理シミュレーションメソッド(2)は呼び続けておくのが好ましい。
演出が終わったら復帰処理となるが、タッチラインを割ったときなら飛び出た位置あたりからスローインだし、
コーナーキック、ゴールキック、あるいは得点後はセットプレー扱いなので再開位置は自動的に決まるはず。
日本サッカー協会の競技規定によると、ボールがラインを完全に割ったらアウトオブプレーとのことなので、
段階1で確認したプログラム上のフィールドサイズと、段階2のメソッド(3)によるボールの(中心の)現在位置と、
おそらく定数となるボールの半径から、インプレーかアウトオブプレーか判定ができる。
アウトの場合、タッチラインを割ったのか、ゴールラインを割ったのか、
またゴールラインの場合は、かごの内か外かまで判定できる。
しかし現時点ではコーナーキック、ゴールキックの区別はできない。
アウトオブプレーを検出したらフレームワーク側でホイッスルを鳴らすなり何か表示するなどの演出を始めても良いが、
ボールの物理シミュレーションメソッド(2)は呼び続けておくのが好ましい。
演出が終わったら復帰処理となるが、タッチラインを割ったときなら飛び出た位置あたりからスローインだし、
コーナーキック、ゴールキック、あるいは得点後はセットプレー扱いなので再開位置は自動的に決まるはず。
319名前は開発中のものです。
2011/09/15(木) 06:32:14.49ID:I5TXtYrP 「4.選手をまず1人表示し、動かせるようにする」
選手の3Dモデルデータが必要となるが、とりあえず雪だるまか、こけしか、冷蔵庫で代用することにし、
ここで本質的に重要なのは操作方法の決定とパラメータ調整ではないかと思う。
しかも、単に選手の2次元移動とはいいつつも、実際にはカメラの方向によってプレイヤーが混乱しない
ような工夫が必要なため、快適なプレイ環境を実現する操作方法というのは、実に奥が深いと思われる。
ここの作りこみ次第で、ゲームの面白さが左右されるはず。
しかしとりあえず暫定的なものにしておいて先の段階へ進みたいのであれば、
カメラ位置をセンターラインの延長上空、注視点をセンターマークにし、フィールド全体が見渡せる画面とし、
選手はカーソルキーかゲームパッドで移動するようなオーソドックスな方法で構わない。
この段階において、プレイヤーはフィールドの中だけ移動できるように境界条件処理をしておくと良い。
また、ボールとの関わりについては、少なくともこの段階では相互にまったく干渉しないことも確認しておく。
選手の3Dモデルデータが必要となるが、とりあえず雪だるまか、こけしか、冷蔵庫で代用することにし、
ここで本質的に重要なのは操作方法の決定とパラメータ調整ではないかと思う。
しかも、単に選手の2次元移動とはいいつつも、実際にはカメラの方向によってプレイヤーが混乱しない
ような工夫が必要なため、快適なプレイ環境を実現する操作方法というのは、実に奥が深いと思われる。
ここの作りこみ次第で、ゲームの面白さが左右されるはず。
しかしとりあえず暫定的なものにしておいて先の段階へ進みたいのであれば、
カメラ位置をセンターラインの延長上空、注視点をセンターマークにし、フィールド全体が見渡せる画面とし、
選手はカーソルキーかゲームパッドで移動するようなオーソドックスな方法で構わない。
この段階において、プレイヤーはフィールドの中だけ移動できるように境界条件処理をしておくと良い。
また、ボールとの関わりについては、少なくともこの段階では相互にまったく干渉しないことも確認しておく。
320SGGK ◆6pZCoAtaxk
2011/09/15(木) 06:34:11.75ID:DAY99jiD >>316,317,318
ありがとうございます。
これから始めようとしているボール関係処理作り直しの参考にさせてもらいます。
「1.グラウンドとゴールを描画する。カメラを動かしたいのならその動かし方も決めて調整しておく」
いまはメタセコイアっぽい操作でカメラを動かせる段階で止まっていますが、
作業が進めば、自動も考えてみたいです。
「2.ボールを配置し、試験的にマウスでクリックすると蹴ったように動くようにする」
基本的には>>310氏の案の様にいこうと今考え始めてたところで、法線による反発は将来の課題にしようと思います。
自分はZEROCUPの操作にこだわりすぎてたようで、ZEROCUPは選手がボールにあたると
ボールが選手に対してシューティングゲームのオプションのように動くので、
このボールキープ時のボールの動きは別のアルゴリズムに切り替えないと自分には無理で、
キープ中は当たり判定をOFFにしないと毎ループキープ状態への切り替え初期化がされてしまうといった事情が重なり、
だんだん複雑になっていったのだと思います。
ただ、ボールの移動処理をシンプル化しようとした時、選手がボールに当たった時に
選手の移動方向にボールが蹴られる方式では、ドリブルしながら選手の移動方向を変えようとすると、
選手がボールに当たる瞬間に方向を変えなければ、今のマウスカーソルに選手が向かう方式では
方向変更ができないと思い、これが悩みになってました。
一応、ZEROCUPにこだわらない案も考えてみたので戻ってきたら続きを書いてみたいと思います。
ありがとうございます。
これから始めようとしているボール関係処理作り直しの参考にさせてもらいます。
「1.グラウンドとゴールを描画する。カメラを動かしたいのならその動かし方も決めて調整しておく」
いまはメタセコイアっぽい操作でカメラを動かせる段階で止まっていますが、
作業が進めば、自動も考えてみたいです。
「2.ボールを配置し、試験的にマウスでクリックすると蹴ったように動くようにする」
基本的には>>310氏の案の様にいこうと今考え始めてたところで、法線による反発は将来の課題にしようと思います。
自分はZEROCUPの操作にこだわりすぎてたようで、ZEROCUPは選手がボールにあたると
ボールが選手に対してシューティングゲームのオプションのように動くので、
このボールキープ時のボールの動きは別のアルゴリズムに切り替えないと自分には無理で、
キープ中は当たり判定をOFFにしないと毎ループキープ状態への切り替え初期化がされてしまうといった事情が重なり、
だんだん複雑になっていったのだと思います。
ただ、ボールの移動処理をシンプル化しようとした時、選手がボールに当たった時に
選手の移動方向にボールが蹴られる方式では、ドリブルしながら選手の移動方向を変えようとすると、
選手がボールに当たる瞬間に方向を変えなければ、今のマウスカーソルに選手が向かう方式では
方向変更ができないと思い、これが悩みになってました。
一応、ZEROCUPにこだわらない案も考えてみたので戻ってきたら続きを書いてみたいと思います。
321名前は開発中のものです。
2011/09/15(木) 07:07:32.22ID:I5TXtYrP 「5.選手とボールの接触判定をし、マウスクリックの代わりに選手が蹴るようにする」
先の段階で放置しておいた選手とボールの作用条件について実装する。
選手もボールもともに運動する物体であることから、まずは、
段階2の(3)および(5)で得られるボールの位置および速度を、
判定対象選手のローカル座標系における相対位置、相対速度に変換する。
その上で下記の順に判定、処理を行う
(1) ボールの相対位置が選手に十分近い(距離<ボール半径+体格半径)かつ
相対速度ベクトルが選手側に向かってきている場合、
ボールがコントロールできない位置で単純に当たったものとみなし、
メソッド2の(4)による反射処理を行う。法線はワールド座標系に逆変換すること。
その際、選手自身の移動速度の法線方向成分を加味するため、
反発係数は1.0を超えることも有り得る。
(2) ボールの相対位置が選手正面の特定領域内にあり、
かつ選手がコントロールする意思を持った状態の場合、
その意思に従いトラップするなりキックするなりでボールの相対速度を決め、
ボールメソッド2(6)を呼び出す。
その際も、選手ローカル座標からワールド座標系に戻してから渡す。
いずれでもなければ、選手はボールに干渉しない。
先の段階で放置しておいた選手とボールの作用条件について実装する。
選手もボールもともに運動する物体であることから、まずは、
段階2の(3)および(5)で得られるボールの位置および速度を、
判定対象選手のローカル座標系における相対位置、相対速度に変換する。
その上で下記の順に判定、処理を行う
(1) ボールの相対位置が選手に十分近い(距離<ボール半径+体格半径)かつ
相対速度ベクトルが選手側に向かってきている場合、
ボールがコントロールできない位置で単純に当たったものとみなし、
メソッド2の(4)による反射処理を行う。法線はワールド座標系に逆変換すること。
その際、選手自身の移動速度の法線方向成分を加味するため、
反発係数は1.0を超えることも有り得る。
(2) ボールの相対位置が選手正面の特定領域内にあり、
かつ選手がコントロールする意思を持った状態の場合、
その意思に従いトラップするなりキックするなりでボールの相対速度を決め、
ボールメソッド2(6)を呼び出す。
その際も、選手ローカル座標からワールド座標系に戻してから渡す。
いずれでもなければ、選手はボールに干渉しない。
322名前は開発中のものです。
2011/09/15(木) 07:32:47.70ID:I5TXtYrP >>320
ボールをトラップするも、ドリブルも、パスもシュートも、本質的には
「選手がボールをコントロールできる相対位置・速度条件にいるとき、どのようなコントロールの意思を示すか」
によって、ボールに新しい運動速度を与えるという処理に統一できる。
つまり、選手はボールに対しては速度にしか干渉できないように制限している。
これによって、もし多数の選手が団子状になったとしても、どう転がるかわからなけれど
試合自体は進行可能になると思う。
先着選手にボールが帰属(優先キープ)してしまうようなルールだと、ゲーム性が変わってくると思うけれど、
格闘よりもフィールド戦略を主にするなら、それもありかと思う。
ボールをトラップするも、ドリブルも、パスもシュートも、本質的には
「選手がボールをコントロールできる相対位置・速度条件にいるとき、どのようなコントロールの意思を示すか」
によって、ボールに新しい運動速度を与えるという処理に統一できる。
つまり、選手はボールに対しては速度にしか干渉できないように制限している。
これによって、もし多数の選手が団子状になったとしても、どう転がるかわからなけれど
試合自体は進行可能になると思う。
先着選手にボールが帰属(優先キープ)してしまうようなルールだと、ゲーム性が変わってくると思うけれど、
格闘よりもフィールド戦略を主にするなら、それもありかと思う。
323名前は開発中のものです。
2011/09/15(木) 21:25:19.83ID:I5TXtYrP 「6.CPU選手をまずは1人登場させ、動くようにする」
4で書き忘れたけれど選手クラスの定義には、
・現在位置(x,yz)
・向いている方向
・移動速度
・チームの識別符号
など、描画やボールへの干渉判定に必要な状態変数を持たせる。
それを少し拡張して、
・目標位置
・目標方向
をメンバに加え、
「現在位置が目標位置から遠ければ、
向いている方向を目標位置の方向に1フレーム期間で回れる角度だけ補正し、
移動速度も制限速度内で目標位置の方向に加速する。
目標位置い近くなったら、
向いている方向を目標方向に近づけるとともに、
目的地で静止できるように減速する」
というような処理関数を作ってみる。
すると、CPU選手には「ボールを相手ゴールに向かってコントロールできる位置と方向」を与えれば、
毎フレームごとにボールに向かって突進するはず。
ボールがコントロール可能な状態(5の(2))になったなら、敵ゴールに向かってボールを蹴り出すが、
小さくければおそらくドリブルっぽくなるだろうし、ゴールに十分近づいたら強く蹴ってシュートにすればいい。
4で書き忘れたけれど選手クラスの定義には、
・現在位置(x,yz)
・向いている方向
・移動速度
・チームの識別符号
など、描画やボールへの干渉判定に必要な状態変数を持たせる。
それを少し拡張して、
・目標位置
・目標方向
をメンバに加え、
「現在位置が目標位置から遠ければ、
向いている方向を目標位置の方向に1フレーム期間で回れる角度だけ補正し、
移動速度も制限速度内で目標位置の方向に加速する。
目標位置い近くなったら、
向いている方向を目標方向に近づけるとともに、
目的地で静止できるように減速する」
というような処理関数を作ってみる。
すると、CPU選手には「ボールを相手ゴールに向かってコントロールできる位置と方向」を与えれば、
毎フレームごとにボールに向かって突進するはず。
ボールがコントロール可能な状態(5の(2))になったなら、敵ゴールに向かってボールを蹴り出すが、
小さくければおそらくドリブルっぽくなるだろうし、ゴールに十分近づいたら強く蹴ってシュートにすればいい。
324名前は開発中のものです。
2011/09/15(木) 22:00:59.48ID:I5TXtYrP 「7.ポジション別にCPU選手のAIを調整する」
ここまでくると脳内プログラミングでは難しくなってくるが敢えて思考実験を続けてみる。
6での拡張で、個々の選手に対して、
・ボールをコントロールできない状態なら、目的地と方向を指示する
・ボールをコントロールできる状態なら、ボールのキック方向と強さを指示する
の2パターンだけ考えればよくなった。
目的地については、チームで戦うときは必ずしもボールに向かう必要はなく、
むしろパス回しを活用していかに早く安全に敵陣深く攻め込めるかを考えた配置に
なるよう、監督になった気分でそれぞれの選手に指示するべきである。
具体的には、選手間の位置関係から、ボールをコントロールできる(可能性が最も高い)選手から、
最前線の選手までの経路探索アルゴリズムを応用しつつ、個々の選手がより有利な位置に
移動するような評価関数などを駆使して、ということになりそうだが、脳内シミュレーションでは無理っぽい。
なお、選手への指示に上の2パターンを出せば、あとは自動で動いてくれるようにしたので、
ゲームパッドで選手ひとりを直接動かす操作方法は、この段階でデバッグ機能として卒業したい。
その代わりに、プレイヤーもマウスなどを使って、「どのプレイヤーをどこへ動かす」という指示を
リアルタイムに出せるインタフェースを作っておく。
こうなると完全にサッカーチームの監督ごっこというゲームシステムが固まってくる。
もしくは、ジョイパッド操作は、チーム内で一人だけ動きが違う「キーパー」操作に割り当てても良いかも。
ここまでくると脳内プログラミングでは難しくなってくるが敢えて思考実験を続けてみる。
6での拡張で、個々の選手に対して、
・ボールをコントロールできない状態なら、目的地と方向を指示する
・ボールをコントロールできる状態なら、ボールのキック方向と強さを指示する
の2パターンだけ考えればよくなった。
目的地については、チームで戦うときは必ずしもボールに向かう必要はなく、
むしろパス回しを活用していかに早く安全に敵陣深く攻め込めるかを考えた配置に
なるよう、監督になった気分でそれぞれの選手に指示するべきである。
具体的には、選手間の位置関係から、ボールをコントロールできる(可能性が最も高い)選手から、
最前線の選手までの経路探索アルゴリズムを応用しつつ、個々の選手がより有利な位置に
移動するような評価関数などを駆使して、ということになりそうだが、脳内シミュレーションでは無理っぽい。
なお、選手への指示に上の2パターンを出せば、あとは自動で動いてくれるようにしたので、
ゲームパッドで選手ひとりを直接動かす操作方法は、この段階でデバッグ機能として卒業したい。
その代わりに、プレイヤーもマウスなどを使って、「どのプレイヤーをどこへ動かす」という指示を
リアルタイムに出せるインタフェースを作っておく。
こうなると完全にサッカーチームの監督ごっこというゲームシステムが固まってくる。
もしくは、ジョイパッド操作は、チーム内で一人だけ動きが違う「キーパー」操作に割り当てても良いかも。
325名前は開発中のものです。
2011/09/15(木) 22:21:08.89ID:I5TXtYrP このあと>>252では仕上げに入っているけれど、補足すべき要素としては、
A.選手同士の接触判定と解決処理
B.最後にボールに触れた選手によるスローイン、ゴール・コーナーキックの判別
C.オフサイドの判定
D.AI実装のための評価関数の充実
などが必要じゃないかと思う。
「8.タイム、スコア、勝敗、タイトル画面などの装飾要素を実装する」については、
まあ、そのまんま好きなように作りこめば良い。
長々書いたけれど一応これで脳内では完成したつもり。
本当に実装できるか確かめていないので何の保証もないけれど、
なにか一部でも参考になれば嬉しいので自由に使ってくださいな。
A.選手同士の接触判定と解決処理
B.最後にボールに触れた選手によるスローイン、ゴール・コーナーキックの判別
C.オフサイドの判定
D.AI実装のための評価関数の充実
などが必要じゃないかと思う。
「8.タイム、スコア、勝敗、タイトル画面などの装飾要素を実装する」については、
まあ、そのまんま好きなように作りこめば良い。
長々書いたけれど一応これで脳内では完成したつもり。
本当に実装できるか確かめていないので何の保証もないけれど、
なにか一部でも参考になれば嬉しいので自由に使ってくださいな。
326SGGK ◆6pZCoAtaxk
2011/09/15(木) 23:35:53.55ID:7ihcTlmB 戻ってきたので>>320の続きです。
「3.ラインを割った状態(スローイン、コーナーキック、ゴールキック、得点)を判定し、復帰処理をつくる」
「4.選手をまず1人表示し、動かせるようにする」
どちらも一応大体は組み込めたような感じです。修正は今後もあると思います。
まだポリゴンキャラはやったことなく、ここで教わったビルボードというのでやってます。
いまの自分のレベルだとポリゴンキャラ実装はかなり先になりそうです…。
「5.選手とボールの接触判定をし、マウスクリックの代わりに選手が蹴るようにする」
しばらくの間は、この段階で頑張る事になると思います。
選手自身のボール反射は全く考えてなかったので、それ以外のキック、ドリブルなどの書き直しが
上手く出来たら、挑戦してみます。
「6.CPU選手をまずは1人登場させ、動くようにする」
方向をメンバに持たすのを考えてませんでした。
ポリゴンキャラじゃないので、絵的に表現させるのはまだまだ無理なので、
足元に矢印を表す直線を書いて向きを表現しようと思います。
「7.ポジション別にCPU選手のAIを調整する」
ここは未知の領域なのでまだ先ですが、この段階までこれたら参考にしたいと思います。
>>325も含めて多くの助言、ありがとうございました。
回答できなかった部分も今後の進捗に合わせて細部に取り込んでいこうと思います!
それと、ZEROCUPにこだわらない案
ドリブルキーを押すと選手とボールの位置関係と、蹴りたい方向を考慮して
選手があるていどオートで動く。
例えば、まっすぐドリブル中に90度右に動くようにマウスカーソルを動かした時に
丁度ボールを蹴りだしてしまったら、そのボールまで選手が動き、そこでマウスカーソル方向に蹴って、
選手もマウスカーソル方向に動くようになるという感じ。
「3.ラインを割った状態(スローイン、コーナーキック、ゴールキック、得点)を判定し、復帰処理をつくる」
「4.選手をまず1人表示し、動かせるようにする」
どちらも一応大体は組み込めたような感じです。修正は今後もあると思います。
まだポリゴンキャラはやったことなく、ここで教わったビルボードというのでやってます。
いまの自分のレベルだとポリゴンキャラ実装はかなり先になりそうです…。
「5.選手とボールの接触判定をし、マウスクリックの代わりに選手が蹴るようにする」
しばらくの間は、この段階で頑張る事になると思います。
選手自身のボール反射は全く考えてなかったので、それ以外のキック、ドリブルなどの書き直しが
上手く出来たら、挑戦してみます。
「6.CPU選手をまずは1人登場させ、動くようにする」
方向をメンバに持たすのを考えてませんでした。
ポリゴンキャラじゃないので、絵的に表現させるのはまだまだ無理なので、
足元に矢印を表す直線を書いて向きを表現しようと思います。
「7.ポジション別にCPU選手のAIを調整する」
ここは未知の領域なのでまだ先ですが、この段階までこれたら参考にしたいと思います。
>>325も含めて多くの助言、ありがとうございました。
回答できなかった部分も今後の進捗に合わせて細部に取り込んでいこうと思います!
それと、ZEROCUPにこだわらない案
ドリブルキーを押すと選手とボールの位置関係と、蹴りたい方向を考慮して
選手があるていどオートで動く。
例えば、まっすぐドリブル中に90度右に動くようにマウスカーソルを動かした時に
丁度ボールを蹴りだしてしまったら、そのボールまで選手が動き、そこでマウスカーソル方向に蹴って、
選手もマウスカーソル方向に動くようになるという感じ。
327SGGK ◆6pZCoAtaxk
2011/10/06(木) 23:08:47.15ID:9XiSdH1l 選手がボールと当たってたらボールを蹴れるようになるなどの処理を消して、
ボールの移動処理を簡素化してバグが出なくなるまで出来た。
しかし、ボールが表示されない。
とりあえず、マウスクリックでボールを蹴れるところまで戻せるよう頑張るつもり。
ボールの移動処理を簡素化してバグが出なくなるまで出来た。
しかし、ボールが表示されない。
とりあえず、マウスクリックでボールを蹴れるところまで戻せるよう頑張るつもり。
328SGGK ◆6pZCoAtaxk
2011/10/17(月) 22:36:26.10ID:PMZ6FiGu ちょっと停滞している状況にあるけど、まだ諦めてはいない(汗;
ボールが描画されなかった理由は、ボールの座標値に異常な大きさの数値が設定されていた為と思われる。
ソースを目で追うと、座標値計算の途中で0で割ろうとしている箇所があり、そこを直したらボールが表示された。
kick関数は選手のメンバ関数だったのをボールのメンバ関数に移し、左マウスクリックでkick関数を実行するようにしたら、
ボールは動くけどまだおかしい。
ボールは浮かずに常に右側にまっすぐ移動し、ラインを出てもラインアウトの判定がされなくなっている。
直接の原因はまだ不明だけど、ボールのメンバ変数にY軸回転角度と射出角度と速度の絶対値を持たせるように変えたことで、
まだ気付いていない未修正のところがあるからだと考えてる。
ボールが描画されなかった理由は、ボールの座標値に異常な大きさの数値が設定されていた為と思われる。
ソースを目で追うと、座標値計算の途中で0で割ろうとしている箇所があり、そこを直したらボールが表示された。
kick関数は選手のメンバ関数だったのをボールのメンバ関数に移し、左マウスクリックでkick関数を実行するようにしたら、
ボールは動くけどまだおかしい。
ボールは浮かずに常に右側にまっすぐ移動し、ラインを出てもラインアウトの判定がされなくなっている。
直接の原因はまだ不明だけど、ボールのメンバ変数にY軸回転角度と射出角度と速度の絶対値を持たせるように変えたことで、
まだ気付いていない未修正のところがあるからだと考えてる。
329SGGK ◆6pZCoAtaxk
2011/11/06(日) 22:32:37.41ID:+A7uxjdP あれこれ書き直している内にラインアウトの判定がいつの間にか直っていた。
ボールの軌跡がプログラムの意図と無関係な動きをする問題でつまづく。
左マウスをクリックしたときにボールの速度初期値に変更を加える方式だけど、
変更を単純にしてみたり、ボールの状態を一定にしてみてもダメ。
ふと、マウスの状態を決める箇所のプログラムを目で追っていると、
マウスを左クリックした場合、他のマウス操作をするまでずっとその状態がクリックしたままで
プログラム内で保持されている事に気づく。
そこを直したら、ボールの軌跡が直った。
前バージョンのプログラムでは何故問題なかったのか不思議だが、時間も無いのでこのまますすめることにした。
ボールの動きをバグ探しの為にかなり単純化してしまったので、
これを戻す過程でまた別のバグが出るかもしれない。
ボールの軌跡がプログラムの意図と無関係な動きをする問題でつまづく。
左マウスをクリックしたときにボールの速度初期値に変更を加える方式だけど、
変更を単純にしてみたり、ボールの状態を一定にしてみてもダメ。
ふと、マウスの状態を決める箇所のプログラムを目で追っていると、
マウスを左クリックした場合、他のマウス操作をするまでずっとその状態がクリックしたままで
プログラム内で保持されている事に気づく。
そこを直したら、ボールの軌跡が直った。
前バージョンのプログラムでは何故問題なかったのか不思議だが、時間も無いのでこのまますすめることにした。
ボールの動きをバグ探しの為にかなり単純化してしまったので、
これを戻す過程でまた別のバグが出るかもしれない。
330SGGK ◆6pZCoAtaxk
2011/11/07(月) 23:05:47.86ID:Ci/pCY6w 次に出た問題はボールを例えば傾斜60度で動かそうとしても動かない問題。
やり方はボールからマウスに向かうベクトルをY軸中心で90度回転する行列で回転させて、
そのベクトルを軸にしてボールからマウスに向かうベクトル(大きさは速度と一致させておく)を60度回転させる。
−60度にしてみたら放物線のように動いた。
なので、上記のやり方の中で、Y軸中心で−90度回転させてから、
そのベクトルを軸にして60度回転させるようにして解決。
マウスクリックでボールを動かせるようになったので、やっと選手で蹴れるかどうかというところまで戻った。
やり方はボールからマウスに向かうベクトルをY軸中心で90度回転する行列で回転させて、
そのベクトルを軸にしてボールからマウスに向かうベクトル(大きさは速度と一致させておく)を60度回転させる。
−60度にしてみたら放物線のように動いた。
なので、上記のやり方の中で、Y軸中心で−90度回転させてから、
そのベクトルを軸にして60度回転させるようにして解決。
マウスクリックでボールを動かせるようになったので、やっと選手で蹴れるかどうかというところまで戻った。
331名前は開発中のものです。
2011/11/08(火) 02:48:47.25ID:x9yT+23z 原因がジンバルロックなら一旦クォータニオンを経由させれば回避できるよ
332SGGK ◆6pZCoAtaxk
2011/11/08(火) 23:40:07.79ID:3rFIMhjp 見てくれてありがとうございます!
プログラムの方はたぶんその可能性は無さそうな感じです。
プログラムはワールド座標系だけで書いてあり、選手から見た座標系をフィールド基準の座標系に行列一回で変換するような書き方はまだ出来てません。
ジンバルロックとクォータニオンについては難解なので、キーワードとして覚え、プログラムのレベルが上がってきたら挑戦してみたいと思います。
昨日の動作の件は、DXライブラリでの回転の正負方向が分からず、
60度で空中に向かってると思ったら、地中に60度で向かっているようで、
何故かボールが地面で反射せず、地面上を這うような動きになっていたのが原因です。
次の予定はドリブル実装に挑戦!
プログラムの方はたぶんその可能性は無さそうな感じです。
プログラムはワールド座標系だけで書いてあり、選手から見た座標系をフィールド基準の座標系に行列一回で変換するような書き方はまだ出来てません。
ジンバルロックとクォータニオンについては難解なので、キーワードとして覚え、プログラムのレベルが上がってきたら挑戦してみたいと思います。
昨日の動作の件は、DXライブラリでの回転の正負方向が分からず、
60度で空中に向かってると思ったら、地中に60度で向かっているようで、
何故かボールが地面で反射せず、地面上を這うような動きになっていたのが原因です。
次の予定はドリブル実装に挑戦!
333SGGK ◆6pZCoAtaxk
2011/12/31(土) 22:10:55.60ID:OIfdTnQa 気付けば今年ももう終わり…。
実はまた転勤の話が出て、その準備の所為で>>332から進んでないけど、それは言い訳だと思い反省…。
本当に無理だと思う状況にならない限りは諦めないでゆっくり細々でも続けるつもり!
実はまた転勤の話が出て、その準備の所為で>>332から進んでないけど、それは言い訳だと思い反省…。
本当に無理だと思う状況にならない限りは諦めないでゆっくり細々でも続けるつもり!
334名前は開発中のものです。
2012/01/18(水) 00:32:02.30ID:JkO8yqpq 見てるぞ、がんばれ〜。
335SGGK ◆6pZCoAtaxk
2012/01/21(土) 00:43:07.08ID:GhL59l/a ありがとうございます!
まだドリブル実装で止まってますが諦めずに頑張ります。
まだドリブル実装で止まってますが諦めずに頑張ります。
336SGGK ◆6pZCoAtaxk
2012/01/21(土) 01:10:41.85ID:GhL59l/a >>65のキー割り当てと異なってくるかもしれないけど、
マウスカーソルに向かって歩く Zキー押し続ける
マウスカーソルに向かって走る Xキー押し続ける
選手の進行方向固定 Shiftキー押し続ける
ドリブル(選手はボールに向かって移動し、ボールに近づくと
ボールをマウスカーソルに向かって蹴る。
これを繰り返す) Dキーを押し続ける
ロングパス ドリブル中にマウス左クリック
これだと、選手の進行方向を固定して進行方向以外に向けて
ノールックっぽくロングパスを出そうとすると、
Z、Dを押しながらマウスを操作しなければならず、操作性が良くないような気がしてきた…。
深夜になってしまった。(汗;
マウスカーソルに向かって歩く Zキー押し続ける
マウスカーソルに向かって走る Xキー押し続ける
選手の進行方向固定 Shiftキー押し続ける
ドリブル(選手はボールに向かって移動し、ボールに近づくと
ボールをマウスカーソルに向かって蹴る。
これを繰り返す) Dキーを押し続ける
ロングパス ドリブル中にマウス左クリック
これだと、選手の進行方向を固定して進行方向以外に向けて
ノールックっぽくロングパスを出そうとすると、
Z、Dを押しながらマウスを操作しなければならず、操作性が良くないような気がしてきた…。
深夜になってしまった。(汗;
337SGGK ◆6pZCoAtaxk
2012/01/29(日) 23:10:06.09ID:IMaOAms7 しばらくプログラムから離れててソースの中身を忘れてるかもしれないのでリハビリ的に短時間作業。
選手の移動関数内には選手がボールを蹴れる当たり判定範囲を円で示す処理があるんだけど、
その処理部分を別の関数を作ってそちらに移して、選手の移動関数内には
その別に作った関数を書けばいいようにした。
これから先、選手の移動関数内にはいろいろな状態を表すフラグが増えてきて
ソースが見づらくなる事が予想されるので、ちょっと整理してみようと思った。
選手の移動関数内には選手がボールを蹴れる当たり判定範囲を円で示す処理があるんだけど、
その処理部分を別の関数を作ってそちらに移して、選手の移動関数内には
その別に作った関数を書けばいいようにした。
これから先、選手の移動関数内にはいろいろな状態を表すフラグが増えてきて
ソースが見づらくなる事が予想されるので、ちょっと整理してみようと思った。
338SGGK ◆6pZCoAtaxk
2012/01/30(月) 23:23:48.35ID:9k8tvKVu 次は>>116を参考にした処理がプログラム内に散らばっているので、これも整理しようと思う。
昨日と違い面倒なところがあるので時間かかるかもしれない。
昨日のはひとつのクラス内での話なので、一部分の処理を関数として書き直したい場合、
そのクラス内のメンバ関数として定義して使えば動くけど、
今回やろうとしているのは、処理がいろいろなクラスで使われているので、
今考えられるやり方としては、その処理を行う関数をメンバ関数にもつ新しいクラスを作って、
その新しいクラスのオブジェクトを>>116の処理を使っているいろいろなクラス内で定義する。
あとはその新しいクラスのオブジェクト経由?で>>116の処理を行うメンバ関数を呼び出せばなんとかできるのではと期待。
昨日と違い面倒なところがあるので時間かかるかもしれない。
昨日のはひとつのクラス内での話なので、一部分の処理を関数として書き直したい場合、
そのクラス内のメンバ関数として定義して使えば動くけど、
今回やろうとしているのは、処理がいろいろなクラスで使われているので、
今考えられるやり方としては、その処理を行う関数をメンバ関数にもつ新しいクラスを作って、
その新しいクラスのオブジェクトを>>116の処理を使っているいろいろなクラス内で定義する。
あとはその新しいクラスのオブジェクト経由?で>>116の処理を行うメンバ関数を呼び出せばなんとかできるのではと期待。
339SGGK ◆6pZCoAtaxk
2012/01/30(月) 23:29:08.24ID:9k8tvKVu 下から2行目は、「定義する」ではなくて「実体化する」と書いた方が良かったかもしれない。
自信ないけど、なんとなく気になったので訂正。(汗;)
自信ないけど、なんとなく気になったので訂正。(汗;)
340SGGK ◆6pZCoAtaxk
2012/02/01(水) 22:32:47.56ID:3gp/rYmv341SGGK ◆6pZCoAtaxk
2012/02/02(木) 22:41:13.33ID:Y5t1e3wS あれこれ考えたけど良いのが思い浮かばない。
ドリブルの移動関数を別に用意して、選手がボールに当たったらその選手がドリブル権を持っていることにして、
その間はドリブル関数で動くようにして、他の選手がボールに触れたらドリブル権がその選手に移り、
以下同様に繰り返す…というのを考えたが、なんだか以前に失敗したときと同じことになりそうな感じがした。
そこで別の案を偶然思いついた。
22人の選手が一つの変数を共有して、ボールに当たった選手はその変数を自分のIDに書き換えて
移動処理にきたときにその共有変数を見て、自分のIDと一致した場合、移動関数をドリブル関数にする。
そんな変数できるかと思ったがこれも偶然思い出した。
自信は無いけど、静的メンバ変数を宣言して、この変数を外部定義すればよいというところまで調べて思い出した。
なので、今日は
選手クラスにID(←いままで無かった)と静的メンバ変数とそのメンバ変数に読み書きできるように
get、set関数を用意した(メンバ変数がstaticだからこれらの関数が必要だった。)。
上手くいくかどうかは全く未知な状態。
ドリブルの移動関数を別に用意して、選手がボールに当たったらその選手がドリブル権を持っていることにして、
その間はドリブル関数で動くようにして、他の選手がボールに触れたらドリブル権がその選手に移り、
以下同様に繰り返す…というのを考えたが、なんだか以前に失敗したときと同じことになりそうな感じがした。
そこで別の案を偶然思いついた。
22人の選手が一つの変数を共有して、ボールに当たった選手はその変数を自分のIDに書き換えて
移動処理にきたときにその共有変数を見て、自分のIDと一致した場合、移動関数をドリブル関数にする。
そんな変数できるかと思ったがこれも偶然思い出した。
自信は無いけど、静的メンバ変数を宣言して、この変数を外部定義すればよいというところまで調べて思い出した。
なので、今日は
選手クラスにID(←いままで無かった)と静的メンバ変数とそのメンバ変数に読み書きできるように
get、set関数を用意した(メンバ変数がstaticだからこれらの関数が必要だった。)。
上手くいくかどうかは全く未知な状態。
342SGGK ◆6pZCoAtaxk
2012/02/06(月) 23:22:29.56ID:fDWM60Br 上の文の下から2行目のは「staticでprivateだから」の間違いのような気がしてきたけど自信なし。
今は作業を続ける前にボール関係のクラスをプリントアウトして
寝る時にこれを見ながらプログラムの中身を思い出そうとしている最中。
何故、そんな事してるかというと単純に中身を忘れたので思い出す必要があるというのと、
現在マウス左クリックでボールを蹴りだせるようにしている箇所を関数として
ボールのクラスに移して残しておきたいと思ったから。
今は作業を続ける前にボール関係のクラスをプリントアウトして
寝る時にこれを見ながらプログラムの中身を思い出そうとしている最中。
何故、そんな事してるかというと単純に中身を忘れたので思い出す必要があるというのと、
現在マウス左クリックでボールを蹴りだせるようにしている箇所を関数として
ボールのクラスに移して残しておきたいと思ったから。
343SGGK ◆6pZCoAtaxk
2012/02/13(月) 23:48:23.39ID:Z7ePs7lw ボールクラスの宣言内にボールを蹴ったときの処理をするメンバ関数の名前だけ書き、
その定義をcppファイルに書いた。でも、中身はまだ空の状態。
>>342の「現在マウス左クリックでボールを蹴りだせるようにしている箇所を関数」にしようとすると、
ボールを蹴る関数が、マウスと選手の位置情報を持つ必要があり、ボールを蹴る関数が複雑になるので、
現在マウス左クリックでボールを蹴りだせるようにしている箇所でボールを蹴ろうとする方向とその大きさを計算して、
それをボールを蹴る関数に引数として渡すようにしようと思ったところで終了。
いろいろあってなかなか進まない…orz
その定義をcppファイルに書いた。でも、中身はまだ空の状態。
>>342の「現在マウス左クリックでボールを蹴りだせるようにしている箇所を関数」にしようとすると、
ボールを蹴る関数が、マウスと選手の位置情報を持つ必要があり、ボールを蹴る関数が複雑になるので、
現在マウス左クリックでボールを蹴りだせるようにしている箇所でボールを蹴ろうとする方向とその大きさを計算して、
それをボールを蹴る関数に引数として渡すようにしようと思ったところで終了。
いろいろあってなかなか進まない…orz
344SGGK ◆6pZCoAtaxk
2012/02/27(月) 23:06:42.46ID:7NsJmhpt >>341の
>22人の選手が一つの変数を共有して、ボールに当たった選手はその変数を自分のIDに書き換えて
のプログラムを書き、コンパイラが通るところまで出来た。
ドリブルの関数をどうするかについてまだちょっとはっきりしてない感じ。
>22人の選手が一つの変数を共有して、ボールに当たった選手はその変数を自分のIDに書き換えて
のプログラムを書き、コンパイラが通るところまで出来た。
ドリブルの関数をどうするかについてまだちょっとはっきりしてない感じ。
345SGGK ◆6pZCoAtaxk
2012/02/28(火) 23:55:54.65ID:3O5AYFZZ >>341の
>移動処理にきたときにその共有変数を見て、自分のIDと一致した場合、移動関数をドリブル関数にする。
のプログラムを書いた。
選手の移動関数の目標座標がいままではマウスカーソルだったのを選手がボールにタッチした時に目標をボール座標に切り替わるようにしただけ。
ある程度の距離分ボールを蹴りだす処理を書いていないので、ボールにタッチすると同時に選手の動きがその位置で止まってしまう。
>移動処理にきたときにその共有変数を見て、自分のIDと一致した場合、移動関数をドリブル関数にする。
のプログラムを書いた。
選手の移動関数の目標座標がいままではマウスカーソルだったのを選手がボールにタッチした時に目標をボール座標に切り替わるようにしただけ。
ある程度の距離分ボールを蹴りだす処理を書いていないので、ボールにタッチすると同時に選手の動きがその位置で止まってしまう。
346SGGK ◆6pZCoAtaxk
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;
}
しかし、ボールの動きが良くない。
最初は選手がボールを押してるような感じでずるずる動いたかと思うと
次の瞬間、勢いよく蹴ってしまう。
移動出来る選手は自分が動かす1人だけだけで他選手は足元から移動方向に短い線を引くようにしていたので気付いた。
原因はボールにタッチした場合にボールに向かい、タッチしてない場にマウスカーソルに向かうのを
反対にプログラムしていたから。
次は、それでもボールが蹴れない問題。
it=(*listfp).begin();
while(it!=(*listfp).end()){
押してるキーで移動関数(歩く・走る)を切り替える
}
++it;
}
この1行を忘れてた → it=(*listfp).begin();
while(it!=(*listfp).end()){
ボールにタッチすると判定用変数を選手IDに上書きして、選手の移動目標をボールにして、ボールを蹴る。
}
++it;
}
しかし、ボールの動きが良くない。
最初は選手がボールを押してるような感じでずるずる動いたかと思うと
次の瞬間、勢いよく蹴ってしまう。
347SGGK ◆6pZCoAtaxk
2012/03/11(日) 13:42:44.02ID:Ow6aUl7a ボールが当たり判定に入り、計算されたボール速度がまだ遅いために当たり判定からボールが出ないことによって
速度がどんどん加算されてしまい、当たり判定から出れる速度になる時には大きな速度になっている…などという想像をしてみたが、
確かめる方法が思いつかなかった。
今のプログラムはボールをキックやドリブルするときには、その瞬間のボールの速度に
キックやドリブルの速度を合計するやり方だが、これをやめて、キックやドリブルの瞬間、
つまり当たり判定に触れた時にボールの速度を0にしてからキックやドリブルで設定していた速度で
蹴るようにしたら上手く動いた。
これだと神がかりなトラップになるけど、ゲームなのでとりあえず今はこれでよしとした。
でも、選手にボールがぶつかった時のはねかえり表現ができなくなるので、いつかプログラムを書き直す可能性もある。
速度がどんどん加算されてしまい、当たり判定から出れる速度になる時には大きな速度になっている…などという想像をしてみたが、
確かめる方法が思いつかなかった。
今のプログラムはボールをキックやドリブルするときには、その瞬間のボールの速度に
キックやドリブルの速度を合計するやり方だが、これをやめて、キックやドリブルの瞬間、
つまり当たり判定に触れた時にボールの速度を0にしてからキックやドリブルで設定していた速度で
蹴るようにしたら上手く動いた。
これだと神がかりなトラップになるけど、ゲームなのでとりあえず今はこれでよしとした。
でも、選手にボールがぶつかった時のはねかえり表現ができなくなるので、いつかプログラムを書き直す可能性もある。
348SGGK ◆6pZCoAtaxk
2012/03/11(日) 14:04:38.88ID:Ow6aUl7a しばらくの間、進まなくなるかもしれないので、UP。
ttp://ux.getuploader.com/sggk/ のsggk028です。
例えば、shiftキーを押すと選手の移動方向が一定になるようにしてあるけど、
これをドリブル中にやるとドリブルを放棄して選手が一定方向に進んでしまう。
何か新要素をプログラムに加えるたびにあちこち不具合が出てしまい、直すのにものすごく時間がかかってしまう。
あちこちにif文を使ってるので難しい。
まだどちらかといえば初期の段階なのにこれだけ難しくなるということは
何かテクニックが必要なのかもしれないので、ちょっと調べてみるつもり。
以前このスレで紹介してもらったゲームAIプログラミングの最初の方だけ読んでみようと思うけど、
前読んだ時もあまりよくわからなかったので、もし駄目だったら、このUPがラストの可能性あり…orz
ttp://ux.getuploader.com/sggk/ のsggk028です。
例えば、shiftキーを押すと選手の移動方向が一定になるようにしてあるけど、
これをドリブル中にやるとドリブルを放棄して選手が一定方向に進んでしまう。
何か新要素をプログラムに加えるたびにあちこち不具合が出てしまい、直すのにものすごく時間がかかってしまう。
あちこちにif文を使ってるので難しい。
まだどちらかといえば初期の段階なのにこれだけ難しくなるということは
何かテクニックが必要なのかもしれないので、ちょっと調べてみるつもり。
以前このスレで紹介してもらったゲームAIプログラミングの最初の方だけ読んでみようと思うけど、
前読んだ時もあまりよくわからなかったので、もし駄目だったら、このUPがラストの可能性あり…orz
349SGGK ◆6pZCoAtaxk
2012/04/15(日) 23:49:55.88ID:vuiViXZE 一ヶ月少々経過。時間過ぎるの早すぎる。
読んでいる本の最初の方というのは、第2章だけの44ページ程度のこと。
たぶん8回ぐらいは読んだと思うが、前半がぼんやりと解ったような気持ちになるだけで、後半はまだまだだな〜という感じ。
サンプルソースをダウンロードしておかないと分からない個所がところどころにあり、幸いダウンロードは出来た。
趣味なので諦めずできるときに少しずつゆっくりと…orz
読んでいる本の最初の方というのは、第2章だけの44ページ程度のこと。
たぶん8回ぐらいは読んだと思うが、前半がぼんやりと解ったような気持ちになるだけで、後半はまだまだだな〜という感じ。
サンプルソースをダウンロードしておかないと分からない個所がところどころにあり、幸いダウンロードは出来た。
趣味なので諦めずできるときに少しずつゆっくりと…orz
350SGGK ◆6pZCoAtaxk
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ならば、その時点の選手移動方向をマウスカーソルに向かって更新しないことで一定方向に進み、
その間はフリーになったマウスカーソルに向かってボールを蹴れるようにしてある。
また1カ月経過しようとしている。
>>349の後、同じ個所を2回読み、合計10回程度は読んだはずなのに駄目そうな感じ。
でも、そう言いつつもさらにもう少し頑張れば分かるかもという気も何故かしている。
ここは気持ちを切り替えて、いったん今やれそうな範囲で進めてみようと思う。
クラス図のUPはその気持ちの表れ。
今、改めてソースを見ると、soccergame.cppの中の処理で
選手のメンバ変数 m_MouseTargetが shiftキーを押したらfalse 、
押さなければ true になるようにし、選手移動関数では、m_MouseTargetを見て、
falseならば、その時点の選手移動方向をマウスカーソルに向かって更新しないことで一定方向に進み、
その間はフリーになったマウスカーソルに向かってボールを蹴れるようにしてある。
351SGGK ◆6pZCoAtaxk
2012/05/07(月) 22:11:35.39ID:Q0zXyG9A そこで考えたのは、
1.ボールの移動目標、
2.選手の移動目標
という2つの変数を用意し、これを状態を表す変数だと考える。
ボールや選手の移動関数はこの2つの中身を見て移動先を知るようにプログラムをもっとわかりやすく書けるのではと思った。
そのための次の作業は、ボールの移動目標、選手の移動目標の状態遷移図を書くこと。
1.ボールの移動目標、
2.選手の移動目標
という2つの変数を用意し、これを状態を表す変数だと考える。
ボールや選手の移動関数はこの2つの中身を見て移動先を知るようにプログラムをもっとわかりやすく書けるのではと思った。
そのための次の作業は、ボールの移動目標、選手の移動目標の状態遷移図を書くこと。
352SGGK ◆6pZCoAtaxk
2012/05/07(月) 22:32:50.84ID:Q0zXyG9A353SGGK ◆6pZCoAtaxk
2012/06/12(火) 23:21:21.15ID:LaJwmlYj 生存報告。なかなか作業進まず。
選手の移動目標の状態遷移図は書いてみた。
この遷移を本で見たステートデザインパターンを使ってFieldPlayerクラスの中に実装できないかを思い、
FieldPlayerクラスがPlayerDataクラスを継承しているところにPlayerDataクラスがBaseGameEntityクラスを継承、
つまり継承の継承のように3段階にしたら、
「 クラス、構造体、共用体に既定のコンストラクタがありません 」というエラーが出た。
とりあえず、デフォルトコンストラクタを書いてないクラスがあったので書いてみたらコンパイラを通ったけど、
選手が真っ直ぐ動くだけでマウスについて行かなくなった。そろそろ限界かもしれない…。
選手の移動目標の状態遷移図は書いてみた。
この遷移を本で見たステートデザインパターンを使ってFieldPlayerクラスの中に実装できないかを思い、
FieldPlayerクラスがPlayerDataクラスを継承しているところにPlayerDataクラスがBaseGameEntityクラスを継承、
つまり継承の継承のように3段階にしたら、
「 クラス、構造体、共用体に既定のコンストラクタがありません 」というエラーが出た。
とりあえず、デフォルトコンストラクタを書いてないクラスがあったので書いてみたらコンパイラを通ったけど、
選手が真っ直ぐ動くだけでマウスについて行かなくなった。そろそろ限界かもしれない…。
354名前は開発中のものです。
2012/06/15(金) 22:27:24.54ID:PTxBNQ6c ちょっと難しくやろうとしすぎてるのでは?
BetterCな感じで関数型な組み方してとりあえず完成に持っていった方がモチベ維持できるかも
見たところオブジェクト指向に移行しきれてないみたいな感じもあるから継承とか使ってても余計ややこしくなってるだけかも
BetterCな感じで関数型な組み方してとりあえず完成に持っていった方がモチベ維持できるかも
見たところオブジェクト指向に移行しきれてないみたいな感じもあるから継承とか使ってても余計ややこしくなってるだけかも
355名前は開発中のものです。
2012/06/16(土) 18:28:14.57ID:44+Yj3Br 影ながら応援していたけど
初めから難しい物を作りすぎてるって感じがするなぁ
今までの経験を生かして新たに1から出来るだけシンプルに
ファミコンレベルのサッカーとして動くものを作ってみて
それを改造していく方がいいんじゃないかなと
初めから難しい物を作りすぎてるって感じがするなぁ
今までの経験を生かして新たに1から出来るだけシンプルに
ファミコンレベルのサッカーとして動くものを作ってみて
それを改造していく方がいいんじゃないかなと
356SGGK ◆6pZCoAtaxk
2012/06/16(土) 20:50:48.24ID:281LS4tC357SGGK ◆6pZCoAtaxk
2012/06/16(土) 23:58:57.88ID:281LS4tC >>353でやろうとしていたステートパターンを中止。
FieldPlayerクラスがPlayerDataクラスを継承していたのをやめて、FieldPlayerクラスに一体化した。
そして選手移動関数の切り替えに使っていたストラテジーパターンの処理も外して、速度一定で歩く関数ひとつにした。
FieldPlayerクラスがPlayerDataクラスを継承していたのをやめて、FieldPlayerクラスに一体化した。
そして選手移動関数の切り替えに使っていたストラテジーパターンの処理も外して、速度一定で歩く関数ひとつにした。
358SGGK ◆6pZCoAtaxk
2012/06/18(月) 23:32:07.93ID:kpasVy0J Application基底クラスとSoccerGame継承クラスの継承関係もなくして、
SoccerGameクラスに統一。基底クラスの変数があちこちで使われてて、直すのに苦労した。
SoccerGameクラスは印刷するとA4、10ページの分量なので、頭の中を整理中。
SoccerGameクラスに統一。基底クラスの変数があちこちで使われてて、直すのに苦労した。
SoccerGameクラスは印刷するとA4、10ページの分量なので、頭の中を整理中。
359SGGK ◆6pZCoAtaxk
2012/06/19(火) 23:44:58.47ID:M4sPlsXK SoccerGameクラスのソースが長すぎるので、GameTitleクラス、GamePlayクラス、GameOverクラスを作り、
SoccerGameクラスのソースをこの3つのクラスに振り分けてみた。
この3つのクラスをSoccerGameクラスの中でオブジェクト化すればなんとか出来るかもしれないので、試すつもり。
失敗してもこの直前まではバックアップあるので戻れるから大丈夫w
SoccerGameクラスのソースをこの3つのクラスに振り分けてみた。
この3つのクラスをSoccerGameクラスの中でオブジェクト化すればなんとか出来るかもしれないので、試すつもり。
失敗してもこの直前まではバックアップあるので戻れるから大丈夫w
360名前は開発中のものです。
2012/06/20(水) 21:56:07.67ID:trY5wmki 最初から作り直した方が早いかもね
361SGGK ◆6pZCoAtaxk
2012/06/20(水) 23:15:46.22ID:/B/K6MdL362SGGK ◆6pZCoAtaxk
2012/06/21(木) 23:49:12.39ID:ArXkgTjY デザインパターン使わないと言ったけど、ちょっとだけ試してみたかった。
本に書いてたステートパターンの中で最初の1番簡単な例を使ってスタート画面を出せた。
でも実はバグの行を//付けて注釈行化して強引に表示させただけなのでまだなんとも言えない。
残りのゲームプレイとゲーム終了画面表示の遷移が出来なければswitch文使った方法に戻る。
あまり時間が無いのでゆっくり作業…。
本に書いてたステートパターンの中で最初の1番簡単な例を使ってスタート画面を出せた。
でも実はバグの行を//付けて注釈行化して強引に表示させただけなのでまだなんとも言えない。
残りのゲームプレイとゲーム終了画面表示の遷移が出来なければswitch文使った方法に戻る。
あまり時間が無いのでゆっくり作業…。
363SGGK ◆6pZCoAtaxk
2012/06/26(火) 23:26:56.00ID:qwjvXfmc スタート画面とゲームオーバー画面をキー押しで表示切り替えできた。
ステートパターンの1番簡単な例と言いながらも苦戦した。
以前苦しんだ相互参照、前方宣言が関係してくるパターンだった。
本はその部分は知ってる前提で書いてあるので説明が無かった…orz
ネットも調べて知識を得てから考えた実装が動かず、結局試行錯誤で
インクルードと前方宣言を入れたり消したりして奇跡的に運よく動いた感じ。
せっかく書いたので、もし問題なく動くならこの部分だけはそのままにしておいて、
またバグ出たら、ifかswitchでやるしかない…orz
これ以降、遷移をさせたい処理が出てきたら、それはもちろんifかswitchでやるつもり(苦笑)
数年続けてきて自分には無理だという事がやっとわかった感じ。
やらないで諦めるよりは、やってみて気付いたんだから、よしとしよう!
とりあえずはファミコンサッカーを目標にしよう!(これすら出来るか怪しいかもしれない…)
空き時間ができたら作業を少しでも続ける気はあるので、がんばろう〜!…orz
ステートパターンの1番簡単な例と言いながらも苦戦した。
以前苦しんだ相互参照、前方宣言が関係してくるパターンだった。
本はその部分は知ってる前提で書いてあるので説明が無かった…orz
ネットも調べて知識を得てから考えた実装が動かず、結局試行錯誤で
インクルードと前方宣言を入れたり消したりして奇跡的に運よく動いた感じ。
せっかく書いたので、もし問題なく動くならこの部分だけはそのままにしておいて、
またバグ出たら、ifかswitchでやるしかない…orz
これ以降、遷移をさせたい処理が出てきたら、それはもちろんifかswitchでやるつもり(苦笑)
数年続けてきて自分には無理だという事がやっとわかった感じ。
やらないで諦めるよりは、やってみて気付いたんだから、よしとしよう!
とりあえずはファミコンサッカーを目標にしよう!(これすら出来るか怪しいかもしれない…)
空き時間ができたら作業を少しでも続ける気はあるので、がんばろう〜!…orz
364SGGK ◆6pZCoAtaxk
2012/06/27(水) 22:59:33.76ID:1q/ptGIo 昨日のプログラムを少し変えた。
1つの状態について1ヘッダーファイル、1cppファイルというのはファイル数が多すぎて分かりずらいのでやめて、
複数の状態を1ヘッダーファイル、1cppファイルにまとめた。
ステートパターンの参考にした本、オライリーのゲームAIプログラミングもそうなっていたし…。
一応、インクルードファイルや前方宣言も本に合わせてみた。
しかし、1か所だけSoccerGameクラスのヘッダーファイルのコンストラクタの行でエラーが出た。
コンストラクタだけ実装(というか定義?)がヘッダーに書いてあったので、
この定義部分だけをcppファイルに移したらコンパイル出来た。
とりあえず、この書き方で進めよう。
タイトル、ゲームオーバー画面が出せたので、次はメインのゲーム部分を書く予定。
1つの状態について1ヘッダーファイル、1cppファイルというのはファイル数が多すぎて分かりずらいのでやめて、
複数の状態を1ヘッダーファイル、1cppファイルにまとめた。
ステートパターンの参考にした本、オライリーのゲームAIプログラミングもそうなっていたし…。
一応、インクルードファイルや前方宣言も本に合わせてみた。
しかし、1か所だけSoccerGameクラスのヘッダーファイルのコンストラクタの行でエラーが出た。
コンストラクタだけ実装(というか定義?)がヘッダーに書いてあったので、
この定義部分だけをcppファイルに移したらコンパイル出来た。
とりあえず、この書き方で進めよう。
タイトル、ゲームオーバー画面が出せたので、次はメインのゲーム部分を書く予定。
365名前は開発中のものです。
2012/06/28(木) 21:49:03.02ID:ckB52e4z SGGK氏には「まとめサイト」を作ることを提案します。
これまでに考えて行ってきたことと、それに対するコメントを対応付けると、
現在のご自身のポテンシャルが見えてくると思います。
また、まとめサイトを持っていたほうが、建設的なコメントが得られるように
なると思いますよ。
これまでに考えて行ってきたことと、それに対するコメントを対応付けると、
現在のご自身のポテンシャルが見えてくると思います。
また、まとめサイトを持っていたほうが、建設的なコメントが得られるように
なると思いますよ。
366SGGK ◆6pZCoAtaxk
2012/06/29(金) 00:19:39.71ID:0PUJkiiN >>365
な…なるほど!、ありがとうございます。
ゲームが完成するか自信がないため、まとめサイトについては考えてませんでした。
去年9月頃に受けたアドバイスの後半から追いつけなくなってしまってたので、
そういうのもまとめられたらと思います。
な…なるほど!、ありがとうございます。
ゲームが完成するか自信がないため、まとめサイトについては考えてませんでした。
去年9月頃に受けたアドバイスの後半から追いつけなくなってしまってたので、
そういうのもまとめられたらと思います。
367SGGK ◆6pZCoAtaxk
2012/06/29(金) 00:20:46.65ID:0PUJkiiN ホームページは初めてだけど、頑張ってみます。
368SGGK ◆6pZCoAtaxk
2012/07/09(月) 00:12:38.91ID:wFKWfjV1 できるだけ簡略化した状態で作ろうと思い、
今まで使っていたフリー素材はやめて(ラインの座標が正確にわかっていたわけでは無かったから)、
フィールドは緑の板一枚にして、ゴールの絵は無し、ラインを毎ループプログラムで書き、
そのラインも外枠だけにすることを考えた。
緑色のポリゴンの板をとりあえず作成したが、メタセコイアの使い方をすっかり忘れてて苦労した。
今度はこれを画面に表示しようとしたら画面が真っ黒。
フィールドを原点(0,0,0)において、カメラは(0,100、0)で(0,0,0)注視にしたから見えるはずなのに…。
ふと、カメラ座標を(100、100、0)にしてみたら一部が見えた。一応データは読めてるようだ。
メタセコイアで作った時の座標系やDXライブラリの座標系についていろいろ忘れてしまってるようだ…orz
ホームページは作業始めるまでにはかなり時間かかりそうだけど、あきらめずにやるつもり。
FC2で練習する計画。一応グーグルにホームページの登録はしてみた。
今まで使っていたフリー素材はやめて(ラインの座標が正確にわかっていたわけでは無かったから)、
フィールドは緑の板一枚にして、ゴールの絵は無し、ラインを毎ループプログラムで書き、
そのラインも外枠だけにすることを考えた。
緑色のポリゴンの板をとりあえず作成したが、メタセコイアの使い方をすっかり忘れてて苦労した。
今度はこれを画面に表示しようとしたら画面が真っ黒。
フィールドを原点(0,0,0)において、カメラは(0,100、0)で(0,0,0)注視にしたから見えるはずなのに…。
ふと、カメラ座標を(100、100、0)にしてみたら一部が見えた。一応データは読めてるようだ。
メタセコイアで作った時の座標系やDXライブラリの座標系についていろいろ忘れてしまってるようだ…orz
ホームページは作業始めるまでにはかなり時間かかりそうだけど、あきらめずにやるつもり。
FC2で練習する計画。一応グーグルにホームページの登録はしてみた。
369SGGK ◆6pZCoAtaxk
2012/07/09(月) 23:59:59.89ID:1ssCdaiG 3Dで真上から見れば2Dになるかなという考えがあったから昨日のような事をしてたんだけど、
いろいろ悩んだ結果、2Dに戻ってやり直してみようと思った。
3Dについては、今までいろいろアドバイスもらっているのに止めるのはなんだか申し訳ない気持ちもあるけど、
今年の8月末で5年経つはずだし、まずは形に出来る可能性が少しでも高い方法を選ぼうと思う。
3Dでいろいろ学んだり考えたりした経験もきっと役立つだろうし…。
当時作った2Dスクロールはがくがく振動してたけど、それでも良しとするつもり。
いろいろ悩んだ結果、2Dに戻ってやり直してみようと思った。
3Dについては、今までいろいろアドバイスもらっているのに止めるのはなんだか申し訳ない気持ちもあるけど、
今年の8月末で5年経つはずだし、まずは形に出来る可能性が少しでも高い方法を選ぼうと思う。
3Dでいろいろ学んだり考えたりした経験もきっと役立つだろうし…。
当時作った2Dスクロールはがくがく振動してたけど、それでも良しとするつもり。
370SGGK ◆6pZCoAtaxk
2012/07/15(日) 22:56:50.87ID:UGezkUv1 フィールドの画像データ作成に時間がかかってしまった。
最初はファミコンサッカーのフィールドを意識して奥行を考慮したフィールドにしようと思ったが、これはやめた。
真上から見たフィールドにしたが、ドット絵なので、例えばある点と点を結ぶ直線の太さを4ドットにした時、
どのように書けば良いのかといった事にまで悩んでしまい、一度書きあげたが、なんとなく1〜2ドットずれてるような気がした。
そこで思いついたのが、真上からの絵なのだから1/4だけ書いて、これを3枚コピーして上下左右反転してから結合するというやり方。
幸いそのような機能がついていたので、ようやくフィールドの絵が完成した。
最初はファミコンサッカーのフィールドを意識して奥行を考慮したフィールドにしようと思ったが、これはやめた。
真上から見たフィールドにしたが、ドット絵なので、例えばある点と点を結ぶ直線の太さを4ドットにした時、
どのように書けば良いのかといった事にまで悩んでしまい、一度書きあげたが、なんとなく1〜2ドットずれてるような気がした。
そこで思いついたのが、真上からの絵なのだから1/4だけ書いて、これを3枚コピーして上下左右反転してから結合するというやり方。
幸いそのような機能がついていたので、ようやくフィールドの絵が完成した。
371SGGK ◆6pZCoAtaxk
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。
1チーム分の4コマx8方向分、キックの絵を1コマx8枚方向分まで完了。
これがもう1チーム分(色変えるだけでも結構手間な感じ)と
ゴールキーパー2人の移動も今日書いた絵を色変えるだけにして、ボールに飛びつく絵を1コマx8方向分欲しいとして…。
(32+8)x3+8x2=136枚書かなければならない…orz
絵の経験は全く無いので今まで使っていた影絵レベルに色を付けた程度のものになった。
ちなみに使用ツールはフリーソフトのEDGE。
372SGGK ◆6pZCoAtaxk
2012/07/29(日) 23:26:09.03ID:YNDBJ1FS 自分に負けて今週末は残りの絵を用意出来なかった。
それでも何かしようと考え、この前書いたフィールド(今回のは、1280x420ドット)を座標(-320,60)に書いてみたら一応表示できた。
もしかすると(-319,59)かもしれないが、追及はしない…orz
グラフィックデータをロードするときのエラー関係の処理で書いてたC++の文法、throwやcatchの文も思い切ってカットした。
今度は思いつく限りの状態遷移をノートにでも書いてみようかと思う。
例えば、得点表示、時間表示、ボールがラインアウトしたとき、得点時、前半・後半・ハーフタイムの切り替わりの時どうなるかなどの遷移を整理して、それらをどうやってプログラムにまとめるかといった事を考える予定。
ゲームの設計図というものを知らないので、結局我流。
それでも何かしようと考え、この前書いたフィールド(今回のは、1280x420ドット)を座標(-320,60)に書いてみたら一応表示できた。
もしかすると(-319,59)かもしれないが、追及はしない…orz
グラフィックデータをロードするときのエラー関係の処理で書いてたC++の文法、throwやcatchの文も思い切ってカットした。
今度は思いつく限りの状態遷移をノートにでも書いてみようかと思う。
例えば、得点表示、時間表示、ボールがラインアウトしたとき、得点時、前半・後半・ハーフタイムの切り替わりの時どうなるかなどの遷移を整理して、それらをどうやってプログラムにまとめるかといった事を考える予定。
ゲームの設計図というものを知らないので、結局我流。
373SGGK ◆6pZCoAtaxk
2012/07/31(火) 22:11:31.45ID:Cy8rBdoX ゲームが1ループする毎に1ずつ増える変数を宣言・定義した。
この変数は、選手のアニメパターンの何コマ目を表示するかを判断するのに使われる。
「14歳から(略)C++(略)」に書いてあった手法なので特に新しいことはしてない。
つまり、自分はこの方法しか知らない…orz
この変数は、選手のアニメパターンの何コマ目を表示するかを判断するのに使われる。
「14歳から(略)C++(略)」に書いてあった手法なので特に新しいことはしてない。
つまり、自分はこの方法しか知らない…orz
374SGGK ◆6pZCoAtaxk
2012/08/19(日) 21:40:11.74ID:vVyCK6D6 まだクラスを増やさないでテスト的にプログラム中。(作業時間をなかなか確保出来ないので…)
選手の画像データを読み込むところまで書き、バグも出なくなった。
次は、選手をキーボードで8方向移動出来るようにする予定。
今までのマウスカーソルに選手が向かう仕様はやめることにした。
選手の画像データを読み込むところまで書き、バグも出なくなった。
次は、選手をキーボードで8方向移動出来るようにする予定。
今までのマウスカーソルに選手が向かう仕様はやめることにした。
375名前は開発中のものです。
2012/08/23(木) 21:40:24.24ID:1+Zgsvnu 完全0の状態から小規模の3DMMORPGを作ろうとしてるんだが、勉強とトライアンドエラー続けて10年で稼働まで持っていけるだろうか。
とりあえずC言語の基礎本買ってきた。
とりあえずC言語の基礎本買ってきた。
376名前は開発中のものです。
2012/08/24(金) 05:31:27.52ID:ZnGzYILD 努力の仕方次第で10年かからずとも勿論可能だろうけれど、
そのゲームシステムやデザインが10年後通用するものかどうかは解らない。
そのゲームシステムやデザインが10年後通用するものかどうかは解らない。
377名前は開発中のものです。
2012/08/24(金) 06:38:37.94ID:RwA1Lyd+378SGGK ◆6pZCoAtaxk
2012/08/24(金) 22:58:53.06ID:YHdN9J8K >>375
自分は今年の8月末で5年経過。まだ1本も作ったことが無いのであと5年で出来るかわかりません。
今思えば、平均して1日どの程度の時間やっていたのか、集中力、やり方とかの管理や工夫が足りてなかったかもしれない。
5年やって実際何時間作業したかとか記録してなかったし…orz(今後は時間だけでもメモ!)
平均的にある程度時間を確保して継続して10年やれればなんとかなりそうに思います。
ゲーム用ライブラリは、既存のものが使えれば時間の節約になってさらに良いと思います。
自分は今年の8月末で5年経過。まだ1本も作ったことが無いのであと5年で出来るかわかりません。
今思えば、平均して1日どの程度の時間やっていたのか、集中力、やり方とかの管理や工夫が足りてなかったかもしれない。
5年やって実際何時間作業したかとか記録してなかったし…orz(今後は時間だけでもメモ!)
平均的にある程度時間を確保して継続して10年やれればなんとかなりそうに思います。
ゲーム用ライブラリは、既存のものが使えれば時間の節約になってさらに良いと思います。
379名前は開発中のものです。
2012/08/25(土) 07:20:40.77ID:uvPogsDK >>378
アドバイスありがとうございます。
作業工程管理って大事なのですね。
基礎を勉強しつつ、完成までに何が必要かを調べて、いつまでにこれができるようにするみたいな逆算は必要かもですね。
ライブラリもちと調べてみます!
アドバイスありがとうございます。
作業工程管理って大事なのですね。
基礎を勉強しつつ、完成までに何が必要かを調べて、いつまでにこれができるようにするみたいな逆算は必要かもですね。
ライブラリもちと調べてみます!
380SGGK ◆6pZCoAtaxk
2012/09/20(木) 22:13:17.22ID:qj08WVBT 確認し忘れてしまいましたが、
もしも学生で、しかも受験生だったりする場合は、勉強に100%専念した方がいいです。
約1ヶ月経ってしまってるけど、ちょっと気になったので…(汗;)
もしも学生で、しかも受験生だったりする場合は、勉強に100%専念した方がいいです。
約1ヶ月経ってしまってるけど、ちょっと気になったので…(汗;)
381SGGK ◆6pZCoAtaxk
2012/09/20(木) 22:29:34.23ID:qj08WVBT >>374から進まず…orz
選手の8方向移動を通常ならifかswitch文で条件分岐して、
押したキーに応じて選手の座標に数値を足し引きするだけなんだけど、
そこを関数にして、その関数を関数ポインタとかいうのを使ってうまくまとめられないかと思ってしまった。
しかし、ネットで書き方を調べてるとC言語でいう関数とC++のメンバ関数でのやり方に違いがあるようで、
なんとか空のメンバ関数を定義して関数ポインタを用意するところまでコンパイラが通るようにはなったけど、
結局、ifやswitch文が無くなるような書き方には出来なかったので、ここまでやって断念してしまった。
この作業にかなりタイムロスした。(汗;)
選手の8方向移動を通常ならifかswitch文で条件分岐して、
押したキーに応じて選手の座標に数値を足し引きするだけなんだけど、
そこを関数にして、その関数を関数ポインタとかいうのを使ってうまくまとめられないかと思ってしまった。
しかし、ネットで書き方を調べてるとC言語でいう関数とC++のメンバ関数でのやり方に違いがあるようで、
なんとか空のメンバ関数を定義して関数ポインタを用意するところまでコンパイラが通るようにはなったけど、
結局、ifやswitch文が無くなるような書き方には出来なかったので、ここまでやって断念してしまった。
この作業にかなりタイムロスした。(汗;)
382SGGK ◆6pZCoAtaxk
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
(略)
#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名前は開発中のものです。
2012/10/08(月) 22:33:19.85ID:t0Dt0rCo 頑張れ〜
おれもほぼ一人でRPGっぽいの作ってる。
いまマップエディタってくらい初歩的なとこ。
SGGK氏のレス全部読んでないしどんな感じかわからないけど、
サッカーだったかAIのサンプルで実例で学ぶAI入門みたいな本がある。既出だったらごめん
サンプルが↓のurlの一番下にあるファイルの4章にサッカーのボール追いかけるのがあるよ。
http://www.jblearning.com/Catalog/9781556220784/student/
おれもほぼ一人でRPGっぽいの作ってる。
いまマップエディタってくらい初歩的なとこ。
SGGK氏のレス全部読んでないしどんな感じかわからないけど、
サッカーだったかAIのサンプルで実例で学ぶAI入門みたいな本がある。既出だったらごめん
サンプルが↓のurlの一番下にあるファイルの4章にサッカーのボール追いかけるのがあるよ。
http://www.jblearning.com/Catalog/9781556220784/student/
384SGGK ◆6pZCoAtaxk
2012/10/09(火) 21:25:42.44ID:H1xyTP7b >>383
リンク紹介ありがとうございます。お互い頑張りましょ〜!
実はこれの2章だけを以前に読んでみたことがあり、その時は1/3〜1/2位しか分からなかったので、
現在停止中ですが、今のプログラムが出来たら、また頑張って読んでみようと思っています。
リンクの方もダウンロードしてみました。
早く4章のサンプルのように画面を動かせるところまで行きたいです。
リンク紹介ありがとうございます。お互い頑張りましょ〜!
実はこれの2章だけを以前に読んでみたことがあり、その時は1/3〜1/2位しか分からなかったので、
現在停止中ですが、今のプログラムが出来たら、また頑張って読んでみようと思っています。
リンクの方もダウンロードしてみました。
早く4章のサンプルのように画面を動かせるところまで行きたいです。
385SGGK ◆6pZCoAtaxk
2012/11/18(日) 21:07:31.77ID:7vKXgmFZ 訳あって作業中断してるけど、時間が出来たらまた戻ってきます…。
386名前は開発中のものです。
2014/02/26(水) 16:03:18.21ID:RJ/hanrh 乗っ取り
387名前は開発中のものです。
2014/03/02(日) 20:07:34.97ID:OCTlKWu3 ドキュ読む気力はあるがコード書く気力なし
388SGGK ◆6pZCoAtaxk
2014/04/12(土) 10:02:19.06ID:vC4zhho5389SGGK ◆6pZCoAtaxk
2014/04/21(月) 23:22:00.49ID:kHfkeR/E ホームページを初めて作ったのでまだ練習用だけど「まとめサイト」を作ってみた。
自分のコメントを残して、いままで何やってきたのかを振り返りやすくする程度には使えるけど、まとめとしては物足りないかもしれない。
でも時間がないので、これで発進!
http://gameprogram10.web.fc2.com/
復習するといったけど、もし再開するなら復習しないで全く0からまたやりなおすのが濃厚な感じ・・・。
自分のコメントを残して、いままで何やってきたのかを振り返りやすくする程度には使えるけど、まとめとしては物足りないかもしれない。
でも時間がないので、これで発進!
http://gameprogram10.web.fc2.com/
復習するといったけど、もし再開するなら復習しないで全く0からまたやりなおすのが濃厚な感じ・・・。
390名前は開発中のものです。
2014/04/22(火) 23:03:02.00ID:K5qRm0YZ やり方自体を見直さないと、0からやり直しても、同じ失敗を繰り返しますよ。
過去ログを一通り眺めましがが、前スレ778氏の指摘が実に的確だと思いました。
そのほかにも、すでに十分な技術的アドバイスも出ているような気がしますが、
おそらくほとんどが消化不良になっているように読めます。
ちょうど長期間のブランクがあったところですし、とりあえずプログラミングからは一旦離れて、
作ろうとしているゲームの設計書を丁寧に書きなおすことからやり直してみてはいかがですか?
過去ログを一通り眺めましがが、前スレ778氏の指摘が実に的確だと思いました。
そのほかにも、すでに十分な技術的アドバイスも出ているような気がしますが、
おそらくほとんどが消化不良になっているように読めます。
ちょうど長期間のブランクがあったところですし、とりあえずプログラミングからは一旦離れて、
作ろうとしているゲームの設計書を丁寧に書きなおすことからやり直してみてはいかがですか?
391SGGK ◆6pZCoAtaxk
2014/04/24(木) 23:07:06.02ID:EZFAmAoI >>390
見てくれてありがとうございます。
14歳からのC++本のソースを理解し、それを改造してサッカーゲームを作ってみようと言う思いで始め、
本のソースを理解するためにクラス図なども書いてみたりして数年間やったけど、結局こうなってしまった。・・・orz
このスレの後半ではマイルストーンの提案もあってそれに沿う考えでいたけど、まずは設計書を書く方針でいっていみようと思います。
マイルストーン案も設計後に改めてやることになると思うのでスルーするわけではないです。
作業が中断しがちなので、ファミコンサッカーレベルでやると言っておいて申し訳ないけど
さらに簡略化した画像構成でつくる計画です。>>370、371で自作した絵も結局使わなかったし、
絵の経験もなく素材を自分で用意しようとすると時間が掛かりモチベーションが下がりやすくなることが分かったから。
スクロールもなし、3Dもなし、グラフィック素材の類は一切なしで、
DXライブラリの線画で代用し、その代わりにゲームの流れとか遷移のようなものを
作れ無さそうでもいいから設計図に書いてみる予定。
見てくれてありがとうございます。
14歳からのC++本のソースを理解し、それを改造してサッカーゲームを作ってみようと言う思いで始め、
本のソースを理解するためにクラス図なども書いてみたりして数年間やったけど、結局こうなってしまった。・・・orz
このスレの後半ではマイルストーンの提案もあってそれに沿う考えでいたけど、まずは設計書を書く方針でいっていみようと思います。
マイルストーン案も設計後に改めてやることになると思うのでスルーするわけではないです。
作業が中断しがちなので、ファミコンサッカーレベルでやると言っておいて申し訳ないけど
さらに簡略化した画像構成でつくる計画です。>>370、371で自作した絵も結局使わなかったし、
絵の経験もなく素材を自分で用意しようとすると時間が掛かりモチベーションが下がりやすくなることが分かったから。
スクロールもなし、3Dもなし、グラフィック素材の類は一切なしで、
DXライブラリの線画で代用し、その代わりにゲームの流れとか遷移のようなものを
作れ無さそうでもいいから設計図に書いてみる予定。
392名前は開発中のものです。
2014/06/14(土) 00:47:58.80ID:JnSSCGMy ActionScript3.0でゲームを作ろうと1から勉強しているのですが、ポインターが無いの不自由でーす
393名前は開発中のものです。
2014/06/14(土) 21:56:59.17ID:JnSSCGMy 画像が表示できた。
ただそれだけなのに、今日は何か嬉しいでーす
ただそれだけなのに、今日は何か嬉しいでーす
394SGGK ◆6pZCoAtaxk
2014/06/15(日) 22:46:59.94ID:8sVw3dle こんばんは。ActionScriptに関して知識・経験がないのでお役に立てませんが、作業が進んでいるようでなによりです。(^^)
こちらはいろいろ事情があって、また作業が止まってるけど、なんとか8月までには再開して、できれば作業を習慣化したいな〜と思っています。
こちらはいろいろ事情があって、また作業が止まってるけど、なんとか8月までには再開して、できれば作業を習慣化したいな〜と思っています。
395名前は開発中のものです。
2014/06/16(月) 00:50:34.16ID:RCqw2fGb396SGGK ◆6pZCoAtaxk
2014/06/16(月) 23:41:05.88ID:F/7hmRJ3 文字も出せればもう何かが作れそうですね(^^
自分はホームページもソースもちょっと離れただけですぐ忘れてしまうので、思い出すところからの再開です。^^
自分はホームページもソースもちょっと離れただけですぐ忘れてしまうので、思い出すところからの再開です。^^
397SGGK ◆6pZCoAtaxk
2014/06/20(金) 22:22:35.84ID:YzmN3eb0 今、自分の書き込みを見直すと少し言い間違えてた(^^;
まず最初にやるのは設計図からということで現在はゲーム製作に関する作業は停止中。
目標は8月の連休前後ごろから出来るだけ習慣的に(趣味的に)製作作業を続けられるようになること。
停止してるならその事をここに書いておいた方がいいかなと思ったので・・・
今度こそもっと作業が続けられるようにするために今は部屋を片付けたりして
身のまわりを整理しているところ。
まず最初にやるのは設計図からということで現在はゲーム製作に関する作業は停止中。
目標は8月の連休前後ごろから出来るだけ習慣的に(趣味的に)製作作業を続けられるようになること。
停止してるならその事をここに書いておいた方がいいかなと思ったので・・・
今度こそもっと作業が続けられるようにするために今は部屋を片付けたりして
身のまわりを整理しているところ。
398名前は開発中のものです。
2014/06/21(土) 15:21:35.71ID:Cw+IxUfs あるときはis-a、そしてあるときはhas-a。
小手先のクラス構造を変えるだけの日々で、まったく前に進まないでーす。
小手先のクラス構造を変えるだけの日々で、まったく前に進まないでーす。
399SGGK ◆6pZCoAtaxk
2014/06/22(日) 22:38:01.40ID:xv2opLzk 部屋の片付けはやっぱり8月まで掛かりそう。汚部屋レベルまではちらかってないと思うけど、置く場所がなくて・・・orz
クラスについては中断後長くて忘れてるけどまた頑張って思い出そうと思っていて、
設計はファミコンが出る前のピンポンやホッケーのレベルまで下げる予定だから、今度こそ形にしたいです。
クラスについては中断後長くて忘れてるけどまた頑張って思い出そうと思っていて、
設計はファミコンが出る前のピンポンやホッケーのレベルまで下げる予定だから、今度こそ形にしたいです。
400名前は開発中のものです。
2014/07/01(火) 07:06:55.78ID:MuOSn+GY ActionScript、1割5分ぐらいは分かって来た!
ダラダラとしたこの勢いで、STGに挑戦してみまーす
ダラダラとしたこの勢いで、STGに挑戦してみまーす
401SGGK ◆6pZCoAtaxk
2014/07/02(水) 22:23:03.63ID:eocX1eqT 8月が近づいてきて、片付けもある程度で済ませて設計を考える時期になってきました。
1年以上前のあの頃のプログラムの書き方、今の自分に思い出せるか不安・・・
1年以上前のあの頃のプログラムの書き方、今の自分に思い出せるか不安・・・
402名前は開発中のものです。
2014/07/03(木) 03:08:42.45ID:7ivVj8mD >>401
>思い出せるか不安
分かる!
その瞬間だけは、コメントやデバック文の重要性に気がつくw
引数の範囲チェックとか、本当、後で読み返すと本当に助かる。
でも、結局コメントやデバック文は手抜きになりまーす
>思い出せるか不安
分かる!
その瞬間だけは、コメントやデバック文の重要性に気がつくw
引数の範囲チェックとか、本当、後で読み返すと本当に助かる。
でも、結局コメントやデバック文は手抜きになりまーす
403SGGK ◆6pZCoAtaxk
2014/07/03(木) 23:36:09.15ID:0kkgGw/5 たぶんコンパイラの使い方や言語も忘れてるので頑張って思い出さねばならなくなる予感。
後で中身を思い出せるようにコメントも書いていく予定です。
後で中身を思い出せるようにコメントも書いていく予定です。
404名前は開発中のものです。
2014/07/05(土) 09:36:50.19ID:nyHVx1H7 つ 「サッカーゲームの作り方教えろ」
ttp://peace.2ch.net/test/read.cgi/gamedev/1024411633/l50
ttp://peace.2ch.net/test/read.cgi/gamedev/1024411633/l50
405SGGK ◆6pZCoAtaxk
2014/07/06(日) 00:23:07.15ID:kEJ3/V9n ありがとうございます。ヾ(。・ω・)ノ
これを2ヶ月で完成させるとは凄いです。プロかもしれませんね。
これを2ヶ月で完成させるとは凄いです。プロかもしれませんね。
406名前は開発中のものです。
2014/07/14(月) 04:48:03.53ID:JeWS0vJt ActionScriptにも随分と慣れて、一般化・再利用可能な部分はライブラリ(.swc)に切り出し始めー。
も、色々いじっていると、ライブラリ部分を大幅に変更したくなり・・・。
大作業になってまーす。
も、色々いじっていると、ライブラリ部分を大幅に変更したくなり・・・。
大作業になってまーす。
407SGGK ◆6pZCoAtaxk
2014/07/15(火) 22:47:27.16ID:futVki6y こちらはホームページの練習を少しやってみた程度で、
インターネットが始まったころによく見かけた単純そうに見えてたホームページでも
自分で書こうとするとかなり苦戦しそうな感じ。
夏の暑さの所為であまり進んでないかもです。
インターネットが始まったころによく見かけた単純そうに見えてたホームページでも
自分で書こうとするとかなり苦戦しそうな感じ。
夏の暑さの所為であまり進んでないかもです。
408名前は開発中のものです。
2014/07/15(火) 23:48:27.61ID:JIykXzag >>407
暑さもストレスなので、それに打ち勝ち気分を乗せて継続するのが大変。
私も、ホームページの領域を用意して、単純なページを作り始めー。
たった、2〜3ページの.htmlを作るだけなのに凄い時間が掛かる。
今風のお洒落なページを作れる人を、純粋に尊敬するわ。
ただ、こういう色々な事をしてる時間が、楽しいでーす
暑さもストレスなので、それに打ち勝ち気分を乗せて継続するのが大変。
私も、ホームページの領域を用意して、単純なページを作り始めー。
たった、2〜3ページの.htmlを作るだけなのに凄い時間が掛かる。
今風のお洒落なページを作れる人を、純粋に尊敬するわ。
ただ、こういう色々な事をしてる時間が、楽しいでーす
409SGGK ◆6pZCoAtaxk
2014/07/16(水) 23:39:40.41ID:oElFmIqA 今作ろうとしてるホームページは本の作例そのままのヘッダ2段+コラムx3+フッタ1段タイプ。
説明を見ながら真似してるけど、自分がやろうとしてる画面切り替えの部分が本と異なるので、そこは自分で考えなければならなくて、
これがうまく言ったらアップの予定。
説明を見ながら真似してるけど、自分がやろうとしてる画面切り替えの部分が本と異なるので、そこは自分で考えなければならなくて、
これがうまく言ったらアップの予定。
410名前は開発中のものです。
2014/07/17(木) 00:20:43.62ID:tzXVOLR2 >>409
言葉で見ると、なにやら難しそうな事をしてますね。
私は、ゲーム内の画面遷移の一般化や、ゲームがフォーカスを失ったときの一時中断画面に手を出し中ー。
ゲームの状態を保ちつつ、動きを全部止める。
まだ、ゲーム部分は全く出来ていないので余計な事を見なくて良いけれども、色々考えるのがメンドクサイでーす。
言葉で見ると、なにやら難しそうな事をしてますね。
私は、ゲーム内の画面遷移の一般化や、ゲームがフォーカスを失ったときの一時中断画面に手を出し中ー。
ゲームの状態を保ちつつ、動きを全部止める。
まだ、ゲーム部分は全く出来ていないので余計な事を見なくて良いけれども、色々考えるのがメンドクサイでーす。
411SGGK ◆6pZCoAtaxk
2014/07/18(金) 00:03:16.17ID:mw1VOQFj もう遷移まで進んでるとなるとゲーム部分もすぐ来そうですね。自分もがんばります(`・ω・)
ホームページ作成は慣れればなんとかなるのかもしれないけど、いろいろ出てくる言葉を忘れない程度に少しずつ作業をしてます。
真ん中に3つ並ぶはずの文章を書くための領域がずれるので直すのにちょっと時間がかかりそうです。
ホームページ作成は慣れればなんとかなるのかもしれないけど、いろいろ出てくる言葉を忘れない程度に少しずつ作業をしてます。
真ん中に3つ並ぶはずの文章を書くための領域がずれるので直すのにちょっと時間がかかりそうです。
412名前は開発中のものです。
2014/07/18(金) 01:33:30.95ID:1PgB79S6 ホームページは作りこむのが大変なので、ブログも併用してお手軽に行こうと思っていますー。
画面遷移に来て、立ち往生。
ActionScriptは、Windowの概念がないらしく(私が、知らないだけかも・・・)、擬似的なWindowを自分で実装しないといけないみたい。
画面遷移を実装する前に、Windowクラスを作っておかないと大変な事になりそうで、ちょっとクラクラ来ていまーす。
画面遷移に来て、立ち往生。
ActionScriptは、Windowの概念がないらしく(私が、知らないだけかも・・・)、擬似的なWindowを自分で実装しないといけないみたい。
画面遷移を実装する前に、Windowクラスを作っておかないと大変な事になりそうで、ちょっとクラクラ来ていまーす。
413SGGK ◆6pZCoAtaxk
2014/07/18(金) 23:57:32.01ID:mw1VOQFj 表示のずれが直った。練習はもう少し続きそうだけど、これが長引きそうだとブログに挑戦する可能性もありそうです。
自分が当時使っていた環境はCとC++でたしかVS2008用のDXライブラリで、
いまだに1本も完成できてないレベルなので、自分はプログラミングにあまり詳しくないです。
Windowクラスとかちょっと難しくてイメージができないです・・・orz
でも出来ればこの連休にこれらの環境を復活させて記憶を戻す作業にも入りたいです。
設計図はほとんどフィールドの絵が1枚とルールを数行書く程度を予定しています。
自分が当時使っていた環境はCとC++でたしかVS2008用のDXライブラリで、
いまだに1本も完成できてないレベルなので、自分はプログラミングにあまり詳しくないです。
Windowクラスとかちょっと難しくてイメージができないです・・・orz
でも出来ればこの連休にこれらの環境を復活させて記憶を戻す作業にも入りたいです。
設計図はほとんどフィールドの絵が1枚とルールを数行書く程度を予定しています。
414名前は開発中のものです。
2014/07/19(土) 01:11:58.40ID:ESlabbYG 順調に進んでいるようですね。
私は、画面遷移で絶賛立ち往生中ー。
無理に汎用的にしないで、ある程度クラス内を汚す方向で行こうかなと。
とりあえず、簡単なゲームを1つ作り上げてみて、使い勝手とか不具合とかを実際に見てみない事には、私の脳みそでは着いていけないでーす orz
私は、画面遷移で絶賛立ち往生中ー。
無理に汎用的にしないで、ある程度クラス内を汚す方向で行こうかなと。
とりあえず、簡単なゲームを1つ作り上げてみて、使い勝手とか不具合とかを実際に見てみない事には、私の脳みそでは着いていけないでーす orz
415SGGK ◆6pZCoAtaxk
2014/07/20(日) 00:24:33.45ID:S943MOnH 自分も今回は出来るだけ簡単なゲームにして最後まで出来るか試してみようと思ってます。
久しぶりにDXライブラリのページを見るとVS2008もあることにはあるけど、
VS2013版があるそうなので、どうせやるならと気が変わってvs2013EXPRESSをインストールしてみたところまで。
久しぶりにDXライブラリのページを見るとVS2008もあることにはあるけど、
VS2013版があるそうなので、どうせやるならと気が変わってvs2013EXPRESSをインストールしてみたところまで。
416名前は開発中のものです。
2014/07/20(日) 01:19:47.27ID:szYAb/5R 開発環境が整いつつあるのですね。
私は、Webで先駆者の方々の文章を色々読んで、自分なりに消化しているところー。
様々な考え方、見かた、捕らえ方があって、面白いと思いつつ読んでいまーす
私は、Webで先駆者の方々の文章を色々読んで、自分なりに消化しているところー。
様々な考え方、見かた、捕らえ方があって、面白いと思いつつ読んでいまーす
417SGGK ◆6pZCoAtaxk
2014/07/20(日) 23:54:52.21ID:S943MOnH 自分も出来る限りネットで情報収集していこうと思っています。
DXライブラリもパソコンに入ったので、設計図とホームページが用意できたら時間は掛かると思うけど、
少しずつ以前の記憶を取り戻していきたいです。
DXライブラリもパソコンに入ったので、設計図とホームページが用意できたら時間は掛かると思うけど、
少しずつ以前の記憶を取り戻していきたいです。
418名前は開発中のものです。
2014/07/22(火) 18:11:20.25ID:a+DdXevL 旅行に行ってて、2,3日製作から離れていたら、色々大変な事に。
作業はしないでも、毎日5分とか短い時間で良いから、製作のことも考えないとなー。
なんて、思っていまーす
作業はしないでも、毎日5分とか短い時間で良いから、製作のことも考えないとなー。
なんて、思っていまーす
419SGGK ◆6pZCoAtaxk
2014/07/22(火) 23:36:12.98ID:czUmBmCk 人それぞれのペースでオッケーだと思います。
自分は趣味で作ろうとしていて、その都度実生活を優先しているので数年経過してるけど、
設計を小規模なものにして、その実装をするところまではなんとか実現したいです。(^^
自分は趣味で作ろうとしていて、その都度実生活を優先しているので数年経過してるけど、
設計を小規模なものにして、その実装をするところまではなんとか実現したいです。(^^
420名前は開発中のものです。
2014/08/06(水) 19:14:14.40ID:jwFCe5up 仕事を始めたら、ゲーム製作をする時間と体力が無くなってしまった。
業務に慣れるまで、封印でーす
業務に慣れるまで、封印でーす
421SGGK ◆6pZCoAtaxk
2014/08/09(土) 14:56:41.71ID:FAp7nCFE 生活があっての趣味なので落ち着いたらまたいつでもどーぞ^^
自分も作業が止まっているけど、気長にやって行きます。
(アクセス禁止中なのでp2で書いたら2chscなのか不明なサイトに飛ばされてた...
アク禁のときは練習中のホームページに書いておくので、
そちらを見てもらえると安心です。^^)
自分も作業が止まっているけど、気長にやって行きます。
(アクセス禁止中なのでp2で書いたら2chscなのか不明なサイトに飛ばされてた...
アク禁のときは練習中のホームページに書いておくので、
そちらを見てもらえると安心です。^^)
422SGGK ◆6pZCoAtaxk
2014/08/23(土) 23:31:46.64ID:ilc/4Wul 書けるかな?
423SGGK ◆6pZCoAtaxk
2014/08/23(土) 23:51:56.62ID:ilc/4Wul 書けた。
簡単な説明用の絵を書こうとしても絵書き用ソフトが使えそうにないので、エクセルで書くことにした。(過去と同じ流れ)
簡単な説明用の絵を書こうとしても絵書き用ソフトが使えそうにないので、エクセルで書くことにした。(過去と同じ流れ)
424名前は開発中のものです。
2014/09/17(水) 20:19:05.62ID:ecgibK/Q Azpainter2などの手ぶれ補正(max40で使え)はいいぞー
大きめのキャンバスを設定して、
描いた後で縮小すれば、がたがたな線でも綺麗に見える。
アドバイスがもらえるので お絵描きpink版をお薦め
(ただし、嵐等が常駐していて精神攻撃も強烈なので、タフな人向け)
大きめのキャンバスを設定して、
描いた後で縮小すれば、がたがたな線でも綺麗に見える。
アドバイスがもらえるので お絵描きpink版をお薦め
(ただし、嵐等が常駐していて精神攻撃も強烈なので、タフな人向け)
425SGGK ◆6pZCoAtaxk
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 お前が消えろやクズ
429SGGK ◆6pZCoAtaxk
2016/01/16(土) 20:11:14.20ID:LlENkMHY test
430SGGK ◆6pZCoAtaxk
2016/01/16(土) 22:53:06.78ID:LlENkMHY4311 ◆6pZCoAtaxk
2016/01/17(日) 22:37:01.89ID:BewUXIkS 完全にスレのタイトルと同じ状況になってしまったか…
まぁ、他のスレも似たような状況だし、この板自体が過疎化してるから仕方が無いとも言える
これも時代の流れ
腕のある人はスマホで稼ごうとしてみんなそちらに流れていくし、
求められるクオリティも個人で出来る範囲をはるかに超えてる
普通ならあきらめるよね?
いまどきパソコンでゲームを作る人なんてきっと少数派なのだろう
正直、自分も今度ばかりはどうしようかと悩んだ(10年経ってコレだし…)
本当に作りたいのか?いいかげん他の趣味でも探してはどうか?という具合に考えた
でも、完全にやめるほどの代わりの趣味や、サッカーゲーム制作をやめる理由は結局でてこなかった
よって懲りずに再開を試みることにした
寿命がくるか自然消滅するかまで繰り返し続ける事をとりあえずの目標としようか
まずは、ホームページを最低限のものでいいから自前で用意する。
コンパイラを一度アンインストールして、コンパイラとDXライブラリを
パソコンに入れるところからはじめて、作業記録を発信することを自分に課す。
発進するネタは、ものすごくサッカーを簡単化したものの制作記録にする。
これが設計の代わりとなる。
実生活にあまり時間の余裕がないので
目標期限はホームページが5月ごろまで
制作記録は12月ごろまで
今年は、これで自分の気持ちを確認することにした…orz
まぁ、他のスレも似たような状況だし、この板自体が過疎化してるから仕方が無いとも言える
これも時代の流れ
腕のある人はスマホで稼ごうとしてみんなそちらに流れていくし、
求められるクオリティも個人で出来る範囲をはるかに超えてる
普通ならあきらめるよね?
いまどきパソコンでゲームを作る人なんてきっと少数派なのだろう
正直、自分も今度ばかりはどうしようかと悩んだ(10年経ってコレだし…)
本当に作りたいのか?いいかげん他の趣味でも探してはどうか?という具合に考えた
でも、完全にやめるほどの代わりの趣味や、サッカーゲーム制作をやめる理由は結局でてこなかった
よって懲りずに再開を試みることにした
寿命がくるか自然消滅するかまで繰り返し続ける事をとりあえずの目標としようか
まずは、ホームページを最低限のものでいいから自前で用意する。
コンパイラを一度アンインストールして、コンパイラとDXライブラリを
パソコンに入れるところからはじめて、作業記録を発信することを自分に課す。
発進するネタは、ものすごくサッカーを簡単化したものの制作記録にする。
これが設計の代わりとなる。
実生活にあまり時間の余裕がないので
目標期限はホームページが5月ごろまで
制作記録は12月ごろまで
今年は、これで自分の気持ちを確認することにした…orz
432名前は開発中のものです。
2016/01/18(月) 21:23:25.60ID:7epjie3L いつの時代であっても、どんな経験者でも、
最初から人に見せられるクォリティでゲームを作ろうなんて考えないほうがいいよ。
初めは、「コントローラの入力値を垂れ流し表示する」「画面の座標軸を確認する」
のような、およそゲームとは呼べないようなテストプログラムを散々作って、
手持ちカードをじっくり増やしてから、ゲーム制作に挑戦する。
途中で行き詰まったときは、モチベーションの続く限り試行錯誤し、
どうにもならなければゲームデザインを変更してでも、
まずは完成と呼べるものにまとめる。
それを客観的に見て、人様に見せられるものかどうか考えて、反省し、
次の制作のモチベーションにしていく。
このサイクルを、例えば1週間、長くても1か月程度で回してみるといいと思うよ。
最初から人に見せられるクォリティでゲームを作ろうなんて考えないほうがいいよ。
初めは、「コントローラの入力値を垂れ流し表示する」「画面の座標軸を確認する」
のような、およそゲームとは呼べないようなテストプログラムを散々作って、
手持ちカードをじっくり増やしてから、ゲーム制作に挑戦する。
途中で行き詰まったときは、モチベーションの続く限り試行錯誤し、
どうにもならなければゲームデザインを変更してでも、
まずは完成と呼べるものにまとめる。
それを客観的に見て、人様に見せられるものかどうか考えて、反省し、
次の制作のモチベーションにしていく。
このサイクルを、例えば1週間、長くても1か月程度で回してみるといいと思うよ。
4331 ◆6pZCoAtaxk
2016/01/19(火) 22:34:41.90ID:6lBDJRXb 人がいた!、ありがとぅ〜♪( ^ω^)ノ ←今年から少し明るいイメージで
自分もいろいろ反省点はあるので言語の勉強を並行していった方がいいかなとも思ってます。
C言語とか。入門書にちょっと目を通しただけだったから…
ゲーム制作本の真似するだけの基礎言語力がそもそも自分に無かったし。
たぶん今の自分だとどんなに簡素化したゲームでも作れるか微妙。
10年近く何をやっていたと言われそう…
まずこの1年、続けられるかどうかで自分で自分の見極めをしてみようと思ってます。
他の趣味に移行もせず、同じパターンを繰り返し続けているようで、
もしかして自分は何かの心の病気なんじゃないかと思う時もあります…orz
自分もいろいろ反省点はあるので言語の勉強を並行していった方がいいかなとも思ってます。
C言語とか。入門書にちょっと目を通しただけだったから…
ゲーム制作本の真似するだけの基礎言語力がそもそも自分に無かったし。
たぶん今の自分だとどんなに簡素化したゲームでも作れるか微妙。
10年近く何をやっていたと言われそう…
まずこの1年、続けられるかどうかで自分で自分の見極めをしてみようと思ってます。
他の趣味に移行もせず、同じパターンを繰り返し続けているようで、
もしかして自分は何かの心の病気なんじゃないかと思う時もあります…orz
434名前は開発中のものです。
2016/01/24(日) 15:45:40.29ID:YuKcV9Os4351人 ◆6pZCoAtaxk
2016/01/24(日) 19:50:43.28ID:vmSAB2Qt 実は自分(SGGK)は、>>1とは別人です。
>>1氏は、このスレを立ててくれた人です。
SGGKの元ネタを知らない人もいるだろうから、これを機会にIDをスレタイに合わせて
「 1人 」にしようとしたのを略して「1」にしてました。
たしかにこれは紛らわしかったので、ちょっと反省…(^^)
自分もベーマガは結構読んでました。懐かしいですね〜!
主に漫画とゲームの記事の方ばかり読んでたような記憶があります…
たしかに今、雑誌で入門的なのはなくなっちゃいましたね
書籍では、○○歳シリーズぐらいしか思い当たらない…。
振り返ってみると、あのときBASICのソースコードを習得してゲーム投稿の流れに自分が行ってなかった時点で、
自分は「作る側」に向いてなかったのが既に見えていたのかもしれないけど、もう少しだけがんばってみようかな〜と思ってます。
>>1氏は、このスレを立ててくれた人です。
SGGKの元ネタを知らない人もいるだろうから、これを機会にIDをスレタイに合わせて
「 1人 」にしようとしたのを略して「1」にしてました。
たしかにこれは紛らわしかったので、ちょっと反省…(^^)
自分もベーマガは結構読んでました。懐かしいですね〜!
主に漫画とゲームの記事の方ばかり読んでたような記憶があります…
たしかに今、雑誌で入門的なのはなくなっちゃいましたね
書籍では、○○歳シリーズぐらいしか思い当たらない…。
振り返ってみると、あのときBASICのソースコードを習得してゲーム投稿の流れに自分が行ってなかった時点で、
自分は「作る側」に向いてなかったのが既に見えていたのかもしれないけど、もう少しだけがんばってみようかな〜と思ってます。
436SGGK ◆6pZCoAtaxk
2016/01/26(火) 20:46:33.89ID:EFSQD3B4 やっぱり名前を元に戻します!
最終目標にふさわしいSGGKにしときます。
久しぶりに復帰したせいで自分は思考がどうかしてたのかもしれない・・・
最終目標にふさわしいSGGKにしときます。
久しぶりに復帰したせいで自分は思考がどうかしてたのかもしれない・・・
437名前は開発中のものです。
2016/01/26(火) 21:58:30.24ID:lCSaZ72+ ベーマガは独学のための教科書だっただけでなく、勉強の動機付けになってた気がする。
最初はわけもわからず、コードを入力して、動かずに、間違い探しをしていたのが、
だんだんと読めるようになり、思い通りに改造できるようになり、やがて
作品を投稿するようになり、ついには掲載されるようになった。
自分の身の回りにベーマガしか情報収集源と発信源がなかった時代と比べれば、
今は恵まれていると思うけど、学校帰りに書店で自分の本名とプログラムが掲載された
雑誌を見つけたときの、恥ずかしくも誇らしい気持ちは、もう味わえないのかな、
と思うとちょっと切ない。
最初はわけもわからず、コードを入力して、動かずに、間違い探しをしていたのが、
だんだんと読めるようになり、思い通りに改造できるようになり、やがて
作品を投稿するようになり、ついには掲載されるようになった。
自分の身の回りにベーマガしか情報収集源と発信源がなかった時代と比べれば、
今は恵まれていると思うけど、学校帰りに書店で自分の本名とプログラムが掲載された
雑誌を見つけたときの、恥ずかしくも誇らしい気持ちは、もう味わえないのかな、
と思うとちょっと切ない。
438SGGK ◆6pZCoAtaxk
2016/01/27(水) 20:43:22.33ID:ZtAong0j ベーマガは電子書籍でもいいので復活してくれたらありがたい。
そしたら自分も雑誌掲載にトライしてみたいな〜!
今の時代は、そういうのを味わうのはたしかに難しくなってきたかもですね
読者コーナーをもつ雑誌というか作る系の雑誌が見当たらない・・・
そしたら自分も雑誌掲載にトライしてみたいな〜!
今の時代は、そういうのを味わうのはたしかに難しくなってきたかもですね
読者コーナーをもつ雑誌というか作る系の雑誌が見当たらない・・・
439名前は開発中のものです。
2016/01/27(水) 23:41:43.32ID:VDw6Dqmf そういう、待ちの姿勢が問題なんじゃないだろうか?
今どきなら、個人がウェブサイトを持って、
電子書籍を発行することだってできるというのに。
今どきなら、個人がウェブサイトを持って、
電子書籍を発行することだってできるというのに。
440SGGK ◆6pZCoAtaxk
2016/01/28(木) 21:39:02.49ID:Z2b56YBB ウェブサイトは超簡素なのを用意するだけでも自分にはせいいっぱいな感じ。
いずれそのうちに・・・
電子書籍に関しては、自分は勉強からやりなおしてて、コードを一行も書いてないのでネタが0ですね〜
そういう副収入には興味あるけど、自分は何ももってないので・・・
C言語から勉強してるけど、勉強だけで終わらないように頑張らねば!(^^;
いずれそのうちに・・・
電子書籍に関しては、自分は勉強からやりなおしてて、コードを一行も書いてないのでネタが0ですね〜
そういう副収入には興味あるけど、自分は何ももってないので・・・
C言語から勉強してるけど、勉強だけで終わらないように頑張らねば!(^^;
441SGGK ◆6pZCoAtaxk
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冊読めればいいなと思っていたが、やっと半分読めた状況。
そして再インストールすれば、ユーザー登録画面が出てくるのではと期待したけど、出なかった。
何故それを期待していたのかというと、ユーザー登録画面で画面右上のユーザー名をSGGKに変えたかったから。
しかし、そのユーザー登録画面は再インストール時に出てくることがなく、1日悩んでしまった。
なんとかネットで情報を探して、
1.アカウントの設定
2.ユーザー情報画面でVisualStudioプロファイルを押す
3.情報画面が出るので、そこから「情報の編集」画面にとんで、ユーザー名を変更する。
というのを見つけ、その通りにしてみると
ユーザー情報画面の表示では変更が反映されてるけど、
開発画面の右上は変更が全く反映されていない。
非常に悩んだが、なんとなく3.情報画面を見ると、
「資格情報を再入力してください」というリンクがあったので、
押して、ログインのような事をしただけで、他には何も入力しなかったが、今度は開発画面右上にも変更が反映された。
そして、「資格情報を再入力してください」というリンクはもう表示されなくなっていた。
この最後の作業について触れているホームページには結局ヒットしなかったので、ある意味あぶなかった。
気付くことができて1日で解決できたのは運が良かった。
…とまぁ、今月はここまでしかできなかった。
C言語の本も1冊読めればいいなと思っていたが、やっと半分読めた状況。
442SGGK ◆6pZCoAtaxk
2016/02/29(月) 20:27:29.55ID:IyKLLB3A もう2月も終わりか、一ヶ月が早すぎる・・・。
C言語の本は1冊読み終わったけど、2月後半はちょっとペースがダウンしてきて、
モチベーションの維持が難しい感じ。
また週末から「14歳からはじめるC言語(ry」で感覚を取り戻しつつ、
C++の復習も並行したいな(できればの話だけど)
この1年でなんとかしたい(無理か)
C言語の本は1冊読み終わったけど、2月後半はちょっとペースがダウンしてきて、
モチベーションの維持が難しい感じ。
また週末から「14歳からはじめるC言語(ry」で感覚を取り戻しつつ、
C++の復習も並行したいな(できればの話だけど)
この1年でなんとかしたい(無理か)
443SGGK ◆6pZCoAtaxk
2016/03/31(木) 21:01:48.55ID:uHzYY4BA 1カ月単位なら多少は進められるかなという思いもあったけど現実はこんなもの。
やる気が無くなった訳ではないので、次以降は何か機会があれば書き込みます。では。
やる気が無くなった訳ではないので、次以降は何か機会があれば書き込みます。では。
444SGGK ◆6pZCoAtaxk
2016/05/01(日) 12:56:40.53ID:lWbU5OEK やる気はあるけど4月も作業が進まなかったな…
431でHPは5月頃に形にするようなことを書いたけど全然手つかずのままだった。
1人でやってるから予定変更は自由自在なんだけど、それってなんか違うような気もするし…
442で言った「14歳からはじめるC言語(ry」も読んでない。
今は別の本を読んでいて、この本の4分の1程を読み終えればプログラムの方を始められるのではと思う。
以前、「フィールドをキャラが歩いてゴールしたらGOALと表示される」というプログラムを書いたのが
ハードディスクのどこかに眠っているはずだから、見た目はそれと同じだけど、
中身は今読んでる本のやり方にしたプログラムにしてみたい。
ただし、その本があまりにも難しいのでしばらく無理かもしれない。
431でHPは5月頃に形にするようなことを書いたけど全然手つかずのままだった。
1人でやってるから予定変更は自由自在なんだけど、それってなんか違うような気もするし…
442で言った「14歳からはじめるC言語(ry」も読んでない。
今は別の本を読んでいて、この本の4分の1程を読み終えればプログラムの方を始められるのではと思う。
以前、「フィールドをキャラが歩いてゴールしたらGOALと表示される」というプログラムを書いたのが
ハードディスクのどこかに眠っているはずだから、見た目はそれと同じだけど、
中身は今読んでる本のやり方にしたプログラムにしてみたい。
ただし、その本があまりにも難しいのでしばらく無理かもしれない。
445名前は開発中のものです。
2016/05/02(月) 22:14:32.29ID:np5fjAnn ^_^しせさす
446SGGK ◆6pZCoAtaxk
2016/05/03(火) 21:41:05.88ID:hCfT08eP 書き込みが!?
作業を早く先に進めたい気持ちがUP!
本の方は、今読んでるソースのbreak文の行き先を自分が勘違いしてたのにやっと気付いて、
そこから少し先に読み進めることができたぐらいで、自分には複雑で難解なソースなので
4分の1ぐらい読み終えるまで、よくてあと1カ月はかかるかもな状況。
作業を早く先に進めたい気持ちがUP!
本の方は、今読んでるソースのbreak文の行き先を自分が勘違いしてたのにやっと気付いて、
そこから少し先に読み進めることができたぐらいで、自分には複雑で難解なソースなので
4分の1ぐらい読み終えるまで、よくてあと1カ月はかかるかもな状況。
447名前は開発中のものです。
2016/05/04(水) 21:49:58.25ID:nIaJHX6n 本を読むのも大事だけど
プログラムを組んで動かす方がさらに大事だと思うよ
単純なPONを作って完成させてみたら?
PONも作れないようなら本当に向いていないのかもね
プログラムを組んで動かす方がさらに大事だと思うよ
単純なPONを作って完成させてみたら?
PONも作れないようなら本当に向いていないのかもね
448SGGK ◆6pZCoAtaxk
2016/05/05(木) 00:02:11.95ID:pdRQAZX3 PONとはピンポンのことでしょうか?
た…たしかに読書だけでは前に進まないし、本を読むのが遅くなってもいいから
プログラムを組む練習も並行したほうがよさそう。
ホームページに載せる事ができれば、そこまでやってみたいですね
アップローダだといつ消えるか不安なので…
た…たしかに読書だけでは前に進まないし、本を読むのが遅くなってもいいから
プログラムを組む練習も並行したほうがよさそう。
ホームページに載せる事ができれば、そこまでやってみたいですね
アップローダだといつ消えるか不安なので…
449名前は開発中のものです。
2016/05/05(木) 01:31:53.46ID:PIx8IiIs PONじゃなくて正しくはPONGだった
単純なゲームだけどこれが作れないならサッカーゲームは絶対作れないから
まずは一つ単純なゲームを完成させた方がいいよ
http://media1.gameinformer.com/imagefeed/featured/gamerculture/pong/pongbrains_610.jpg
単純なゲームだけどこれが作れないならサッカーゲームは絶対作れないから
まずは一つ単純なゲームを完成させた方がいいよ
http://media1.gameinformer.com/imagefeed/featured/gamerculture/pong/pongbrains_610.jpg
450SGGK ◆6pZCoAtaxk
2016/05/05(木) 22:06:20.27ID:pdRQAZX3 どんな感じのゲームなのか分かりました。
読書の予定は少し後回しにして、実際にプログラムを書く方に力を入れてみます。
過去に書いたプログラムの内容をたぶん忘れてるので思い出すとこからだけどなんとかしてみる!
読書の予定は少し後回しにして、実際にプログラムを書く方に力を入れてみます。
過去に書いたプログラムの内容をたぶん忘れてるので思い出すとこからだけどなんとかしてみる!
451名前は開発中のものです。
2016/05/05(木) 23:30:32.16ID:PIx8IiIs PONGは単純だから過去のプログラムは無視して
始めらから作ればいいんじゃないかな。
あとクラス設計やオブジェクト指向とか初めから考えるとそこだけで難しいから、
手続き型の書き方でいいので、とにかく動くプログラムを作った方がいいと思うよ。
設計やオブジェクト指向は何個もプログラムを作っていって上達していけばいい。
低い山から徐々に高い山を目指して行けばいいと思うんだよね。
始めらから作ればいいんじゃないかな。
あとクラス設計やオブジェクト指向とか初めから考えるとそこだけで難しいから、
手続き型の書き方でいいので、とにかく動くプログラムを作った方がいいと思うよ。
設計やオブジェクト指向は何個もプログラムを作っていって上達していけばいい。
低い山から徐々に高い山を目指して行けばいいと思うんだよね。
452名前は開発中のものです。
2016/05/06(金) 22:16:46.85ID:IdB3c4NA PONGのゲームロジックは単純だし、原点ではあると思う。
けれど、それよりもむしろ、もっと基礎的な部分、例えばウィンドウを開いて
線を1本を描画するだけのプログラムが書けないと何も始まらないのだが、
それをAPIを叩いて実現するという場合に、必要な処理の手数の多さや、
専門用語が初心者の障壁になっている気がする。
それを補うのが各種SDKや、それに付属するサンプルプログラムなので、
まずは適切な開発環境とSDKのセットアップを行い、付属サンプルを熟読すること、
出来ればサンプルソースを全部プリントアウトして蛍光ペン等を活用して
勉強するのが、独学の王道じゃないだろうか。
けれど、それよりもむしろ、もっと基礎的な部分、例えばウィンドウを開いて
線を1本を描画するだけのプログラムが書けないと何も始まらないのだが、
それをAPIを叩いて実現するという場合に、必要な処理の手数の多さや、
専門用語が初心者の障壁になっている気がする。
それを補うのが各種SDKや、それに付属するサンプルプログラムなので、
まずは適切な開発環境とSDKのセットアップを行い、付属サンプルを熟読すること、
出来ればサンプルソースを全部プリントアウトして蛍光ペン等を活用して
勉強するのが、独学の王道じゃないだろうか。
453SGGK ◆6pZCoAtaxk
2016/05/06(金) 23:41:26.19ID:jvIfmPs9454名前は開発中のものです。
2016/05/07(土) 00:08:59.45ID:rf8SJyVJ 急がば回れで一ヶ月に一本ぐらいのペースでPONGのようなミニゲームを量産するといいよ
それを一年ぐらい続ければファミコンレベルのサッカーゲームは作れるようになっているはず
初心者がいきなり難易度の高い事をやって失敗する事が多いのだけど
まさにそのパターンだったと思うから、やり方を変えなくて上手くいかないんじゃないかな。
それを一年ぐらい続ければファミコンレベルのサッカーゲームは作れるようになっているはず
初心者がいきなり難易度の高い事をやって失敗する事が多いのだけど
まさにそのパターンだったと思うから、やり方を変えなくて上手くいかないんじゃないかな。
455名前は開発中のものです。
2016/05/07(土) 00:38:00.70ID:rf8SJyVJ 「PONGのようなミニゲームを量産」と言ったけど補足すると
PONGの規模の色々な種類のミニゲームを量産するという意味だったから。
サッカーゲームが目的なら、エアホッケー、パッドゴルフとか球を中心とするミニゲームがいいだろうね。
あとミニゲームは画像や音などの素材はこだわらないで簡単な棒とかでいいと思うよ。
PONGの規模の色々な種類のミニゲームを量産するという意味だったから。
サッカーゲームが目的なら、エアホッケー、パッドゴルフとか球を中心とするミニゲームがいいだろうね。
あとミニゲームは画像や音などの素材はこだわらないで簡単な棒とかでいいと思うよ。
456SGGK ◆6pZCoAtaxk
2016/05/07(土) 23:03:33.78ID:aQ6mm+se コンパイラの使い方もすっかり忘れてることが今日分かったし、
ホームページの書き方も過去に少しやってみただけなので忘れてて、ふりだしに戻った気持ち。
月1ペースは難しいかもしれないけど、作業が長期間途切れて何もかも忘れてまたやり直しに
時間をかけることにならないようにがんばっていこうと思います。
過去の経験では、画像データを自作するスキルが0で時間がかかり、モチベーションがダウンしやすいから
しばらくは線(まさに棒の感じ)でやってみる予定。
ホームページの書き方も過去に少しやってみただけなので忘れてて、ふりだしに戻った気持ち。
月1ペースは難しいかもしれないけど、作業が長期間途切れて何もかも忘れてまたやり直しに
時間をかけることにならないようにがんばっていこうと思います。
過去の経験では、画像データを自作するスキルが0で時間がかかり、モチベーションがダウンしやすいから
しばらくは線(まさに棒の感じ)でやってみる予定。
457SGGK ◆6pZCoAtaxk
2016/06/01(水) 21:28:38.24ID:pJwelftJ 1カ月経つのが早いな〜。
コンパイラについてはプロジェクトを新規で作るたびに設定を1からやりなおすのが面倒だし、
操作をすぐ忘れるので、そういうのがモチベダウンの原因のひとつだったけど、14歳からはじめるわくわくC言語のvs2013版では、
プロジェクトをコピーして、ソリューションフォルダ?に入ってる一部のファイルの名前を変えて、不要なファイルは削除して、ファイルの中身を一部変えれば、
最初から設定しなくても使えるという方法が紹介されていたので、少しは楽になるかもしれない。
操作については、以前やっていた程度には大体思い出せたと思う。
ホームページの方も超初級のHTMLとCSSので、いずれ作りなおせるだろうとちょっと甘めに予想。
PONGの方は、矢印上下でラケットが上下するとこだけをためしに書いてみたところ
動きが滑らかでないので、なんでだろうという気持ちだけど、ゆっくりやる予定。
土日以外はあまりやれないし、土日やらないと翌週送りで1カ月なんてアッと言う間に過ぎるのが難点。
コンパイラについてはプロジェクトを新規で作るたびに設定を1からやりなおすのが面倒だし、
操作をすぐ忘れるので、そういうのがモチベダウンの原因のひとつだったけど、14歳からはじめるわくわくC言語のvs2013版では、
プロジェクトをコピーして、ソリューションフォルダ?に入ってる一部のファイルの名前を変えて、不要なファイルは削除して、ファイルの中身を一部変えれば、
最初から設定しなくても使えるという方法が紹介されていたので、少しは楽になるかもしれない。
操作については、以前やっていた程度には大体思い出せたと思う。
ホームページの方も超初級のHTMLとCSSので、いずれ作りなおせるだろうとちょっと甘めに予想。
PONGの方は、矢印上下でラケットが上下するとこだけをためしに書いてみたところ
動きが滑らかでないので、なんでだろうという気持ちだけど、ゆっくりやる予定。
土日以外はあまりやれないし、土日やらないと翌週送りで1カ月なんてアッと言う間に過ぎるのが難点。
458SGGK ◆6pZCoAtaxk
2016/06/17(金) 23:12:00.66ID:E14boNTx 動きが滑らかでない原因は描画を裏画面に指定する関数を入れ忘れたから。
たぶん表に書いて、何も無い画面を表に出して、その表に書いての繰り返しになっていたんだと思う。
ところでだけど、PONGのUPが遅れそうな状況。
実は間違えてフォルダごと全部消してしまった・・・orz
先週の日曜日夕方にUPしようとして、その前にふとデスクトップがショートカットだらけだから
片付けようと思い、片付けたらフォルダが消失していた。
検索しても出てこないから他のフォルダに入れた可能性は薄い。
ゴミ箱がアヤシイと思い、ファイル復活ソフトのお試し版を何種類か試したけどダメだった。
それにしてもこれは痛い。
プログラムのソースだけでなく、今年の1月からの勉強の記録や、
ホームページの練習ファイル、コンパイラの設定の仕方のメモとか
いろいろ全部を一つのフォルダに入れてて、それが消えた。
6ヶ月分が全部パーになった。
もう敗北宣言を出そうかと思ったが、別にそんなことしなくても次回の書き込みが10年後だっていいじゃないか!
わざわざあきらめたなんて書くことないよ!
・・・とも思ったりして今後の活動については保留中。
でも、PONGをもう一度書くところまではガンバってみるつもり!
たぶん表に書いて、何も無い画面を表に出して、その表に書いての繰り返しになっていたんだと思う。
ところでだけど、PONGのUPが遅れそうな状況。
実は間違えてフォルダごと全部消してしまった・・・orz
先週の日曜日夕方にUPしようとして、その前にふとデスクトップがショートカットだらけだから
片付けようと思い、片付けたらフォルダが消失していた。
検索しても出てこないから他のフォルダに入れた可能性は薄い。
ゴミ箱がアヤシイと思い、ファイル復活ソフトのお試し版を何種類か試したけどダメだった。
それにしてもこれは痛い。
プログラムのソースだけでなく、今年の1月からの勉強の記録や、
ホームページの練習ファイル、コンパイラの設定の仕方のメモとか
いろいろ全部を一つのフォルダに入れてて、それが消えた。
6ヶ月分が全部パーになった。
もう敗北宣言を出そうかと思ったが、別にそんなことしなくても次回の書き込みが10年後だっていいじゃないか!
わざわざあきらめたなんて書くことないよ!
・・・とも思ったりして今後の活動については保留中。
でも、PONGをもう一度書くところまではガンバってみるつもり!
459名前は開発中のものです。
2016/07/02(土) 12:04:22.08ID:G7R2y+xo 大事なのはやる気と根気だよ
460SGGK ◆6pZCoAtaxk
2016/07/03(日) 19:36:33.06ID:aOJPDcmQ データの消えてしまったPONGは昨日、なんとか完成。ホームページができたら一緒に書きこもうとした結果、今日になりました。
ホームページのページを複数にする作り方を忘れてしまい、一枚のページに変更。
1MB以上のファイルアップロードが禁止のため、やむを得ず他のアップローダにアップして、そこのリンクを貼る方法に変更。
いろいろ苦労して燃え尽きたので、やる気と根気が0になったかも・・・
サッカーゲームプログラミング修行伝説
ttp://gameprogram10.web.fc2.com/
ホームページのページを複数にする作り方を忘れてしまい、一枚のページに変更。
1MB以上のファイルアップロードが禁止のため、やむを得ず他のアップローダにアップして、そこのリンクを貼る方法に変更。
いろいろ苦労して燃え尽きたので、やる気と根気が0になったかも・・・
サッカーゲームプログラミング修行伝説
ttp://gameprogram10.web.fc2.com/
461名前は開発中のものです。
2016/07/04(月) 19:31:29.66ID:SR/Dvz76 この板では一つのゲームすら完成させる事が無く消えていく人達ばかりなのに
完成まで作ったのは凄い。
基本的な部分は出来ているので後は経験を積んで目標のサッカーゲームを作ればいいんじゃない。
完成まで作ったのは凄い。
基本的な部分は出来ているので後は経験を積んで目標のサッカーゲームを作ればいいんじゃない。
462SGGK ◆6pZCoAtaxk
2016/07/04(月) 22:25:38.08ID:fNmVPOId 見てくれてありがとうございます。
おかげでやる気と根気も回復してきた感じがします。
また不定期になるかもしれないけど、次をどうするか考えながらやっていこうと思います。
おかげでやる気と根気も回復してきた感じがします。
また不定期になるかもしれないけど、次をどうするか考えながらやっていこうと思います。
463SGGK ◆6pZCoAtaxk
2016/07/04(月) 22:29:09.66ID:fNmVPOId sageを入れてなかった・・・orz
464SGGK ◆6pZCoAtaxk
2016/08/02(火) 21:37:41.29ID:bN/vBAZL 何故かやり遂げてしまったような感覚になって、この1カ月は進捗ほとんど0
ここから先の進む方向はいろいろ考えられる。
ブロック崩し等、少しずつ内容を難しくしたゲームを書いてみる努力をしていくとか、
このピンポンを改造してサッカーにしていくなど。
時間がないということを考えると後者がいいかも。
ゲームにこだわらず、例えばマウスの座標を表示しつづけるだけの
プログラムを書いてみる等、そういう練習もしながらどうしていくか考えていく予定。
ここから先の進む方向はいろいろ考えられる。
ブロック崩し等、少しずつ内容を難しくしたゲームを書いてみる努力をしていくとか、
このピンポンを改造してサッカーにしていくなど。
時間がないということを考えると後者がいいかも。
ゲームにこだわらず、例えばマウスの座標を表示しつづけるだけの
プログラムを書いてみる等、そういう練習もしながらどうしていくか考えていく予定。
465名前は開発中のものです。
2016/08/17(水) 21:20:44.10ID:42+zcCOM ポンができただけでもすごいけど……
試しに、座標を少しずらしたバーを左右それぞれ11個ずつにしてみたら?
あと、縦じゃなくて、横に動くバーを入れてみたり
試しに、座標を少しずらしたバーを左右それぞれ11個ずつにしてみたら?
あと、縦じゃなくて、横に動くバーを入れてみたり
466SGGK ◆6pZCoAtaxk
2016/08/18(木) 21:38:34.26ID:xRUbFn8n 実は今月も進んでない・・・orz
最近やろうとしたことといえば、ホームページのTOPを目次にして、
1記事1ページにしてリンクを貼れるようにできないかなと思っただけで、
結局まだ何もしてないけど、あせらずいこ〜!
>>465
それも>464でいうところの後者なので、やってみようかなと思ってます。
でも、今のソースの当たり判定のやりかたでできるかどうか自信がなく、
その前にソースを整理して、いくつかのファイルに分割して、
少しソースを見やすくしてから作業に入る予定。
ソースの分割方法も忘れてしまったので、少々日数がかかると思います。
最近やろうとしたことといえば、ホームページのTOPを目次にして、
1記事1ページにしてリンクを貼れるようにできないかなと思っただけで、
結局まだ何もしてないけど、あせらずいこ〜!
>>465
それも>464でいうところの後者なので、やってみようかなと思ってます。
でも、今のソースの当たり判定のやりかたでできるかどうか自信がなく、
その前にソースを整理して、いくつかのファイルに分割して、
少しソースを見やすくしてから作業に入る予定。
ソースの分割方法も忘れてしまったので、少々日数がかかると思います。
467名前は開発中のものです。
2016/08/22(月) 00:29:15.94ID:YEsXYkxk がんばってね
プログラムは何年かやると、ある日、開眼して飛躍的に進歩するよ
プログラムは何年かやると、ある日、開眼して飛躍的に進歩するよ
468SGGK ◆6pZCoAtaxk
2016/08/23(火) 21:57:25.23ID:ST70ip4K いろいろあって進み具合は遅いかもしれないけど、、
その日が来るのを期待しながら続けていこうと思います。
その日が来るのを期待しながら続けていこうと思います。
469SGGK ◆6pZCoAtaxk
2016/09/04(日) 22:30:11.87ID:mw2cD+wV 先週パソコンが壊れてしまい(データは無事)、今日はVisualStudioExpress2013forWDをインストールしなおそうとしてた。
参考書についてるCDを使えばよかったんだけど、ダウンロードサイトから落とせば最新版が入手できると思い、
TOPページからダウンロードページにいくボタンを押すと、一瞬画面が見えるけど、すぐにVS2015のダウンロードしかできない画面に
変わってしまう。しばらく悩んだ結果、よく見ると画面右上に「このページはベータ版です」のような意味の小さなボタンがあり、
これを押すと、感想の星マークを要求する小ウィンドウが出てきて、これをスルーして、もう一度ダウンロードボタンを押すと、
やっとVS2013ダウンロードができる画面が出てきた。長かった・・・
インストール後にサインインしたら、以前SGGKへのアカウント変更に苦労した設定内容がマイクロソフト側に残ってたらしく、
違うパソコンにインストールしたばかりなのにアカウント名SGGKがすぐに表示された。それ以降の作業は何もしなくてもよくなり、ホッとしたが、アカウント名の横のアイコンも
しっかりと表示されてた・・・。これは、もしかして恥ずかしいアイコンを設定してたらマイクロソフトに見られてしまってるということを意味するのだろうか?
まぁ、気にしてもしかたないので、来週から作業を再開しよう!
参考書についてるCDを使えばよかったんだけど、ダウンロードサイトから落とせば最新版が入手できると思い、
TOPページからダウンロードページにいくボタンを押すと、一瞬画面が見えるけど、すぐにVS2015のダウンロードしかできない画面に
変わってしまう。しばらく悩んだ結果、よく見ると画面右上に「このページはベータ版です」のような意味の小さなボタンがあり、
これを押すと、感想の星マークを要求する小ウィンドウが出てきて、これをスルーして、もう一度ダウンロードボタンを押すと、
やっとVS2013ダウンロードができる画面が出てきた。長かった・・・
インストール後にサインインしたら、以前SGGKへのアカウント変更に苦労した設定内容がマイクロソフト側に残ってたらしく、
違うパソコンにインストールしたばかりなのにアカウント名SGGKがすぐに表示された。それ以降の作業は何もしなくてもよくなり、ホッとしたが、アカウント名の横のアイコンも
しっかりと表示されてた・・・。これは、もしかして恥ずかしいアイコンを設定してたらマイクロソフトに見られてしまってるということを意味するのだろうか?
まぁ、気にしてもしかたないので、来週から作業を再開しよう!
470SGGK ◆6pZCoAtaxk
2016/09/11(日) 22:20:45.36ID:adF2Gp/w 10年は使うつもりでいたパソコンが約7年でダメになってしまったのは想定外だったけど、
やっと元通りの環境に戻せたので、来週こそは作業を再開したい。
いつものゆっくりペース。
やっと元通りの環境に戻せたので、来週こそは作業を再開したい。
いつものゆっくりペース。
471SGGK ◆6pZCoAtaxk
2016/10/02(日) 22:20:45.65ID:OnPw603U 実はまだできてない・・・。
時間管理やモチベーション維持が上手くなくてあまり作業してないからかな。
ソースを印刷して眺めて、手が止まってる感じ。
今のソースは全部グローバルにしてるので、それをそのままヘッダファイルに
入れるような分け方にしたら、そのヘッダファイルはおそらくほとんどの関数の定義ファイルでも
読み込むことになるから、それだと分割したというよりは単にソースの長く見える部分を
ヘッダファイルに押し込めて見えなくして短くしただけでしかなくなるからなんだか変だなという気持ちになり、
ではどうすればというのが見えなかったのも作業が止まった理由かもしれない。
時間管理やモチベーション維持が上手くなくてあまり作業してないからかな。
ソースを印刷して眺めて、手が止まってる感じ。
今のソースは全部グローバルにしてるので、それをそのままヘッダファイルに
入れるような分け方にしたら、そのヘッダファイルはおそらくほとんどの関数の定義ファイルでも
読み込むことになるから、それだと分割したというよりは単にソースの長く見える部分を
ヘッダファイルに押し込めて見えなくして短くしただけでしかなくなるからなんだか変だなという気持ちになり、
ではどうすればというのが見えなかったのも作業が止まった理由かもしれない。
472SGGK ◆6pZCoAtaxk
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がソースファイルになるのかな?
次は、プログラムソースにどんな関数が出ているかをエクセルに書いて整理して、
どんなふうにソースを分割したらいいか考えてみる予定。
>>466のときは、なんとなく分割するとファイルが見やすくなると思ってたけど、
何年か前にC++の14歳シリーズの本のソースを変えて作ってた頃に
1関数1ソースファイル+1ヘッダファイルにして書いてて、ファイル数がすごく増えてしまって、
インクルードファイルのところで引っかかって悩んだのを思い出した。
つまり、見やすかったわけではなかったのではと疑問がわいてきた。
ソースを分割すると何がいいのかについて、ネットで少し調べてから作業しようと思った。
サイトによっていろいろだけど、ソースファイルを分割すれば、
1.関数の再利用がしやすくなる。
2.ヘッダファイルだけを見せて、関数定義部分はリンク前のコンパイル済みのファイルだけを渡せば関数を勝手に書き換えられない。
3.ファイル単位でコンパイルできるので、コンパイル時間が短くなる。
ほかにもあるかもしれないけど、このぐらいで作業に入ってもいいかなと思った。
1〜3だけで考えると、チーム開発を想定してみて、ソースファイルをどんなふうに分けたらいいのかと考えて分けてみるといいかもと思った。
まずは、ソースプログラムを1つのソースファイルと1つのヘッダファイルに分けてみようと思う。
分割したファイルが問題なくリンクできるように変数の定義と宣言をかき分けたり、
外部変数の扱い方がよく分かってないので、少しずつ分解していく予定。
準備としてソースを上から以下の順に整理してみた。
1.#define文
2.関数の宣言、構造体、共用体の定義やtypedef
3.外部変数の定義
4.ソース本体
1〜2がヘッダファイル、3〜4がソースファイルになるのかな?
次は、プログラムソースにどんな関数が出ているかをエクセルに書いて整理して、
どんなふうにソースを分割したらいいか考えてみる予定。
473SGGK ◆6pZCoAtaxk
2016/10/23(日) 23:01:08.09ID:5P+w/FSj 472の考えで分離できた。ソースが2個、ヘッダファイルが2個。
この数は途中で変わるかもしれないけど、次はプログラムの中身を少し修正したい。
ラケットやフィールドの寸法を#defineで記号定数定義してたのは、
初期化の関数を作って、その中で静的変数に保存する方法にして、動作するかを試す予定。
ホームページは更新する余裕がないので、そのまま・・・orz
来週土日は用事があるので早くても再来週からの作業となりそう・・・。
この数は途中で変わるかもしれないけど、次はプログラムの中身を少し修正したい。
ラケットやフィールドの寸法を#defineで記号定数定義してたのは、
初期化の関数を作って、その中で静的変数に保存する方法にして、動作するかを試す予定。
ホームページは更新する余裕がないので、そのまま・・・orz
来週土日は用事があるので早くても再来週からの作業となりそう・・・。
474SGGK ◆6pZCoAtaxk
2016/12/04(日) 21:06:49.17ID:5t9Ya2+q 473から全然進めてなくてダメな状況。
その他はホームページを少し直そうと思い、たまに調べものをするものの、
結局書き直しはしない程度の作業をしただけ・・・。
その他はホームページを少し直そうと思い、たまに調べものをするものの、
結局書き直しはしない程度の作業をしただけ・・・。
475SGGK ◆6pZCoAtaxk
2017/02/19(日) 12:38:32.60ID:QRXz6Znb 生存報告。
もう10年ほど経過してる気がするけど、今年も続けることにしました。(中断を繰り返してもよし!)
もう10年ほど経過してる気がするけど、今年も続けることにしました。(中断を繰り返してもよし!)
476名前は開発中のものです。
2017/12/31(日) 20:41:34.38ID:/rN76OKL 簡単にお金が稼げる方法興味ある人だけ見てください。
グーグル検索⇒『来島のモノノリウエ』
N88OV5L2K4
グーグル検索⇒『来島のモノノリウエ』
N88OV5L2K4
477名前は開発中のものです。
2018/02/17(土) 08:28:20.67ID:G/oBdhuK ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
両院で、改憲議員が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 修行中
481名前は開発中のものです。
2021/09/18(土) 13:06:33.32ID:JhbyQZUc 期待age
482名前は開発中のものです。
2021/11/27(土) 09:43:02.35ID:xSIb15vb 人生詰んだけどやる気でねぇし
一人でゲームが作れるように修行します
一人でゲームが作れるように修行します
483名前は開発中のものです。
2021/11/27(土) 09:54:22.05ID:xSIb15vb 作りたいゲームに近いチュートリアルがアンリアルにあるけど
使いたいのはユニティ、どうするアイフル
使いたいのはユニティ、どうするアイフル
484名前は開発中のものです。
2021/11/27(土) 09:56:59.63ID:xSIb15vb どっちも知識実績ねぇからアンリアル行ってみるか
お前もそう思うだろ?
お前もそう思うだろ?
485名前は開発中のものです。
2023/09/06(水) 18:30:45.38ID:YQi1gcag 修行僧はいねがー
486名前は開発中のものです。
2024/01/01(月) 08:32:07.66ID:nv07y9WS カムヒアー!
487名前は開発中のものです。
2025/01/30(木) 21:23:15.49ID:6NjzpMH6 >>484
いや、そうは思わないな
いや、そうは思わないな
レスを投稿する
ニュース
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★11 [ぐれ★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 日本損失1.7兆円に修正 中国渡航自粛の影響試算 [蚤の市★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 「アベノミクス」で投資対象と化したマンション ローンの低金利続き「年収の12倍」借りる20代出現 [蚤の市★]
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 高市周辺、さすがに焦り始めるww「小さな火種が火事になりかけている。早く鎮火しなくてはいけない」 [271912485]
- 【実況】博衣こよりのえちえち朝こよ🧪
- 【高市悲報】神谷「部下が間違えて脱炭素を脱酸素て書いたんですよ😡それ読んだだけなのに挙げ足とるな!小学生か!」 [359965264]
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- ほかほかご飯にかけるとうまいもの一覧
