<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/selenelib/">
    <title>逆引きSelene(終了)</title>
    <link>http://w.atwiki.jp/selenelib/</link>
    <atom:link href="https://w.atwiki.jp/selenelib/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>逆引きSelene(終了)</description>

    <dc:language>ja</dc:language>
    <dc:date>2013-01-08T18:46:13+09:00</dc:date>
    <utime>1357638373</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/selenelib/pages/1.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/selenelib/pages/2.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/selenelib/pages/52.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/selenelib/pages/51.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/selenelib/pages/33.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/selenelib/pages/34.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/selenelib/pages/50.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/selenelib/pages/49.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/selenelib/pages/48.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/selenelib/pages/46.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/selenelib/pages/1.html">
    <title>トップページ</title>
    <link>https://w.atwiki.jp/selenelib/pages/1.html</link>
    <description>
      いやはや、seleneも終わりましたね。
さすがにこんな静かなライブラリにこれ以上関わる気は無いです。
残しても何の価値も無いのでこのサイトは近々消すか放置か、別のコンテンツに作り変えます。

今はUnityを触り始めてます。比較するのは申し訳ないんですが恐ろしく作りやすいです。
でも作りやすいってことは似たようなゲームが量産されるのでしょう。
オリジナリティを出すハードルはずっと高くなりましたが、
それでも私は使いやすいものを使います。

誤解の無きよう、私はselene1.08を使って卒業研究に役立てていました。
当時はこのライブラリは将来どんな姿になるのか期待を込めてました。
しかし、なんていうかもう、Unityっていう、こんなに使いやすく大規模なエンジンが出てきてしまっては、
もう個人のライブラリでは太刀打ちでないでしょう。
そういうわけで使うのをやめました。
久しぶりにここに来ると哀愁が漂いましたが、もういいです、捨てて次に進むんです。    </description>
    <dc:date>2013-01-08T18:46:13+09:00</dc:date>
    <utime>1357638373</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/selenelib/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/selenelib/pages/2.html</link>
    <description>
      ----

今日の訪問者　&amp;counter(today)
昨日の訪問者　&amp;counter(yesterday)

----

//**更新履歴
//#recent(20)

&amp;link_editmenu(text=ここを編集)    </description>
    <dc:date>2013-01-08T18:44:20+09:00</dc:date>
    <utime>1357638260</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/selenelib/pages/52.html">
    <title>ソルジャーへの道３</title>
    <link>https://w.atwiki.jp/selenelib/pages/52.html</link>
    <description>
          </description>
    <dc:date>2010-04-28T22:33:26+09:00</dc:date>
    <utime>1272461606</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/selenelib/pages/51.html">
    <title>ソルジャーへの道２</title>
    <link>https://w.atwiki.jp/selenelib/pages/51.html</link>
    <description>
      文字数の制限により終幕を迎えた第一章。

まあうまい具合に新年ってことで、いや俺自身は何も変わってない気がするけどもういいやもう。

----

#image(http://pxgtng.bay.livefilestore.com/y1pAgFTFAoLp-FJDpbjDQXB_Fq13BFaj9UbrynHbdMls2-FSFZDwsZDGdQ313BMGGSqMP4KlARdZoBHkOOphJ4g2tRuYA2K70uG/chat.JPG,width=364,height=215)


やっとルーム画面まで完成。
当初チャットなんて実装する予定なかったけど、あまりに寂しい感じっていうか「これじゃ別にルームなんかいらねえだろ無駄なことに時間かけたな」って言われそうだったので。

で、まあデモソフトで出すことになるからロビーはとりあえず排除して、
タイトル→ルーム（兼ロビー）→ゲーム→結果→ルーム→終了
みたいな流れだ。

あと２８日でゲーム画面か・・・。
ＡＩとか物理は一切使わない、FPSの脱出ゲームみたいな感じなので、社会人レベルのプログラマなら間に合うはず。なんせ見かけにはこだわらなくていい。どうせ「プロトタイプなんです」とか横文字使ってれば生物系の教授なんて何も口出しできんだろう。というか医療関連の学科で、回りの生徒が何とかフィードバックとか何とか装置とかで研究してる中、３Ｄゲームライブラリで卒研やってる奴なんて俺一人だけだ。とどのつまり３Ｄグラフィックスについて詳しい教授がほとんどいないから、オリジナリティで押し切る戦法が生まれる。というか、装置ガチャガチャいじるのって本当に苦手。昔は工作大好きだったのに、いつからかこのキーボードの指を叩く範囲内での活動を至極好むようになった。だって楽じゃないかコレ？工作はいろんな道具でいろんな動きしないといけないけど、こっちはキーボードとマウスだけあればいいんだよ。それに事故の心配もないし、場所とらないし、時間も費用かからない。ただものすごい勢いで目が悪くなったけどな。まあ他にもデメリットはあるかもしれんがそんなことはどうだっていい、だって俺は生涯ソフト屋なんだからってことでラストスパートいきます！



----


