読者です 読者をやめる 読者になる 読者になる

S.F. Page

Programming,Music,etc...

敵エディタを作る - three.jsで2Dシューティングゲームの続きを作る(13)

非常にゆっくりだが、敵エディタの実装を続けている。もう少しでできそうな気もするが、まだまだな気もする。 ジェネレータの使い方がまだいまいちで、変なコードになってきている。が、まあそれは二の次にしておこう。とりあえずエディタを完成させて、ゲー…

敵エディタを作る - three.jsで2Dシューティングゲームの続きを作る(12)

敵エディタをぼちぼち作っている。 ギャラガタイプのシューティングゲームなので「敵編隊」と「敵1つ1つの動き」の編集が必要だ。まずは編隊の情報を編集する画面を作っていて、ある程度めどが立った。画面自体にはWeb Audioのシーケンス・エディタで作った…

three.jsで2Dシューティングゲームの続きを作る(11)

開発支援ツールを動かすときはElectronで動かすようにしてみた。作成したデータを保存する必要があるし、そうしたほうが何かと便利そうなので。 ブラウザ版とソースコードをできる限り共通化して、開発支援ツールはブラウザ版ではインクルードせず動作するよ…

three.jsで2Dシューティングゲームの続きを作る(10)

ちょっとまだBUGが残っているが、面を先に進めることができるようになった。20面を超えるあたりでは難易度が鬼のようになっていることが判明した。

three.jsで2Dシューティングゲームの続きを作る(9)

開発を支援するツールを作成し始めた。亀のように鈍い進み具合だが。そういう言い方は亀に失礼か。。 敵の動きをエディットするツールを作る前に、ゲームの任意の面で開始したり、ポーズしたり、リセットしたりする機能を実装している。それはもうちょっとし…

three.jsで2Dシューティングゲームの続きを作る(8)

今週はあまり時間がなかったので、先にゲームパッド対応をしてみた。 github.sfpgmr.net XInput対応のゲームパッドであれば動くはずだ。一応Chrome,Firefox,Edgeで動くことは確認した。 このゲームパッドAPI、ブラウザの実装度は低いと思ってたけどそんなで…

three.jsで2Dシューティングゲームの続きを作る(7)

とりあえずジェネレータ化は終えた。いまいちな実装であるが、ゲーム内容の充実に時間を割きたいので先に進むことにする。 github.sfpgmr.net とりあえず敵の動きのパターンを増やすためのユーティリティを作ることにする。今のままでは敵の動きを作るのが面…

three.jsで2Dシューティングゲームの続きを作る(6)

ジェネレータでタスクシステムの書き換えを行っているところ。この休日でほぼほぼ終わりそうだ。だがジェネレータの良さを生かしているとちょっと疑問なコードとなっているが、まあそれはおいおい手直しすることにしよう。 これが終わったら敵の配置や動き作…

three.jsで2Dシューティングゲームの続きを作る(5)

今コードをジェネレータを使って書き換えている。やっぱりジェネレータを使ったほうが状態保持のための変数を用意・管理しなくていいしね。これをしなくていいのはジェネレータがyieldを発動した時点の状態を保持してくれるからだけど。面倒な部分を言語が肩…

three.jsで2Dシューティングゲームの続きを作る(4)

新しいフィーチャーを追加しようとしたが、敵の移動データを入力するのが面倒なので、どうしようか思いつつ、コードがちょっと汚いというか古臭いという感じなので書き換えていた。といってもそれで洗練されたかというとそうではないのだが。自機のデザイン…

three.jsで2Dシューティングゲームの続きを作る(3)

続きを作ると宣言したものの、これといったアイデアは依然としてない。考えていることを列挙すると ボーナス・ステージの内容をどうしようか。ギャラガとかギャプラスのボーナス・ステージは楽しかったな。 1-3面を通常、4面をボーナス、5面をボス敵にし…

three.jsで2Dシューティングゲームの続きを作る(2) - gulp + babel + browserifyでビルドするように変更し、コードを修正した。

表題の通り、シューティングゲームのビルドをgulp + babel + browserifyで行うように変更した。 コードはファイルで分割していたものの、モノリシックな構成になっていたので、ファイル単位でモジュール化を行った。 といってもファイル間で疎に保てているか…

three.jsで2Dシューティングゲームの続きを作ることにする

2Dシューティングゲームの続きを作ることにする。 この作りかけは現時点ではギャラガの劣化版となっているが、何か新たなアイデアを追加してそこそこ遊べるようなものにしたいと思う。 といってもまだこれといったアイデアはないのだが。ちょっと隕石のよう…

