これからは家族でゲーム製作
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2005/12/27(火) 22:12:40ID:youvsAOx0161名前は開発中のものです。
2006/01/18(水) 05:09:07ID:F2sEu3Vxじいちゃんのソースを弄ってみたよ (w
http://gamdev.org/up/img/4405.zip
変更点は、WinMain()で
・InitDXLibrary()の返り値をbool型に
・LoadBitmap()に失敗したらその場で終了するように変更
したのと、
・CF_Systemクラスが「何でも屋」になりそうだったので、
PlayerArrowクラスとLookAroundFrameクラスを分離
(それぞれ矢印とフィールドを見回すときの枠のみ)
といったところ。
書き換えている最中に、変数名をいくつか変えたけど、
大丈夫かな?
(どれも、略していたのをやめただけ)
0162従兄弟@今日は自宅
2006/01/18(水) 05:16:02ID:F2sEu3Vx迷惑でなければ、分けたほうがよさそうなクラスを分けたり、
変数のスコープを限定したりと、
保守性を上げてやりたいと思います。
・フィールド関連 (移動時)
CF_System (アクティブフラグの管理に限定)
Field
・フィールドに描かれるオブジェクト (Drawメソッド付き)
CMapControl (マップ全体)
CPlayer (キャラクター)
LookAroundFrame (見回す時に出る枠)
PlayerArrow (キャラクター前の矢印)
・データ共有用?
Extern
Global
Macro
・戦闘関連
Battle
・まだよく読んでない
CF_Input
Struct
WinMain
0163従兄弟@今日は自宅
2006/01/18(水) 05:20:03ID:F2sEu3Vx変数名や関数名の書き方を合わせておくと後で楽だと思うのだけど、
どうでしょ?
とりあえず思いつくまま書くので、「それはやめて欲しい」とか
「他にもこうしたほうがいい」という意見があったら気軽に書いてね♪
(家族なので、遠慮せずにお互い作業しやすいようにしましょ)
1. なるべく略さない (Mou→Mouse, Pos→Position, Pal→Param)
2. ハンガリアンをやめたい (m_hGrap→Graphic or graphic)
3. 関数名は動詞+対象となる名詞で (ArrowDraw→DrawArrow)
4. 変数名は先頭が小文字 (m_nActiveFlag→activeFlag)
簡単に言うと、C#のソースコードのようなイメージです。
2に関しては、先に変数のスコープを限定したり
変数名の付け方をパターン化 (*Graphicならint型のハンドル、とか)
してからでないと、混乱するかな。
(私自身がハンガリアンが分からないので、なんとも言えませんが)
0164隣の小父
2006/01/18(水) 05:30:42ID:NXBCeScdVisual Studio 2005 Express Edition
isoしか無いみたいね
おじさんは、以前knoppix焼こうとして
PC付属の焼きソフトで起動CDが作れない
問題にぶちあたったw
フリーな焼きソフトとかあるんかな?
0165従兄弟@今日は自宅
2006/01/18(水) 05:33:29ID:F2sEu3Vxいつの間にかSDLベースになっていて困惑するかも (w
実はVisualStudio 2005を使ってみたら直すのが楽で、
逆にSDLを使ってWindowsでUNIX (私のはFreeBSD) 用の
ゲームを作ればいいのでは、と思いました。
0166隣の小父
2006/01/18(水) 05:37:48ID:NXBCeScd1. IDEなしで手打ちしてるんで、長い変数名は苦手
2. m_hogehoge
はMSの作法なんで、それに従ってるけど
やっぱり、一見でスコープが分からなくなるのが
問題ですねぇ
3.4. に関してはUNIXの作法ですかね?
0167従兄弟@今日は自宅
2006/01/18(水) 05:38:25ID:F2sEu3VxDaemonToolを使うと、各種ディスクイメージ (もちろんISOも) を
そのままマウントできて、便利ですよ♪
ttp://www.geocities.co.jp/SiliconValley-Sunnyvale/3115/DaemonToolins.html
一度焼いてから使いたい場合には、こちらがISOイメージに対応しているようです。
ttp://www.deepburner.com/
ttp://sekirei.air-nifty.com/blogtopia/2004/08/deep.html
0168隣の小父
2006/01/18(水) 08:01:07ID:NXBCeScd>4 ポチ登場
>8 夫登場
>11 妻登場
>16 じーちゃん登場。父権発動でエロになると思いきや?
>18 息子登場
>23 息子の発言で、作るゲームジャンルは漠然とカードゲームという流れになる
>25 妹登場
>32-33 ポチに名前が付く
>36 従兄弟登場。家族計画の中で一番の熟練者
>38 ポチが餌(企画)を咥えて来る
>44 ポチがWikiに公式ページを作る
>50-51 画面の仕様が決まる
>53 じーちゃんがうp
>57 画面レイアウトうp
>65 じーちゃんがうp
>68 ポチが戦闘画面レイアウトうp
>69 謎な人が何かうp
>75 ポチがマップチップうp
>84 マップチップ構造体
>86 イベントのスクリプト
>90 じーちゃんが合体想定プログラムのプロトタイプうp
>94 じーちゃんがうp
>99 隣の小父登場
>106 金魚登場
>128 Lua
>129 Ayame
>130 じーちゃんがマップエディタうp
>131 Lamp
>142-146 Doxygenでドキュメント管理
>148 SDL
>156 Easy3D
0170隣の小父@年金生活
2006/01/18(水) 12:13:13ID:NXBCeScdVisual Studio 2005 Express Edition インストール完了(`・ω・´)
本格的なIDEって、こんなに使いやすかったんだw
今までコマンドラインでシコシコやってたよ(´・ω・`)
0171じいちゃん(´-`)
2006/01/18(水) 16:26:21ID:k9LMNYtu>>161
朝早くから乙です。
変更してもらったとこ見ました!
CF_Systemはとりあえずなんでも入れちゃおうと思ってたんですが、
そうやって小さいクラスに分けちゃってもいいんですね。
長い変数名は、わりと好きなのでOKです。
略は極力やめるようにしまっす。
>>162
そんな感じの分類でOKです。
Extern
Global
Macro
Struct
は共有用のつもりです。さらに、
Prototype.h // 広域で使いそうな関数のプロトタイプ書く
Func_01.cpp // 広域で使いそうな関数の実装書く
この二つを入れようかと思ってるのですが、いかがでしょか。
実はもっといい方法あります?
あと、CPlayerはこれから書き直すと思うので、
今はそっとしといてください ^^
0172じいちゃん(´-`)
2006/01/18(水) 16:27:38ID:k9LMNYtu変数名やら関数名は、できるだけ合わせた方がよさげですよね。
んー、共同開発っぽくなってキター。
>1. なるべく略さない
これはOKです。なるべく ^^ ね。
>2. ハンガリアンをやめたい
ハンガリアンは見よう見まねで使ってただけなので、未練は全く無いです。
でも、クラスのメンバ変数の頭につける m_ だけは残しといてほすぃかな。
m_nActiveFlag→m_activeFlag
m_hGrap→m_graphic
みたいな。どでしょ?
>3. 関数名は動詞+対象となる名詞で
これはぜひやりたいのですが、じいちゃん英語わからんチンなので、
やりたくてもできないかも〜 (T_T)
>4. 変数名は先頭が小文字
これはOKです。
Visual Studio 2005 Express Edition
はちょっと気になってたので、この機会に試しに乗り換えてみたいと思います。
VC++6.0タンは前世紀ぐらいに買ったやつですから、
そろそろ休ませてあげよかな。どもですじゃ。m(__)m
0173じいちゃん(´-`)
2006/01/18(水) 16:29:29ID:k9LMNYtu激しく乙w
まだ160ですけど、思ったより色々ありますね。
そろそろおにゃの子キャラが欲しいよ欲しいよ。
あと、エロゲはあきらめてないぞ。
カードの絵が超エロエロになる予定なんじゃ!
Visual Studio 2005 は週末あたりに挑戦してみます。
VC++6.0タンと一緒に起動して、最適化競争とかさせてみたいw
0174隣の小父@年金生活
2006/01/18(水) 17:17:18ID:NXBCeScd考えてみればDoxygenでドキュメント管理するので
m_やらg_やら小細工しなくても分かるのかもしれない
M$の作法が染み付く前はコーディングにUNIX風作法を取っていたので
サッパリと決別するのもいいのかもしれない
0175じいちゃん(´-`)
2006/01/18(水) 17:48:41ID:k9LMNYtuメンバ関数内で同じ変数名を使いたくなった場合
class A {
m_number;
int SetNumber (int number)
{
m_number = number;
}
}
こんな場合に役に立つと思ったのですが、どでしょか?
私、こういうことがわりと頻繁にあるんですけど #-_-
g_ はできるだけ色んな所で使わない方向でいけば、
付けなくても、なんとかなるかなぁ。とかオモタ。
ハンガリアンぽい記述は、なんとなくカッコイイwのと、
スーパープログラマのやねうらお様の本に「絶対使え」的な事が書かれてたので、
中途半端に使うことにしました。
やめることに関しては、未練は無いですが〜
0176隣の小父@年金生活
2006/01/18(水) 19:26:01ID:NXBCeScdそういった使い方は良くするよ
引数をメンバ変数に入れる時なんかね
void SetSize( int Width, int Height ) {
m_nWidth = Width;
m_nHeight = Height;
}
突き詰めると、UNIX作法とM$作法の確執かねぇ(^^;
0177ポチ
2006/01/18(水) 21:05:54ID:ibCc4p9Cそれぞれの処理系にくっついてくるサンプルソースとか
その中で使われている作法をそのまま引き継いでるんじゃないかな?
たぶんwindowsでもGCCで作業してた人は違和感が無いのかも
と、MSCとBCCの違いに戸惑った私が言ってみるw
0178じいちゃん(´-`)
2006/01/18(水) 21:14:17ID:k9LMNYtuPrototype.h と Func_01.cpp を追加して、
ウィンドウの板を出す関数を入れてみました。
ttp://gamdev.org/up/img/4412.png
ttp://gamdev.org/up/img/4413.zip
WinMain()の中の、FameRateControl()関数の中をちょっとだけ変えました。
Struct.h に hGrapWindowBoard_01 を追加しました。
CMapControl の実装とヘッダを別ファイルにしてみました。
変更はこれだけっだったかな。
変数名はまだそのままなのですが、週末までにどうするか決めといて、
それから一気に変更しまっす。
あとコメントはまだ勉強不足でどう書けばいいのかわからないのですが、
これも週末になんとかしたいなと。
土日は大変そうだわぁ (;^_^)
0179隣の小父@年金生活
2006/01/19(木) 08:17:05ID:BYtOZVbIやっつけだから、完璧じゃないけど
コメントのつけ方の参考にしてみてちょーだい
ttp://gamdev.org/up/img/4417.zip
0180隣の小父@年金生活
2006/01/19(木) 09:13:36ID:BYtOZVbIじーちゃん乙!
話は外れるけんども、このページ↓を作ったのは、わしなんじゃが
http://gamdev.org/w/?%5B%5B%A5%DE%A5%C3%A5%D7%A5%A8%A5%C7%A5%A3%A5%BF%5D%5D
じーちゃん、マップエディターのソースPLZ!
弄ってみたいのぢゃ
0181隣の小父@年金生活
2006/01/19(木) 12:43:34ID:BYtOZVbI変数名の変更についてですが、
大幅に変えるとバグの元になるだけなので
MS作法で行くのが吉だと個人的には思とります
0182名前は開発中のものです。
2006/01/19(木) 15:40:01ID:KZhSpg+kじーちゃん、乙です。
いつもながら、いい仕事しますね (^^
>>168
従兄弟はゲームを作りに参加するのが初めてなので、
少なくとも熟練者ではないですよ (^^;
むしろ家族のみんなのソースを読みながら、
勉強させていただいています。
>>163
変数名について聞いたのは
主に自分の書き方を家族に合わせたかったからなので、
私もなるべくハンガリアン記法を使うようにしますね。
(間違えてたらコッソリ直しておいてくださいな)
それと、今ある変数名を例に使ってしまったので、
これではじーちゃんが書いた部分を書き換えたい、
と言っているように見えてしまいますな。
少なくとも既に書いた部分については、>>181に賛成です。
(紛らわしくてごめんね。>>家族のみんな)
0183名前は開発中のものです。
2006/01/19(木) 15:43:32ID:KZhSpg+kあらためて考えてみると、従兄弟の書き方はJavaそのものなのかも。
フラグには「bool finished;」のような変数を使い、
「bool isFinished() {return finished;}」のように
メソッド名の「is (boolの場合) 」や「get (それ以外) 」のような
規則で役割を決める、という感じかな。
考えてみると、ハンガリアン記法を使わなくても混乱しないのは
他の部分で制約を設けているからかもしれない。
(グローバル変数を使わない、ポインタは特定のデータ型のみ、とか)
C++で共同作業をしたことはほとんど無いので、
勉強になりますた。
0184名前は開発中のものです。
2006/01/19(木) 15:51:25ID:KZhSpg+kクラスをスーパークラスとサブクラスに分離したくなったりと、
機能を変えずに構造を変えたくなった場合には、
「リファクタリングツール」というのを使うと便利ですよ。
ttp://www.slickedit.com/content/view/125/83/
ttp://www.refpp.com/download.htm
従兄弟は下のを使っていますが、例えば変数名を変えたい場合には
変えたい変数名を選択して「右クリック→新しい名前の入力」で
全ての変数が安全に変更されるので、便利ですよ。
(同じ名前で別のスコープの場合やコメント内、他の変数の一部の場合には変更されない)
以上、チラシの裏ですた。
0185じいちゃん(´-`)
2006/01/19(木) 19:34:57ID:SaMts7cOご丁寧にどもありがとです m(__)m
/// と //! の違いがいまだによくわからないのですが、
とりあえず説明に /// を使っとけば、ある程度反映されるんですかね。
もうちょっとよく見てみまっす。ども。
>>180
日曜日からほとんど変わってないのですが、マップエディタです
ttp://49uper.com:8080/html/img-s/106462.zip
上で書いたように、マジで未完成ですよ〜。
質問あればどぞー ^^
>>従兄弟タン
お、そろそろ修羅場は脱出ですかな?
変数名はとりあえずハンガリアンもどきで行くんですかね?
私の書き方はかなり自己流入ってますので、それはそれで混乱をまねくかも。
どっかにわかりやすい基準てないのかなぁ。
あったら即乗り換えるんですが。
基本的に私は適当に書いてるので、ガンガン指摘してもらってけっこうですよ〜。
マジでマジで。
リファクタリングツールなんてあるんですね。
まあ>>184のは英語ソフトらしいで、じいちゃん使える自信は全く無いのですが orz
0186隣の小父@年金生活
2006/01/19(木) 21:10:43ID:BYtOZVbIじーちゃん乙であります!
明日からマップエディタのコード追いかけてみるかのぉ。
コメントは
/// は関数や変数の一行上に、
//!< は同一行の右側に書きまする。
/*!
*/
や
/**
*/
もあるでよ
>>184
従兄弟殿は本格的で実践的な知識を大量にお持ちで凄いですじゃ。
おじさんは、タスクシステムの実験をしとりました。
0187隣の小父@年金生活
2006/01/20(金) 07:46:17ID:wtRfMKhJ骨組みから変えてしまうかもしれないので
03からブランチすると思います。
0188じいちゃん(´-`)
2006/01/20(金) 09:53:37ID:n9O9zUCoがむばって下さい。
ところで「ブランチする」って、なにをどうするって意味ですか?
0189隣の小父@年金生活
2006/01/20(金) 10:41:36ID:wtRfMKhJじいちゃんのコードは引き続き開発していくとして、
それとは別バージョンとして、おじさん版を開発していくってことですたい。
0190じいちゃん(´-`)
2006/01/20(金) 11:06:24ID:n9O9zUCo0191隣の小父@年金生活
2006/01/20(金) 11:37:26ID:wtRfMKhJ一度ブランチして、再度融合でもしましょうか?
多少時間かかると思うけんども
0192隣の小父@年金生活
2006/01/20(金) 11:39:49ID:wtRfMKhJ1. ウィンドウ単位でのクラス化を推し進め
2. DDBクラスを自前のものと差し替え
です。
次は
3. おじさんには無く、じいちゃんのコードにある機能をコミット
ですか。そんな感じです。
0193じいちゃん(´-`)
2006/01/20(金) 11:53:55ID:n9O9zUCoぜひおまかせしたいのですが、いかがでしょか?
じいちゃんのDDBは開放したときとかの挙動に難があるっぽいので、
差し替えたのは大正解かと。
ウィンドウ単位でのクラス化はやるべきでしたか。
書いてる内に CMapEditorクラスがどんどんどんどん長くなっていくから
どうしようかと思いながらやってました ^^
てゆか、小父さん既にマップエディタ作ってあった感じですね。
エディタのデータはどんな感じにすべきかご意見ありますか?
じいちゃんは
'm' 'a' 'p' '\0' の4バイト、Widthの4バイト、Heightの4バイト、チップ配列
って順にしようと思ってたのですが、他に必要なのってあります?
0194隣の小父@年金生活
2006/01/20(金) 12:14:38ID:wtRfMKhJおじさんは、マップエディタ担当ですね
猫でも分かるを見ながら頑張りまつ
力尽きたら、バトンタッチするかもw
マップデータフォーマットは、それでいいかと
おじさんは、前はデータをセーブする前の段階で
精魂尽き果てまつたw
0195隣の小父@年金生活
2006/01/20(金) 12:24:32ID:wtRfMKhJじいちゃん: メインプログラマー ゲーム本体の開発
従兄弟殿: サブプログラマー じいちゃんと一緒にゲーム本体を開発
隣の小父: サブプログラマー じいちゃんのソースコードを元にマップエディタを開発
ポチ: グラフィックデータやゲームシステムなど、その他雑用とアドバイス
こんな感じですかね。
他にやりたい人がいれば、どんどん挙手挙手!
0196じいちゃん(´-`)
2006/01/20(金) 12:25:14ID:n9O9zUCoマップエディタは今はあんま急いでませんので、ゆっくりでいいですよ。
切りがいいとこまでできたら見せてね〜。
Chip構造体もちょっと変えたいなと思ってたんですが、
いかがでしょか。
Struct Chip {
BYTE byImage; // 絵
WORD woBitFlag; // フラグ
WORD woEvent01; // イベント1
WORD woEvent02; // イベント2
BYTE byEtc; // 念のため ^^
};
WORD woEvent02 を増やしました。
これで合計8バイトになって、
なんか区切りがいいよな気がするんですが、どう思います?
0197隣の小父@年金生活
2006/01/20(金) 12:25:33ID:wtRfMKhJ夫殿はバトルシーンの開発でしたね(汗
0198じいちゃん(´-`)
2006/01/20(金) 12:26:25ID:n9O9zUCoなにかの冗談みたいだ。
0199名前は開発中のものです。
2006/01/20(金) 12:34:52ID:onjv3JQsファイルのヘッダにバージョン情報か、Chip構造体のサイズを入れておくと
将来的に拡張しやすくなると思いますよ
0200じいちゃん(´-`)
2006/01/20(金) 13:58:43ID:n9O9zUCoそれ、いただき!どもです m(__)m
念のため、Chip構造体のサイズも入れましょ。
"map"の4バイト、Widthの4バイト、Heightの4バイト、
Chip構造体のサイズ4バイト、チップ配列
の順にしましょう。
バージョン情報はエディタのヤツですよね。それもいるかな?
0201隣の小父@年金生活
2006/01/20(金) 14:00:55ID:wtRfMKhJオープンソース開発では、
沢山コード書いた人が偉いのです
だから、じいちゃんが一番偉いのですよ
0202名前は開発中のものです。
2006/01/20(金) 14:55:32ID:AJrpxY2i>>194
リンク先を拝見しました。
まさに適材適所ですね♪
>>201
完全に同意です♪
従兄弟もどこまでもじいちゃんについて行きますとも (^^
・次の改造予定
現行バージョンではField関数とBattle関数で
シーンごとに各フレームを処理し、
呼び出す関数はフラグで入れ替えていますよね。
これを改造しようと思っています。
抽象クラスSceneを継承する形でFieldとBattleをクラス化し、
Field関数とBattle関数を「processFrame」に改名し、
Sceneクラスの抽象メソッド「processFrame」をオーバーライドさせます。
シーン切り替えのためフラグを入れ替えている箇所を、
FieldオブジェクトとBattleオブジェクトを入れ替えるようにすれば、
メインループ内では「processFrame」の呼び出しだけで済むようになります。
こうすることで、今までは
フラグとシーンごとの関数と条件分岐を別々に管理していたのを、
実質的にフラグの管理だけで済むようにできるはずです。
後々メンテナンスしやすくなるのと、Battle以降を開発しやすくなるので、
改造してしまっても構いませんか?
0203名前は開発中のものです。
2006/01/20(金) 17:37:32ID:onjv3JQsファイル形式自体のバージョン情報というつもりでしたが、
将来的にチップ配列以外の情報(例えばマップ名やスクリプトなど)を
追加したとき、ローダが旧形式のファイルと区別できると、
特にチームで開発する際、何かと便利です。
ヘッダがmapで始まるなら、4バイト目にバージョン番号を入れても
良いかもしれません。しかし、もし余力があるのなら、
「チャンク形式」でエンコードすることもお薦めしておきますね。
0204従兄弟
2006/01/20(金) 21:08:28ID:AJrpxY2i説明だけでは分かりにくいと思うので、
今晩実際に改造したものを上げますね。
とりあえずFieldとBattleをクラス化したもの
ttp://gamdev.org/up/img/4424.zip
/*---------------- 以下は変更点 ----------------*/
Battle.cppのクラス化 (CBattle.h)
Field.cppのクラス化 (CField.h)
・WinMain.cppの変更点
メインループ前にCBattleとCFieldの初期化
メインループ内のField()とBattle()を
field.ProcessFrame()とbattle.ProcessFrame()に変更
・CField.hの変更点
インスタンス変数の頭に「m_」を追加
Field()→ProcessFrame()
Field_Init()→Init()
Draw_Field()→Draw()
Move_Field()→Move()
・クラス名およびファイル名の変更
CF_Input→CFieldInput
CF_System→CFieldSystem
LookAroundFrame→CLookAroundFrame
PlayerArrow→CPlayerArrow
0206じいちゃん(´-`)
2006/01/21(土) 00:20:52ID:AtQgidA7変数名は大文字少ない方が見やすいな〜なんて、
>>204を見て、改めて感じてしまった。
>>従兄弟タン
峠越えましたか。おつかれ〜。
従兄弟タンがやりたいことは少しずつ把握してきました。
なんてゆうか、どんどんムチャが利きにくい感じになってきてますねw
じいちゃんそういうのあんま考えたことないので、どうなるか興味津々。
ガンガンやっちゃって下さい♪
じいちゃんはとりあえず絵を動かすとこを中心にやってみます (`・ω・´)
>>203
んー、説得力ある感じ。
mapの3バイト、バージョン情報の1バイト、Widthの4バイト、Heightの4バイト、
Chip構造体のサイズ4バイト、チップ配列
の順にしましょか?小父さん意見よろ。
0207じいちゃん(´-`)
2006/01/21(土) 00:23:25ID:AtQgidA7なぜかプロジェクトが作れない orz
Visual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使う
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
たぶんこれは必要なんですよね?
全部やったはずなんだけどなぁ。
0208名前は開発中のものです。
2006/01/21(土) 01:26:43ID:Rn7mTFxP朝までには終わるようにしますので (w
>>206
変数のスコープを限定したりすると、たしかに無茶が聞きにくくなりますね。
(バランス取りが難しいですね)
もしアクセスしたい部分があるのにうまくいかないときは、
言ってくれればそこを書き直しますので、気軽に声をかけてくださいな。
>>207
従兄弟はtheSpoke版の2005を使っているので、
Express Editionのことは分からなかったりします。
紹介しておいてごめんね、じいちゃん。
0209名前は開発中のものです。
2006/01/21(土) 05:00:47ID:Rn7mTFxPヘッダをincludeする順番の問題だったようです。
(相互に参照するので互い違いでなければならなかった)
ttp://gamdev.org/up/img/4431.zip
…というわけで、改造済みのソースを揚げてそろそろ寝ます。
今回の改造点は、以下の通りです。
(シーン管理機能が出来たので、今度はシーンを作り始めようかな)
0210従兄弟の変更点
2006/01/21(土) 05:02:47ID:Rn7mTFxP「int nSceneControl; (シーンを表す変数) 」を
Grobal.hの「CSceneSwitcher g_sceneSwitcher」に置き換えた。
そのため、今まではBattle, Field, WinMainで
「g_Sys.nSceneControl = S_FIELD;」のようにフラグを入れ替え
メインループのswitch文で分岐させていたのを、
「g_sceneSwitcher.SwitchToField();」のように指定し、
メインループでは「g_sceneSwitcher.ProcessFrame();」と
実行するだけで済むようになりました。
例えば「g_sceneSwitcher.SwitchToBattle(player, enemy);」
のように戦うキャラをその都度指定できるようにするなど、
シーンごとに管理するデータも渡せるように出来ます。
シーンを追加する場合には、CSceneクラスを継承した
サブクラスをCSceneSwitcherクラスに登録します。
# 「ProcessFrame()」は必ずオーバーライドして下さい。
# 初期バージョンでのField()やBattle()関数にあたるので。
0211従兄弟
2006/01/21(土) 05:05:29ID:Rn7mTFxPバグをつぶす過程でExtern.hを無効にして各ファイルで
直接extern定義していますが、後で直しておきますので。
ちなみにソースは、
従兄弟の中ではこんな分類になっています。
(左端のツリー図)
ttp://gamdev.org/up/img/4432.png
0212隣の小父@年金生活
2006/01/21(土) 06:50:34ID:6RtR9U9stypedef struct {
union tag {
DWORD v;
BYTE c[4];
}
long width;
long height;
long chip_size;
} MAPDATA_HEADER;
こんな感じかな…
0213隣の小父@年金生活
2006/01/21(土) 07:50:38ID:6RtR9U9s精魂尽き果てますた
今日はDDBとBitmapの解析を進めまする
http://www.geocities.jp/bigbrotherxlittlesister/MapEditor_03b/html/
0214隣の小父@年金生活
2006/01/21(土) 09:54:46ID:6RtR9U9sGDI周りのクラス
DC //WinControlを継承している
http://www.geocities.jp/bigbrotherxlittlesister/MapEditor_03b/html/DC_8h-source.html
DDB //DCを継承している。BMPのロードはここでやってる。
http://www.geocities.jp/bigbrotherxlittlesister/MapEditor_03b/html/DDB_8h-source.html
DIB
今回は割合
DIBSection
DIBとDDBを継承したもの
0215じいちゃん(´-`)
2006/01/21(土) 10:41:20ID:AtQgidA7しかしながら、二人とのスキルの差に愕然となり、
じいちゃんの心はドス黒くなってたり。
あー、がんばろ (`・ω・´)
>>従兄弟さん
悲しいかなじいちゃんにはパッと見よくわからんので、
ちょっと勉強しまっす。
クラスってそんな風に使うのね・・。
>>小父さん
マップエディタ進んでるようですね。
基本的なところからじいちゃんと全然違う組み立て方にビビってるよ。
>>212のはそれでいいと思うのですが、
なぜ共用体になってるのか (DWORD vの意味がわからずorz) と、
int ではなく long を使ってるのはなぜですか?
0216隣の小父@年金生活
2006/01/21(土) 10:47:08ID:6RtR9U9sintは処理系依存なのでlongを使って32bitを明確にしています。
char[]の他に4バイトを纏めて扱えると都合がいいかなとか
思ったり(余計なお世話?w)
0217じいちゃん(´-`)
2006/01/21(土) 10:52:14ID:AtQgidA7DWORD v は今のとこ使い道は決まってないってことですかね。
両方とも了解しました。ありがとー。
0218隣の小父@年金生活
2006/01/21(土) 11:47:50ID:6RtR9U9stypedef struct {
union _tag {
DWORD v;
BYTE c[4];
} tag;
unsigned long width;
unsigned long height;
unsigned long chip_size;
} MAPDATA_HEADER;
ちょっとミスってたorz...
0219じいちゃん(´-`)
2006/01/21(土) 12:11:20ID:AtQgidA7OK把握です。
一応聞いときたいんですが、
>>196のはどの環境でも8バイトってことでいいんですかね?
0220隣の小父@年金生活
2006/01/21(土) 12:16:51ID:6RtR9U9s>>196
バイナリデータに構造体を当てはめただけだと、
処理系依存になります。
4バイトアラインがコンパイラ依存の筈です。
ですので、シリアライズ、デシリアライズをする必要が
あると思います。
0221じいちゃん(´-`)
2006/01/21(土) 12:30:54ID:AtQgidA7IT用語辞典
http://e-words.jp/w/E382B7E383AAE382A2E383A9E382A4E382BA.html
これによると、
シリアライズ → データをファイルに保存
デシリアライズ → ファイルを(復元して?)読み込む
でいいんでしょか。
〜バイトアラインでググったら、なんか悲喜こもごも色々出てきた。
みんな環境で苦しんでるらしいですねw
読み込む前にChip構造体のサイズ計って、想定と違う場合は
どうにか変換するんでしょか。じいちゃんにはわからず・・ (:D)| ̄|_
構造体のメンバの順番とか、変数の型とかは好きに変えちゃってもいいですよん。
たぶんあんま大きなマップにはならないと思うし。
0222隣の小父@年金生活
2006/01/21(土) 12:41:08ID:6RtR9U9sCPUに都合がいいように最適化されているので、
ぴったり8バイトにはならないことがあります。
ですので、人力プログラミングで調整してあげる
必要があります。
0223隣の小父@年金生活
2006/01/21(土) 12:49:29ID:6RtR9U9s全然駄目だったんですよ〜
人間、やれば覚えられるもんだなとw
0224じいちゃん(´-`)
2006/01/21(土) 12:49:52ID:AtQgidA7じいちゃんアフォなので、とりあえずコンソールでテストしてみました。
つながりはこんな感じでしょうか。
ttp://gamdev.org/up/img/4435.zip
これだとほとんどの変数(オブジェクト?)を CSceneSwitcher が持つことになりそうですね。
シーン同士の変数の受け渡しとかは、 Switch〜() を挟んで引数で渡せそうな感じ。
こんな組み方もあるのねぇ。
あと、ポインタ同士の代入がちゃんとキャストされてるのになぜかエラーが出たので、
C++のキャストに変えたいんですが、この記述でだいじょぶでしょか?
>>222
んー、難しそう・・。
変換中は読み込みがちょっと遅くなるかもですね。
でも狭いマップなのでだいじょぶかな。
人力プログラミングでググったら謎のアーティストが出てきたw
0225じいちゃん(´-`)
2006/01/21(土) 12:51:45ID:AtQgidA7じいちゃん実は去年からC++始めたので、
まだ STLすら一個もわかんね ┐(´ー`)┌
おぶじぇくと指向とかでざいんぱたーんとか、なにそれ?
0226名前は開発中のものです。
2006/01/21(土) 20:22:35ID:Rn7mTFxP雪、綺麗でしたね (^^
私も同じく東京からです。
私はじいちゃんとは逆に絵を出して表示するのが苦手なので、
「スキルの差」は高低ではなく種類の差だと思いますよ。
>>216-217
たしかintもlongも、他の型も言語レベルでは処理系依存だったかと。
(「long>=int」だったかも)
Windows用コンパイラではどれもlongが32bitなのかな?
>>220-221
シリアライズは「直列化」と訳されるとおり、
プログラム中のデータをバイトの配列 (これが直列) に変換することです。
ファイルに書き込むにはシリアライズする必要があるので、
書き込むところまでセットで指す場合が多いですね。
マップデータの受け渡しのための直列化でしたら、
処理系依存を気にするよりは、
テキストファイルなどで保存してしまうのはいかがでしょうか。
こうしておけば保存はprintf()で済みますし、
今後もコンパイラの仕様変更を気にせず済みますし。
0227従兄弟
2006/01/21(土) 20:23:53ID:Rn7mTFxPおお、改造乙です♪
少ししたら読んでみますね。
エラーが出たのは、どのコンパイラでですか?
>>225
私もC++を始めたのは2ヶ月前なので、STLは一つも分かりません (w
ただJavaを使っていたので、何とか書けていますが。。
ちなみにシーンをCFieldやCBattleといったクラスに関連付けたのは、
ステートパターンというデザインパターンの一種です。
0228隣の小父@年金生活
2006/01/21(土) 20:27:36ID:6RtR9U9slongも処理系依存でしたか…間違えてました(汗
(Win以外では動かさないという前提で)windows.hの型を使うか
それよりも型を独自に定義するべきなんでしょうね
(処理系によって分けたりできるように)
0229名前は開発中のものです。
2006/01/22(日) 00:03:55ID:llzeskew> つながりはこんな感じでしょうか。
そんな感じです。
こういうシンプルなサンプルを用意すると分かりやすいですね。
今度から構造を変えたときにはそうしようと思います。
> これだとほとんどの変数(オブジェクト?)を
> CSceneSwitcher が持つことになりそうですね。
シーン関連はそうなりますね。
どのシーンに入るか、そのシーンにどういう引数を渡すか、
といった内容はCSceneSwitcherの外で決めることになるので、
すっぱり分けてしまった方が役割分担が分かりやすいのではないかと。
> シーン同士の変数の受け渡しとかは、 Switch〜() を挟んで引数で渡せそうな感じ。
狙いはその通りです。
引数渡しにしてグローバル変数を使わなければ
中で使われている変数が一目で分かりますので。
> あと、ポインタ同士の代入がちゃんとキャストされてるのになぜかエラーが出たので、
> C++のキャストに変えたいんですが、この記述でだいじょぶでしょか?
私の環境でも直していただいた方でエラーが出ないので、
変えてしまってくださいな。
わざわざ調べていただいて、ありがとうございます。
0230隣の小父@年金生活
2006/01/22(日) 11:17:12ID:f/z7gVPN本格的なWinアプリを作るのは初めてだったりw
0231じいちゃん(´-`)
2006/01/22(日) 12:04:36ID:Es7VQG0+本格的にオーバーライド使うのは初めてだったりw
switch()文で分けるよか、綺麗で汎用的っぽいんですよねぇ。
>>229
サンプルはじいちゃんが勝手にやったものですから、
従兄弟タンは気にせずガンガン改造しちゃってかまわないですよ。
警告が出たのはVC++6.0ですじゃ。
ただなぜか出たり出なかったりするので、よくわからず。
キャストを変えてからは出てないっぽいですが。
0232隣の小父@年金生活
2006/01/23(月) 08:22:06ID:6HirwaeV時間かかるなぁ…orz
0233隣の小父@年金生活
2006/01/23(月) 11:19:38ID:6HirwaeVメモ帳を作っとりますw
0234じいちゃん(´-`)
2006/01/23(月) 19:07:14ID:7UunYnPphttp://49uper.com:8080/html/img-s/107222.png
メニュー出してます。
分岐ありまくりで、かなり複雑になりそうな予感。
なんていうか、こういう動きの少ないゲームはメニューが占める割合が大きいですね。
ぶっちゃけ 主役=メニュー のような気がしてきたYO
小父がんばってますね。
メモ帳って、自分で作れるのね。
ああいうのはウィンドウズ様が用意してくれるものだとばかり思ってました。
前に聞くの忘れてたんですが、
タスクシステムってどうですか?気にはなってるんですが、
ゲームで使えるかどうかがよくわからないので、まだ試してないんですよ。
超複雑そうなので、このゲームで使う気はサラサラないですけどー。
0235隣の小父@年金生活
2006/01/23(月) 19:44:39ID:6HirwaeVじーちゃん乙!
ゲームらしい画面になりましたね
>>メモ帳
Win32のエディットコントロールをウィンドウに貼り付けるだけですw
でも、ウィンドウにテキストを打ち込めると、ちょっと感動ww
>>タスクシステム
タスクシステムは、>>210で従兄弟殿が作ってくれた
シーン管理と、ほぼ同じ実装です。
ですので、無理にリアルタイムゲーム用のタスクシステムにせずとも
シーン管理クラスでやればいいかと・・・
おじさんは、やねうらお大先生のタスクシステムを参考にしてます。
0236隣の小父@年金生活
2006/01/24(火) 09:11:35ID:1JMNwEAM低層から再構築することに…orz
0237じいちゃん(´-`)
2006/01/24(火) 19:10:52ID:TWAdW9Zhじいちゃんも昨日バグりまくりで、キレてゲームに逃げちゃった。
お姉チャンバラ以外に面白いよw
>>235
>ウィンドウにテキストを打ち込めると、ちょっと感動ww
あるあるw
ダイアログとか出せるとなんか凄いうれしいよね。
>タスクシステム
関数ポインタみたいになるんですかね。
優先順位の高いほうから実行するとかいう噂は聞いたことが。
ヘタに使うとメチャメチャになりそうな予感。
0238ポチ
2006/01/24(火) 19:55:00ID:71gDZNUj今ごろになって書き込むのもなんだけど
マップエディタの保存形式について提案というか要望があるワン。
x00,チップ番号,拡張用,イベント番号、という配置で
BMPで保存する形式にできないかしら?
チップやイベントの数が256上限になるけど十分じゃないかと思ったりw
読み込み時は
マップの広さはそのままBMPのwidthとheightで左上から
ピクセルごとに処理していく感じ。チップ番号はじいちゃんが
振付けてくれてるものをそのまま流用。
イベントはいい案(形式を決めてスクリプト化したい)が降りてこないので
マップのイベント番号で分岐内部処理。
マップチップ以外のデータを持たす場合(マップ名等)別ファイル内でマップBMPを指定する
形になるとおもう。
0239じいちゃん(´-`)
2006/01/24(火) 20:28:15ID:TWAdW9Zhその方式だと、32bitのビットマップっぽくなるのかな?
x00てのは8bitフラグでしょうか。
各数字は256まででもなんとかなるっぽいです。
ヘッダはwidthとheightの二つがあればよし。
この方式にする、利点はなんでしょか?
0240じいちゃん(´-`)
2006/01/24(火) 20:43:26ID:TWAdW9Zhちょっとメニュー出してみました。
ttp://gamdev.org/up/img/4466.zip
絵は>>234です。
また長大なswitch()文で色々処理してます ('A`)
いまだに移動しかできないのですが、バグありましたら報告よろ。
Extern.hとGlobal.hはコンパイルするときのつながりがよくわからないので、
おもいきって無くしてみました。
グローバルの変数が使いたい場合は、そのファイルの上に直接 extern することになるはず。
メニュークラス追加しました。
変数名とかマクロの名前とか変えたのあるかも。
メニューしんどいよメニュー・・。
0241ポチ
2006/01/24(火) 22:01:31ID:71gDZNUj32bitじゃなくてOKです。D3Dの中でアルファ付で処理してたための記述でふ。
単純にRGBでデータを持たせてしまえっていう姿勢です。
この方式にする利点は
ずばり、人間がみて一目でマップデータがわかる!(まて
あまり深く考えてないですが
データをベタ書きのBMPにすることでlongとかintとか悩まないで済む事かなw
自分が作るときは大抵この方式かTEXTでCSVで吐き出すもので。
TEXTやBMPだと大抵どのOSに持って行っても使えるって事もありますね。
拡張用のbitデータに高さを持たせて
擬似3Dにしようかな〜とか妄想なんてしてないですよ〜?w(`・ω・´)
0242隣の小父@年金生活
2006/01/25(水) 04:39:08ID:92dlR1ljそうすると、
DDBじゃなくて、DIBでマップデータを持たないとダメですね
DIBSectionでもええんですけども
マップエディタは、まだまだ全然出来てないので
今のうちなら仕様変更可能でっする
【メリット】
データを文字通り目で確認することが出来る
エンディアンを、それほど気にしなくて済む
【デメリット】
上限が255に制限される
簡単にエンドユーザーに書き換えられてしまう
0243隣の小父@年金生活
2006/01/25(水) 04:42:31ID:92dlR1ljマップチップさえ作ってくれれば
それでもええよ
0244隣の小父@年金生活
2006/01/25(水) 05:54:27ID:92dlR1ljおじさんは、XMLかLuaかFORTHを使っております。
0245ポチ
2006/01/25(水) 06:13:49ID:Nvt5zD2p擬似3Dはまあ戯言なんですが、拡張用bitの部分にオブジェクト用のチップ番号が
入るといいなぁとは思ってるワン。
いま、マップチップに建物(オブジェクト)の画像をそのまま描きこんで
マップチップとして扱ってるけど、できればオブジェクトは別にチップを描いて
マップとオブジェクトを合成で表示できると何かと都合がいいんジャマイカ。
と小屋の隅で考えとります。
0246隣の小父@年金生活
2006/01/25(水) 08:59:52ID:92dlR1ljじいちゃんのコードから大幅に変えてしまっています(殆ど別物w)
次は、マップデータフォーマットの決定ですかね。
http://www.geocities.jp/bigbrotherxlittlesister/Wind_0_0_2/html/
0247じいちゃん(´-`)
2006/01/26(木) 08:49:17ID:BkL++XsKてゆか、元にしてないでしょw
これで絵は出るっぽいですね。がんばってくださいな。
マップチップはできれば32bitにして欲しいです。
でも、Bitmapとして出す場合、ちゃんとチップごとに色分けされるのかな・・
マップを3Dに?? (∩ ゚д゚)あーあーあー、聞こえなーい
0248隣の小父@年金生活
2006/01/26(木) 10:55:34ID:IAIRyLwxまだ、マップチップは選べないorz
ウィンドウの情報をマクロ定義では無く、XMLデータで持つように改良
外部から弄れるようになった
なかなか、エディターの機能が充実しないorz
>マップ3D
マップは見下ろし型2Dっすね
0249隣の小父@年金生活
2006/01/27(金) 15:07:14ID:tSKpmVLTチップ選択ウィンドウを表示したのぢゃ
まだ選択は出来ないのぢゃorz
>てゆか、元にしてないでしょw
ぢつは、8割方、元にしてないですね〜(ゴミンね)
2割程、コードを使っていたりしていると思ふ
0250じいちゃん(´-`)
2006/01/27(金) 21:28:31ID:TZ/uomk71歩進んで2歩下がってる感じじゃ!
>>245
オブジェクトとチップを分けるのは、プログラム的にはだいじょぶです。たぶん (^_^;
オブジェクトはFieldObjectクラスでも作って、チップとは別に管理するはず。
建物だけじゃなく、木とか岩なんかも置きたいですね。
サイズは自由でいけると思います。
絵はマップチップの絵とは別にするとおもわれ。
>>249
じいちゃんのコードのことは考えず、自由にやってくださいませ。
0251じいちゃん(´-`)
2006/01/29(日) 11:45:47ID:AJ5CQq8Mここでがむばらにゃ。
0252隣の小父@年金生活
2006/01/29(日) 12:00:24ID:g5itzzp3とりあえず、マップチップを選択出来るようになったのぢゃ
0253じいちゃん(´-`)
2006/01/31(火) 18:22:24ID:qAlP722B0254じいちゃん(´-`)
2006/02/02(木) 19:24:43ID:XgvKezvD大丈夫。だいじょうぶ。
・・・とか自分に言い聞かせながらじゃないと、打てない精神状態にw
0255隣の小父@年金生活
2006/02/03(金) 07:00:02ID:DFf0Z/Km0256隣の小父@年金生活
2006/02/05(日) 17:28:46ID:wT9CDVso0257じいちゃん(´-`)
2006/02/05(日) 18:12:21ID:c7olZgCS汎用的な設計とか無理無理。元々そんなことはできないのじゃ。
とにかく動かすことを目標にする。
>>256
小父どうした小父。
今んとこマップエディタは急いでないから、ゆっくりでいいよん。
0258じいちゃん(´-`)
2006/02/08(水) 20:18:27ID:P4sEb9USttp://gamdev.org/up/img/4598.png
まだ超えなきゃいけない壁は高いのですが、だんだん動くめどが立ってきたかも。
こういうのはノウハウ持って無いので時間かかりまくりんぐ。
ご想像の通りソースがアレでナニなのですが、
汎用性とか見易さは動かしたあとで考えようかと。
>>ポチ
ポチいる〜?
企画書の段階だとカードは大きく分けて4つ
[ 戦闘、装備、道具、特殊(イベント) ]
細かく分けると
[ 攻撃(物理と魔法)、防御(物理と魔法) ]
[ 武器、防具 ]
[ 道具 ]
[ 特殊 ]
の六つになりそうなんだけど、これでいいかな?
で、カードにはレベルがあるものがあると。(1〜4ぐらいまで?)
カードの属性なんかもあるのかな?
たとえば物理系だと [ 斬、突、打 ] 魔法だと [ 火、水、雷 ] とか。
あと、キャラのステータスはどうしよっか。
HP以外に [ 力、精神、速さ ] ぐらいはあるん?
ゆっくりでいいので、回答よろ m(__)m
0259ポチ
2006/02/09(木) 02:11:29ID:v4Xl0cfPカードについては
そんなかんじですワン。
キャラに関してはまったく考えてなかった。
ボードゲームのように単純に駒の役割だと思ってます。
ところで
コッソリと戦闘というかカード対戦の部分を作っていたんだけど
作れば作るほど、たいして面白くない事が判明(ぁ
やはしSRPG的なシステムでこそ意味のあるカード風バトルなのかも…。
いまさらなんですけど
今作ってるマップやシステム部分を変更せずに
カードゲームの部分を一から設計し直してもいいですかね?(´・ω・`)
だめ?w
0260じいちゃん@携帯
2006/02/09(木) 02:32:32ID:8u5h7Zy4設計に関してはまだまだバリバリ変更きくよん。
てゆか、まだ一つも固まってない(^^ゞ
じいちゃんこの一ヶ月はいい経験になったから、これまでの全部破棄してゼロベースから考えてもらってかまいませんよん。
ただ集団で作るのが目的ってゆか、テーマだから、あんまアクション性の高いのはやめてねー。
それ以外は自由に考えてくださいな。
■ このスレッドは過去ログ倉庫に格納されています