#image(http://pxgtng.bay.livefilestore.com/y1ppU-X-FeGkYHA0sAU5l220mWe2It9f8cL57n7zf8SBvYWWXBAc4siLp5G9f8l80lZLNhtgP59suj5HW7dl70p4aeMslm0jIWm/%E7%84%A1%E9%A1%8C.JPG,width=640,height=480,center)


ほぼまっさらな状態のゲーム画面。

とりあえずプレイヤークラスから作っていく。

こいつが持つデータのうち送信するのはプレイヤーのキーボードとマウスの入力。
それを元にサーバがプレイヤー位置とか注視点とかを更新してその情報を全員に渡す。

これは俺が勝手に考えてる案だから間違ってる可能性も十分にある。


一気に作るのはややこしいな。
とりあえずマウスの移動量を送って、注視点を変えられるようにしてみる。

----

やばい
ソースの分割を適当にやってたらがんじがらめになった。カメラクラスが定義できん・・・。



　


----

てことで設計の見直し。これで何度目だよまったく。


とりあえず俺の脳内では

メイン（フレームワークを呼ぶ）
↓
フレームワーク（もどき）
↓
シーケンス（いろいろ計算処理を書くプログラミングのメイン）
↓
ワールド（シーン構築してシーケンスから頼まれたものを描画）


今回思いついた階層構造はこれ。
さっきまでシーケンスとワールドの立場が逆になっていたせいで、
シーケンスが「カメラを配置しろ」とか「アクター配置しろ」とかいう命令が出せなかったと見た。

つまり人間の上下関係と同じで、下っ端が上司より上にいたらダメなわけだ。命令は上から下にしか出せないからな・・・。そうすると映画監督も心の中じゃ主役だろうが脇役だろうがみんな同じ駒と見てそうに思えて仕方ない。

シーケンスが脚本家兼監督で、ワールドがスタッフ及びキャストみたいな？

とにかくこれでうまくいくだろう。いやいってくれないとマジで困る、先へ進ませてくれ。

----

引数にポインタを渡すときはインスタンスを生成してそれを渡してたんだが、
そんなことしなくていいということを今知った。バカすぎる。

そして参照にアスタリスクを付けることを参照外しという、なんかカッコイイ名前も知った。


いや俺ほんとにできない人だからね。底辺からのスタートですよ。
医療系に入って３年からいきなりゲームプログラミングに目覚めた男だよ。俺の周りはもちろん俺より出来るはずもないから教えてくれる人もいない。教授は院卒の情報処理の先生のくせにC言語しか知らないとか。まあ極めてるならそれはすごいけど「これどうやるんだっけ」発言多すぎ！


ああ気が付いたら愚痴ばっかりになるなあ。そういえば上司を愚痴る人は出世できないって会社の人に言われたな・・・。






----


てかブログにしよう。もはやここ何の役にも立ってない気がしてきた。

----

しかし面倒くさい。

----

フレームワークひとつと必要な分のシーケンスと必要なアクターがあればゲームは成り立つわけだ。
単純に考えよう単純に。

----

Spr2D.Push(&quot;Title1.tga&quot;, pRect2DF, ... )
Spr2D.Push(&quot;Title2.tga&quot;, pRect2DF, ... )
Spr2D.Push(&quot;Button.tga&quot;, pRect2DF, ... )

こんな感じにプッシュしまくって、
Spr2D.Rendering();
１行書いたらプッシュした順番で全部表示、というクラスを作ったが・・・

うわ～解放とか勝手にやってくれて便利～！とか思ったけど、
位置動かしたりする場合はポインタ渡さないといけないから結局ごちゃごちゃしてくる。
どうしたらいいんだい。

----

研究室で改造ライブラリでビルドしたらいつも、

「このアプリケーションの構成が正しくないため、アプリケーションの開始に失敗しました。マニフェストファイルを参照して原因を調べてください。」

これが出るんだが、調べたらお約束のように再頒布がどうとかVBランタイムがどうとか書かれてて全部試してもうまくいかず。
でプロジェクトの構成で、

マルチスレッド デバッグ DLL (/MDd)とかになっているので、それを
マルチスレッド デバッグ (/MTd)

にしたらアッサリ直った。
というかもともとSeleneではこの設定にしないといけなかったわけだ。まあメモ代わりに。

----

やばい、しんどいっす。
この状態でインフルかかったらマジで死ぬ。

----

リアルタイムなアクションゲームとか作る場合、TCPとUDPだとぜんぜん違ってくるらしい。
参ったぞベータ版には入ってない・・・。自前でやってる暇もないのでリリース版から抜き取ってくることに。

----

抜き取るより自分で書くほうがはるかに早かった。

----

卒論提出。
次はポスターセッションであります。

----

ただいまんもす。

発表本番がいよいよ明日となりました。
ぶっちゃけまだ計測が終わってない。
まあＰＣしか使わないのであと３０分もあれば終わる。
早くおうちに帰りたい！

----

終わった～！！！
合格した～！！！
Selene使った研究で合格した～！！
いやはやゲーム作っただけっていう現実を隠しまくり、
運良く生物研の人ばかり来たので全員から高評価をいただきました。
あの博識で厳しい教授が見に来てたらアウトだったと思う。

本当に俺お疲れ。

