2010年2月28日日曜日

「いめーじぺたぺた」v1.03


いめーじぺたぺた ver1.03
http://cid-8cd7cf5ea9fbca55.skydrive.live.com/self.aspx/Public/program/imgPt103.zip

size: 1MB
 
 おもにバグフィックスです。
試験的にVectorでの説明文を派手にしてみました。
説明のしかたでダウンロード数が変化するのかどうか。今のところDLは13件だそうですが。
反映されるまでしばらくかかるようです。
Vectorでのリンク
 
 
■更新履歴
2010-02-28 ver1.03
  ファイルリストから貼り付けたとき、
    「サイズを自動拡張する」チェックが入っていると、アンドゥバッファを最大に使用するミスを修正
  D&Dで貼り付けたとき「サイズを自動拡張する」チェックが入っていると、アンドゥバッファを最大に使用するミスを修正
  ファイルリストにファイルがないときにドラッグするとリストがおかしくなるのを修正
  ファイルリストの「リストの選択を移動する」動作時に、リストの最後までいくとリスト選択状態を解除するよう修正
  ファイルリストに横スクロールバーを640ピクセルで作成。文字サイズの取得の仕方がわからん;;。
  グリッドサイズに256x256と512x512を追加
2010-02-08
  「サイズを自動拡張する」のときに範囲外に貼り付けてもスクロールバーが更新されていないのを修正
  選択範囲を右に1ドット、下に1ドット広く表示するよう修正
  ファイル保存のときの種類選択を記憶するよう修正
2010-01-28 ver1.02
  「サイズを自動拡張する」の拡張サイズ計算が間違っていたのを修正
  グリッド位置の動作仕様を変更
    ファイルリストの「選択範囲を動かす」の動作を仕様変更にあわせて修正
2010-01-27 ver1.01
  色数カウント機能を追加
  バックバッファが終了時にメモリリークしていたのを修正
2010-01-03 ver1.0

日記ちやん


 届いたー。
お金無い割りに買うものは買う。これは怒られてもしょうがない。
祭りのときは混雑しすぎでPCからアクセスできるようになるまで1時間半ぐらいかかったが、携帯からいくと余裕という情報を見かけた。参考になるかならないか。
 トラック15がSecret曲で、ヒバチ戦とは別の発狂系の曲が存在してる。ウェェェィのアレンジ曲。
これはまだヒバチ以外の隠しBOSSがいたりするっつーことかしら。ループ超短いから使われてるかどうか怪しいところ。
 虫姫さまふたりもBLが出る前に発売されたサントラで、Secretとついたスピリチュアルラーサ曲があったし、今回もサントラのおまけ要素的なものだったりするのかもしれない。
(スピラーサは確かBL用ボスで、1.5ではスピではなく太いのが発狂するだけだった覚え。そのとき曲も通常ボス曲)
 大復活BLのサントラはすぐ出たが、デススマⅡのサントラは出ない。
XBOX版も発売決定みたいだから、その影響かな?
 

 誘導レーザーの実装。
「-」の形をした8x8で1色のものを32パターンに回転させてべたべた貼り付けるだけでも、
なかなかぐんにょりした見た目になることに驚いた。
PDのときは斜めレーザー? 無理無理だなんて思ってたけどやってみれば出来ちゃうね。
 1色だから変にならないんだろうけど、複数色使う場合は先端と終端に気をつけないと変な感じになりそうな気がする。
 敵グラで砲台を作ってみたが、土台と砲台に同じ配色をしてるから埋もれちゃって砲台に見えない問題が発生中。グラフィック関係はさっぱりだ。
 
 
 ホットケーキを焼くのは時間かかるのでレンジでチンしてパンケーキ風にして食べた。
所要時間5分。

2010年2月27日土曜日

にっきちゃ

 バックバッファをためしに32bitDIBから24bitDIBに変更してみたらかえって遅くなった。
当社比8倍ぐらいか遅くなった。
やっぱ1Byteずつ読み書きすんのはダメだ。
使うメモリ量が減るからいいかな、とか思ってやってみたが腹立たしいまでに緩慢である。
これと接触判定関係をいじくってたら一日が終わった。圧倒的なスパゲティコードの前に力尽きた。END。
 
 複数の接触判定を持つクラスを作るのだけどnewとかallocとか使いたくない!
