S.F. Page

Programming,Music,etc...

シューティングゲーム

Box2D + WinRTでゲームを作る (2) - 動画出力を試みる

作成中の画面を動画にしていたのだが、ちょっと処理速度的に厳しくなってきた。 アマレココでもExpression Encoderでも15FPSで処理がもたつく。デスクトップのキャプチャーは結構重い処理なのであろう。 Media FoundationのSink Writerを使って、スワップチ…

Box2D + WinRTでゲームを作る

「XAML DirectX 3D shooting game sample」をスケルトン化し、Box2DのコードおよびDirect2Dによる描画コードを追加した。 ソースコード この後でGDC2013 Game テンプレートなるものも見つけ、これでやり直そうかなと思ったけど、サウンドやメッシュ・入力周り…

Box2D + Windows Store Appsで出直し

Musicシーケンサーを作るといいながらなぜかシューティングゲームを作る流れとなっているが、このままデスクトップでシューティングゲームのコードを書いていくと最終的にはWindows Store Appの「XAML DirectX 3D shooting game sample」のようなものに行き…

Box2Dの処理結果をDirect2Dで描画する

ここ1週間はずっとBox2Dのドキュメントを読んだりしていて、なんとなくわかってきたのでコードを書いてみた。Box2Dの処理結果をDirect2Dで描画したもの。 今回Direct2Dのジオメトリ描画を初めて使ってみた。面白いね。簡単にできてしかも結構リアルに動く。

Box2Dをいじっている

物理エンジンをいろいろ見ていたら、Box2Dというのを見つけた。2Dの物理エンジンでC++で作られている。さっそくコンパイルして実行してみた。 やっぱり物理エンジンで動かすとリアルですな。。 私の人生を狂わせたシューティングゲームは何かといえば、 ギャ…

少しゲームの世界に入り込んでみる

Tumblrで「ゲーマーはもっと経営者を目指すべき!」の引用を見てからここ1週間ほどはこの記事をずっと読んでいた。読んでいるとゲームに対する興味が再び高まってきたのと、DirectX周りをいじっていると少しゲームに関する技術を追っかけてみたいなと思い始…

道のりは遠い

安直にUIエディタが優れているという理由だけでいきおいMetro Style Appsの世界に踏み込んだのだけれど、そんなに甘い世界でもなかった。 Metro Style Appは制約・規約がきっちりと決まっている。お作法がきっちりしているのでUIだけ楽させてもらってあと…

チュートリアル: C++ を使った初めての Metro スタイル アプリの作成

チュートリアル: C++ を使った初めての Metro スタイル アプリの作成. 基本的なことはここに書いてあった。のでちゃんと読むことにする。

UI構成を作り直している

いまのままのUI構成だと破綻しそうな気がするので改造している。1つのページの中でコンテンツを差し替える形から、複数ページを切り替える形に。

Boost.MSMによる状態遷移の実装

そこそこいけそう Boost.MSMによる状態遷移の実装だがそこそこいける感じがしてきた。メニュー画面→ゲーム画面→メニュー画面という画面遷移を実装してみたがいまのところきちんと動いている。 ゲーム開始ボタンを押すと、ゲーム画面に遷移する。Backボタンを…

インテリセンスはまだ直らない

ヘッダーファイルなどを見直しているものの一向に直る気配はない。前方参照を追加したあたりからおかしくなっているのでそのあたりを中心に見ているのだが。 これは推測だけど、Boost.MSMなどのメタなライブラリを使うとインテリセンス周りに不具合が起きる…

VC2012のインテリセンスが使えなくなってしまった

インクルードファイルの構成を変更してたらインテリセンスが使えなくなってしまった。パラメータヒントを表示しようとするとステータス表示に進捗表示されるのだがそのままいくら待っても表示されない。そのまま応答なしになってお陀仏である。 強制終了して…

なんか合格だった

いま作りかけのシューティングゲームをApp Certification Kitでチェックしてみたら合格だった。まだほとんど実装してないに等しいから当然か。

XAMLによるUIの実装を続ける

Boost.MSMで状態管理ができるようになったので、XAMLによるUIの実装を続けることにする。

Boost.MSM - とりあえず動いた

とりあえず動かすことができるようになった。 ソースコード 最初に遷移テーブルを書いておけば、状態管理に関するコードをほとんど書かなくて済むのは便利だ。状態に応じた処理もオブジェクト指向的にできるしね。

ぼちぼちBoost.MSMで実装している

ぼちぼちBoost.MSMで実装している。結構面白くなってきた。

Boost.MSM - なんとなく方向性が見えてきた

