改造版Sage1.3.6に新機能を追加しました

■ 自作ソフト Posted by ひぐま (Higmmer) on 2006-09-29 at 05:13:55

こちらで公開している改造版Sage 1.3.6をバージョンアップし、幾つかの不具合修正と新機能追加を行いました。現在、こちらのエントリから最新版がダウンロードできます。

今回の変更内容は以下の通りです。

1.「HTMLタグを許可する」がオフの時の"&"の解釈をより厳密にした
 (「Love & Peace」などが正しく変換されます)

2.RSS/Atomフィードにtitleやlink要素がないとき、
 エラーが起こったり項目リストのタイトルが文字化けする現象を修正
 (Sage 1.3.6でもともとあった不具合)

3.RSSフィードの<link>~</link>の中に不正な文字列を混入
 させてエラーを起こすことができたのを修正

4.Atomの<link rel="enclosure" ...>で指定されているenclosureファイルに対応
 (実際に使われているのはまだ見たことありませんが)

5.新たに"sage.enclosure_ignore_filetypes"の機能を追加

新機能である"sage.enclosure_ignore_filetypes"については公開ページを参照して下さい。

改造版Sage1.3.6に見つかった幾つかの不具合を修正しました

■ 自作ソフト Posted by ひぐま (Higmmer) on 2006-09-27 at 02:49:53

◆共有テーマ: Firefox [コンピュータ]

昨日公開した改造版Sage 1.3.6(スクリプトインジェクション対策版)にいくつか不具合が見つかりましたので修正しました。現在、こちらのエントリから新しいファイルがダウンロードできます。既にダウンロードした方は、念のため、最新版に更新されることをおすすめします。

今回の修正内容は以下の通りです。

1.「HTMLタグを許可する」がオフの時、
  ・不正な"&lt"(セミコロン無し)という記述が"<"等に変換されてしまう
  ・単体の"&"がそのまま出力されてしまう
  ・エラー発生時にHTML文字列がそのまま出力される可能性がある

2.「HTMLタグを許可する」がオンの時、
  ・"sage.filter_accept_tags"に属性名を大文字で記述すると認識されない
  ・エラー発生時のメッセージが"undefined"となってしまう可能性がある

3.「HTMLタグを許可する」がオンの時、
  ・<H1>などの数字を含むタグ名が指定できない
  ・入力HTMLに"<DIV></DIV>"という記述があると"<DIV/>"と変換され、
   Firefoxでのレンダリング結果がおかしくなる

>>続きを読む

改造版Sage 1.3.6(スクリプトインジェクション対策版)ができたっぽい

■ 自作ソフト Posted by ひぐま (Higmmer) on 2006-09-26 at 05:58:09

◆共有テーマ: Firefox [コンピュータ]

新バージョンの公開に伴い、このエントリの内容はこちらに全面的に移行しました。

>>続きを読む

Firefox/Sageでポッドキャストを聴く方法

■ ネット Posted by ひぐま (Higmmer) on 2006-09-23 at 23:00:14

◆共有テーマ: Firefox [コンピュータ]

新バージョンの公開に伴い、このエントリの内容はこちらに全面的に移行しました。

PS3値下げで始まるゲーム業界崩壊の序曲

■ ゲーム Posted by ひぐま (Higmmer) on 2006-09-22 at 18:50:29

◆共有テーマ: 日記・雑記 [ゲーム]

……なんて、ちょっと狙って扇動的なタイトルを付けてしまいましたが、今回の発表を知って最初に思い浮かんだのが何故かこの言葉だったのだから仕方がない(笑)。

しかし、任天堂は2年前の空白の17分間のリベンジを見事にやられてしまいましたね。今回は完全に、サプライズはSCEIのものとなりました。もともとの価格が高すぎたために、5万円弱という決して安くはない価格にも関わらずお買い得だと思ってしまうマジック。ゲーム機能を抜きにしてBDプレイヤーのためだけに買うという選択肢も十分ありになってきました(買いませんが)。