公開したいけど、実は終盤の方でネットワークに不具合起きまくりで現在使い物にならない状態。
春休みの間ゆっくりと完成に近付けたいと思います。

----

[[ソルジャーへの道]]はどこで終わろうか。    </description>
    <dc:date>2010-02-20T15:59:46+09:00</dc:date>
    <utime>1266649186</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/selenelib/pages/33.html">
    <title>ソルジャーへの道</title>
    <link>https://w.atwiki.jp/selenelib/pages/33.html</link>
    <description>
      いつまでもグダグダやってられないので、本気の本気で作品完成を目指そうと思う。




提出日（もとい納期）が７月３日。
あと１ヶ月でゲーム１本完成させるのか。
望むところだ、追い詰められてからが俺の本領発揮。



ともかく企画は固まっている。ＰＣを初期化したからまずは環境の再構築からだ。




大学から再びVisualStudioを借りようと思ったら、研究室仲間の土井が2008ProのCDを持っていた。
なんでこいつがこんな高いもの持ってるんだ・・・。

しかしほしい。俺は新しいものに目がない。



「ちょっとそれ・・・」
「ん？」
「借りていい？」
「おお、いいよ」



アッサリと2008Proを手に入れた。

あれは土井のモノじゃない。教授が土井に貸したものだ。絶対そうだ。
決して変なルートで入手したものじゃない。



そう自分に言い聞かせながら帰宅。ノリノリでインストールを始める俺。
ＧＷ＋豚インフルのせいでしばらく開発には触れてなかったな。




どっちも人を遊びに走らせる悪魔のウィルスだ。




----




その数時間後、俺は目が覚めた。

腕に大量の涎をたらしながら。




い・・・いかん。やっぱりこうなったか。


そそくさとパソコンの前に座る俺。
デスクのすぐ隣にベッドというポジションは最悪だと思う。

さっきからベッドが「おまえはここでとりあえず寝ていればいい」と催眠をかけてくる。



負けない。負けないぞ。




----


なぜか作業が進まないので風呂に入ってきた。


なぜ本気でやろうと思っても本気が出せないのか。
というか自分はいったい何をやっているんだ。

あれこれ試しながら作って、試しながら作っての繰り返し。


いろいろ考えてみると、プログラムを作る工程が乱雑すぎるのでは？という推測が浮かぶ。

企画書とか設計書とか仕様書とか、インターンシップのときに聞いたことのある単語だが、
実際自分がゲームを作るときはそういうのを一切無視してひたすら開発していた。



無論、完成したことがない。



昨日借りてきたゲーム作りの本を読んでいると、やっぱり企画書からプロジェクトが始まっている。


俺は面倒なのが大嫌いだが、もしかしてこの企画書とやらを作らないと、






いつまで経ってもゲームなんて完成しないんじゃないか・・・？






さっそくネットで設計書を作り方を調べてみる。




「企画書とは何か」
http://tanktown.web.infoseek.co.jp/tt/g_creat/g_creat/kikakusyo01contents.0102.htm





ふむふむなるほど。ゲーム作りの練習とかメンバーへの説明とかは後回しにして、
企画書を作る目的のうち、このプロジェクトで重要視される点を並べてみる。



再確認＞＞自己の能力の証明＞＞＞実現性＞＞＞＞＞記録



俺としては再確認が一番重要ではないかと睨んだ。

なぜなら、今までの俺は作っている最中に「あれはどうだ、これはどうだ」と
機能を追加したり消したりしながら作っている。


よくよく考えてみると、そんなんで完成する方がおかしいな・・・。



企画の内にキッチリと案を固めておく。

そうか俺は浮気性なんだな・・・。



次の自己能力の証明は、まあ就活ということで。




次の実現性。これも再確認と同様に、
「こんな機能がほしいけど作れるかな」と試行錯誤する段階がすでに開発中であり、
「頑張ったけどなんか作れなさそうだからやめよう」となるケースがある。


これでは無駄に時間を浪費するだけなのだ。


さて、企画書を作る重要性が、無知な俺にもようやくわかってきた。
なんだVisualStudioなんてまだぜんぜん使わないじゃないか・・・。




ではさっそく作っていこうと思う。



----

できたぞ企画書！

おおまかなストーリーを書けばいいんだよな。

あとシステムとか、ゲームの流れとか。
ちょっと仕様書との違いが把握できてないけど、これでよしとしよう。



さて次は仕様書だ。何を作るかを書けばいいらしい。
今度はおおまかではなく、しっかり完全に書かなければ。

メニュー画面ならレイアウトを図にしたりとか、
画像データはこれ使ってくださいとか、
ここでキャラがどう移動して、どのサウンドを鳴らすとか、
そんな感じでいいのかな。



・・・企画書とは量がぜんぜん違う。

脚本家よりずっと苦労しそうだ。
シナリオを完結させたかったけど、
体験版クオリティの域をこえることはできなさそう。


そこでふと疑問が浮かんだ。


俺は一人で作ってるから、



１日目
グラフィック→サウンド→プログラム　全部俺

２日目
グラフィック→サウンド→プログラム　全部俺

３日目
グラフィック→サウンド→プログラム　全部俺

４日目
．．．