昨日今日と思案してなんとなく方向性が見えてきた。ので実装を進めることにした。 突き詰めるとフレームごとのアクションをどうMSMの実装と絡めるかという問題なのだ。ようするに問題認識自体もやっとしていたわけだ。 フレームごとのアクションは、状態マシ…

Boost.MSM ...

Boost.MSMを使ってゲームシーンを簡潔に実装できないかなとか考えているんだけど、なんかまだもやーっとした理解で、なかなか実装に結びつかないんだよね。PCを前に思案ばかりしている。 状態遷移のコードと、いままで作ったコードをどう組み合わせれば効率…

Boost.MSMによる状態管理の実装

Boost.MSMを使って状態遷移コードを簡単に実装できないかなということで試してみている。 実際のアプリケーションに組み込むと、なかなかサンプルコードどおりのように簡単にはいかない。なぜならサンプルコードというのは説明をわかりやすくすることを最優…

Boost.Msm guide - Redboltz

Boost.Msm guide - Redboltz. 今日はこればっかり読んでいた。すごくわかりやすかった。Sub Machine stateとかDeferred eventsとかよくわかった。MSMの前にUMLのステートチャートをきちんと理解しないといけないのかもしれないけれど。まあ趣味なんでそこま…

Boost.MSM - スケルトンコードを書いてみた

乏しい知識でスケルトンコードを書いてみた。まだ未完成だけれど。とりあえずこんな感じでいいのかな。要するにイベントや状態を型で表現するのだね。遷移テーブルは20個がデフォルト(mpl::vectorのデフォルト)らしい。遷移はまだ全然足りないので拡張し…

Boost.MSMを使ってみる

そろそろ状態管理が必要になってきたので、Boost.MSMを使用してみようと思う。すっかり内容は忘れてしまっているので、思い出すところからだが。

サウンド・エディタの作成

XAMLの勉強がてら、サウンド・エディタを作成している。ゲーム画面の上にいろいろなエディット画面を切り替えて表示するつもりである。 エディット画面はページで作成してメインページの特定領域に表示する。メインページの領域にページの内容を表示するやり…

UIをいじりはじめる

UIを作り始めたけど、いやーさっぱりわかりませんな。

VS2012 RCへの移行

VS2012 RCでプロジェクトファイルを作り直し、以前のコードを移行し終わった。 ソースコード

プロジェクトファイルの作り直し

XAMLに取り組む前に、プロジェクト・ファイルを作り直すことにした。続いてテンプレートで作られるコードに以前作ったものをConsumer PreviewからRelease Previewへの変化を考慮しながらマージしていく。もちろんサンプルも参考にしながら。 サンプルコード…

そろそろUIに手を付け始めようかな

ちょっとコード整理も一段落してきたので、そろそろUIに手を付け始めようかなと思っている。でもXAMLの知識はほとんどない。まあサンプルは豊富にあるのでなんとかなるだろうけれど。

threadをtaskに

音声再生処理をスレッドから非同期タスクに変更してみた。まあ内部的にはスレッドを使用してるんだろうけどコードの見た目わかりやすいので。サンプルコードを見ていてもうスレッドを生で使うようなことはしていない。とうとうスレッドも抽象化され隠ぺいさ…

Release Previewで動くようになった

とりあえず動くようにしてみた。ActivateAudioInterfaceAsyncへの対応はすこししょぼい感じになってしまった。PPLやWinRTなどの知識が肥えてきたらまた見直すことにしよう。 ソースコード

ActivateAudioInterfaceがdeprecateになってしまった

Release PreviewでConsumer Previewで使えたActivateAudioInterfaceがdeprecateになってしまった。もともとドキュメント化もされていないようなAPIなので使えなくなっても当然だが。代わりにActivateAudioInterfaceAsyncが使えるようになったが、これがどう…

音源のインターフェースを整える

一通り仮組み的な実装が終わったので、本格的にインターフェースを整えようと思う。シーケンサーからパラメーターをいじれるようにしたりするためのインターフェースとか、波形をエディットするためのインターフェースとかそんな部分。 あと効果音に不可欠な…

プチプチ鳴る問題

フィルタを実装してから、発音開始時(アタック時)にプチノイズが乗るようになった。原因はよくわかっていない。

エイリアシング・ノイズ

ゲーム用波形メモリ音源を作っていて、まだ作成途中だけれどいろいろな音を出してみている。32サンプルくらいで波形を作り再生すると、アンチエイリアス処理なんてしていないのでばりばりエイリアシング・ノイズな音を奏でる。この音を聴いていると思い出す…

フィルターを実装しはじめた

ようやくフィルターを実装しはじめた。フィルターのアルゴリズムはMusic DSPサイトの「Moog Filter」を参考にしている。フィルターは理屈は難解だけれどコードはすごく簡素なのだ。 動いてるんだけれど出音時にプチプチ音がなるんだよね。なんでだろうか。 …

