2007-03


戻る

2007-03-05T00:00:00 (Mon)

毎週金曜日は金糸雀の日!バーロー今日は月曜日だよ!

ごきげんよう.“か”です.ここんとこ花粉でマジ参ってます.精神状態があまりよろしくないです orz 日記更新してなくてごめんなさい(まぁ見てる人あんまり居ないと思うけどねー!).

そんなわけで,製作は順調に停滞中です.いつものことですが(ぉ

とりあえずプロフィールのところにメールアドレスを晒してみたんですがやはり何も届く気配がありません.そりゃそうだろ.

閲覧者からの反応が日記を書く原動力になるということは多々あるので,おなじみ web 拍手を設置したいと思います.ていうか設置しました.ポチッと押してくれると嬉しいです.メッセージも添えて送ってくれると悶絶します.

2007-03-06T00:00:00 (Tue)

金糸雀ランド製作進捗状況

しりとり・神経衰弱のときに使うパネルを管理する仕組みを作りました.しかし,画像がない + しりとり・神経衰弱でバトルする仕組みが未完成という状況なので,正しく作れたのかどうか確認する術がありません.いと恐ろしや,幾日か後のビルド作業.

あとステージのアクションに関する部分で,環境に依存するバグを発見 orz
マップチップとの当たり判定がかなーり複雑なことをしてるせいか,ohrin PC では再現せず,マイ PC では確実に再現するというバグです.具体的に何が起こるのかは面倒なので書きませんが,要するに環境依存のバグです.プログラム経験のある方ならコイツの性質の悪さはお分かりいただけるかと.
自分のマシンでは確実に再現するのでアルゴリズムのミスだとばかり思っていたのですが,先日 ohrin の PC で動かしてみてあらビックリ(・・; というわけです.

あっちもこっちも難航してます.私はソース修正に奔走してます.そして絵を描く気が起こらなくて絶望してます.

2007-03-06T00:00:01 (Tue)

拍手レス(05日)

23時
>ぃょぅ!華麗に俺様参上!!!がんがれよ〜by○○くん(リアルネームのため伏せ)
ありがとうありがとう!君が拍手送信者第一号だよ!がんがるよ〜.

2007-03-09T00:00:00 (Fri)

結構ダラダラしてました

この数日間は結構のんびりとしていました.とりあえず,オーベルテューレのDVDを買った辺りでおかしくなった気がします.ベッドの脇にノートPCを置いて寝そべりながらアレコレ出来るという環境をマイルームに構築してしまった辺り何か変でした.今朝撤去しましたがね.

てことで進捗状況は芳しくないです orz やっぱり素材が欲しいなぁ… 自分で用意するしかないというのが面倒くさすぎる.しかしそれは今回自分で望んだことなので諦めます.

2007-03-09T00:00:01 (Fri)

ゲームパッド

最近オープンしたばかりの家電量販店に昨日視察がてら行ってきたわけなんですが,そこでゲームパッドを一つ購入しました.ELECOM の SFC 風コントローラです.以前他の店で見かけたときに,なんとなく欲しいなぁ,でも地雷臭が漂ってるなぁ,なんて考えていたモノだったんですが,所詮1280円だったので地雷でもいいやと思って購入しました.

結果,やはり地雷でした orz ボタンの連打に追従しません.5連打につき1回分くらい,信号が送られません.チョン避けが重要な昨今の STG において致命的です.

どうして ELECOM ってこう中途半端なのかねぇ(^^; 何年か前に買ったこれとは違うパッドも,こんな感じで不具合がありました.シェアは広いだろうから,あとは高クオリティさえ実現してしまえば周辺機器業界の TOP に易々と立てそうな気がするんですが.それとも SONY 純正の PS コントローラがクオリティ高すぎるだけ?

2007-03-10T00:00:00 (Sat)

製作の進行状況

いつまで経ってもスクリーンショットをアップできなくて申し訳ないです.
まだまだ見せるわけにはいかないような出来ですのでどうかその辺りご勘弁を orz

とりあえず数字探しだけでも対戦出来るようにしてみようかと思ってプログラムやってたら,これが思った以上にハードでした.あんなゲーム一つとってもそこそこのコーディング量とフローチャートが必要でした.やっぱり見積もりが甘かったなぁと痛感しています.

ちなみに現在ソースファイルは .cpp .h あわせて60ほど.行数の総数は約4600(空行も含む)でした.間違いなく今までの人生で最大規模です.そしてこれの2倍以上には間違いなく増えます.ですがフォルダ分けが思った以上にきちんと出来てたのでまだ結構管理しやすいです.各ソースファイルの行数も200行を超えない程度です.たまに超えているのがあるのは,開発初期に作っていたブツ(^^; あ,ソースの行数を抑えるのは Visual Studio を使ってない人にとっては超重要問題なんですよw ブロックを閉じたり開いたり出来る機能がついたあのエディタはまったくもって羨ましい限りですw

明日中には数字探しの対戦がゲームとして出来るようにしてやろうと思っているわけですが,はてさて…

2007-03-10T00:00:01 (Sat)

新携帯買いました


ドコモの FOMA D903i です.カラーはオータムゴールド.
どうしてこの色にしたのかって,それはもちろん金糸雀んゴールドだからです.メニュー画面のカラーデザインなんかも黄色を基調としたものに変更しまくりました.あとは頑張ってピチカート日和とかを取り込めば完璧ですね Σd(・ω・)

2007-03-11T00:00:00 (Sun)

プログラムメモ その1

GoF デザインパターンの一つに,シングルトンパターンというのがあります.これは理解も習得も比較的容易なので使っている人も多いのではないでしょうか.かく言う自分も,これを覚えてからゲームプログラムのあちこちにこのパターンを使っています.

とりあえず習得に関してはこのページでも読めば分かるでしょう.しかし,このサンプルにはまだ欠陥が残っています.

その欠陥について記載された web ページを忘れてしまったことが残念でならないのですが,答えは「コピーコンストラクタが public なままであること」です.

つまり,

SingletonClass &sc = SingletonClass::getInstance();
SingletonClass sc2(sc); //コピーコンストラクタが呼べる.ここで2つ目のインスタンス sc2 が生成されてしまう.

これでコンパイルが通ってしまい,インスタンスが2つ生成されるのです.

これを解決するためには,Class の定義部分に

private:
 SingletonClass();
 SingletonClass(const SingletonClass &obj); //この1行を追加する

としてやればOKです.デフォルトのコピーコンストラクタもきちんと private にしてしまう,と.
しかしこれは見落とすわ… またこの記述があったページを思い出せたら(再び辿り着けたら)紹介します.

2007-03-11T00:00:01 (Sun)

プログラムメモ その2

シングルトンパターンで作ったクラスは,コンストラクタが main 関数以前に呼ばれるために,コンストラクタ内に複雑なコードを書きたくありません.よって自前の初期化・終了処理用メンバ関数を用意します.Start() End() とか,Create() Destroy() とか.自分は Init() End() としています.

ここで単純な多重 delete 防止機能を作りましょう.
まず,メンバ変数に bool InitWasCalled という変数を定義.コンストラクタでこれを false に設定します.
そして,Init() End() をそれぞれ

void SingletonClass::Init()
{
 if (!InitWasCalled) {
  //初期化処理
  InitWasCalled = true;
 }
}
void SingletonClass::End()
{
 if (InitWasCalled) {
  //終了処理
  InitWasCalled = false;
 }
}
とします.これで,何度 Init() End() を呼んでも安心です.必ず1回の初期化に1回の終了が対応します.いやまぁ,それだけ(^^; あんまり大したことじゃないけどw

2007-03-11T00:00:02 (Sun)

気になること

Init (Initialize) の反対は本当に End でいいんだろうか?ちょっと気になるので誰か教えてちょうだい(他力本願

2007-03-14T00:00:00 (Wed)

そろそろ三月の半分が過ぎるな…

思えばこれまたろくに作業が進んでない月だ orz このまま気付けば春休みが終わってるんだろうな.
これが私の本性です.え?知ってるって?
でも今週はそれに加えて,色々と行事があった(まだ予定もある)もんで,更に進まなさそうです.あとネタに詰まってるってのもあるし…

システムの開発にこれじゃあ,ステージの作成が思いやられるのぅ.予定では3つの難易度でそれぞれ20ステージ以上,最難レベルで更にプラス5ステージくらいという,実に無謀というか,「それは計画じゃない,妄想だ (・ω・)」と言われても何も言い返せないそんなプランが練られています.5割の確率で無理なのは最初から承知の上です.まぁ,4月のスパート次第だな…

2007-03-14T00:00:01 (Wed)

拍手レス(14日)

7時
>うっかり汽車に乗れず2時間待ちの刑です。本当に(ry
送信者が名乗ってませんが,多分 TAKKON でしょう.まぁ安く帰れるんだからいいでないの (ノ∀`)
本州に入りさえすれば後は楽ですよ.

2007-03-18T00:00:00 (Sun)

いい加減にしたい

毎フレーム,パッド or キーボードの入力を取得して,カーソルを動かしたり決定・キャンセル処理を行ったりする…
この方針に間違いはないはず.で,それを単純に

if (左方向の入力があった) {
 カーソルを左に動かす;
}

と,毎フレームの処理のところに書くと悲惨なことが起こりますね.60FPSのゲームだと間違いなくカーソルは3マス以上動きます.
てことで,静的な変数 int PushedTimer を用意して,

//初期化部分
PushedTimer = 0;

//カーソル移動処理部分
if (PushedTimer == 0) {
 if (左方向の入力があった) {
  カーソルを左に動かす;
  PushedTimer = 8; //適当な連射抑制の時間を代入
 }
}
else {
 PushedTimer--;
}

しかしこれではダメな場合というのもあります.押しっぱなしによる連続動作を無効にしたい場合です.
この場合は bool Pushed という静的な変数を用意して,

//初期化部分
Pushed = false;

//カーソル移動処理部分
if (!Pushed) {
 if (左方向の入力があった) {
  カーソルを左に動かす;
  Pushed = true;
 }
}
else {
 if (左方向の入力がなかった) Pushed = false;
}

これでカーソルは一回のプレスによって一回動きます.

この二つを組み合わせたいとき,つまり連打すれば押した回数分だけカーソルは動かせるが,押しっぱなしでもカーソルを動かし続けたいとき.
最初の例に

//初期化部分
PushedTimer = 0;

//カーソル移動処理部分
if (PushedTimer == 0) {
 if (左方向の入力があった) {
  カーソルを左に動かす;
  PushedTimer = 8; //適当な連射抑制の時間を代入
 }
}
else {
 //以下の様に変更
 if (左方向の入力がなかった) PushedTimer = 0;
 else PushedTimer--;

}

で,これを見れば分かることなんですけど,「結構行数が多い」んですよね.

こんなのを至るところで書きます.カーソルの移動なら,これが上下左右それぞれにあって,そして優先順位があります.その場合は以下のように書き換えます.

//初期化部分
PushedTimerL = 0;
PushedTimerR = 0; //L, R の二つを用意する

//カーソル移動処理部分
if (左方向の入力があった && 右方向の入力がなかった) {
 if (PushedTimerL == 0) {
  カーソルを左に動かす;
  PushedTimerL = 8;
 }
 else {
  PushedTimerL--;
 }
}
else if (左方向の入力がなかった) {
 PushedTimerL = 0;
}
if (右方向の入力があった) {
 if (PushedTimerR == 0) {
  カーソルを右に動かす;
  PushedTimerR = 8;
 }
 else {
  PushedTimerR--;
 }
}
else {
 PushedTimerR = 0;
}

これで右方向の入力が優先されます.

…なんていうか,めちゃくちゃ面倒臭いんですよね!そしてどうにも例外的な処理に対する記述ばかりしている気がするんですよね.一般的でないというか,スマートでないというか.

だからどうにもルーチンに分けられない.オブジェクトに分けられない.
そんなわけで,パッド等からの入力が絡む処理の部分は,毎回こんなのを書いているため壮絶なソースコードが生み出されております… (-_-;) そりゃもう壮絶.動いてるんだけど,こういう頭悪いコードは一番許せないタイプです.

…時が解決してくれるのを信じて待ち,今はひたすらにこれを書いて書いて書き抜くのみ…

2007-03-22T00:00:00 (Thu)

ご無沙汰です

“か”です.三月中にゲーム紹介のページを作るとか言っておいてまだ公開できるレベルのスクリーンショットが撮れる段階ではありません.後悔できるスクリーンショットなら何枚でも撮れますがね.
…誰が上手いこと言えと… …あんまり上手くないし orz

数字探しがやっと出来るようになりました.メッセージウィンドウを作りたいです.作りたいです… 作れないです orz 頭が弱いから…
どうやら俺たちは,カナリーややこしい(※ゲームプログラミング初心者にとってのレベル)ゲームを作ろうとしていたみたいだ…

2007-03-22T00:00:01 (Thu)

ゲベートガルテン

ローゼンメイデンゲベートガルテン(※音が出ます)(タイトー
買いました (´・ω・`)
買いました \(^o^)/
…察して下さい orz

あの製作スタッフたちにはこのゲームを踏み台に頑張って行って欲しいです.

2007-03-25T00:00:00 (Sun)

メッセージウィンドウ

久しぶりにプログラムで徹夜しました.あぁ,お腹空いた…
んで,きっとメッセージウィンドウが出来ました.結構長いこと(ほんと何日も)思い悩んでたんで,結果としては複雑なコードが出来るんだろうなと思ったら意外にコンパクトに収まりました(クラス2個).やっぱりコンテナは使うもんだね.あと do while ループなんてのを久しぶりに使ったりも.
このあとすぐにテストしたいです.どうせ不備が見つかって,正常に動かせるようになるまでにのに今日一日費やすだろうから orz

ところで,現在製作自体は1ヶ月遅れてるんですよねw はい,どう見ても計画が甘かった.自分の性格を把握しきれてなかった.どこの馬鹿だよ,2月中にプログラム打ち切りとか言ってた奴は.ドッキドキワックワクの修羅場は恐らく4月の中ごろから.乞うご期待!

2007-03-30T00:00:00 (Fri)

ボスバトルが徐々に完成中

相変わらずグラフィックがショボイ…というか間に合わせのモノばかりですが,メッセージウィンドウの完成に影響されてボスバトルがじわじわと出来上がっております.春休み中にこいつらを完成させます.んで学校が始まったらステージとグラフィックの同時進行というプランで進めます.今はただ,全国の金糸雀ファンに申し訳のないような作品にはしたくないという気持ちで製作しています.

しかしゲームの華とも言えるグラフィックがどれ一つとしてまともに完成していない現状はどうにかしなきゃなぁ… それさえ出来てればスクリーンショットの公開にも踏み切れるんだけど…

2007-03-30T00:00:01 (Fri)

第二回漫画最萌トーナメント

まとめサイト
ちょっと話題が遅れましたが,第二回漫画最萌トーナメントで金糸雀が優勝しました.金糸雀の可愛さが広く認められたというよりは,ローゼンメイデンというタイトルの大きさを改めて思い知った,という感じですね.翠星会・水銀党の票が完全に無ければ準決勝すら危うかったのでは?と思います.というか準々決勝で翠星石に勝ったのが一番の謎ですw

まぁ何はともあれ,ローゼン一の不人気・いらない子と言われ続け,辛酸を舐め続けてきた我らが金糸雀,そしてピチカー党がついに勝ったのです.金糸雀スキーとしては嬉しい限りです.
おめでとう!カナ!


戻る