サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
中東情勢
arctan.hatenadiary.org
弾幕パターンのアイデアがなかなか出ないので、ゲーム情報表示部を作ってみた。(コレもっといい呼び名ないのかな。情報ウィンドウ…ウィンドウじゃないし…コンソールってのもなんか違う) で、それに当たってきっちり縦シューの体面を作ってみたんだが、なんか妙に縦長な感じが。これ一応3:4なんだけど、縦シューの基本ってこうじゃなかったっけ? と思ったら、やっぱ最近のPC向け縦シュー(東方とか)はもっと横幅が広いようで。調べてみると東方はピクセル比で384:448、つまり6:7。うーむ4:5かと思ったがもっと幅広だった。対して蟲姫さまはむびを見ると3:4ぽい。アーケードの基本が3:4みたいね。 しかしPCでやる限りどうしても横に余白ができる関係で、3:4だと縦長もとい狭く見えてしまうみたい。まあ画面サイズなんて自由だし、PCゲーならもっと横長でよさそうだねってことで。 どうしても3:4でやるなら、右みたい
前から作ってると言ってるが実際作ってるのかどうかもあやしくなってきたあのシューティングだが、やっぱり早いトコ区切りを付けたいということで、タスクシステムを用いたバージョンへの移項作業をせこせこやっている。といっても全然大変な量じゃなくて、気合入れれば数日どころか1日で終わりそうなものだったのだが。集中力がないなあ…。 だらだらとやっているうちに前から抱いていた心のもやもや。どうもゲームを作る上でC++言語というものをうまく使えていない。特に顕著だと思うのは、継承の周りの機能だ。 一番の例だとキャラクタの継承系。1フレームの処理を各キャラクタに任せるためにキャラクタ基底クラスへのポインタをコンテナに持っておいて、イテレーションをかける。コレだけなら簡単なのだが、あるキャラクタが別のキャラクタとの間で何かごにょごにょやりたい場合だと話が変わってくる。まず相手のキャラクタを探し当てるためにコンテ
プロペラを回すとか、腕を動かすとか、メッシュを部分的にアニメーションさせたいときには階層型メッシュを使います。要はD3DXLoadMeshHierarchyFromX()で読み込むやつのことで、階層関係を持つ「フレーム」にパーツごとのメッシュが格納されています。 また、スキンメッシュというのもこれに属するもので、ちょっと特殊なのは各フレームが各々メッシュを持っているわけではありません。メッシュは一つだけしかない(二つ以上のこともある)けど、それを各フレームからの影響に応じて変形させることで部分的なアニメーションを行う仕組みで、このときのフレームを「ボーン」と呼んだりします。 で、この階層型メッシュは複数のオブジェクトから同じものを使うなら当然使いまわすリソースです。このときに、どの情報がメッシュに共通で、どの情報が各オブジェクトごとに持つものなのかという話です。 わかりづらい用語の定義の見
SDL_imageにjpeg、libpng(とlibtiff)を内蔵、SDL_mixerにsmpegとlibogg、libvorbisを内蔵させたものをVC2003で作るべく、何もかもが手探りの作業がスタートした。 SDLのビルド ソースコードを取得する。中にVisualC.zipがあるので、その場に解凍。SDL.slnはVC2005用なので、SDL.dswをVC2003用に変換して使う。あとはReleaseでビルドするだけ。ダイナミックライブラリSDL.dll、インポートライブラリSDL.lib、SDLmain.libができる。 zlibのビルド これはVCプロジェクトがあるので簡単。Win32_LIB_Release構成でビルドすればスタティックライブラリzlib.libができる。 jpegのビルド これはVCのコマンドラインコンパイラを使わなければならないのでまずその設定をする。VC
まず最初に、以下でいうFPSとは「描画」のFPSのことを指す。 タイマーによるFPS調整 Unlimited FireworksのFPS表示が安定しない原因を調べてた。問題自体はすぐ解決したけど、調べるうちに色々とわかったのでメモ。 とりあえずその問題について。 UFのFPS調整の実装はタイマーによる時間待ちの方法をとっている。ABA GamesさんのrRootageのソースを参考にして書いたので、それを(少しだけ変えたものを)以下に載せる。 nowTick = SDL_GetTicks(); frame = (int)(nowTick-prvTickCount) / interval; if ( frame <= 0 ) { frame = 1; SDL_Delay(prvTickCount+interval-nowTick); if ( accframe ) { prvTickCoun
唐突ですが、速度をまともなレベルに上げないといけないなと思いまして、ポリモーフィズムとメモリの事前確保&使い回しを両立させるシステムを作っておるわけです。 はじめはむーんどうしたものか…って感じでしたが、調べるとplacement newという手法を使うのが有力なようです。これはoperator newをオーバーロードして、本来newがヒープから引っ張ってくる新メモリを、既存のメモリで代替させようという方針です。こういうのが入門書には載ってない脱初心者向け技術って気がします。さてplacement newは、ただどっかで静的に確保したメモリを渡して、それをそのまま返せばいいだけなので、以下のような実装になるようです。 class CHoge { public: //placement new static void* operator new(size_t size, void* buf)
同じようなことを何度も書いてきた気がするが、簡単のため気がしないことにする。 C++(というかオブジェクト指向)でアクション系のゲームプログラミングをするときにいつも困るというか、うまくいかないことがあります。それはゲームに登場するオブジェクト(キャラクタなど)同士のやり取りです。 一般的なゲームプログラムのモデルとして、ゲームの基幹クラスが移動フェーズと描画フェーズにそれぞれキャラクタクラスインスタンスの移動関数move()と描画関数draw()を呼び出す、というのがあります。この場合、各キャラクタクラスはモジュールとして成立していて、新しいキャラクタクラスを作ったときにはそのmove()とdraw()を基幹クラスからの呼び出しに追加すればいい、というのがシンプルで見通しのよい設計と言えます。基幹クラスは各キャラクタクラスを知っているが、逆はなく、また各キャラクタクラス同士のつながりもな
というか全貌がわからないから設計しようがない。 もう同じところを何年も作り直し続けてる気がする。 ぐぬぬ。 CBase* array = new CDerive[10]; for(int i=0; i<10; i++){ array[i].Func(); } ^^; 近況メモ 今やってる作品 ゼルダの伝説 夢幻の砂時計 (DS) しっかりゼルダしてて面白い 罪と罰 (Wii) オメガブースト系。難しい ストリートファイター4 (PC) スカッドハンマーズ (Wii) 今後やりたい作品 ベヨネッタ (360) アサシンクリード2 (PS3) ロストプラネット2 (PS3) 朧村正 (Wii) スーパーペーパーマリオ (Wii) ゼルダの伝説 大地の汽笛 (DS) どんどんゲームやって面白いのを見つけよう企画。 イースシリーズは初プレイ。 続きを読む 近況メモ 今やってる作品 イース7 (PS
このページを最初にブックマークしてみませんか?
『arctan 1=π/4』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く