Archive for the 'fuwafuwaBlog' Category

原始的でありながら複雑なインベーダーゲーム

また、ここしばらく静かだったわけですが。
それもそのはずで、裏でしこしこと小さなゲームを作っていたのですよ。それについてはなんとか完成したのでこちらの「最萌支援奏」 (https://www.fumi2kick.com/tohomoe/) を参照して下さい。
まあ、こういうときサイトの更新がぺっとりと止まり如何に自分が並行作業できない人間かというのを痛感する次第でもあります(笑)。
あ、「また東方最萌トーナメントかよ」というツッコミは無しの方向でお願いします。

このゲームも毎度の事でオープンソースだし、趣味で作った小さなプログラムなのですが
、今回はソースだけでなく Doxygen によるドキュメントと UML 表記のクラス図が付いていたりします。
実はこっちの方が今回の制作の意図だったりするのですな。
ゲーム自体はインベーダーゲームクローンで、それにちょっとした弾幕が付いたというアレンジがなされています。とはいえやっぱりインベーダーゲームなので、構成要素はシンプルです。
なのでモデリングの規模として適当で、ゲームを UML 形式のモデリング手法を用いて、設計するといったサンプルにもってこいなのではないかと考えたわけですよ。
まあ、インベーダーゲームってゲームの原点であるくせに面倒な構成だったりもするのですが、これより簡単だとあまり解説する意味もないのでそういう意味でも丁度良いところでしょう。

ゲームを UML でモデリングしよう、という試みはいくつも google でひっかかりますし、良質な解説もたくさん見受けられます。
慶応大学にあった「オブジェクト指向分析入門」に置いてある「ユースケースの書き方(PDF)」 の中では実際にインベーダーゲームを題材にモデリングの解説をしていて、そのクラス図もなかなか良いところを突いていると思う。
しかし、これらの多くが UML 側からのアプローチでゲーム制作の現場からではないのですな。
なので、実際にゲーム開発をするにあたってクラスレベルでのオブジェクトモデリングを行い、それが完了してからコードを書き始めてみたのです。まあ、途中でメンバやメソッドを追加削除したりはしましたがクラスと構成は最初に書いたクラス図を維持したまま完成に至っています。
何はともあれ動いているゲームとソースコードがあるというのは大きな説得力になるのではないでしょうかね。

しかし、インベーダーゲームでこれくらいの規模になるのだから、今時のゲームを作ることを考えるとぞっとしますな。
コレより大きいと、さらに大きなモジュール単位での取りまとめとそのモジュールの管理になっていくので、モデリング手法としてはそんなに変化はないのですが。

ちなみに本業の方ではシーケンス図を多用かつ重視するのですが、今回シーケンス図は用いませんでした。
理由としては、ゲームは全てのオブジェクトが平行で動くのでシーケンス図として表記しにくいことと、もし書いたとしても多様過ぎて凄い数書かないとならないはめに陥るであろうといった所から。
シーケンス図が有効なのは input と output が明確な時と、モジュールが多く連携が複雑なとき、大きなステートの中の小さな流れを一つ説明する時ではないかと思うのです。

まあ、私自身が UML モデリングの勉強中なので線の引き方とか描き方とか怪しいところ満載ですがそれはご愛敬ということで。

UML にこだわる必要はないのだけれども、なんでモデリングなのかというとオープンソースに設計力をを持ち込み、設計の段階からオープンにしていくという目論見があるのですがそれはまた別の場にて。

—–



明日(11日)は休みなので

思いっきり金曜日気分で居て BS-i の「AIR」を見逃した…… orz
—–



フリーウェアで DirectX ゲームを開発するには

ちと話題的毛色が違うけれども俺メモとして。

ふと思い立ったので DirectX ベースのゲーム開発が出来る程度の開発環境(コンパイラとか)を GCC ベースでそろえられるのかを調べてみる事に。
Visual C++ .NET や Borland C++ Builder だのはちゃんと所有していたりするのだが、UNIX 系の人間としてはコマンドラインから make と打ちたいのです。
というか、PC 変えてから Visual C++ をインストールしていなくてその辺もめんどくさかったので。(Cygwin で GCC は必須項目として入っている不思議)

フリーでゲームが開発できる環境を目指すけれども、初心者向けの内容じゃないので注意。

○開発ライブラリ
DirectX 直接でもできるけどもちょっと楽するために既存のライブラリを物色。DirectX 系の入門記事として良く拝見している「TWIN TAIL LOVERS」さんとこの "Luna" を選択。
あとはこいつのインストール方法参照(まて
http://www.twin-tail.jp/

○コンパイラ
Cygwin UNIX like environment と GCC3.3(G++)
あと GNU make とかとか。
最近の Cygwin は MinGW 用の libstdc++ とか入っているので -no-cygwin による Win アプリ開発も容易になって良いね。
http://www.cygwin.com/

○DirectX SDK
本来は Microsoft から SDK を入手(無償)するんだけれども、それもいらない。(でも DirectX のマニュアルとか欲しい人は入手しておいたほうが良い)
というか、ライブラリの形式が違うのでそのまま GCC で使えない。
なので Microsoft の SDK を GCC (というか COFF)形式に変換したものを以下から入手する。
http://www.g-productions.net/
DirectX90c.DevPak というのがそれ。
拡張子に面食らうが中身は .tar.bz2 なんで適時解凍。

GUI がなきゃイヤだという人は DEV-C++ を用意。個人的に使わないので解説できない、Luna のところに説明があるのでそっちを参照。

適当なディレクトリに展開。
パスの指定は Makefile でなんとかする(を
Cygwin の w32api だと winnls.h だが Luna は winnls32.h を要求してくるのではまる。winnls.h を winnls32.h とシンボリックリンク張って逃げ回避。

あとは Makefile を手書き。
Makefile さえ書けてしまえば後は Meadow とコマンドラインでごりごりと開発可能。
個人的にはこっちのほうが気楽でいいや。

なんだ割と容易に開発環境揃うもんだな。

—–



同じ阿呆なら踊らにゃソンソン?

しかしあれだ、いい加減「東方最萌」にかまけすぎて他のことができなくなっている状態はなんとかしないとなあ。
掲示板に張り付いて観戦している程度の能力ではあるが。

最萌トーナメントには「支援」というものが存在する。
通常はお気に入りのキャラに投票するだけなのだが、気が利いた投票になると自分はこのキャラのどこが好きなのだとか語りをつけるようになる。同陣営としてはその熱い思いにうなづきながら票の行方を見守ると共に陣営内の結束力を高めていく。
そこに登場するのが「支援」だ。
主に自分たちで描いた絵、SSと呼ばれるショートノベルで、どちらも好きなキャラをさらに掘り下げるために書かれている。たまに音楽データまで投入されるあたりは東方プロジェクトならではなのかもしれない。
こういった支援で「こういうキャラなんですよ」ということをアピールし、それまでキャラをよく知らなかった人や、いまいちどっちに入れかねている人、もしくは試合のカードに興味が無くて傍観している人、そういった浮動票を自分の陣営に引き込もうという手段である。

どうせだからとちと力を抜いた落書きっぽいものを一枚さらさらと書いて支援投入してみた。
そしたらその一時間半ほど後に、その落書きに描かれているシチュエーションを元にした SS が他の人の手によって投入された。これにはちとびっくりする。
その絵からインスピレーションを受けてどうしても物語を書きたくなったとのことだが、参加者同士が影響を与えあって支援を作り続けていくのは大変に興味深い。
その後も見ていたら、SS に別の人が挿絵を付けていたりとかして楽しく盛り上がっている。とてもコモンドメインなコンテンツ空間である。

最も、そういった楽しさがあることがわかっているので再萌を覗いているんだけれどもね。
ここ最近で久々に再萌が楽しめるほど執心していたコンテンツが東方以外に無くて、なかなか参加する機会がなかったのですよ。
—–



物見遊山

Yahoo! 掲示板の「株式」→「松下電機」あたりを覗いてみる。
やあ、盛り上がっていますね。

「東方最萌トーナメント」ほどじゃないけれどね。
というか、あそこは百鬼夜行だ。
—–



Macが届いたら真っ先にやること

てなわけで Macmini (G4-1.2GHz,256MB,40GB の最小構成に bluetooth だけ追加)が届いた。
実のところこれで MacOSX マシン 3台目だったりもするのだけれども。

宅配便の段ボールが意外と大きくて「うーむインパクト無いなあ」と思っいつつ開けたら、梱包材の中に二回りちんまい本体の箱が入っている。ステージでジョブスが「うぃー、おみやげ買ってきたぞぉ」といった風情で手に提げていた箱、アレである。
それを開けると緩衝材の中にさらに一回りちっちゃい Macmini が!
おまえはマトリョーシカか! と思わず心の中でツッコミを入れる。
しかし、マニュアル類が全て 12cm サイズになっているのはちとどうだろう。まあ、読まないんで問題ないけれども(マテ

で、繋いで起動する事がわかったら真っ先にすることは何か?
MacOSX の再インストールである。
なんでかというと、標準インストール状態では X11 が入っていないからなのね。XCode も入っていないんだけれども、これはインストールディスクにインストーラが置いてあるのでそこからインストールすればよい。
X11 はバンドルアプリケーション扱いなので、インストール時のアプリケーション選択で追加するしかないのだ。
まあ、再インストールといっても全消去のクリーンナップリカバリーでなくて上書きアップデートで良いのでそんなに大事でもないのだけれども。

Apple の製品を買うたびに気になっているんだけれども、緩衝材に発泡スチロール使われているのがイマイチ。
すでに国内企業では段ボールオンリーで緩衝構造を取る所ばかりであるので余計に気になってしょうがない。海外企業でも HP は段ボールだったりするのだけれども。
この発泡スチロールの白さが Apple クオリティだったりするのでしょか。うーん。
—–



PSPでエロゲのデモムービ

「ロール」というソフトメーカーで成人向け美少女ソフト(ぶっちゃけエロゲー)「おしかけおさなづま^3」というタイトルのデモムービーを配布している。
それ自体は通常的な光景なのだが、なぜか「PSP 向け」ってのまで置いてあるのだな。

タイミング的にうまいよなー。
なんとなく試しに PSP へ持って行って見ちゃったもんな。

魚肉ん氏の絵を久々に見た気がする。
—–



どかべん発送

注文していた Mac mini が発送されたらしい。
どこの国から発送されたのか不明だけど、29日着ってのは最長の日付らしい。
早めに届いている人がいるらしいけれども、というのはそういうことの様だ。

しかし、先日使おうと思ったら Bluetooth マウスがうんともすんとも言わなくなっていた。壊れたのかなー。
Mac mini で使おうと思っていたのに。
—–



もじら・ろご・ぷろじぇくと

1/14 の記事で Bart Decrem からメールが来ていた件でそのメールに書かれているサイトが既に立ち上がっていることを知りようやっと意味を理解した。
何がやりたいのかが見えなかったので、メールの意味を誤解していたよ。
(メールに URL 書いてくれないんだもんな)

てなわけで "Mozilla Community wiki" が始動してます。
何のサイトかというと Mozilla のアプリケーション群を「広めるためのネタ」を集めていこうというものらしい。

それだけ聞くと "Spread Firefox" を思い出すところだけれども、ちょいと違う。あそこは「どうやったら Firefox を広められるもんかね」「こんなのはどうだ?」とあまり役に立たない話を交わして楽しむコミュニティなんですな。Blog が中心なんで話がガンガン流れる。
「Firefox のためにこんなのを作ったぜブラザー!」と見せても悲しいかな Blog なのですぐに埋もれてしまう。
だから、リソースを集めておける「場所」が必要だったんだな。
mozilla.org は開発者しかいないから、そういうところとは別にユーザーが布教活動のために使えるロゴリソースが。
裏には public に使える logo をみんなで作って share しようぜというオープンソース活動的な信念があるっぽいですが。Mozilla という単語を商標登録化してしまったような事を Logo に行いたくないようで。

今のところあるのは material(壁紙、ロゴ素材)、標準レター(各団体向けに「Mozillaを使った方が良いと思いますっ!」と送るための標準的なメールテンプレート)なんてところ。標準レターとか「なんだこりゃ」と思ってしまったが。
そしてそれと同じくらいの扱いで「Mozillaたん」のページが存在(復活)している。

要するに先の Bart Decrem からのメールは「新しいサイトで Mozilla Manga-art and Artist をがんがん紹介してくれ!!」という要請だったのだな。
てなわけで、みんなもガンガン Firefox たんを書いて "Mozilla Community wiki" に発表&シェアしよう!!
もしくはこれはという Mozilla娘画をみつけたらためらいなく投稿しよう!!そうしよう!!

ちなみに昨日、Firefox1.0 は 20,000,000 ダウンロードを突破したそうです。
Wow!

—–



jpegbook の Mac 版

PSP でテキストを読むために、テキストが書かれた画像ファイルを生成するといったツールである拙作の jpegbook ですが、これがなかなかのポテンヒット(微妙)で多くの人に見てもらえてます。
(使われているかどうかまでは不明)
そのお礼というわけでもないのですが、MacOSX 版も作成して公開開始しましたー。

男は黙って Objective-C ですよ、ネイティブアプリですよ。NEXTSTEP に憧れた僕達ならば当然ですよ。
とかいってプログラムを組み始めた物の Objective-C も NEXTSTEP クラスライブラリもすっかり忘れてしまっていましたよ。アーキテクトの読み返しから始まったので偉い時間がかかってます。
Windows版は使い慣れたクラスライブラリ(Borland VCL)なのでちょちょいとできたのに、MacOSX版はたっぷり一週間はかかってしまったのです。まあ、その分勘所がわかってきたけれども。
久々に充実した趣味プログラミングですた。
単に Mac でプログラミングしてみたかったというのが正直なところだったり>jpegbook

しかし、なんですよ。この COCOA のクラスライブラリを使ってプログラミングをしていると、NEXTSTEP の後継なんだねえとしみじみ思えてくる。
Mac mini はその値段と小ささばかり取りざたされているけれども、実のところ BSD 譲りのカーネルと NEXTSTEP 譲りのシステム、ほんでもって統合型っぽい開発環境完備が全部含まれた OS がさりげなく添付しているわけですよ。6万円で OS と開発環境とハードが買えると考えるとメチャクチャ安くはないか?
おまけに開発環境は CD 添付で標準で入っていないにしても、Perl と Ruby と PHP は標準で入っていて即使えるのよね。(Ruby は 1.6 ですが)
ビバ。

あと MacOSX だと OS の構成が Windows とは違うのでメモリ 256MB でも割と使える。

さて、jpegbook でテキストを画像にして携帯デバイスで読んじゃおう作戦ですが、なんだかじんわりと市民権を得ている様です。たぶん。
PSP でテキストを読もうというのが eBookSpot.jp で紹介されたり。
T-Time が携帯機器用に JPEG 書き出しを予定していたりと。

わざわざこんな苦労しなくても、現在の携帯電話で生テキストが見れるような気もするのですけれどもね。
お気に入りのゲーム機や音楽プレイヤーでもテキストが読めるといった「お得さ」と、俺は工夫して楽しんでいるぜという「技術満足度」なのでしょうなあ。
それ以前にがんばるべき携帯電話でテキストを読みにくくてしょうがないというのはどうにかならないものか。はむ。
—–




You can follow any responses to this entry through the RSS 2.0 feed. You can skip to the end and leave a response. Pinging is currently not allowed.