ってことで

template < int NUM >
class Collisions
{
public:
  RECT rect[ NUM ];
 
  bool checkCollision( const Collisions& col ) const
  {
    /*判定処理省略*/
  }
};

 としてtemplateで配列要素数を指定する。
 使うときは、たとえば

template <int NUM, int NUM2 >
bool checkCollision( const Collisions<NUM>& colA, const Collisions<NUM2>& colB )
{
  /*判定処理省略*/
}
 
int main()
{
  Collisions<2> a, b;
/* パラメータ設定とか。省略 */
  const bool isHit = checkCollision( a, b );
  std::printf( isHit ? "true" : "false" );
  return 0;
}

 みたいなことをまず思いついたんだけどこれだと仮想関数の引数に使用できない問題が発覚。

class EnemyBase
{
public:
  template < int NUM >
  virtual bool isHit( Collisions<NUM> col ) = 0;
};

 ごらんの有様だよ! templateと仮想関数はあわせて使えないようで。
結局普通に基底つくってごまかした。
クラスの名前をどうするかが一番悩んだ。後ろにBaseってつければいいと思ってる。

class CollisionsBase
{
public:
  virtual bool checkCollision( const CollisionsBase& ) const = 0;
  virtual int getNum() const = 0;
};
 
 
template < int NUM >
class Collisions : public CollisionsBase
{
public:
  bool checkCollision( const CollisionsBase& col ) const
  {
    for (int i=0; i<col.getNum(); ++i) /*判定処理省略*/
  }
 
  int getNum() const { return NUM; }
};
 
 
class EnemyBase
{
public:
// template<int NUM>をかかずにすむ
  bool isHit( const CollisionsBase& ) = 0;
};

 Cライクにポインタと要素数を渡すといったシンプルな考えが、完成して動くまでぜんぜん思い浮かばなかったんだ……。

2010年2月25日木曜日

日記ち

 エスプⅡ発売!
niconicoにあがってるのはとりあえず
 
エスプガルーダⅡブラックレーベル アレンジモード(1/4)
http://www.nicovideo.jp/watch/sm9828422

 
雑魚シューターだけどガルーダII BLに挑戦してみた。(ノービスセセリ/1/4)
http://www.nicovideo.jp/watch/sm9829099

 
の2件を確認。以下ぱっと見の仕様。
 ノービスはふたりと似たような仕様の様子で、敵弾がかなり薄くなってる。
オートボム、ボムアイテムでゲージ全快、ボムが5回ぐらい打てそうなのが設定なのかノービスだからなのかは不明だけど、オリジナルのほうが結構難しいからこれでも丁度よさそうな感じがする。
 
 セセリの仕様は、通常状態で弾消し、覚醒すると打ち返しが発生。
上のゲージはコンボゲージだそうで、ゲージがある状態で弾を消すと倍率維持するみたいな。
自機の真上にきた弾は速度がガクッと落ちる。真横から来た玉はそのまま。
弾の速度を落としている間は右下のゲージを消費、金塊をとることで回復する。
 
 アレンジはショットで青、レーザーで赤の弾を消せる上に、消すとクロレッツが出てくる。近距離回収不可。
クロレッツは1000まで溜められるようだ。
覚醒すると弾の色が濃くなるがよくわからん。とりあえずかっこいい。
赤走行時は(おそらく金塊があれば)弾をすべて消せる。
ショットとレーザーを切り替えるとクロレッツが少し減少する様子。
 
 モードに関係ないだろうが、画面外のフレーム部分にコントローラが描画されてるのが個人的におもしろいと感じた。
割と普通の機能ではあるが、なかなかフレームにどうでもいいものを描画する勇気は持てないから、思い切ってるなあって。
レバーがちゃがちゃやってるのが映ってると格ゲーのピヨリ復帰を思い出しちゃう。
 
 
 図書館が今日から再開だと思っていったら、今日まで休みだった。
The 無駄足。
 帰りに生クリームを買った。
