Windows Mobile Developers Community Off-Line Meeting in MEDC06 Tokyo(http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032298923&Culture=ja-JP)
昼のMEDC06は出られなかったので、せめて宴会(違う(^^;))だけでも。
というわけで、登録しました。現地でお会いしましょう。……って、だれも知ってる人いないような(^^;)。
Techoファイルセーブ時の不具合を直した版0.0.0.25(http://florianswiki.dyndns.org/Web/16)
- ファイルセーブ失敗時にもModifiedがクリアされていたのを修正
- Techoモードの自動ファイル名作成アルゴリズムを修正
具体的には「This is a pen」と書いたときに、「This」で止まっちゃってたのを修正しました。
スネークマンショー アンソロジー(asin:B0000W3OX8)
電車の中でおかしな人になっていました。
さすがすぎる。でも、なんか、知っている物と微妙にネタが違うような……。あ、初収録のネタなの?
あまりのネタなので、仕事中には聞けません。
Dramatic(asin:B0000943AH)
押尾コータロー。
だめだー。やっぱり「カノン」が「蛹化の女」にしか聞こえない(^^;)。
新しく買った椅子(http://www.be-s.co.jp/Products/LID/CX-4.html)
昨日の夕方の時点ではすでに品切れでした。けっこう人気あったんだなぁ。朝のうちに注文しといてよかった。
リンク先はメーカーのページ。椅子以外は節操のないラインナップだけど、商社なのかな?
.Net Compact FrameworkからGlobalMemoryStatus()を呼び出す
デバイスの残りメモリを取ろうとこんな事をしてみました。
MSDNのサンプルによると
public struct MEMORYSTATUS
{
public uint dwLength;
public uint dwMemoryLoad;
public uint dwTotalPhys;
public uint dwAvailPhys;
public uint dwTotalPageFile;
public uint dwAvailPageFile;
public uint dwTotalVirtual;
public uint dwAvailVirtual;
}[DllImport("CoreDll.dll")]
public static extern void GlobalMemoryStatus
(
MEMORYSTATUS lpBuffer
);public void ShowMemory()
{
// Call the native GlobalMemoryStatus method
// with the defined structure.
MEMORYSTATUS memStatus = new MEMORYSTATUS();
GlobalMemoryStatus(memStatus);
}
らしいのですが、GlobalMemoryStatusを呼んだ時点でアプリが終了します。Exceptionすらも出さずに。
むむ?サンプルの解釈が間違ってるのかな?
Graphics.DrawImage(Image,Rectangle,Rectangle,GraphicsUnit)の描画条件
デスクトップ向け.Net Frameworkでは、WidthもしくはHeightがマイナスで、なおかつ左端、上端が描画先のクライアント領域を超えているときには、そもそも描画もなされないようです。
こんな感じ。
aGraphics.DrawImage(aImage,new Rectangle(0,0,100,100),new Rectangle(50,0,-100,100),GraphicsUnit.Pixel);
でも、.Net Compact Frameworkでは描画できるよなぁ。これって、仕様としてはどっちが正しいんだろう?
クリッピング自体は手動でやっても大して難しい物でもないんだけど、何かbitbltのオプションに対して見逃している物があるんだろうかと考えると、自前実装はちょっと怖いなぁ。
でも
とりあえず、あきらめて左右、上下端の独自実装。.Net Framework使い始めてからこんなのばっかり(^^;)。
ともあれ、予定していたところまではたどり着きました。
- MSILと.Net Framework2.0と、C#のGenericを使ったゲームエンジン
- ゲーム部分ソース/リソースはデバイス非依存(.Net Compact Frameworkと.Net Frameworkで共通)
どこまで公開できるかは考えなくてはなりませんが、まずはデモ用のバイナリとアーカイブを用意しましょう。
Windows Mobile5.0を持っている方はそのうちアナウンスしますので見てやって下さい。
.Net Framework雑感
アプリケーション本編部分はそこそこ簡潔に書くことが出来ますし、Visual Studio 2005の強力なIDEで快適に開発できます。リモートデバッガが強力なのでデバッグもかなり容易です。
……でもなー、いろんな意味で、Javaにはだいぶ及んでいないなぁ、というのが.Net Frameworkの感想です。
- デメリット
- メリット
何よりも、「パフォーマンスがすごくいい」ってのがゲーム屋的にはありがたいですね。正直、Windows Mobile上のVMがこんなにパフォーマンスがいいとは思っていなかったので、思ったよりも凝ったことが出来そうです。あ、いや、ハードウェアにおんぶにだっこの描画部分はちょっとおいておいても。
あと、てきとーにちゃちゃっとアプリケーションを作るのにはいい感じですね。これは、ゲームエンジンと平行して作っていたNotepadWMでも感じましたが。むしろ、ゲームエンジンで大変苦労していたところに「もしかして、Windows Formに逆らってるからでは?」と思い直して試しに作ったNotepadWMが予想以上に開発効率が良かったのがびっくりでした。
むしろ、Windows FormのControlだけを使ってゲームを作る……のはほぼ、無理か(^^;)。やってみても罰は当たらなさそうだけど、再描画周りが大変なことになるな。DoubleBufferingプロパティはそんなにきちんとは動いてくれてないみたいだし。
もっとも、Java5もオートボクシングとGenericコレクションと、foreach(これが便利!)はついてるので、Eclipse上で使う分には.Net Frameworkと対して違わないかもしれませんね。yieldがないのは残念だけど。
もう昔のVodafoneの仕事は来ないだろうし、Java5を入れちゃってもいいよなぁ……(Vodafoneの昔のエミュレータはJava5を入れると動かなくなるのです)。
NetFront 3.3 正式版(http://www.access.co.jp/press/060517.html)
あぁぁ、やっと出る。
出たら早速買いましょう。なにせ、かなりNetFrontに依存しているので。先月末の「試用期限」騒動の時に痛感しました。これがないと困ります(^^;)。
しかし、これに付属するJV-Liteって、どんなプロファイルなんだろう?
MIDPのプロファイルはJBlend(だよね、あれ)がすでに載ってるし、J2MEPPだったりするとすごくうれしいなぁ。
でも、JV-LiteのJ2MEPPって今まで製品あったっけ?DreamcastのJV-LiteはPersonal Profile互換だったらしいんだけど(でも、ページにJavaアプレットを入れる方法がなかったような……)。
一応、JV-Lite2の製品ページによると(http://www.access.co.jp/products/jv_ce.html)
- Foundation Profile (FP)
- Network and I/O library, no GUI
- ROM:2-2.5MB, RAM: 2MB-
- Personal Basis Profile (PBP)
- FP + basic graphic library and xlet
- ROM:3-4MB, RAM: 4MB-
- Personal Profile (PP)
- PBP + full AWT and applet
- ROM:3.5-5.5MB, RAM: 4MB-
うーん、FPってことはないと思うんだけど。PBPでもまぁ、この際許そう。PPだったらいろいろ出来るなぁ。PP来い来い!
ぼくは航空管制官2
しばらく追いかけられずにいたら、うちのPCのスペックは、最低環境よりもずっと下になっていました(^^;)。
あぁぁ、そりゃそうだな。もう4年もPCの環境変えてないや。せめて「Half Life2」と「Bridge it!」くらいは(どちらも微妙に古い(^^;))動くようにしないと。