月別アーカイブ: 2010年12月

冬コミお疲れ様でした

冬コミサークル参加してきました。

3時間ほどの睡眠で会場へ。締め切り15分前に何とか入場できました。ただギリギリで準備してきたんで、ポスター立てるのとか台とか持ってくるの忘れてしまい、しょぼいディスプレイに。

会場ではお隣りのサークルさんと会話しつつのんびり店番してました。体験版だったにも関わらず、手に取ってくれた皆様ありがとうございました。来てくれた人達と会話できたり、「前回来たとき売り切れだったんですよ」と言って来てくれた人もいて嬉しかったです。

午後から友人に店番頼んで、同人ソフトの島を巡ってきました。みんなレベル高いね。正直実力差にかなり危機感をもってしまった。年々コミケ全体のレベルが上がってる気がするし、俺も置いてかれないようクォリティーアップさせてかないと。

あとプレイ動画流してるサークル多かった。もしかして半数くらいやってたんじゃなかろうか。やっぱり動いてるの見ないとゲーム内容わかんないもんなぁ。俺も今回作ろうと思ったんだけど、時間なくて諦めてしまった。近日中にサイトにはプレイ動画上げます。

そんな感じで反省の多いコミケでしたが、また次回に向けて頑張ります。

同人ソフト・緋袴きりり・体験版2010

明日のコミケ(C79 3日目 東マ-31b)で出す作品です。結局未完成の体験版となってしまいました。

現時点での概要としては、横スクロールアクションゲームでステージ数2、ボス1体、残機・コンティニュー無しです。やられたら即タイトル画面に戻るんで、バランス悪いかも…

まだ準備整ってませんが、朝までには何とか。そんな感じですが、気が向いたらお越し下さい。

コタツ復活

寒くなってきたのでコタツにしようと思ったら、ヒーター部分に物凄くホコリが溜まってました。しかもホコリが焦げてる…よく火事にならなかったな。

ベランダでちまちまとホコリを取ってたのですが、焦げたホコリはこびり付いてるし、バラしてもファンの駆動部分のホコリが取れない。このまま使い続けるのに不安があったので、捨てることにしました。

でも調べてみたらヒーター部分だけで売ってるみたいだったので、試しにそれを買ってみる。メトロ 取り替え用コタツヒーター MSF-500H(K)です。組んでみるとサイズもネジ穴もピッタリ。素晴らしい。

そんな訳で、取り換えだけで何とかなりました。粗大ごみとして処分するのも面倒だし、良かったです。

ついでにコタツの足が短いのでこたつの高さを上げる足 ブラウン AKO-04とかを買ってみようかな。

こんな風にカスタムパーツがあると楽しいね。

スポーツクラブ16

またスポーツクラブに通うことにしました。なんか周りの人に「太った?」と言われるので。しばらく来てなかったので、器具の配置が変わってたり、マシンが新しくなってたりしてました。

まず最初にバイクをやります。しかし5分やっただけでもう息が上がってきたり。隣りのオバサンなんて雑誌読みながら悠々とやってるというのに。こりゃかなりの運動不足だな。

まあ何とか一通りの器具をやって、ランニングマシンでも少し走りました。かなりグッタリ。まず間違い無く明日は筋肉痛だな。

まぁしかし頑張って続けよう。

ゲームコーディング・コンプリート読了

gamecodingcompleteゲームコーディング・コンプリート 一流になるためのゲームプログラミングを読み終わりました。ウルティマシリーズの開発者が書いた本です。この本は図や表がほとんど無く、文字とソースコードのみなので、読むのに結構苦労しました。理解出来ないところも多々あったり…ちなみに800ページ以上あります。

しかし現場の人が書いた本は有益ですね。実戦的なのは勿論、失敗談や他のプログラマの話とかが書かれたコラムが面白い。

以下自分用メモとして思った事などを…

第2章
ゲームアーキテクチャですが、本書ではアプリケーションレイヤー、ゲームロジック、ゲームビューの3つに分けてました。俺は勝手に基底部分なんて呼んでたけど、アプリケーションレイヤーの方がかっこいいねw

