カテゴリー: プログラミング

スペースコロニーの物理シミュレーター作ってみた

oneill-cylinder-sim-top

先日…といっても3ヶ月以上まえですが Twitter を見てたら某モビルスーツアニメに出てくるスペースコロニーの中でボールを投げると果たしてどんな軌道になるのか…?的な話が流れていて、興味をそそられたので試しに Unity 3D の物理エンジンで再現してみました。

能書きをごちゃごちゃ書く前に、まずはインストール不要のブラウザで遊べる現物のリンクを貼ります。

スペースコロニー物理シムを開く
※ダウンロードサイズ約100MB, PCブラウザ推奨

物理エンジンの限界等もありシミュレーションといっても精度はそれなりなんですが、そのかわりTPSゲーム風仕立てになっていて走り回ったりジャンプしたり、魔法の超動力エレベーターに乗って上昇したり下降したりスペースコロニーの生活で起きるであろう力学的な違和感がどんな感じかざっくり体験できるようにしてみました。

HTML5 Gamepad API がどの程度のモノか試してみた

ブラウザゲームの実行環境が Flash(昔) → HTML5(今) になりつつある昨今、モダンブラウザにおいては HTML5+JavaScript でネイティブアプリ並に OpenGL やらリアルタイムオーディオといったゲームに向いてそうな処理が色々と書けるようになってきています。そんなゲーム向けのウェブAPIとしてゲームパッド入力APIが結構前から整備されてきてるのは知ってたんですけども、NOBI-CONのレビュー記事を書いた際にふと興味がわき、実際どの程度のものなのか?フライトシムみたいな凝ったデバイス接続があるケースにも対応できるのか?そこらを確認するためにデモコードを書いて実験してみました。

IE11 CSS をローカルで読めない超謎挙動

IE に色々とクセのある挙動が多いのはよく知られていますが、作成したウェブページをネットではなくローカルでチェックしている時に謎すぎる挙動に遭遇したのでメモしておきます。ググると IE11 ではオンライン/オフライン問わず様々なケースで外部CSSが読まれなくなる症例があるようで、“キャッシュクリア”、“DOCTYPEを修正”、“互換性オプションを変更” などの対処法が見つかりましたが、いずれの方法も当方の問題の解決に至らず、理由不明なまま対処療法にて解決しましたので一応それも書いておきます。もし明確な理由と対処法をご存知の方がいらっしゃいましたら是非コメントいただけますと幸いです。

– 現象を発生させる手順 –

  1. サーバーに上げてある構築済みサイトの html をブラウザの保存操作で保存する。
    ※保存する時のブラウザは IE11 でなくても FF や Chrome でDLしても発生する
  2. ローカルにある動作する構築済みサイトの該当 html をダウンロードしてきたものに置き換える。
  3. すると何故か html 内で link タグ href で呼び出している CSS が読み込まれなくなる時がある。
    問題はIE11のみで FF や Chrome で開けば動作する。

C++11| コピー初期化(A a = A()みたいなやつ)の罠

例えば次のようなシンプルなクラスを考えます。

    class A {
      public:
          A() {}  // デフォルトコンストラクタ
    };
    // インスタンス化
    A a = A();

この時、どのメソッドがどのように呼びだされるのか実際の動作をトレースしてみます。

コード上に記述されていませんが C++ では暗黙に自動生成されるメンバ関数があることに留意する必要があります。上のコードではコピーコンストラクタと代入演算子、それに C++11 以降であればムーブコンストラクタとムーブ代入演算子が暗黙に宣言されます。

さて、インスタンス化の行:

A a = A();

は”=”の記号で代入するかのような表記ですけども、文法上はコピーコンストラクタによる初期化文の形式のひとつになります。