こんな進行方式になるのか・・・？

それとも、



１日目
グラフィック　俺

２日目
サウンド　　　俺

３日目
プログラム　　俺

４日目
グラフィック　俺




な、なんてことだ。一人ってこんなにハードだったのか・・・。
スケジュールなんて考えたこともなかったから気づかなかった。


すべての作業を自分でこなさないといけないから、大変なプレッシャーだな。

これで３Ｄアクションアドベンチャー作るとか・・・
ソルジャーを越えてコマンダーになれるぞ。


----


仕様書を淡々と書いてみるものの、どうも進まない。

俺はこういうキッチリしたことが苦手だ。
キャラ設定とかシナリオとか、こんなものは作りながら考えればいいと、今までずっとそうしてきた。

これを仕様書の中で完結させるなんて・・・。



しかし考えてみると、


今までのやり方だと、いわゆる「仕様変更」がほぼ常にある状態だったということだ。

プロジェクトにおいて仕様変更は、強制的にスケジュールを遅らせる危険要素である。
だから異様に進むのが遅かったのか・・・。


でもどうしようキッチリを想像すると何か生理的に手が止まってしまう。

どうすりゃいいんだ・・・。


----

おおう？
ゲーム制作の本を読んでみると、どうやらそこまで詳しく書く必要はないらしい。