本来7万円でも赤字だと言われていただけに、まさに赤字覚悟の出血大サービスといったところでしょうか。「赤字でハードを売るのは健全でない」と言っていた任天堂ですが、対抗策を打たないわけにはいかなくなってきました。本体価格の改定はないにせよ、リモコンをもう1本セットにするとか、VC用のWiiポイントを2000ポイントくらい同梱して売るとかしないとまずいような気がするのですが。

>>続きを読む

ひっそりと更新

■ プログラム Posted by ひぐま (Higmmer) on 2006-09-16 at 04:00:12

こちらにアップしていたテンプレートプロジェクト(SimpleXNAGame)をひっそりと更新しました。

更新内容は以下の通り。

  • WindowsFont.MeasureText()のスペルミス修正
  • Game.Exitingイベントハンドラ内にリソース解放処理追加
  • AssemblyInfo.cs内のGUIDが毎回ランダムになるように修正
  • その他細かいコメント修正

Wiiは12月2日発売、25,000円

■ ゲーム Posted by ひぐま (Higmmer) on 2006-09-14 at 18:58:05

◆共有テーマ: Wii(ウィー)総合 [ゲーム]

プレスリリースより。

う~ん、なるほど……。個人的には(期待も込めて)思い切って19,800円で勝負に出るのかと予想していたのですが、まぁ過去のハードの例からすれば順当といえば順当な価格帯に落ち着きましたね。発売日に関してもサプライズは無し、と。北米の方が1ヶ月早くクリスマス商戦が訪れるというのは勿論、国内でのPS3の初期出荷が10万台となってしまって暫くは品薄状態が続くことが確実な情勢となりましたから、3週間のアドバンテージを与えたところでどうってことないといったところでしょうか。

ですが、ある意味「妥当」な価格となってしまったために任天堂も磐石とはいかなくなってしまいました。PS3の62,790円(劣化版)と比べれば当然安いわけですが、11月2日にはXbox 360の廉価モデルが29,800円で発売され、Wiiとわずか5000円しか差がなくなります。多人数プレイを売りにするWiiでは追加リモコンがほぼ必須と考えると両者の価格差は更に小さくなり、割安感という言葉はWiiよりもむしろXbox 360の方がふさわしく思えてきます。実際はユーザー層が全く異なるので競合することはないと思いますが…。

Wiiの公式サイトコンセプトページを見ると、今回は「Wiiチャンネル」という機能を前面に押し出しているようです。これは何かというとつまりはWii上で天気予報やニュース、或いはインターネットにアクセスすることができる機能ということで、それ自体は最近のデジタルTVであればごく当たり前についているようなもので特に新規性はありません。たださすがゲーム機ということでこのムービーのようにグラフィック能力を活かした軽快な操作ができるところは画期的ですが、これで毎日電源を入れる動機付けになるかというと正直う~ん、という感じです。

任天堂としては一家に一台リビングにあるテレビに繋がせたいのでしょう。ここのインタビューにもある通り、いかに家族全員に抵抗感無く触らせることができるかという狙いは分かるのですが、今や一人に一台テレビがある時代です。自室にあるパソコンでテレビを見ている人にとっては天気予報が見れますといっても何をか謂わんやでしょうし、或いは未だに朝から晩まで韓国ドラマが映し出されているお母さんのテレビからチャンネルを奪うのは相当に困難な挑戦だと思います。ただ個人的に似顔絵チャンネルには大きな可能性を感じました。こういったゲーム機ならではのチャンネルをいかに充実させるかがひとつの勝負の鍵となりそうです。