あしたホイップクリームを作ろうと思うが、泡だて器でかしゃかしゃするのは正直しんどいので、ペットボトルに入れてシェイクして作ろうと思う。
ペットボトルで作ったことのある人がいないかと調べてみたら結構いた。
混ぜすぎるとバターみたいなのが出来るらしいが、それはそれで楽しみ。
 せっかくなのでクレープ生地を作って一緒に食べた。卵と牛乳をばりばり使うのね。
卵、牛乳、砂糖を使うあたり、クレープ、カスタード、フレンチトーストは親戚なんじゃないかな。

2010年2月24日水曜日

日記ちゃん

 複数個の当たり判定を管理するクラスをtemplateとかで作ったので得意げにブログに書こうかと思ったが、
よくよく考えるとかなり粗いのでもうちょっと練ってからとか考えたところ、
別に問題ないような気がしてきて、でもやっぱりなんか変だなとか、いますごい混乱してます。
もう寝ろ。
今日一日判定関係のプログラムを書いてました。
これじゃあマジでただの日記。
 
 マウスの右クリックとホイールがいかれてたので新しいのかった。
まったく同じやつをかったのだけど、以前買ったときより1500円ほど値下がりしてた。
ドライバDISCと取説が2つずつあるのを見ると悲しい気持ちになった。
前のほうの無線レシーバは壊れてないので接触不良とかに対応できそう。
ちなみにお店のポイントで買ったので出費0円。やっほーぅ。
 
 ホットケーキにチョコチップを入れて焼いてみたが、作るだけでおなか一杯になったので明日食べる。楽しみ。
 
 お昼ごはんをお外で食べた際、炒飯を食べたのだけど、自分が作るのと比べてすごい油分が多くて吃驚した。
その割りにそんなにくどくない。卵焦げてない。
ここ2ヶ月ほどほぼ毎日炒飯作ってるから結構うまくなった気がしてたが、別にそんなことはなかった。
明日もチャーハン作るよ!!

2010年2月23日火曜日

youtube disco

YouTube - Music Discovery Project
http://www.youtube.com/disco


 おー、これはいいね。作業用にぴったりだ。
検索したアーティスト関連のBGMを連続再生してくれるというもの。
ぜんっぜん知らない曲が山ほどあるとは心が躍る。
 
 いちいち検索しないといけないのが面倒といえば面倒だね。
ランダムで追加してくれたりしないかしら。
niconicoもJ-POPを回避して適当な作業用BGMを探そうとすると結構骨が折れるし、なかなか都合よくいかないもんだ。

2010年2月18日木曜日

日記ちゃんっ


http://cid-8cd7cf5ea9fbca55.skydrive.live.com/self.aspx/Public/program/test100218.zip
128KB
 タイトル的なものはあるが、startしか実装してない。
 
 背景関係をちょいちょいといじってみてたが、3D処理がもうさっぱり。
ワールド座標にカメラとかオブジェクト置いて、それからスクリーン座標に計算して描画するもんっぽい。
なんつーか、とりあえずおいてみて実行したら、わー映った! みたいな感じですっきりしない。
要勉強ってことで図書館行こうと思ったら、今日から1週間整理のために休館とか。
出鼻をくじかれた!
 3Dでちゃんと3Dっぽく見せるのがまた難しくて、とりあえずおいただけではぜんっぜん綺麗に見えないのでかなり工夫だかが必要になるみたい。ここら辺は良く分からんが、思ってるより難儀しそう。
雪を沢山降らせて立体的に見せようと思ってたのだけど、うまくいかないし、処理が思ってる以上に食うしで、どうしたもんか。
 こんな解像度低いのに浮動小数点使うとか馬鹿なんじゃないのと思った。ためしに整数にしてみよう。
 
 まったく関係ないけど耳コピするときイコライザで聞き取りたい音域を強調するとずいぶん楽になることに気が付いた。今日から君も耳コピマスターだ。
 ベースを聞き取ろうとしたらバスが混じっちゃってどうにもならんね。マスターへの道、断念!

2010年2月17日水曜日

日記ちゃん

 文字列をファイルに書き込む際にうっかり

LPCTSTR str = TEXT("hello");
WriteFile( hFile, str, lstrlen(str), &writeSize, NULL );

