.NET

DotNetNuke本

DotNetNuke本が発売になった。Windows+ASP.NETベースで開発している人は要チェックだろう。 DotNetNukeって何?って人は、はてなダイアリーのキーワードでも見て勉強していただくとして、今回の本は、DotNetNuke.jp会長の杉下さん自らが執筆されているので…

タイトルバーのないフォームを移動できるようにする

どぼんさんのところの記事で、タイトルバーのないフォームを移動できるようにする記事がある。タイトルバーなしのウィンドゥを作りたいことは良くあることなので、結構、この記事を参考にしている人が多いと思うのだけど、この実装が見事に間違っている。

.NET Expert #03

紹介忘れてた。『.NET Expert #03』が出ちょります。例によって私も20ページ弱書いてます。 本当は50ページぐらい書くつもりだったんですけど、仕事が修羅場だったので…(´ω`) そういや、J.マイヤーズの『ソフトウェア・テストの技法』の第二版が出たそうで、…

NDoc 2.0 is Dead

VisualStudioを使っているなら標準とも言えるドキュメントツールのNDocが死んだ。作者自らプロジェクトの終了を宣言したのだ。 まあ、NDocはVisualStudio2005にも対応していなかったので(→id:yaneurao:20060223)滅んでくれて良かったという気がしないでもな…

C#で書いたソフトの配布と7-Zipのライセンス

VisualStudio2005では、セットアッププロジェクトと言うのが作成できて、インストーラが簡単に作れるのだけども、そのときに.NET Framework2.0やWindowsInstallerも自動的にインストールされるように設定できる。C#で書いたアプリをCD-ROMなどで配布する場合…

手と栗鼠

テトリスを拡張してみることを考える。 ・連鎖によって対戦相手にブロックが送れるというのはSEGAのBLOXEEDで行なっていた。 ・テトリスのブロック消去中に次のブロックの操作が出来るようにする(そして連鎖判定を行なう)というのは、ぷよぷよ以降のゲームか…

C++/CLI

いつもお世話になっている中さんがC++/CLIの本格的な本を出されたのでさっそく読んでみた。 Managed C++とC++/CLIは似てるんだろう、ぐらいに思っていたのだけど文法がずいぶん異なる。こりゃ別の言語だ。C++/CLIでは、Managed C++の冗長さがずいぶん改善さ…

C#2.0時代のゲームプログラミング(43)

いま 「.NET Expert #03」の原稿を書いている。C#からOpenGLを使うための方法を詳説している。 Windows VistaではそのGUIのAERO GLASSがD3D9(Direct3D)で制御されるが、D3D9とOpenGLは競合するのでOpenGLはDirect3Dにwrappingされるような形で実装されると発…

C#2.0時代のゲームプログラミング(42)

Connector/ODBC(MySQL用のODBCドライバ)とConnector/NETに関する調査報告。

C#2.0時代のゲームプログラミング(41)

話が脇道にそれた。何故、いまさらODBCなのか?最初、Yanesdk.NETでDBへの対応をしようと考えた。MySQLを使う場合でもConnector/NET経由でutf8でやればC#〜MySQL clientまでがunicodeで取り扱えることは知っていた。(ちなみにConnector/NET経由でもucs2は使…

C#2.0時代のゲームプログラミング(40)

話が前後してしまうが、まずVS2005の構成のプロパティについて説明しておく。 基本的にVS2005は「特定の構成においてはあるdllを参照しない」ということが出来ない。VC++6のときですら「このファイルをビルドしない」という設定をcppファイルごとに変更でき…

C#2.0時代のゲームプログラミング(39)

今回はC#からODBCドライバ経由でMySQLを使う話。 MySQLやODBCまわりの話は、バージョンがいくつもあって、インターネットで探していても載っている情報はobsolete(時代遅れ)だったりする。なかなか自分の欲しい情報が見つからない。特に.NET絡みとなるとさ…

C#2.0時代のゲームプログラミング(38)

ちゃんねる遊び(→id:yaneurao:20060518)をしているときに名無しの人から「Effective Java」を勧められたのだが、id:Kazzzさんが勧めていたので買ったまま積読になっていたのを思い出した。いまさらJavaなんて…と思いながら読んでみたのだけど、これが「Effec…

C#2.0時代のゲームプログラミング(37)

C#でネットワークゲームを作っていくと、サーバー側もC#で書きたくなる。ゲームで使っている構造体をゲームクライアントとサーバー側とで受け渡しするようなときに、使っている言語が違うとその言語用の構造体定義から用意しなければならなくなるからだ。 そ…

C#2.0時代のゲームプログラミング(36)

(昨日の続き) ■ dpi変更の影響の受けそうな場所 たいていのアプリで使われているであろう、Windows.Form , Font , DrawImage等もdpi変更の影響を直接受ける。 以下に、私が理解しているところをざっとまとめる。間違っていたらコメント欄で教えて欲しい。

C#2.0時代のゲームプログラミング(35)

