メイン

December 20, 2006

XNA Framework 1.0

とりあえずジャブといったところ?

3Dゲームファンのための「XNA Game Studio Express」講座

内容については上でほぼ網羅されてるので、それ読めばOKって感じかと。
やっぱりネット周りがごそっと削られてるのが痛い。
残ってるのは証明書関係のルーチンだけってのが、マイクロソフトらしいというか、なんというか……
将来的にはXBOXLiveを通したモジュールは提供されるらしいが、素で何かしら独自に構築したサーバーに接続できないのはなぁ。
ぶっちゃけ、BitTorrentとかがXBOX360で動いたら、ゲーム業界だけでなく、流通やもろもろ含めた業界すべてがかなりやばい感じになりそうなんだけど(笑)

December 13, 2006

XNAGameStudio

さて、どれくらいの代物だろうか。

Game*Spark - : 『XNA Studio Express』正式リリース by Taka

ということで、さっそく DirectX Developer Center: XNA Game Studio Express から、VC#ExpressとXNA一式をダウンロードしてWindowsにインストール。
XBOX360のほうは、実際にWindowsで作成したプログラムを動かすため、マーケットプレイスからXNAをダウンロード。

XNAランチャーを立ち上げてみたら、これがXNACreatorClubに加入して無いと即終了する代物だった(苦笑)
なんで、XNACreatorClubにも加入。(めんどいので1年分払った)
あらためてXNAランチャーを立ち上げ、セットアップを選択。
Windows側へのキーコードを作成し、それをメモってVC#ExpressのTools->OptionsからXNAGameStudioにそのキーを入力する。
このとき、左下のShowAllSettingsにチェックを入れないと、XNAGameStudioが表示されないので注意。
そしたら、XBOX360の方は真ん中のConnectを押して待機させておく。

VC#Expressのほうには、XNAのサンプルがついているので、新規ソリューションから360用のサンプルを選んでビルドし、実行することで自動的に360と接続され、データが転送された後にゲームが起動する仕組み。
もちろん、双方ともに同一LAN内にある必要がある。

実行ファイルが前回と全く同じ場合は、360の方のHDDにキャッシュされてるらしく、データ転送とかはおきないのだが、ソースに変更が無くても、リビルドなどで日時変更が入ると転送が起きてしまう模様。
実行ファイルだけでなく、リソースなんかも再転送になってしまうのがちょっと何かなと思うが、まあこの辺はおいおい修正されていくんじゃないかと。

で、C#なXNAのソースはきっちりと目を通したわけではないが、そこそこ簡単にいじれるようになってるみたいだし、そもそものサンプルテンプレートがきっちりとモジュールわけされているので、それらにじっくり目を通していくことで学習フェーズも取れそうな感じ。
あとはリソース関係かな、特にフォーマットとかコンバートが必要なのかとか、オーサリングツールがどれくらい使える代物なのか、とかとかね。

February 25, 2006

C#

なんかプログラムネタばっか続いてる……


米BorlandがDelphiなどIDE事業を売却、アプリライフサイクル管理分野に注力

とかいう話も出てきたことなので(涙)、Delphi & C++Builder のメインスタイルから、VC#に本格的に移ろうかと。
まあ、そんなわけで、さっくりとオライリー本を購入。

ASIN:487311179X:image

あと、これがAmazon到着待ち。

ASIN:4873110912:image

この辺とかも、そのうち買うかな~。

ASIN:4274065340:image

んでまあ、ざっくりと把握してVC#でほげほげしてみたが、感触としては、

C++をDelphiで煮込み、Jave風の味付けをして、Rubyっぽく盛り付けしました。

そんな感じ(笑)

ポインタが使えないのはDelphiで参照に慣れてるからいいんだけど、ガベージコレクションが入ってくれてる関係で、デストラクタが無いのがスゲー気持ち悪い……
まあ、なんにしても、C#触る前にRuby触っといて良かったかなと(笑)

February 24, 2006

G15 LCDSDK Bitmap

キャラ名を早押しでどうぞ。




sampleにはincludeされて無いだけで、ちゃんとBitmap表示を簡単にやれるclassがあったのを発見。
ちょいちょいといじって表示してみた。
まあ、textとbmp表示できれば、あとはどうとでもなりそうだなー。