2Dシューティングゲームを修正する

DownWellに触発され、ゲーム作りをしたくなってきた。まずは以前作ったギャラガもどきの2Dシューティングゲームを手直し。 動くものは下記。Chrome/Firefox/Edgeでの動作は確認した。 github.sfpgmr.net このゲームはthree.jsを2Dレンダリングエンジンとして…

three.js + WebAudio + socket.io で作った2Dシューティングゲームを久しぶりにいじる。

久しぶりに作りかけの2Dシューティングゲームをいじる とりあえずブログカスタマイズも一段落したので、VPSサーバー内のコンテンツを整理しようとしている。以前作りかけていたシューティングゲームが動作するのかチェックしてみたところ、Chromeでは今のと…

Blenderで敵キャラを作り始める

モデリングをはじめる 敵キャラの種類を充実させようとして、モデリングを始めた。 もう10年くらい前からBlenderを使っているのだけれどもいっこうに上達しない。絵心がないせいかモデリングはやっぱり難しい。でもキャラをペイントツールとかで作るよりは楽…

three.js + WebAudio + socket.io – ゲーム作り(4)

socket.ioとnode.jsでTop10スコアを管理・共有する 今週はsocket.ioを使いTop10スコアをサーバーで管理・プレイヤー間で共有する仕組みを作っていた。ノーコン・キッドを観て、ゲームのTop10エントリとか結構うれしかったことを思い出したので、作ってみたく…

WebGL + three.js + Web Audio API – ゲーム作り(3)

何とかゲームの体裁に なんとかゲームとしてプレイできるようになった。まだギャラガもどきの状態のままであるが、自機をバックショットできるようにしてみたり敵を背後に配置してみたりしている。xキーでバックショットできる。 ギャラガ的な面クリアタイ…

WebGL + three.js + Web Audio API いじり – ゲーム作り(2)

今の状態 自機や自機弾、敵の動きを作っているところ。でもまだまだ。一応自機弾と敵とのあたり判定も入れてみた。 動くバージョンはこちら(要PC版Chrome) けっこう「らしく」なってきた。でも今のままだとギャラガの劣化版コピーゲームになってしまうので…

WebGL + three.js + Web Audio API いじり – ゲーム作り

自機や敵の動きを作っている 簡易シーケンサーはだいたいできたかなということで、ゲーム本体を作っている。ギャラガのようなシューティングゲームを作るべく、まずは自機の動きを作り、今は敵の動きを作っている。あの編隊飛行しながら出現して、大編隊を組…

Box2D + WinRTでゲームを作る (20) – タイマー遷移コードの改良

タイマー遷移コードの改良 ゲームオーバー表示を数秒表示してメニューに戻るコードは作成できたけれども、表示をキャンセルしてすぐメニューに戻るようにし、このタイマー遷移コード自体を使いまわしできるようにしてみた。 template <typename EventClass,int Resolution> task<void> create_timer_tas</void></typename>…

Box2D + WinRTでゲームを作る (19) – task.then()のスレッド実行コンテキスト

