文字数の制限により終幕を迎えた第一章。
まあうまい具合に新年ってことで、いや俺自身は何も変わってない気がするけどもういいやもう。
imageプラグインエラー : 画像を取得できませんでした。しばらく時間を置いてから再度お試しください。
やっとルーム画面まで完成。
当初チャットなんて実装する予定なかったけど、あまりに寂しい感じっていうか「これじゃ別にルームなんかいらねえだろ無駄なことに時間かけたな」って言われそうだったので。
で、まあデモソフトで出すことになるからロビーはとりあえず排除して、
タイトル→ルーム(兼ロビー)→ゲーム→結果→ルーム→終了
みたいな流れだ。
あと28日でゲーム画面か・・・。
AIとか物理は一切使わない、FPSの脱出ゲームみたいな感じなので、社会人レベルのプログラマなら間に合うはず。なんせ見かけにはこだわらなくていい。どうせ「プロトタイプなんです」とか横文字使ってれば生物系の教授なんて何も口出しできんだろう。というか医療関連の学科で、回りの生徒が何とかフィードバックとか何とか装置とかで研究してる中、3Dゲームライブラリで卒研やってる奴なんて俺一人だけだ。とどのつまり3Dグラフィックスについて詳しい教授がほとんどいないから、オリジナリティで押し切る戦法が生まれる。というか、装置ガチャガチャいじるのって本当に苦手。昔は工作大好きだったのに、いつからかこのキーボードの指を叩く範囲内での活動を至極好むようになった。だって楽じゃないかコレ?工作はいろんな道具でいろんな動きしないといけないけど、こっちはキーボードとマウスだけあればいいんだよ。それに事故の心配もないし、場所とらないし、時間も費用かからない。ただものすごい勢いで目が悪くなったけどな。まあ他にもデメリットはあるかもしれんがそんなことはどうだっていい、だって俺は生涯ソフト屋なんだからってことでラストスパートいきます!
imageプラグインエラー : 画像を取得できませんでした。しばらく時間を置いてから再度お試しください。
ほぼまっさらな状態のゲーム画面。
とりあえずプレイヤークラスから作っていく。
こいつが持つデータのうち送信するのはプレイヤーのキーボードとマウスの入力。
それを元にサーバがプレイヤー位置とか注視点とかを更新してその情報を全員に渡す。
これは俺が勝手に考えてる案だから間違ってる可能性も十分にある。
一気に作るのはややこしいな。
とりあえずマウスの移動量を送って、注視点を変えられるようにしてみる。
やばい
ソースの分割を適当にやってたらがんじがらめになった。カメラクラスが定義できん・・・。
てことで設計の見直し。これで何度目だよまったく。
とりあえず俺の脳内では
メイン(フレームワークを呼ぶ)
↓
フレームワーク(もどき)
↓
シーケンス(いろいろ計算処理を書くプログラミングのメイン)
↓
ワールド(シーン構築してシーケンスから頼まれたものを描画)
今回思いついた階層構造はこれ。
さっきまでシーケンスとワールドの立場が逆になっていたせいで、
シーケンスが「カメラを配置しろ」とか「アクター配置しろ」とかいう命令が出せなかったと見た。
つまり人間の上下関係と同じで、下っ端が上司より上にいたらダメなわけだ。命令は上から下にしか出せないからな・・・。そうすると映画監督も心の中じゃ主役だろうが脇役だろうがみんな同じ駒と見てそうに思えて仕方ない。
シーケンスが脚本家兼監督で、ワールドがスタッフ及びキャストみたいな?
とにかくこれでうまくいくだろう。いやいってくれないとマジで困る、先へ進ませてくれ。
引数にポインタを渡すときはインスタンスを生成してそれを渡してたんだが、
そんなことしなくていいということを今知った。バカすぎる。
そして参照にアスタリスクを付けることを参照外しという、なんかカッコイイ名前も知った。
いや俺ほんとにできない人だからね。底辺からのスタートですよ。
医療系に入って3年からいきなりゲームプログラミングに目覚めた男だよ。俺の周りはもちろん俺より出来るはずもないから教えてくれる人もいない。教授は院卒の情報処理の先生のくせにC言語しか知らないとか。まあ極めてるならそれはすごいけど「これどうやるんだっけ」発言多すぎ!
ああ気が付いたら愚痴ばっかりになるなあ。そういえば上司を愚痴る人は出世できないって会社の人に言われたな・・・。
てかブログにしよう。もはやここ何の役にも立ってない気がしてきた。
しかし面倒くさい。
フレームワークひとつと必要な分のシーケンスと必要なアクターがあればゲームは成り立つわけだ。
単純に考えよう単純に。
Spr2D.Push("Title1.tga", pRect2DF, ... )
Spr2D.Push("Title2.tga", pRect2DF, ... )
Spr2D.Push("Button.tga", pRect2DF, ... )
こんな感じにプッシュしまくって、
Spr2D.Rendering();
1行書いたらプッシュした順番で全部表示、というクラスを作ったが・・・
うわ~解放とか勝手にやってくれて便利~!とか思ったけど、
位置動かしたりする場合はポインタ渡さないといけないから結局ごちゃごちゃしてくる。
どうしたらいいんだい。
研究室で改造ライブラリでビルドしたらいつも、
「このアプリケーションの構成が正しくないため、アプリケーションの開始に失敗しました。マニフェストファイルを参照して原因を調べてください。」
これが出るんだが、調べたらお約束のように再頒布がどうとかVBランタイムがどうとか書かれてて全部試してもうまくいかず。
でプロジェクトの構成で、
マルチスレッド デバッグ DLL (/MDd)とかになっているので、それを
マルチスレッド デバッグ (/MTd)
にしたらアッサリ直った。
というかもともとSeleneではこの設定にしないといけなかったわけだ。まあメモ代わりに。
やばい、しんどいっす。
この状態でインフルかかったらマジで死ぬ。
リアルタイムなアクションゲームとか作る場合、TCPとUDPだとぜんぜん違ってくるらしい。
参ったぞベータ版には入ってない・・・。自前でやってる暇もないのでリリース版から抜き取ってくることに。
抜き取るより自分で書くほうがはるかに早かった。
卒論提出。
次はポスターセッションであります。
ただいまんもす。
発表本番がいよいよ明日となりました。
ぶっちゃけまだ計測が終わってない。
まあPCしか使わないのであと30分もあれば終わる。
早くおうちに帰りたい!
終わった~!!!
合格した~!!!
Selene使った研究で合格した~!!
いやはやゲーム作っただけっていう現実を隠しまくり、
運良く生物研の人ばかり来たので全員から高評価をいただきました。
あの博識で厳しい教授が見に来てたらアウトだったと思う。
本当に俺お疲れ。
公開したいけど、実は終盤の方でネットワークに不具合起きまくりで現在使い物にならない状態。
春休みの間ゆっくりと完成に近付けたいと思います。
最終更新:2010年02月20日 15:59