February 23, 2006

G15 LCDSDK

思い立った瞬間にやっとく。




AA表示するくらいなら、サンプルコードいじるだけだった。
適当に決めた書式にのっとったテキストファイルからAAを数種類読み込んで、順番に表示するだけという手抜きっぷりだが(笑)
むしろ、VCインストールするほうが時間かかった。orz

今度思い立ったらBMPでも表示するようにするか。
160x43の2値領域って、関数電卓プログラミングを思い出すねぇ……

January 17, 2006

案の定

バグってた。テストしてから実装しろ、俺。orz


PlanetSideStats.infoはUser-Agentがない要求ははねますな。
なんで、open-urlを利用してたのをnet/http&uriに置き換え。
あと、キャッシュファイルが何かの拍子に消えてしまう可能性を考えて、File::exist?するのを追加。(存在チェックしてなかった(爆))

年末年始決算出し尽くし

オブジェクト指向は楽だ。


Ninja Commandoのサイト更新をできるだけしなくて済むように(爆)、年末年始せこせことperl→rubyに書き換えたスクリプトを入れる。
screenshot はともかくアップロードさえすればいいように、Dir::globで取ってくるようにしたんだが、この先、画像が増えたら重いかもしれん……

当初、全然予定に無かった outfit status やら member status は、ふらっと PlanetSideStats を覗いたら、実は .info の方で XML データを出してくれてることを知ってしまったので。orz
もともと RSS のフィードを処理するために作ってあったクラスから継承して突貫工事してみた。
あんまり意味は無いが、リンク先海外は広告宣伝とか重いのも好きじゃないし。(SoEが一番重くて嫌だが(笑))
ちなみに、PlanetSideStats は12時間ごとにデータ更新しているようなんで、こっちはキャッシュの生存時間を24時間にしてある。
まあ、反映されてすぐを見たいというようなこともないだろうということで。
ところで、worldIdって、1=Werner 2,4=Emerald 3,5=Markov であってたっけ?(爆)

ついでに作った2chPSスレのピックアップも同様。
大規模MMOのスレ一覧を取得して「PlanetSide」に引っかかるスレを拾ってきているので、複数スレが存在すれば、複数拾ってくる……はず(苦笑)

関係ない話ですが、ひさびさにNinjaCommandoに新人が!
sonobaさんの知り合いで、やはりMirageさんところで存在を知った感じ?
BF2経験者ということなんで、すぐにPlanetSideにも慣れることでしょう(笑)

November 07, 2005

Winnyの技術

ASIN:4756145485:image


何気に近くの本屋に置いてあったので購入。
まだざっとしか見てませんが、P2P技術についてだけでなく、大規模に何かシステムを構築する際の心構え的な技術についても載っていて、なかなかいい本だと。
大規模ものは小規模テストの時点では起こりえない問題が発生し、それが確実にシステムの致命傷たる場合が多い。
加えて、その大規模を利用するユーザーが、必ずしも正しい使い方をしない(故意ではなくても)ということを肝に銘じておかねばならんというあたりかな。

それにしても、ny2でC++Builderに移行したのは、UIの設計の手軽さが目的じゃなく、タスク処理の簡素化のためだったのなー。
無理してスレッディングすることで、不必要なまでのチューニングを要し、結果として不安定なものが出来上がってしまうようでは本末転倒だということか。

October 20, 2005

Ruby

く~も~り~ガ~ラスの向こうは雨の街~♪(古)


Rubyを学び始めた。
「Perlライクな感じ」と思っていたけれど、全然違うわ、これ。
オブジェクト指向バンザーイ、な俺的にはすごくいいんだけど、ダメなひとはとことんダメかもしれん。
なんといっても、
10.times { |i|
  print i
}

が動くあたりが素晴らしい(笑)

クラス1つにつき1ファイルがすっきりする感じで、.hと.c(.cpp)になるC系より、.pasに集約されるPascal系なのも自分好み。
マシンパワーがどんどん上がってくると、これくらいの言語が将来的な主流になって、さらにいけば、デザインパターンの配置だけでプログラミング終わったりしてな(笑)