ゲームオーバー時の処理 ゲームオーバー状態に遷移してから3秒後にメニュー表示に戻るコードを考えていて、思いついたのが下記のコード。 struct GameOver : msmf::state<>{ template <class Event, class Fsm> void on_entry(Event const& ev, Fsm& ) { GameMain^ g = ev.getGameMai</class>…

Box2D + WinRTでゲームを作る (18) – Boost.MSMで実装を進める

実装を進めている お粗末だが今のところできている状態遷移コードをArgoUMLというツールで書いてみた。ここんところ仕事もばたばたしているし、コンフェデ杯もあったのでプログラムに割く時間はあまりなかった。 まあこんなところだ。ゲームの状態遷移はもう…

Box2D + WinRTでゲームを作る (17) – Boost.MSMで実装を進める

Boost.MSMでゲームの大まかな遷移をぼちぼち実装している。なかなか面白い。 何が面白いのか語れるほど習熟しているわけではないので、どう言えば的確なのかもわからないで書くのだけれど、まあMSMに状態遷移の分岐処理を任すことができるので、その状態でイ…

Box2D + WinRTでゲームを作る (16) –bleis 削除ゲーム

Boost.MSMを使って今試行錯誤しながらコード書いている。書いている途中でゲームのMSMによる実装例を発見。 Boost. 勉強会 #5 に参加してきた。 このコードは非常に読みやすくかつすっきりした感じである。参考にさせていただこう。

Box2D + WinRTでゲームを作る (15) – 状態管理をBoost.MSMで実装する

今週は水曜日あたりまでBoost.MSM関係のドキュメントをチェックして、木曜日からおそるおそるコードを書き始めた。チェックしたドキュメントは下記。MSMで実装しようとするとほぼ必ず読み返している。 Boost.MSMのドキュメント Boost.statechart / Boost.msm…

Box2D + WinRTでゲームを作る (14) – 状態管理をBoost.MSMで作る

下のソースコードはXAML DirectX 3D shooting game sampleのApp.xaml.cppのUpdateメソッドを引用したものである。このコードはゲーム状態管理の実装でもある。 //-------------------------------------------------------------------------------------- v…

Box2D + WinRTでゲームを作る (13) – Menuページを作る

ページ切り換えのアイデア 最初UIの切り換えをWindow::Current->ContentにFrameをセットしてページを遷移する方法、つまり普通のやり方でやろうかなと思ったけれど、ページの中にFrameを埋め込み、そこにページを埋め込むやり方もあることを知り試すことにし…

Box2D + WinRTでゲームを作る (10) – Direct3DよるBox2Dオブジェクトの表示

Box2DオブジェクトをなんとかDirect3Dで表示できるようになった。 ソースコード 凸多角形の三角形分割は簡単そうな情報を得たので、8角形まで手で描いてみて規則性を確認してみた。 これで規則性がよくわかったので、分割して表示する方法に変更してみた。描…

Box2D + WinRTでゲームを作る (9) - 凸多角形の三角形分割

Bpx2DオブジェクトをDirect3Dで描画するためのコードをようやく書き始めた。結局コンピュートシェーダーは使わずにオーソドックスの頂点データを渡して描画する方法にした。座標変換はBox2D座標を頂点シェーダーで変換して表示する。といってもDirect2Dで描…

Box2D + WinRTでゲームを作る (8)

私の使っているビデオカードは、Geforce450GTSである。まあ普通のスペックであるがもう1年以上前のもので、Feature Levelは11.0である。このディスプレイカードでどういうオプションが使えるのかD3D11_FEATURE_D3D11_OPTIONSを引数にCheckFeatureSupportで調…

Box2D + WinRTでゲームを作る (7) - FluidCS11サンプル

昨日今日と、今やろうとしていることになんとなくパーティクルあたりのサンプルも参考になるのではということで、「FluidCS11」サンプルのシェーダーコード辺りを読んでいた。 このサンプルは2次元流体シミュレーションをコンピュートシェーダーで行って表示…

Box2D + WinRTでゲームを作る (6) – Box2Dの処理結果をDirect3Dで描画する (2)

今日もどうやってシェイプを描こうか考えていた。考えていたというよりは、シェーダーについて学びかつその技術が描画に使えるかどうかを吟味していたというほうが正しいだろうか。 ヒントになったのは「Direct3D sprite sample」である。頂点データはいわゆ…

Box2D + WinRTでゲームを作る (5) – Box2Dの処理結果をDirect3Dで描画する

Box2Dの処理結果をDirect3Dで描画するため、シェーダー周りをどう作ろうか思案しているところである。実際のゲームではビットマップに置き換わるのだけれども、デバッグの時にシェイプやジョイントを表示できるようにしておけば便利である。頂点シェーダーは…

Box2D + WinRTでゲームを作る (4) – 動画出力できるようになった。

今週はWeb上のDirect3D、Media Foundationのリソースを参考にしながらコードを書いていた。まあなんとかスワップチェインの内容を動画出力できるようになった。 ソースコード ここで考えた手順でほぼうまくいった。 一応720p/30fpsでの出力はできている。今…

Box2D + WinRTでゲームを作る (3) – 動画出力方法を考える

今日はMedia Foundationドキュメントをみながらスワップチェインをどう出力するのかを考えていた。GPUメモリ -> CPUメモリの転送も極力減らしたいし、 拡大縮小もGPUにやらせたい。で以下の手順でいけるのではないかと。 スワップチェインと同じ大きさのテク…

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つのページの中でコンテンツを差し替える形から、複数ページを切り替える形に。

ページの一部のコンテンツを差し替える方法

今XAMLでメインページを作っているのだけれど、グリッドでメニュー部分とサブコンテンツ部分を分けている。サブコンテンツはアプリの状態によって差し替える必要がある。 差し替える方法なのだけれど、サンプルでは下記の方法をとっていた。 サブコンテンツ…

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

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

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

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

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

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

なんか合格だった

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