みたいなことをやっちゃって、うげー! ってなった。
しかも間違えてたのがパックファイルの部分だったからファイル情報を正しく読めなくなって大暴走。
 
 正しくは

LPCTSTR str = TEXT("hello");
WriteFile( hFile, str, lstrlen(str)*sizeof(*str), &writeSize, NULL );

がおおよそ正しい。
今まで作ったプログラムはUNICODEではないものが多かったのでぜんぜん気が付かなかった。
 
 この文字列をファイルから読むときは1文字分多くメモリを確保しないと'\0'分がないので注意。
でもここはしっかり対策されてたんだから、プログラムはどこでひっかかるか分からんね。
 
 さすがにUnicodeで生成したパックファイルをUnicodeではないプログラムで読むと暴走するのはどうかと思うので、適当にチェックサムでも仕込むことにした。
あんまり根本の解決になってない気もする。
パックファイルはUnicodeで決めうちするとかのほうがまだ安全かなぁ。
 

 そんなこんなで昔作ったこれを再利用してチェックサム使用のパックファイルエディタをちゃちゃっと作成。
チェックサムには、ファイル名の長さ+ファイルサイズ+ファイルデータの書き込み位置をまんま使ったが、意外に正常に動作している。
 当時はタブキーで選択移動が出来なくて何でだろうと思っていたが、IsDialogMessageを忘れていただけだったみたいな。うっかりさん。
 

2010年2月15日月曜日

日記ちゃんアンカー!

 エグゼリカで敵をつかむために打つ弾のことをアンカーショットというが、
このときの「アンカー」は言葉として正しいのかどうか考えてた。
アンカーとは錨(いかり)のことを指し、Wikipediaの「」いわく、
「爪などが底質に刺さる事で抵抗力(把駐力)を生む物をアンカー」
との事だそうで、この意味では敵を捕まえることに何の関連性も無い。
 
 動詞では「固定する」という意味で、しっくりとはこない。
しかし、「anchor ~ firmly to」で
~を…にしっかりとつなぐ[固定{こてい}する・つなぎとめる]
や、「anchor ~ in time 」で
~を時の流れの中につなぎ止めておく
(ともにスペースアルクを参照)
というのがあるらしく、やはりアンカーで正しいのかもしれない、とか考えてたら今日一日が終了した。
お疲れ様でした。

2010年2月10日水曜日

日記ちゃん

東方椰麟祭
http://tohoyarinsai.web.fc2.com/index.html
 
 2月14日(日)
広島産業会館 西館1階
 
 知らんかったー。場所はいつものところですね。
広島コミケも大概ココです。
 市電に乗らないと遠いです。
そこらへん一帯150円ゾーン(?)ですので150円を準備して乗ってね! 
10~15分に一本ぐらい市電あるよ。
 周辺にほぼ何も無いから遊ぶには県庁のほうに出るが吉。
詳しくは広島オタクマップあたりを参照の事。
って言ってもPCショップと虎とアニメイト、メロブぐらいしかないけど。
50円ゲーセンは去年つぶれた。
 ネカフェは県庁付近と広島駅付近にちょいちょいあるぐらい。
 
 ざっとサークル一覧を見て回ったがゲームは
いーあるめーりん外伝・異聞妖怪山編
MASTER BURNER CLIMAX
だけっぽい。うーんジェラシー。
数でいえば同人誌>グッズ>音楽CD>小説?といった感じ。
iosysがおっきいね。
人が来そうな気もするけど、所詮広島だしなあ、どうだろうか。
 
 
 
 ケーキを焼いたら結構うまく焼けたが、パンがあるのでケーキを食べずにパンを食べる。
ケーキを食べればいいじゃない。いいじゃないじゃない。

2010年2月7日日曜日

日記ちゃん


 なんか下手に小奇麗なグラフィックにするより画面栄えしやすい気がする。
どういう理屈だろうか。
ファミコンみたいな8bit音が耳に付きやすいのと似たような現象かしら。
わからん。デフォルメ効果?

 わかめちゃんの声が変わってて吃驚した。いつからなんだろうか。
エンデバーも明日に延期だそうですよ。すっきりしない日だ。