April 01, 2005

yacc 凡ミス

初歩的なミスで1時間ぐらい悩んだ……orz

 expr    : expr '+' expr {$$ = $1 + $3;}
         | expr '-' expr {$$ = $1 - $3;}
         | expr '*' expr {$$ = $1 * $3;}
         | expr '/' expr {$$ = $1 / $3;}
         | '(' expr ')'  {$$ = $2;}
         | '-' expr  %prec UMINUS {$$ = - $2;}
         | NUMBER
         ;
↑四則演算がreduce/reduceでうまく行かず、はまること1時間。
ふと上のほう見たら……

 function: FUNC expr expr { func($2,$3); }

とか何の疑問も持たずに書いていた俺がいる。
これじゃ、出来上がったスクリプトの方に func 3 -5 とか書いたら混乱するやん……


つまりは、
 function: FUNC expr ',' expr { func($2,$4); }

とカンマを入れておかないと、先ほどの部分で「3 -5」を「3 - 5」と区別がつかなくなるわけだ。
(というか、関数の前後に ( ) ぐらいつけろよ、俺)


yacc/lexに限ったことじゃないが、俺的プログラムの面白さは再帰に尽きる。
それこそ、一歩間違えばスタックを一瞬で破壊してくれるわけだが(爆)、たった数行の関数の再帰呼び出しが見事な結果を導くことがある。
この辺とかのフラクタル図形なんかが目に見えて典型的だ。
まだしばらくは先だろうが、Cellコンピューティングが視野に入ってくるにつれ、深~~~い分散型の再帰がとんでもない速度で動いてくれそうで楽しみだったりする。

March 23, 2005

問題

あるクラスのメンバ関数を、そのクラスのメンバ変数であるクラスのメンバ変数の関数ポインタに割り当てるにはどうすればよいか?
各クラス・メンバ関数・メンバ変数を適当に定義し、C++にて具体的に記述せよ。
ただし、メンバ関数はそのクラスのメンバ変数を利用するため、静的メンバ関数にはできないものとする。


ダメプログラマーなので、理解はできても記述できねー(涙)

February 15, 2005

PHP

なるほどな言語。


ファイルアクセスに相当するものは、ほぼ全てMySQLへ。
文法はPerlとC++のいいとこ取りで、HTMLと同居可能。
なんというか、「多分、perlもC++もMySQLも知ってる人間は、こうなってると楽だよな」という思想の基に作られた言語じゃないかと。
うーん、詳しくは知らないが、これってRubyの存在意味がなくならないか?

で、ちょろっと触ってみて、おおむね理解できた。
こりゃ確かに、Linux、MySQL、Apache、PHPで簡単にDBを操作するWebページが作れるわけだ。
ただ、どうしても動的にページを生成することになるので「アクセス集中には弱いんだろうな」と思う。
MySQLのちょっぱやさに任せているのかもしれないが、逆にPHPが書ける人間ならlibmysqlとC++にすぐ変更できそうで、やはり「なるほど」な言語である。

February 09, 2005

hosts

世間的にはほりえもんのニッポン放送株取得で大盛り上がりですが、それは多くの人が語るだろうから俺はパス。
だって、俺、フジテレビ見てねーし。
NHKとテレ東ぐらい……プリキュアはテレ朝だっけ。
ああ、ちゃんとNHKには受信料払ってますよ。


それはともかく、今日の驚きはこれ。

OSのhostsファイルを書き換えてしまう新手のフィッシング詐欺に注意

以下、Continueへ。

続きを読む "hosts" »

December 23, 2004

コメントスパム対策

プログラムってほどじゃないんだけど。

#ran begin for comment spam
if($ENV{'HTTP_USER_AGENT'} !~ "Firefox" ){
   if($ENV{'HTTP_REFERER'} !~ "ranpub.com" ){
       print "Content-Type: text/html\n\n";
       print "Sorry, No Firefox and No HTTP_REFERER can't comment this blog.</br>";
       print "<h1>Your Access Infomation</h1>\n";
       print "<ul>\n";
       print "<li>http_user_agent = $ENV{'HTTP_USER_AGENT'}\n";
       print "<li>remote_host = $ENV{'REMOTE_HOST'}\n";
       print "</ul>\n";
       exit;
   }
}