■ DPI設定の変更が及ぼす影響 コントロールパネル→画面のプロパティ→設定 の【詳細設定】ボタン→全般→DPIの設定 という設定項目をご存知だろうか? この値は、ディフォルトでは96dpiに設定されているが原則的に自由に設定を変更できるし、文字が読みにくいと…

C#2.0時代のゲームプログラミング(34)

■ ゲームとデータベースとの関係 ゲームと言えども、規模が大きくなるにつれ何らかのデータベースの実装を利用したくなる。SQLiteやMySQLを利用することは日常茶飯事だ。 先日、C#からお手軽にMySQLにアクセスしたかったので、ODBCのwrapperとO/Rマッパーを…

C#2.0時代のゲームプログラミング(33)

■ お客さんのところでのみ落ちるアプリのデバッグ 「プログラムは必ずお客さんのところで落ちる。何故なら、社内で落ちるならば開発時にそのバグは取れているはずだからだ」などとマーフィーの法則じみたことを考える。 お客さんのところで落ちるプログラム…

C#2.0時代のゲームプログラミング(32)

とある商用ゲームをC#で作ったのだが、そのサイトに来るユーザーに.NET Framework2.0のインストールをさせるのが結構大変なのだ。 今回、クリーンインストールされたWin98/SE/ME/2k/XPを用いて、.NET Framework2.0をインストールするのに何が必要か調べたの…

C#2.0時代のゲームプログラミング(31)

id:akiramei:20060501さんが、Visual Studio 2005 Tools for the Microsoft Office System(以下、VSTO)を使って、私の音符ゲーをExcelの上で動かしている。 VSTOを使うとExcelをインタフェースとしてアプリケーション開発することができます。これは、Excel…

C#2.0時代のゲームプログラミング(30)

■ 何故このようなdelegateの実装になっているのか? わざわざこんな複雑な実装にするメリットがどこにあるのだろう? Visual Studio 2005の開発に従事しているAbhinaba氏のblogにはC#の匿名メソッドはclosureではないという記事があるが、この記事のその後の…

C#2.0時代のゲームプログラミング(29)

■ delegateの実装的な観点から intのような値型はstack上に確保されるのではなかったのか?intが本当にstack上に確保されているのならば、delegateの中からそのstack上の値をポイントしていると、この関数から抜けてstackが巻き戻されてしまったときにそのよ…

C#2.0時代のゲームプログラミング(28)

C#のdelegateは、嫌らしさ抜群である。 001 class Program 002 { 003 public delegate void TestDelegate(); 004 005 static void Main(string[] args) 006 { 007 int i = 1; 008 TestDelegate d = delegate 009 { 010 Console.WriteLine(i.ToString()); 011…

ソフトウェア実践講座

ソフトバンククリエイティブから「ソフトウェア実践講座」というシリーズが出ている。 どちらもちょっと内容がはしょってあって、入門書としては不親切な気がする。大学で使うテキストという感じで、要点はまとまっているのだが…まあ、安いので許す。 『コン…

C#2.0時代のゲームプログラミング(27)

Yanesdk.NETの根幹はC# + SDL + OpenGLで書かれている。 SDLは、主にSDL_mixerとSDL_image,SDL_ttf,SDL_netを用いてある。 このように、C# + SDL + OpenGLを用いて移植性にある程度の注意を払いながら書いた場合、果たしてlinux/Macで動くのか?というのは、…

C#2.0時代のゲームプログラミング(26)

前回書いた、Marshal.UnsafeAddrOfPinnedArrayElementはハマりどころで、日本語の.NET Framework SDKの訳文が間違っていることもあって、必ずと言っていいほどハマる。 例えば、C#からOpenGLを扱うのは一筋縄ではいかないことをこの連載で示してきたが、誰か…

C#2.0時代のゲームプログラミング(25)

今日は、byteなどを仮想streamとみなして、その一部をstructとしてアクセスする方法を説明する。しばらく悩んでいたのだが、id:akirameiさんの多大なる協力を得てこのたび完成した。 ・必要となる背景 例えば、メモリ上にzip headerをbyte[ ]として読み込む…

C#2.0時代のゲームプログラミング(24)

とまあ、multi displayでフルスクリーン化するぐらいのことが、こんなにも難しいという話であった。恥ずかしながら、私はこの一連の事実に気づくのに丸一日近く要した。 C#2.0の時代になって、C++のときにはなかった(?)機構がいくつも投入されている。delega…

C#2.0時代のゲームプログラミング(23)

前回書いたように いま二つのアプリを立ち上げて、ひとつを画面2でフルスクリーン化、もうひとつを画面1で最大化したとしよう。画面1の最大化にともなって、画面2の仮想スクリーン座標におけるBoundsは変更になる。これに伴って、画面2でフルスクリーン化し…

C#2.0時代のゲームプログラミング(22)

めでたくdisplay解像度の変更が出来た。しかし、これで終わりではない。ここから先が長いのだ。 # okzk 『流れをぶった切りますが、FormBorderStyleをNoneにするなら、WindowStateを変更せずにform.Bounds = scr.Bounds;としてはマズイですか?』# yaneurao …