2010年2月6日土曜日

Lu.



Lu.
http://www.vector.co.jp/soft/winnt/game/se481587.html


 
 さらっと追加してみました。
次回作のネタバレとも言えなくはないんだけど、2,3年の構想を経てさらなるアイデアが、あるようなないような、みせかけてそうでもないような?
 
 ゲームってデータの流用が出来るかと思ってたけど、案外融通が利かないよね。
結局グラフィック関係はほとんど総とっかえになるし、プログラムは使いまわせる部分もあるけど、たいていそらで打てるからコピペのほうが面倒だったり。
爆発グラは割りと使いまわしてるけど、自動生成したものだから作り直してもたいして時間かからないし。
効果音は割りと使いまわしやすいな、そういえば。
もっと製作物を有効に使う技術をつけたほうがいいのかしらん。
 
 newStageに貼り付けられてて恐ろしく吃驚した。

2010年2月4日木曜日

日記ちゃん



http://cid-8cd7cf5ea9fbca55.skydrive.live.com/self.aspx/Public/program/test100204.zip


 計3回のパレットチェンジで複数色可!
をとりあえず実現。困ったことにオブジェクト管理がフルカラーよりも複雑で頭が痛い。
 背景を表に描いた後、パレット変えて敵を描画、またパレット変えて弾とかエフェクトを描画といった感じ。
エフェクトの上に敵を描きたい場合、さらにパレット変えて敵をもう一回描画しなければならずコストが高い。今のところ解像度が低いからたいしたことは無いけどスマートではないよな。
 パレットチェンジが少ないほど負担が小さいが、1度に16色しかつかえないから余りいろいろ描けない、この詰め込み具合が最高に楽しい。
 
 それはそうと今回は背景を明るめ、オブジェクトを暗めな配色にしてみている。
虫姫さまふたりなんかがこんな感じの色分けをしている印象がある。
R-typeの初期のほうとか、グラディウスなんかは背景暗めオブジェクト明るめな気がする。
見やすければどっちでもええがなと思う。
オブジェクトが暗めだと3Dのライト関係の発色が分かりやすくなるんだと思うが、関係あるかな?

2010年2月2日火曜日

日記ちゃん


 爆発エフェクト。
4色だとファミコンチック、透過色に1色使うので表に出るのは3色。
 

 発色弾で生成した爆発画像をPadieで4色に減色後、Edge2で編集。
 Edge2は4bitBitmapに対応しているエディタで割と融通が利くので重宝してる、といって使用歴2週間ぐらいだけど。
 Padieは「減色ツール」で検索かけて一番上にきたのを使った。パラメータをシンプルに調整できるうえ結果もなかなか。
 発色弾は加算合成向きの爆発画像を生成してくれるソフトで、パラメータ初期値でもそれっぽいのを生成してくれるので便利。
 
Vector:発色弾 (Windows95/98/Me / ゲーム)
http://www.vector.co.jp/soft/win95/game/se119747.html

 
Vector:Padie (Windows95/98/Me / 画像&サウンド)
http://www.vector.co.jp/soft/win95/art/se063024.html

 
高機能ドット絵エディタ EDGE2|TAKABO SOFT
http://takabosoft.com/edge2

2010年2月1日月曜日

日記ちゃん


 4bitDIBの32bit転送拡大縮小レンダリングがうまく動くようになったので、ついでに3D計算も実装して立体的に表示した。
台形にレンダリングできないのでビルボード仕様だし、光源なんてもちろんないので大きさでしか差が出せないが。
 
 5箱……のつもりだけどカラーパレットの都合で緑が出せないので適当にっぽく。
あれだ、DS仕様。うん。ごめん。
 ところで静止画じゃあ立体的に見せるのってすげーむずかしいのな。
画面いっぱいに表示すると大きさランダムで表示したのと見た目変わらなくなるので、全体が収まるようにしてみたり。あー、どうでもいいか。

 512個のオブジェクトをカメラとの距離で毎フレームソートして表示してる。
ソートはCのqsortを使っているが、ソートのコストはほとんど無視できる程度で、レンダリングのほうが何十倍か重い。
512ぐらいじゃそんなもんか。