コードスペランカー

ゲーム開発日誌など

2012-01-01から1年間の記事一覧

WPFのお勉強 イベント編

ユーザーコントロールを配置したら、配置した先で大きさを自動調節したくなったわけだが、XAMLは静的な記述はできても動的な記述はできない。つまりコードの中で変更してやらんと行かんわけだ。 まずはじめに考えたのはコンストラクタ内でコントロールの大き…

WPFのお勉強 ユーザーコントロール編

WPFでアプリをつくり、使いまわしのできそうな部品を作ったときに、いちいち設定するのはめんどくさいので、部品として登録したいと考える。友人からの要求にもコンポーネントそして再配置可能なこととあるので、その方法を調べてみた。 現在、私が使ってるV…

WPFのお勉強 マルチスレッド編

マルチスレッドな状態を想定してプログラムを組む際に、WPFではコンポーネントが持ってるプロパティ具体的にはCanvas.Widthなんかにはアクセスできない仕様になってるらしい。読むだけならいいんじゃないかとも思えるが、できないものはできないので、やらな…

WPFのお勉強 描画編その3

前回の続きで今回は幾何学的な描画について行う。 前々回でLineオブジェクトを紹介したが、Lineオブジェクトを更新する方法は、オブジェクトの数が増えると、GCの発生が大量に出るようで、1000個とか発行すると、描画処理が重くて話にならなくなる。オブジェ…

WPFのお勉強 描画編その2

前回の続きで今回は画面の更新を行う。 WPFは基本的には今までのWindowsアプリと一緒でイベント型なので何らかのイベントがないと数値の更新は行われない。なので、アニメーション等の画面の更新が必要な場合はそれなりのイベントを用意する必要がある。って…

WPFのお勉強 描画編

友人からの紹介でWPFを使った描画を勉強してみることにした。WPFって言うものそのものを知らんかったので良い機会だろう。 WPFの印章だが、フォームなんかのフォーマットをXMLで定義したWindowsアプリって感じだ。VBやらVC++やらVC#やら単体でWindowsアプリ…

マルチコア対応のプログラミング

「CPUの数を知る」でCPUの数を見てからマルチスレッドプログラムでどうにかしようとか考えていたが、どうやら.NET4.0ではParallelクラスという便利な並列処理クラスが提供されているようだ。 using System; using System.Collections.Generic; using System.…

ゲーム内でのポリゴンをGPUベースで描画する2

「ゲーム内でのポリゴンをGPUベースで描画する」のつづき 下準備が終わったところで、具体的な手順をメモしておく まずは頂点情報バッファをVRAM上に確保する public static int CreateVertexBuffer(int VertexNum, int VertexType) VertexNumは頂点情報の数…

ゲーム内でのポリゴンをGPUベースで描画する

DrawPolygonIndexed3D_UseVertexBufferという関数がある。この関数をつかうとGPUベースでのポリゴンの描画が可能だ。DrawPolygonIndexed3DではCPUベースなのでGUPベースより処理速度が劣る感がある。実際には頂点シェーダ2.0に対応したグラボが必要なようで…

日本語でもいけるらしい

C#

namespace 日本語テスト { class テストクラス { public static void 書く(string 文字列) { Console.WriteLine(文字列); } } } このコードが通るので、英語名に困ったら日本語でもいける。 入力補間がうまく働かなかったりするので使わないと思うけど一応メ…

アンセーフコード

C#ではポインタを扱う際には、このコードが危険であることを明示することが必要なようだ。C#単体ではまず使わないが、CやC++で書かれたDLL等を使うときには必要になる処理だ。 unsafe { int i = 0; int* p = &i; } という具合に書いたりする。 特にvoid型の…

CPUの数を知る

どうやらマルチスレッドで処理をおこなうと、あいてるCPUに処理を振り分けてくれるようなので、一部の処理をマルチスレッド化しようかと考える。 そこで、CPUの数がどうしても知りたくなる。CPUが1つしかないのにスレッドを沢山作っても意味が無いからだ。 …

ソート処理

C#

Listを使った場合のソート処理だがSortメソッドがよういされててデリゲートしてやれば自分で勝手にクイックソートアルゴリズムをつかいソートしてくれる・・・・・らしい。 // List<MyClass> listの場合 list.Sort(delegate(MyClass obj1, MyClass obj2) { return obj</myclass>…

当たり判定の処理

一言に当たり判定といっても、色々種類がある。 1、点と点の処理 点同士なのでお互いの座標を比較し完全に一致すれば当たっているという極単純なもの。これ以上簡単な処理はないが点であるので範囲を表せない。マス目にはまったタイプの処理をするゲームで…

Minecraftに学ぶ

Minecraftでは16×16マスの平面を1chunkという単位にして処理している。 キャラクタは確実に1chunkより小さいのでキャラクタのいるchunkとその周囲の処理をすれば確実に処理される。おそらくその仕様上1chunkより大きな処理を1度に行うことはできないだろうが…

ゲームデータ隠蔽の必要性

前回マップデータを暗号化してみるとか言ってみたが、ゲームデータやプログラムの隠蔽をする意味が、そもそもあるか?って疑問にぶちあたった。 想定している環境がPCである以上、俺が知っている限りの手法で隠蔽をしたとしても、ものの数日でクラックされる…

ダンジョンの作成と読み込み

しばらく前で自動作成したダンジョンを保存して読み込んだり、手作業で作成したダンジョンを読み込んだりするのに、ダンジョンローダーが必要だとおもったので、こいつの使用を決めないといけない。 現在、ダンジョンのマップチップとして存在しているのは、…