パン部分の実装

コード整理をしていると、パンニング(ステレオ定位)の実装を行うのを忘れていたので行った。LFOでパンを振れるようにしてみた。 LFOってシンセらしい音を奏でるのにはなくてはならないものだな。もちろんビブラートとか自然な楽器音を再現するためのものな…

やっぱりコピーコンストラクタ周りでハマってしまう

コード整理・見直しをしているんだけど、どうしてもコピーコンストラクタ周りでハマってしまうね。

やっぱり凡ミスであった

やっとBUGが直り、LFOが動くようになった。やっぱり凡ミスであった。 ここでいったんコードの整理をしようと思う。合わせてオシレータの抽象化もやり直すつもり。それからフィルターの実装に入るとしますか。

不具合はまだ直っていない

今ハマっている不具合は、下記のコードの中で起きる。 for(int i = 0; i < channel;++i){ Voice v(waveTables_,(float)format.Format.nSamplesPerSec); v.SetTimber(&timbers_[0]); voices_.push_back(std::move(v)); } voices_はstd::vectorで、Voiceをpush…

コンストラクタ・代入演算子の実装

ムーブ・セマンティクスに対応できるように、 左辺値参照コピーコンストラクタ 右辺値参照コピーコンストラクタ 左辺値参照代入演算子 右辺値参照代入演算子 を実装しようと思う。まあ今のBUGが解決してからだが。

noncopyable

またもやコピーコンストラクタや代入演算子でハマってしまっているようだ。オブジェクトのコピーって面倒くさくてコスト高なので今まで避けて通ってきていた。noncopyableにしてcloneですますみたいな。右辺値参照が誕生してコピーにかけるコスト軽減される…

LFOを実装している

LFOの実装をぼちぼちと続けている。まあこれはそんなに難しくないかな。けど実装は面倒くさいので時間がかかるし。このあたり面白く感じないということはやっぱり私はプログラマ向きではないのかな。 実装中にオシレータの抽象化に失敗していることに気がつ…

デチューンとか

今回の音源は音程を与えるのにMIDIのノートナンバーでなく「ピッチ(というのかな..)」で指定するようにした。基準周波数(デフォルト:440Hz)に対しての倍率をfloatで指定する。たとえば2.0fとか指定すると880Hzで再生されるわけだ。こうするとデチューン…

簡単なシーケンサの実装

簡単なシーケンサークラスを作成して、なんとか演奏ができるようになった。マッピーの譜面を打ち込んでテストで鳴らしてみている。LFOやフィルタの実装はこれから徐々に行うつもりだ。

音を鳴らすことができるようになった

音を鳴らすことがようやくできるようになった。だがまだまだいい加減なつくりだ。適当にウェーブテーブルを作って再生してみると、結構PSGっぽい音を奏でる。まだフィルターも実装していないのでまったくの素の音である。 実装をさらに進める前に、デバッグ…

std::bind – メンバ関数の束縛がよくわからん - 凡ミスだった

「std::bind – メンバ関数の束縛がよくわからん」は単なる凡ミスだった。bindの書き方は誤りではなかった。

std::bind - メンバ関数の束縛がよくわからん

下記のようなコードを書いたが、std::bindの部分が意図したように動かない。std::functionにstd::bindでthisポインタを保持させたいのだが、どうもthisポインターが指すインスタンスのコピーを保持してしまっているような感じなのである。thisポインタの部分…

まあぼちぼちと続けている

音源作りをぼちぼちと続けている。昨日今日と休日だったので音が鳴る程度まで持っていこうと思っていたけれどいつもどおりのグダグダした休日を送りそこまでいけそうにない。最近はソファーでごろごろするのが至福の時間となっていて、特に昼食をしっかり取…

Implementing MicroThread / Coroutine via esp-swap for Danmaku Shoot...

Implementing MicroThread / Coroutine via esp-swap for Danmaku Shoot.... マイクロ・スレッド(コルーチン)によるシューティングゲームの製作。コルーチンを使うと状態変数の数が減ってコードの見通しもすごく良くなる。シューティングゲームにはもって…

LFOを実装中

LFOを実装している。これは波形メモリを流用して作ろうかなと思っている。面白い効果を得られそうだし。 安西史孝さんのサイト「おとなのためのアナログシンセ秘密基地計画」でアナログ・シンセ講座 がありシンセ作りの参考になるので読んでいる。その中にPW…

波形メモリ音源の実装は続けている

フィルター以外の実装は5割くらいできた。このレベルで一度音を出してみようかなと思っている。テスト用に簡単なシーケンサーを作らないといけないな。