mt-comments.cgiの頭の方に入れる。
リファラ確認で対応。
と思ったんだけど「Firefoxはデフォで隠すよねー」ってことで除外してる(爆)
10Gくらいのデータ返してやっても良いんだが(笑)

October 21, 2004

yacc/lex

わかり始めると楽しい言語。


先週から仕事の都合で大学ん時の演習以来、久々に触ってみてたわけだが再理解するのに3日も費やした。
というか、初日さっぱり忘れてて、何をどういう理屈で動いているのかつかむので精一杯。
二日目にやっとこ書式周りと動作原理を思い出し、三日目に構文解析を頭で仮組みできるレベルに復帰。
で、そこまで来てやっと試し書きが開始できたわけだが、正規表現やらマッチング順やらではまること数度。
しかも、C++Builderと連携させるあたりでいろいろごちゃごちゃあったりと、それだけで先週は終了。

今週からやっとこ目的のコーディングに着手し、今日になってやっとこ「まあ、これくらいなら実用だろう」というとこまで到達。
スクリプトである以上、条件分岐とループぐらいはできないとな……。
あと、もう少し綺麗なソースにしたいもんだが……そんな時間はあるんだろうか?

そういえば「プログラムを組めるか組めないか?」の基準として「yacc/lexの理解度」という指標はどうだろうという話をしたような記憶がある。
確かにこれを「知らない」「知ってるけど触ったことない」「昔触ってたけど、今はダメかも」「今もバリバリできます」で、結構レベル測れるんじゃないかな、と思う。
俺は「知ってるけど触ったことない」と「昔触ってたけど、今はダメかも」の間くらいだな(苦笑)

September 06, 2004

GNO2 Bug

……




えー、とりあえずですな。
  1. リストの終端確認
  2. 中身のNULLチェック
  3. 数値の有効範囲チェック

それぐらいはしようよ、な?

August 04, 2004

MySQLとPostgreSQL

どっちがって言われても、用途によるとしか。


MySQLをいったんおいて、PostgreSQLへ。
libmsql.dllをラッピングしてあるオブジェクトをコピってlibpq.dll用に作り変え。
PostgreSQLの設定も含め、3時間ほどで動作。

んーーー、安定してるが速度は出ないな、PostgreSQL。
まあまだPostgreSQLとかLinuxの設定とかをいろいろといじってみないと最終的な結論は出ないわけだが、さっくりといじれる範囲では速度はやはりMySQLに分がある模様。

あと、アプリ自体の非効率な部分ももう少しいじらないとダメだな、やっぱ。
ただ、なりふりかまわず非同期化したところで、Queryの前後関係が破綻すると意味無いしなぁ。

July 28, 2004

MySQLを試す

すごいな、これ。


MySQLを試したのだが、しかもWindows版とか邪道っぽいのだが、それでもちょっと感動してしまった。
なんにしても速いのだ。
データの安全性とか保守性とかに関しては全然試してないわけで、そういった意味で厳密にDBとしての評価というわけではないのであしからず。

C++からの利用はライブラリ libmysql.lib を使うのが楽。
ヘッダを軽くラッピングしてしまえば、あとはC++Builderでたいがいのことはできる。
さて、どのくらいまでポテンシャルがあるのかしらん。

January 28, 2004

メモリからDLLをロード

昨日の日記に書いた「ファイルじゃなくメモリからDLLをロードできるか?」な話が一応解決というか……

結論:俺じゃ無理(爆)

いろいろと調べた結果、LoadLibraryはSearchPathとOpenFileを内部で呼んでいるようなので、やっぱりファイルシステムに対してしか動いてくれないようです。

で、メモリマップドファイルはつまるところ「ファイルっぽい」って話で、ファイルシステムに対する管轄じゃないわけで……
更に下位なAPIは存在しないようで、そうなると後はアセンブラレベル? 無理無理……(苦笑)

どこか隠しのディレクトリに使用する間はロックして書いて、いらなくなったら消すぐらいしかなさそうですね。うーん……