「 2017年05月 」一覧

本屋で物色中


最短で C# 入門して、らしいコードにするために

プログラミングには慣れている人が C# へ入門する際に何かいい書籍がないかなと思って探していたところ、見つけました。
C# に慣れている人から見ると、イマイチ感がありそうな感じなものです。しかしそこが今回の対象としている人に向けてはちょうどいい具合になっていると感じました。

広く、そして割と浅く書かれているため、今ほしい”とある”機能を実装するのに役だったり、さっさと入門を済ませてしまいたい人にこれが向いていそうです。
C# のバージョンも 6.0 あたりまで入っていそうなので、そのあたりも含めて割と最近のコードスタイルで記述できるように最短で導いてくれそうです。

ゲームエンジンアーキテクチャ (2)

ゲームエンジンアーキテクチャ 第2版 を購入しました。初版を持っていますが意外とアップデートが多く、買っておくか感が上回ったため買っちゃいました。
さらりと確認したところでは、サウンド関連の追加と、 PlayStation4, XBoxOne の記述が増えていたりとでしょうか。

CGとゲームの技術

ゲームエンジンとは対照的に、もっと薄いけど幅広くゲーム関連を知るにはこの本もよさそうでした。プログラミングというよりは割と教科書なので、これからこの分野に進もうとする人にはオススメできそうです。

出版元がコロナ社なので、教科書として割と長く出版してくれそうな雰囲気を感じます。絶版になってしまう書籍が多い中で助かりそうです。



DwmGetDxSharedSurface を使ってみた


Windows の隠し API である DwmGetDxSharedSurface を使ってみました。
これは Windows7 以降で存在するようで、無事に Windows10 の環境でも使えました。
そのまま素直に使おうとするといくつか課題はありますが、面白い機能だと思ったので紹介することにしました。なお Undocumented API の1つなので、ご利用は自己責任で。

これは何?

指定されたウィンドウの画像をキャプチャすることが出来る API です。ウィンドウが他のウィンドウで隠されていても内容をキャプチャすることが出来ます。

続きを読む


iptables で Symmetric NAT


ずいぶん久しぶりに Linux を使っての NAT Box を作成しました。
手持ちのブロードバンドルーターが Symmetric NAT のタイプではなかったので、検証のために Linux で Symmetric NAT を作成しました。

NATの種類

NATには、いくつか種類があって フルコーン、アドレス制限、アドレスポート制限、シンメトリック と4種類ほどに大別されます。
・・・というのが数年前のお話でした。実はこれでは現実問題対応出来ないとのことで、現在ではこの区別はレガシー扱いとなっています。

今は、NATのマッピング規則と、フィルタリング規則という2つの観点からルーターNATの特性を判定します。
手持ちのルーターでは、エンドポイント非依存マッピングで、アドレスポート依存フィルタリングというシロモノでした。
というわけで P2P のゲームやアプリにおいては割と都合の良い感じになっています。
しかしプログラムの作成立場としては、ある程度のケースが欲しいもので今回シンメトリックNAT を作ることにしました。

マッピング規則、フィルタリング規則、これらについては検索すると多くの情報が見つかり、わかりやすい記述を見つけることが出来ると思うので、ここでは説明を省略します。
続きを読む



IPv6 only ネットワーク を作ってみる


VMware Workstaion 12.5 を使って、複数の仮想マシンで構成されるネットワークを作っていきます。このネットワークは今流行の IPv6 only のネットワークにしてみたいと思います。この過程で NAT64/DNS64 をセットアップしていきます。

構成について

VMware Workstaion で新規仮想マシンを作る際に、ネットワーク接続を LAN セグメント で作成します。
外とやりとりを行う NAT64 の部分についてのみネットワークアダプタを2つ準備して、一方を NAT なり, ブリッジなりのタイプを設定して外との通信をできるようにします。
そして、作成した “LAN セグメント” の部分を IPv6 only のネットワークとします。ここに所属する仮想マシンは IPv6 のみをもって通信を行います。

これらの関係を図にすると以下のような感じになります。

IPv6 only ネットワークのキモはこの NAT64, DNS64 を担当する Linux サーバーということになります。図中では記入漏れていますが、このサーバーでは IPv6 の DHCP も担当させています。

お断りですが、IPv6 only といっても自分の現環境が IPv4 のみのネットワークのため、IPv6 で外部との通信を行う部分について 実験できずです。
続きを読む