第3章
スマートポインタとかSTLとかの説明があるんだけど、そういえば全然使いこなしてないな…そのうちちゃんと勉強しよう。

第10章
「本書の中で、この第10章が最も重要かもしれない」と書かれたゲームのイベント管理。イベントデータの引き回し面倒だなぁと思ってたんで、この章の考え方は参考になりました。イベントデータを持ち歩くんじゃなくて、イベントマネージャに管理させるという方法。確かにこうしないと大規模なゲーム作るの無理だわ。

第11章
Luaを使ったスクリプティング。自作スクリプトでキャラクタの挙動とかを操るのは知ってたけど、今は既存のスクリプト言語を組み込むんだね。

第15章
物理シミュレーションSDKのBulletを統合する方法。Bulletはオープンソースだから、いつか自作ゲームにも組み込んでみよう。

第17章
ゲームAI。3Dゲームもフィールドを線分で構成して経路探索やってるんだね。A*(スター)とか昔やった気がする。自作ゲームにも、もう少しましな思考ルーチン入れないとなぁ。

第20章
C#によるゲームエディタ。C#はGUI作るの簡単そうだな。これもそのうち触ってみよう。

第21章
ゲームのデバッグ。絶対音感を持ったプログラマのデバッグの話は面白かった。

第22章
海外のゲーム会社は時間的に余裕があって、豊富なリソース使って優雅にゲーム作ってるんだろうなぁと思ったけど、そうでもないらしい。1日18時間作業とか、スタッフがごっそり抜けて新会社設立など、日本でも聞いたような話があったり。

3Dの章とかは流し読みしただけだし、他にも理解できなかった箇所とかあるんで、そのうちまた読み返そう。

ゲーム開発37:フェードイン・フェードアウト

友人に更新が少ないって言われた>挨拶
---

画面切り替え時のフェードイン・フェードアウトを作成しました。これまでもあったんだけど、CGraphicsクラスに入れて全ゲームモードで使い回せるようにしました。

フェードのやり方は色々あると思うけど、俺は一番手前に画面全体を覆う白いスプライトを用意して、それの透過値を変えることで実現してます。

いちいち初期化するのも面倒なので、FadeMove()を呼んだらその中で初期化もループ動作も行ってます。例によって即値が入ってたり、無駄な処理があっても気にしない。

絵を描いたりボスキャラ組んだり、まだやることはたくさんあるな。

//—————————————————————————–
enum {
 FADE_IN,
 FADE_OUT,
 FADE_BLACK,
 FADE_WHITE
};

struct Fade {
 float cnt;  // 移動量
 float now;  // 現在の値
 int  color;  // 色
 int  spr_no;  // スプライトNo
 BOOL complete; // 完了フラグ
};

//—————————————————————————–
// フェード動作
// in_out:フェードインかフェードアウトか
// minutes:フェードする秒数
// color:切り替わる色
BOOL CGraphics::FadeMove(int in_out, float minutes, int color)
{
 RECT workRect;

 // 初期化
 if (fade.spr_no==-1) {
  // フェード用画像登録
  SetRect(&workRect, 0, 0, 47, 47);
  fade.spr_no=CreateSprite("data\graph\status.png", workRect);
  fade.now=1.0f;
  fade.complete=TRUE;
 }

 if (fade.complete) {
  // フェード開始
  if (in_out==FADE_OUT) {
   fade.cnt=1.0f/((float)minutes*60.0f);
   fade.now=0.0f;
  }
  else {
   fade.cnt=-1*(1.0f/((float)minutes*60.0f));
   fade.now=1.0f;
  }
  fade.color=color;
  fade.complete=FALSE;
 }
 else {
  // フェード中
  fade.now+=fade.cnt;
  if (fade.now>=1.0f && fade.cnt>0) {
   fade.now=1.0f;
   fade.complete=TRUE;
  }
  if (fade.now<=0.0f && fade.cntFadeMove(FADE_IN, 0.8f, FADE_WHITE)) {
 // フェード完了後の処理
 ………
}
// みたいにして置いておく