&amp;link2(アクションゲームプログラミング,http://www.amazon.co.jp/%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%B2%E3%83%BC%E3%83%A0%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E8%97%A4%E7%94%B0-%E5%92%8C%E4%B9%85/dp/4797335971,,)

----

なんとか仕様書ができた。といってもおおまかなシステムの構想と、人物設定とシナリオくらいだ。

まあこれだけでも少しは後が楽になることを信じ、改めて作業を開始する。



それから数時間後、俺はベッドの上で目が覚めた。


こうして悪魔が３匹に。

----

いろいろ苦労して作ったメソッドなのに、Seleneの中に同じものがあった。

こんな単純なのはないと思ってたけど、親切に作られてある。


ただこのライブラリのマニュアルを細かく読んでる暇はないので

「こんな関数あったらいいのに」


と思ったらまずはライブラリ内を探す、という認識は持っておこう。

----

GTA風の交通関係（パス上を自動走行する車）を作っている。

キリがついたらそのプログラムを公開しよう。

立て続けにやってると、さっき書いたばかりの計算式でさえ頭からすっ飛んでしまい、

「これどういう計算してんだ？笑」

となることがたまにある。それを明示的に書き留めておくためにこのサイトを作ったわけだが。



そんなことより衝突判定のアルゴリズムがやばい。

----

自宅のＰＣで車５０台を総当たりで衝突判定させてみた。

お、おもい・・・。


俺はてっきりSeleneの衝突判定はすごく軽いものだと思っていたが、重い。

軽くするのはプログラマの技量に依存するのだ。このままではいかん。


そう思ってさっそく衝突判定アルゴリズムでググってみた。


&amp;link2(「４分木空間分割」,http://marupeke296.com/COL_2D_No8_QuadTree.html,,)


なんだこれ。まったくわからん。


言いたいことは分かるけど何をどうすればいいか分からない。なにい・・・これが定番だと・・・！







どう頑張っても実装法が理解できなかったので、知恵をふるってこうしてみた。

「車の位置から半径ｘ以内に入ったら衝突判定しる」


おお！軽くなった！けど３ＦＰＳくらい。



よく見ると今の条件式を書いてる場所がおかしい。衝突判定の準備をするコードの中に書いてしまった。

ということでやってみると・・・。







これはすごい。







３０ＦＰＳ以上も軽くなってるぞ。

こんなに軽くなったら逆に気持ち悪い。けど車同士が近付いたらちゃんと判定してくれてる。




うーん、これでいいのか。まあ理論的には正しいけど・・・。


----


なんかゲームというよりゲームツクール系を作ってるような気がしてならない。


ユーザがゲーム内のモデルをマウスで配置したり、セリフを入力したり・・・。


----


やってしまった。


データが・・・

----

なぜか古い方のデータを新しい方に上書きしてしまい、１日分の作業がパーになった。物事の繰り返しというのは何か結果があるから持続する。つまり結果を消してしまったのでむちゃくちゃやる気が失せた。ただでさえめんどくさがりの俺には大打撃である。





戦意喪失し、１０時間ほど睡眠をとって再開。


プログラムの設計書なんて書いてないので、前の内容が思い出せない。ここで設計書のありがたみを知った。

とにかく大まかに記憶してる部分をもとに作り直そう。




すると、以前よりも出来のいいコードができた。

俺の中で言う「出来のいい」というのは、まとまっている、融通がきく、といった感じだ。あくまで俺の稚拙なレベルでだが。



とりあえずどっかで聞いた、サイヤ人は瀕死状態から回復すると戦闘能力が上がっているというのを思い出した。


----

睡眠をほとんどとらなくなった。

気晴らしにメタセコイアでモデリングしていたのがきっかけである。


そのときの気分に合わせて何かキャラクターでも作ってやろう、と思い立った。


そしてどっぷりハマってしまう。







１時間後、でかくて毒々しいクモが完成した。

ちなみにこのときの気分は眠気と焦りと、日の光を浴びていない陰険である。実におもしろい。


しかも完成度が高いときた。俺ってデザイナーでもいけるんじゃないか？と思って友達に見せると、



「うわあ、すごいねこのカナブン」


カナブンじゃないです、クモです。

----

今日の作業は研究室。広くてクーラーがきいてて画面も大きくて最高の環境！

というわけでもない。


部屋が広すぎるし、教授がいきなり顔を出してくるので集中できない。

それに自分の後方にドアがあって、たまに誰かに見られているのがすごく気になる。


ドアの窓にカレンダーでも貼っといてやろう。

----

現在使用しているゲーム開発エンジンSeleneのリリース版（旧版が進化したようなやつ）が近頃よく更新されているのでいじってみたが、やっぱり俺には何が何だか。

すごいなあプロは。プロじゃなくても一般人がこれを使っているだけでもすごいと思う。というかこれが分からない俺ってむちゃくちゃ底辺にいるということか。

「ああなんだこういうことか、簡単じゃないか」と、いつか言ってやりたい・・・。

----

今日は主人公のモーションを完成させ、イベントのカメラワークの動作を実装する予定。

モーションはこれまで幾度となく作ってきたが、走る動作が未だに不自然だ。人間観察を怠らないようにしよう。





主人公は超ミニスカ女子高生である。ちょっと足をあげただけでパンチラを拝めるくらいの。

なぜそうしたかというと・・・自分の好みもあるけど、まずモデルを変形させたときにスカートの一部が足にめり込んでしまう。衣類に物理を実装するなんて高度なことは俺にできるはずないので、ギリギリまでスカートの面積を小さくして違和感をなくしている。おとなしくズボンにしとけって？それは俺のプライドが許さない。

まあこれにしたって足を曲げる大きさによっては無意味なわけだが。何かいい方法はないものか。

----

今日はまず文字出力関連を実装。業界スタンダード（？）で１文字ずつ表示されるようにした。その手法をぐぐるといろんなサイトで解説があったにも関わらず、このライブラリの文字出力関数とどう組み合わせればいいのか分からない。結局グダグダと半日を費やしてしまった。


もうそういうのは極度の寝不足だったということで開き直ろう。あとはテキスト形式に羅列した文章を読み込んで、自動で流すようにすればＯＫだ。



次はパーティクルである。というかなんていう名称なのか分からない。ようするに剣にオーラが出たり、キャラの周りを気が覆ったりする演出のことだ。魔法使いがいるゲームには必須とも言えるが、俺のゲームに登場する予定はない・・・。


でもなぜか作りたかった。使わなくても作りたかったんだ。まあ強引にどっかに使うんだろうけど。

----

雨のエフェクトができた。

雨量と早さと範囲を調整できる。ちゃんと主人公の周りにだけ円状に降ってくれる。

#ref(http://vyl9pq.bay.livefilestore.com/y1p-A5a8vDho8Hnsldnh7g7YpFMIzPQETUC8PYuUxME-EdCBNZR3oXIUrk3LrORpQw1nbbDksgQ0ktb0__oueTtM3JCKWykM32g/ame.JPG,width=400,height=300)

高校で数学３点とった俺がやっと人並みのものを作れたぞ。嬉しくて仕方ない・・・。

こいつはぜひ覚書しておかねば。というかプログラムについて誰も指摘してくれる人がいないから、主観的に評価するしかないんだよな・・・。

----

今日こそイベントクラスを完成させよう。

キャラの音声と、文章と、フェードイン、アウト、そしてカメラワーク。カメラが一番難しそう。ただ固定位置にポンポン切り替えるだけにはしたくない。

てかフェードってどうやるんだ・・・。

----

死亡フラグ

----

結局あれだな、俺たちの言うゲーム作りってのは、いかにゲームを作りやすくするかってことだ。

----

たった今気づいたが、かつて俺がここに書いてた覚書とほとんど同じことを書いてる人が既にいた。断然俺よりデキる人物みたいだ。うーむ負けてられん。

----

やっとこさソフトウェア企業から正式な内定をもらった。この企業とはホント長い戦いだった。
これで夏休みにスーツ着て汗だくにならなくていいと思うと、どれだけ気が楽か・・・。

----

char型のタイプライタ表示ってこんなにめんどくさいのね・・・。

----

定期試験も無事に終わり、あとは卒研のことでまだちょっとゴタゴタ中。

----

ああ卒研、卒研、卒研めんどくさい。

そんなことより俺もリリース版使いたい・・・。ってことで、


旧版サンプルの[OverPass]を今からものすごい勢いで移行して覚書してみる。

----

おｋ。とりあえず研究室行ってこよう。

----

だ～～！
リリース版は何なんだ、どうなってしまうんだ。

----

もうベータ版でいいや、という気になりつつあるこの頃。

SEKIHEKIというオンラインゲームをやってて、オートランという機能の便利さを改めて実感した。
お使いばかりさせるオンゲーは全部これ実装しろと言いたい。

----

このサイト、どーも編集しづらいな。俺の性格に合わない。
まだぜんぜん内容がないからどうだっていいが。いやもしかしてそのせいで内容が薄いのか・・・？

----

自作オートラン実装まであと７割といったところ。まだまだ先は長い。

----

あと６．５割。

----

やばいBorderlandsにハマった。面白いにも程がある。

----

やばいprototypeにハマっ


いかん、こんなことしてる場合じゃない。

というかベータ使ってるの俺だけなの？みんなリリースに行っちゃったの？
そっちじゃアニメーションの切り替えすら出来なかったんです。
出来なかったってのはseleneができないんじゃなくて俺の頭がアレという意味で。

----

もうこれじゃ就活は無理だな。潔くソフトウェア企業に収まるか。

----

研究室に４日ほど泊まってきた。
まともなベッドがないので疲れが半端なくたまる。

----

週末か…。
今日こそは家で寝よう。

----

帰宅。
眠いけど俺はまだやれる…。
愛しのベッドが俺に「おかえり、さあ来て…」
そんな誘惑には…のら…のら…

----

俺は確かに・・・生きてる・・・

----

そうだトップページに現在の進捗状況を画像で貼っとけば殺風景じゃなくなる。

と思ったのでこれからそうします。

----

てかVisualStudioのダイアログとか使わんでも、SeleneそのものでGUIを作ればいいんだよな。
とか考えてたら文字入力関連にIMEのAPIを使わないといけないのね。
さすがに俺には無理…か…。

----


いや、案外いけるかも。


----


無理だった


----


マルチスレッドやってるときに、

共有のリソースをいじる行にブレークポイント置くだけで重度のフリーズが起こるんだが。
いやリソース関係なく新たなスレッド内に置いたらフリーズするんだが。



Sleep(100);


でちょっとばかり間を入れてやるとブレークポイントが正常に使える。

----

送信・受信・描画で３スレッド用意して通信してみるが、
シングルコアとマルチコアで挙動が違うので同じようにしたいところ。

----

あと１台でクライアント複数起動するのと、違うＰＣで起動するのも挙動が違う。
モデルデータが表示されなかったり。なぜだ…。

----

もう１２月か。

----

#include &lt;stdio.h&gt;

int Recv[10];


int main()
{
	Recv[0] = 0;

	int *Send = *&amp;Recv;

	Send[0] = 1;

	printf( &quot;%d&quot;, Recv[0] );

	getchar();
	return 0;
}

無意味だが、*と&amp;を一緒に使えるなんて知らなかった。

----

１週間経っても熱が下がらん。
微熱なのに、意味わからん、なにこれ。

----
#include&lt;stdio.h&gt;
#include&lt;vector&gt;
#include&lt;windows.h&gt;


class PLAYER
{
public:
	int a;

	PLAYER( int Number )
		:	a	( Number )
	{}
};

#define MAX_COUNT 100
std::vector&lt;PLAYER*&gt; vPlayer;

PLAYER *Player[MAX_COUNT];


void main()
{

	Player[vPlayer.size()] = new PLAYER(10);
	vPlayer.push_back( Player[vPlayer.size()] );

	Player[vPlayer.size()] = new PLAYER(20);
	vPlayer.push_back( Player[vPlayer.size()] );



	for( int i=0;i&lt;vPlayer.size();i++)	printf(&quot;%d\n&quot;, vPlayer[i]-&gt;a);



	for( int i=0; i&lt;vPlayer.size(); i++)delete Player[i];
	vPlayer.clear();

}



プレイヤーとか敵とかって、最初に最大数決めないとどうにもならんのかね。

----

ネットワーク対戦を実装中。

てかいろいろやりすぎて収拾がつかない。

----

パケットの送受信について分からないことがある。

最初から全員分のデータを含んだクラスをやりとりするか、一人分のデータをその場にいる人数分だけ連続でやりとりするかだ。

class DATA
{
int Number[PLAYER_MAX];
int KeyCode[PLAYER_MAX];

public:
DATA()
{
//初期化
}
~DATA();
};

データを配列にするかしないかの違いなんだが、どうなんだこれ。

・クライアントは最大人数分のデータを受信し、自分のデータのみを送信
・サーバは一人分のデータを受信し、最大人数分のデータをクライアントへ渡す

----

サーバ、クライアント共にML115にメモリ２ＧとGeforce8400GSという中途半端なスペック。

自クライアントのキー入力情報を渡し、最大人数１００人分の座標データその他もろもろが詰まったクラスを受け取って3Dモデルを描画するプログラムでどれくらいの速度が出るのか試したい。

なんてことはローカルな環境でできるはずない。
協力してくれる人を募りたいがどうだろう。
完成物ならともかく、作り始める状態から協力してくれる人なんて…。

近いうちに、１台で１００個のクライアントを立ち上げてみよう。

----

できましぇ～ん。
６個立ち上げるだけでかなりきつい。
いやプログラム自体のFPSは６０維持なんだが、起動するまでの時間がどんどん長くなっていく。

----

トップページにメールアドレスをのせておきますので「おまえそれ間違ってるぞ勘違い乙」とか全力で指摘しやがれ！

----

シーケンス遷移ってのを半分学んだ。残り半分は何が言いたいのかわからなかったので自己流。


BaseSequence *pSequence = new TitleSequence;
while ( pCore-&gt;Run( true ) )
{
　　　　　//内部でNULLが返されたらプログラム終了
	if( pSequence-&gt;Update( pSequence ) == NULL )break;
}

ループ内にはこれ1行書くだけで済んでいる。
で、たとえばタイトルシーケンスを簡単に書くとこんな感じ。

BaseSequence* TitleSequence::Update( BaseSequence *pSequence )
{
	if( pKey-&gt;GetKeyData( SELENE_VK_RETURN ) )
	{
		delete pSequence;
		pSequence = new GameSequence;
		printf(&quot;ゲーム画面に移動します\n&quot;);
		return pSequence;
	}
	if( pKey-&gt;GetKeyData( SELENE_VK_ESCAPE ) )
	{
		delete pSequence;
		return NULL;
	}

	return pSequence;
}

ベースとなるシーケンスを継承して仮想関数をオーバーライドだっけ。そこは全部参考書から学んだ。
切り替えの方法とかは思いつきでやってるので心配だ。
前のシーケンスを開放して、新たに作り直したポインタを代入してそれを戻り値として返す。戻り値がNULLなら終了と。


----

おかしいな、あれがないぞ、列挙型のTITLEとかGAMEとか。

----

もう今年も終わりか。
俺たちは来年何をやってるだろうな。

バリバリのゲームプログラマになってたらいいな。
それとも社会の波に翻弄されているだろうか。





みんなは夢とかあるか？



----

俺はプログラミングしているときいつも思う。

俺の技術はまだまだ幼稚、誰よりも劣っている。
今更頑張ったってしょうがない、と。

それで何かを挫折したことは少なくない。


基礎レベルより先に進めない病みたいな。


基本的に何にでも挑戦してきたが、全部基礎レベル。
何でもできる素質があるように見えるが、実際は何もできない。

つまり、今もその途中にあるのかもしれない。
プログラミングという分野で、また一定基準を越えるか否かの地点で挫折。


繰り返し。
何も変わってない。


だが、今までと違うことがひとつだけあった。

その分野の職についたこと。



社員が２０数名。



必然。

必然の努力。


上を目指さない人間は必要ない。
そう言われた。


俺はもうその土俵に立つ手続きを終えたのだ。


その違い。

どれだけ違うのかは分からない。




頑張りたい。
プラス、頑張らないといけない。


この２つは、俺を変えてくれるだろうか？


もちろん変わらなければ無職になるだろう。

変わっていない俺が、ＩＴ業界のストレスに耐え続けられるはずがない。

体をナイフでそぎ落とされるかのようなストレス。
油断すれば、ゆっくりと、自分を失ってゆく。



極寒のような冷たく厳しい世界。




それがコンピュータの世界。

それが俺たちプログラマの土俵。




そこで生き抜くことが、俺の夢。

----


イヴ（笑）とか。

----

どういうわけか俺みたいなバカでもIMEを実装することができた。
まあチャット作るわけでもないから変換候補ウィンドウは考慮してない。

ウィンドウ生成せずにあれをやるとなると、

何かしらスプライトを用意して、
変換候補リスト取得して、
スプライトを表示する位置を決めて、
文字列の最大の長さ分だけスプライトを横に拡大し、
文字列の表示数分だけスプライトを縦に拡大し、
スプライトを表示して、
リストを表示して、
スクロールは・・・さすがに無しで、
リスト内で選択されている候補を網掛けして、
確定したらリストとスプライトを消す。


ああこんなこと考えるから実装したくなるんだよ。
これは何らかの種に共通して起こる性癖だ。

----

バックスペースで消すの忘れてたのでその実装に２時間費やす。
なんかいろいろあって編集中にそれを押すと編集文字列は全部消える妥協仕様に。

----

なんというか、別にここまでやる必要はまったくなかったんだけども、
メッセージを受け取らずに処理することに無理が出てきた（前述のような）ので何とかしたい。

これってゲットなんたらで簡単に取れるんかね。
ウィンドウは常にひとつだけ開いてる状態にしたいし。ダイアログがポンポン出てくるようなソフトウェアは、作る方は楽かもしれないけど使う方はなんかもうだるい。


てかSelene本体の方がいつまで経ってもビルドできねーよ！
ってことはメインのプロシージャが弄れないってこと・・・！？





----



　　　　//--------------------------------------------------------- IME表示抑制
	case WM_IME_SETCONTEXT:
        lParam = 0;
		break;

	//--------------------------------------------------------- IME表示抑制
	case WM_IME_STARTCOMPOSITION:
	case WM_IME_ENDCOMPOSITION:
	case WM_IME_COMPOSITION:
	    return 0;

	//--------------------------------------------------------- IME表示抑制
	case WM_IME_NOTIFY:
	    switch ( wParam )
		{
		case IMN_OPENSTATUSWINDOW:
		case IMN_CLOSESTATUSWINDOW:
		case IMN_CHANGECANDIDATE:
		case IMN_OPENCANDIDATE:
		case IMN_CLOSECANDIDATE:
			return 0;
		}
		break;
	}




これは一体…。

----

なんだ、これってビルドしてdllを吐きだすためのものだったのか。
俺こういう知識ほとんどないんだが（理論抜きでやってきてるので）、
風邪ひいてるおかげか、人間冷静になれば知識の吸収って早いんだな。

ともかくこれで改造しまくったる！

　

　
　
　
　
----

まずはコアにメッセージを送る関数を外に出して、
Seleneにあらかじめ設定されているウィンドウプロシージャに新しいものをセット。
その中にメッセージ送信関数を書く。
これを書かないだけで致命的なエラーになるが、まあ作るのは俺だけだし時間もないってことで良しとしよう。

これでウィンドウメッセージに関しては完全オリジナルのものを実装できる。

とりあえずIME無効だったものを有効にするとこうなります。

#image(http://pxgtng.bay.livefilestore.com/y1pJ83QWMGyXFpQNcImDkPk_rEi3qXigw6mRnSY96YXv50M4RiQB5M4iNiDKgg090gdxCIC9LW6UtRm6NQBj81yaRsiFcwAkvHM/%E7%84%A1%E9%A1%8C.JPG,width=640,height=480,center)


見るべきは左上。

海外のＦＰＳで、特に数字とかTabとか押しまくるゲームだと幾度となくお目にかかる。
「てかこれコード数行書くだけで解決できるんだから、日本でこれが起きたゲームの技術を疑うわ～～～」って表面上だけで決めるのは良くない。

IME設定とか言語設定とか、
何かいろいろ開発側が考慮できないこともあるかもしれない。

・・・しかし、Seleneのサンプル弄ってる限りではこの現象は起きない。

それは事実ではあるが、
設定を変えまくって弄ったわけでもないのだから・・・


リリースするに至っては、そういうところもよく検証しないといけないってことね。


　


　
----

ああああああもうだるい。
風邪菌まじで死んでくれ。
数日徹夜して弱ってるときに母親が風邪というタイミングの悪さ。
もろに移りました。
マスクしとけばよかった。
今までカップ麺だけの夜ごはんなんて無かったからな。
贅沢してたんだな。
俺こんなんでプログラマやっていけるのかな。

----

今年ももう終わりか。
なんと風邪のまま迎えつつある新年。


新しい生活が始まる新年。

楽しくても哀しくても、
朝日がやってくることに変わりない。

明日があるってのは、いいことだ。


自分にとっての明日はないかもしれないけど、
誰かにとっての明日はある。

そして思うだろう。
次は何をしようかと。

また新しいことが始まる明日。

俺も見たい。
みんなと一緒に。



まだ見たことのない明日。




それならいっそ、明日の明日も見たい。


がんばって、先に進みたい。


そこに光があれば、ラッキー。
なければ、また新しい明日を探すだけ。


それくらい単純でいいと思う。
俺たちは若いんだから。



俺たちって誰のことだ。


ここを見てる人が何歳かは知らないけど。


やる気がある人は誰だって若く見える。

外見がいくら汚くても。
輝いて見える。






だからがんばろう。







まだ見たことのない明日を目指して。






　    </description>
    <dc:date>2009-12-30T22:53:45+09:00</dc:date>
    <utime>1262181225</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/selenelib/pages/34.html">
    <title>覚書</title>
    <link>https://w.atwiki.jp/selenelib/pages/34.html</link>
    <description>
      ベータ

//[[雨降らす！]]
[[文字出力①　～描画の基本とセンタリング～]]
[[文字出力②　～１文字ずつ表示　wchar_t型編～]]
[[文字出力③　～１文字ずつ表示　char型編～]]
[[文字出力④　～セリフの囲い枠～]]


[[ワールドとベースアクター]]


[[マウス移動のあれこれ]]

[[ネットワーク]]


[[ダイアログボックスの話]]
[[GUIの話]]

[[IME API]]    </description>
    <dc:date>2009-12-28T20:56:06+09:00</dc:date>
    <utime>1262001366</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/selenelib/pages/50.html">
    <title>GUIの話</title>
    <link>https://w.atwiki.jp/selenelib/pages/50.html</link>
    <description>
          </description>
    <dc:date>2009-11-29T15:36:31+09:00</dc:date>
    <utime>1259476591</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/selenelib/pages/49.html">
    <title>ダイアログボックスの話</title>
    <link>https://w.atwiki.jp/selenelib/pages/49.html</link>
    <description>
          </description>
    <dc:date>2009-11-29T04:47:55+09:00</dc:date>
    <utime>1259437675</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/selenelib/pages/48.html">
    <title>ネットワーク</title>
    <link>https://w.atwiki.jp/selenelib/pages/48.html</link>
    <description>
          </description>
    <dc:date>2009-11-18T11:29:36+09:00</dc:date>
    <utime>1258511376</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/selenelib/pages/46.html">
    <title>ベースワールドとベースアクター</title>
    <link>https://w.atwiki.jp/selenelib/pages/46.html</link>
    <description>
          </description>
    <dc:date>2009-10-10T14:58:33+09:00</dc:date>
    <utime>1255154313</utime>
  </item>
  </rdf:RDF>