もうひとつの鍵はWiiが持つ「軽さ」をいかにアピールするかだと思います。HDに対応しない時点で本格的な情報端末としての用途は望むべくもないわけで、その代わりすぐ起動していつでも電源を切れるという気軽さ、直感的なリモコン操作の軽快さといったアドバンテージを一般層にまで浸透させることができるかどうか。そのためには当然、Touch! DSキャンペーンで見せたのと同じく体験会や店頭/街頭イベントなどの一大キャンペーンを展開するものと思われます。とはいえ、今やiPodでさえテレビ画面を狙っている情勢ですし、そう一筋縄ではいかないと思いますが……。

まぁ自分にとってはゼルダがローンチな時点で、即買い決定なわけですが(^^;

Simple Game Framework on XNA 公開!

■ プログラム Posted by ひぐま (Higmmer) on 2006-09-09 at 03:54:10

◆共有テーマ: ゲーム製作 関連 [ゲーム]

前回はXNAの中身を追いかけることでGraphicsDeviceにまつわるイベントの発生順序・タイミングを明らかにした上で正しいイベントハンドリングの方法を検討しました。実際のコード例も書きましたが、それをもう少し整理した上で後から拡張しやすいような形に修正し、テンプレート化してみました。

  • SimpleXNAGame.zip (→更新版あり:こちらへどうぞ)

上記ファイルを右クリック→拡張子を".zip"に変えてダウンロードし、マイドキュメントの"Visual Studio 2005\Templates\ProjectTemplates"に保存して下さい(解凍しなくてOK)。するとVisual C# Expressの"新しいプロジェクトを開く"のマイテンプレートに「Simple Game (XNA)」というアイテムが追加されます。これを選んで適当なプロジェクト名を付けて開けば準備完了。あとは煮るなり焼くなりお好きなようにどうぞ(^^)。

何となく勢いで「Simple Game Framework」なんて言ってしまいましたがゲーム作りに必要な機能は何ひとつありません(´・ω・`)ガッカリ。あ、一応ここで紹介したWindowsFontクラスの改良版を組み込んでいますので文字を出すくらいはできます。もちろん初期化やリソース管理に必要なイベントハンドラは一通り登録した状態となっていますのでちょっとだけラクできるはずです。

コードの見通しが立ちやすいように不要な部分は折りたためるようにしておきました(下図参照)。

Game1.csを開いたところ

ここから実際のゲームプログラムを組んでいくにあたっては、

  1. 「リソース作成&解放」
  2. 「ゲーム初期化&終了処理」
  3. 「ゲーム状態更新&画面描画」

をそれぞれ開いて出現するメソッドの中に必要な処理を書いていけばOKです。最初の状態でビルドするとフレームカウンタとフレームレートを表示するプログラムができます。トレース出力を開いておけばイベントが発生する状況やリソース確保のタイミングなどを見ることもできますので参考まで。

実行したところ

尚、オマケ機能としてウィンドウ最小化からの復帰やリサイズ時にフォーカスが消失する問題に対応するコードも埋めておきました。これを行っているのは以下の箇所です(見易いように変更してます)。

private void graphics_DeviceResetting(object sender, EventArgs e) { // ウィンドウのフォーカスが失われるバグ(?)対策 Form form = (Form)Form.FromHandle(Window.Handle); form.BringToFront(); }

本当はForm.ClientSizeChangedを拾う方が正しいんでしょうけど面倒だったので(ぉ。ただ、これ以外にもフルスクリーンにまつわる種々のバグ(Alt+Tabで変になるとか)が未対策ですが、それを修正するのは各自の課題ということにさせて下さい(単なる手抜きです)。

XNA Game Studio Expressで遊んでいるうちに頭が痛くなってきた(2)

■ プログラム Posted by ひぐま (Higmmer) on 2006-09-08 at 09:25:59

◆共有テーマ: ゲーム製作 関連 [ゲーム]

さて、そもそもXNAフレームワークでゲームプログラムが実行されるとき、内部では一体どのような順番で処理が行われているのでしょうか? そして、リソースの初期化/再作成は一体どのタイミングで行えばいいのでしょう?? ざっと考えられるだけでもこれだけあります。正直多すぎてワケ分かりません┐(´ー`)┌

  • Gameクラスのコンストラクタ
  • Game.OnStartingメソッド
  • Game.Startingイベント
  • GraphicsComponent.DeviceCreatedイベント
  • GraphicsComponent.DeviceResettingイベント
  • GraphicsComponent.DeviceResetイベント
  • GraphicsComponent.DeviceDisposingイベント
  • GraphicsDevice.DeviceResettingイベント
  • GraphicsDevice.DeviceResetイベント
  • GraphicsDevice.DeviceLostイベント
  • GraphicsDevice.Disposingイベント

XNAのチュートリアル(Getting Started with XNA)ではOnStartingメソッドとGraphicsDevice.ResetイベントハンドラでLoadResourcesメソッドを呼んでいますし、「Spacewar Starter Kit」ではコンストラクタ、Startingイベントハンドラ、そしてDeviceCreatedイベントハンドラのそれぞれで初期化処理を行っているようです。両方ともMicrosoft提供なのに全く一貫性がありません。

というわけで、リフレクションを駆使(?)してXNAの中を追っかけてみた結果、以下の順番で処理が行われていることが分かりました。MyGameクラスが自分が作成したGameクラスだとして…。

>>続きを読む

XNA Game Studio Expressで遊んでいるうちに頭が痛くなってきた(1)

■ プログラム Posted by ひぐま (Higmmer) on 2006-09-07 at 23:35:37

ここんとこ国内外のゲームプログラミング界隈でXNAの話題が盛り上がっているようなので色々見て回っているのですが、早くも遊べるゲームを作りましたという人がちらほらいらっしゃるようで敬服させられっぱなしです。実際は以前からManaged DirextXを使っていた方が多いようですが、それでも始めて2~3日で遊べる状態のものを作り上げるというのはすごいと思います。

そんな自分はというと、完璧なものを作ろうとするあまり細かいところにばかり目が行ってしまって、種々の資料に当たったりXNAフォーラムを覗いたり試行錯誤したりの連続で遅々として作業が進みません。例を挙げるとリソースの作成はどのイベントハンドラで行うのが正しいのかとか、デバイス消失/破棄時の正しい処理方法とか、その際のリソースの再作成はどのように行うべきなのかとか……。主にC#(というか.NET)のGC機構とDirectX特有の仕様との折り合いをどうつけるかという問題なのですが。

>>続きを読む

XNA FrameworkでWindowsフォントを表示する

■ プログラム Posted by ひぐま (Higmmer) on 2006-09-06 at 00:47:38

◆共有テーマ: ゲーム製作 関連 [ゲーム]

ここ数日XNA Game Studio Expressで遊んでいるのですが、デバッグしたり動作確認したりするのに何かと必要な文字列を表示するクラスが無かったので作ってみました。本当は必要なフォントを予めビットマップ(テクスチャ)化して持っておくべき(*)なんでしょうが、使う文字を全て列挙するのも大変なので今回はWindowsに入っているフォントからSystem.Drawingを使って動的に生成することにしました。必然的にWindows専用になります(´・ω・`)

(*) それを行うクラスが必要な方はこちらにあるBitmapFontクラスを参考にして下さい。

スクリーンショットはこんな感じ。

スクリーンショット - XNA/WindowsFontSample
  • WindowsFontSample.zip (公開終了:必要ならこちらを使って下さい)

上記ファイルを右クリック→拡張子をzipに変えて保存し、中に入っているWindowsFont.csを自分のプロジェクトに追加して下さい。System.DrawingとSystem.Windows.Formsへの参照を追加するのをお忘れなく。

基本的な使い方は次の通り。

WindowsFont winfont = new WindowsFont(graphics, "MS ゴシック", 14); winfont.DrawText(0, 0, Color.White, "ほげほげ");

詳しい使い方はソースコードを参照して下さい。

尚、XNAの次のリリースではフォントを扱うクラスが提供されるらしいです。

>>続きを読む