三国志NET KMY Vister開発日記

出典: KMYpedia

目次

2008年10月

17日

status.php
status.php

えー、ちょっといろいろなことをやっておりました。さて、早速ですが今までの報告です。

今まで、ろくな開発はしていませんでしたが、チャットができるようになりました。それで、嬉しくて思わず書いてしまったのがこんなです。それで・・・今気づいたのですが、更新のときたくさんのファイルを一度にまとめて更新するので、鯖の負荷も見るほうの負荷も半端じゃないんですよね。実際僕のパソコンでも、CPU100%orzというわけで、2秒に1つずつファイルを読み込んでいくっていうのはどうでしょうか?時差読み込み。うnいいかもしれません。

国宛、都宛のみの実装です。個宛と部宛は、前者はもうちょっと後で、部宛は部隊そのものをまた実装していないのでもっと後で・・・。

2008年8月

30日

冬休みまでここはあんまり更新できません。たまりに更新するかもしれませんが、その分は冬休みにまとめて読んでくださいな。

27日

今気付いたのですが、戦争中兵士が壊滅しちゃっても気付かない訳でしょう?武将のデータの更新は10分に1回しかないんで。とゆわけで武将データの更新も30秒にしちゃって・・・いや、更新は早いほうがいいからチャットと同じ20秒(ABC鯖の制限ぎりぎりです)で、マップも更新が早いほうがいいので20秒更新で。

それと、チャットのほうですが、文を書いている途中でAjax更新したら書きかけの文が消えたりする。なので文を書くところはstatus.phpに移します。そうしたらチャット更新しても途中の文が消えたりしませんので。

status.php
status.php

とかなんとか言いながら当日追記ですが、チャットのほうは「メッセージ入力するところに1つでも文字が入っていたら更新しない」という形で落ち着くことにしました。いえ、いろいろやってみたんですが、見た目はこうするしかなかったんですよ、ええ。で、IE7では変換中でも変換前でも、とにかくキーを打っているならば「入力されている」と認識されるようなのですが、ほかのブラウザもそうであることを祈ります。

で、画像はコマ入れ画面ですね。入力方法は「コマンドリストから選択」1つぼっきりにして残りの3つは高度コマ入れツールで穴埋めしようと思ったのですが、なんか高度コマ入れツールは5期登録しないと使えないので、人権的な問題・・・を感じてしまいまして(深いなおい)とゆことで、ALL、偶数、奇数は最初から使えます。コマ入れも実装して、コマンドリスト全部埋まってあの赤い数字も全部消えましたwで、鍛錬はせっかく独立したコマンドカテゴリがあるので、このように4つに分けてみました。

まだ入力できないコマンドがいくつかあります。徴兵、戦争、登用、米購入、武器購入、書物購入、移動と。すでにご存知のこととは思いますが、7つ全部サブパラメータ入力が必要なんです。たとえば、どの兵種をいくつ徴兵するか、どこへ侵攻するか、などなどです。これを全部実装してからその他の部分へ入りたいと思います。コマンド更新は最後です。でないとこっちの開発になんとなく支障が出る恐れが(ぁ

2学期の間はしばらくの間漫画を描きたいと思っていますんで、2学期の前半は当分の間Vister開発は止まります。ごめんなさい。そのかわり春休みまで待ってください。(爆

ああ、そういえば武将データ、何か足りないなあと思ったら顔アイコン入れ忘れてました^^;とゆわけで入れてみました。画像は追ってUPしますので待ってください。

26日

今日はスクリーンショットが多すぎですみませんーー;

index.php
index.php

さて、ずっと前から言い忘れていましたが、ログインフォーム、ログインにAjaxを導入したらこんななりました。まぁー、JavaScript使ってデータを要求しているわけですからね、要はJavaScriptさえ呼び込めばいいってわけなので、リンクです。aタグ使ってます。

status.php
status.php

で、今日はコマ入れできるようにしようと思いつつ、なんとなく気になったのでこっちを先に実装。チャットの下にこんなボタンが出てまいりまして、押してみたらあらふしぎ(ぁ

status.php
status.php

過去ログが出てまいります。過去ログのメッセージの一度の表示数は、「登録した期の数×10、ただし100以下」となっとります。つまり、10期登録していただいた人には100件一気読みできますが、1期目で「今期初めて登録しましたよ~」的な人は10件ずつしか読めないと。でもあふれた分はNEXTやBACKで操作できますし、全部読めることには変わりないんですけど、この鯖をやり続けていればやり続けるほど見やすいっちゅうことです。

status.php
status.php

で、ABCオロチサーバーでは、20秒未満の自動更新はNGだそうですので、チャットの自動更新を泣く泣く(?)20秒に引き上げ。(Ajaxに関する直接の記述はありませんでしたのでまぁOKでしょうが、ページリロード数の割には広告表示数がとっても少なくなるという。ちょっとした罪滅ぼしにチャットの更新と一緒に広告も更新します。ごめんなさい^^)その代わり「いつ更新されるの?」とかいらいらしている人のためにこんなの作りました。マップの更新時間もついでに表示してます。負荷が心配なので「今すぐ更新」はつけません。

status.php
status.php

で、ついにコマ入れ画面作りを始めました。高度コマ入れツールは今公開しているものをそのまま移植するつもりで追加機能とかはつけないでおこうとか思っているんですけれど、それでも5期目からですよ、使えるのは。4期目以前は使えません。いえ、ちょっといろいろありまして(殺)逆に言えば4期までは使える人はいないってことなんですよね。ってことは5期になるまでに追ってUPしちゃえうしし・・・なことはしませんよ、後回しにしたらどーせ忘れてしまうので。(お約束

リストですが、sprintf関数を使って桁数を合わせているので、見やすいと思います。あと、コマ切れしているところを赤く表示して、コマ切れしてる番号をこのよーに並べているのですが、新規登録してすぐにこれ見て「何だこれ!」と引く人がいるかも知れませんねぇ~、でもいい刺激になりそうで(以下略

ちなみに番号選択リストに年月が入っているのですが、「もしかして・・・」という方は察しがいい。実はこれ、Ajax使ってます。で、武将データの表示を更新するときについでに更新するというからぐり。・・・・・・今思いついたんですけれども、武将更新時間ぴったりに更新したら先月のデータが表示されてしまう可能性大有りですので、武将更新、マップだけでなく武将データにもつけときますね。武将更新してからデータ表示するのでちょっと重くなりますよー。

当分の間は三国志NETデフォルトのコマンドのみを取り揃えます。もち「都市巡回」もありませんが、どうしてもというのなら公開までに実装しときますね。後々のコマンド追加の演習にもいいですし。

status.php
status.php

「コマンド番号選択」「コマンド選択」そしてこのボタン。このプロセス。いや、なんともすばらしき(以下略)これを全て1画面でするんですよね。さらにさらに!コマ入れ完了画面もAjax使ってこの画面に表示するんです!そしてその後、コマ切れが減った(なくなった)最新のコマンド選択リストもAjax使ってちゃっかし更新しときます。

status.php
status.php

今はまだコマ入れ自体は実装していませんが、がんばりますw

今日はスクリーンショットたくさん出してしまいましたが、まぁこれが消息っぽいもので。「僕はまだ生きてますよーまだ首吊ってませんよー」な感じの。

25日

ちょっとずるかしこいことを考えてしまいました。何期か登録してくれた人だけに追加機能を使えるようにするってどうでしょう?いえ、期を連続で登録する必要は無いんですよ。登録した数なんですよ。「この期に登録しました」と証明するための登録方法は後述するとして、それで、

  • 2期目:Bothを有効(Home BasicでWindows Aeroがない腹いせ)
  • 5期目:高度コマ入れツールを有効
  • 10期目:顔アイコン変更ツールを有効

ここまで考えているのですが、他にも20期目の人にはソースを配布、と・・・。・・・・・・。(わーいきゃーい

ぁー、2期目でBothを有効にするってことは、1期目ではあの影が全部無いってことですよ。ひらぺったいってことなんですよ。(でも登録していない人も見られるところだけはきれいにしたいんでstatus.phpのみ ←ずるいじわる)でもこっちの私怨なのでしょうがないしょうがない(をい

ぁーついでですが、統一した後に登録した部分をカウントしたら「あれが出るまでやらない」っちゅう人が出てくると思いますんで、「期開始から100年までに登録し、かつ次のリセットまで放置削除されなかった人」をカウントに入れることにします。(どーせ最終決戦終わったあとコマ入れする人はいないと思うので、削除ターンが進んでいてもカウントに入れます)

status.php
status.php

はい、延々とstatus.phpの改造ばっかりですみません。パラメータはこんななります。武将データを一応埋めてみました。で、武将データもAjaxで外部ファイルから取り込むことにしました。これはなぜかといいますと、status.phpを絶対に1回表示したっきりずっと更新しないてほしいからです。たいたいAjaxは無駄な負荷をかけずに必要最低限のデータをロードしてほしいから導入したんですけど、status.php全体をロードされたら負荷がもったいないですし、そゆことです。武将データは、武将の更新の時間に更新します。

こっちでstatus.phpを読み込んでみますと、0.3秒もかかりました。Vistaなのに0.3秒なんですよ。ってことは、サーバーにUPしたらたいへんな負荷に・・・。みんなには0.3秒の重さが分からないかもしれませんが、0.3秒は十分重いんですよ。ローカルでは、ネット接続の手間がないからネットでやるよりも若干早いんです。ネットでは0.8秒か、もしくは1秒もありえますねー。

status.php
status.php

同じ理由で、ゲーム内の年月も定期的に更新することにしました。いえ、ちゃんと次の月になる時間を算出していますので、ちょうどぴったりに月が変わります。JavaScript使って月を足します。で、武将更新をstatus.phpでやりたいとは思ったのですが、Ajaxで読み込むものが多すぎで(特にチャットは10秒更新)、難しいんですよね・・・。・・・・・・マップに組み込もうかな。あ、そうだ、そうしよう。CGIで実行するよりもAjaxで読み込むほうが長いので、Ajaxで読み込む回数を減らせばいいってことなんですよね。なのでマップ表示のときについでにやってしまおうかと。

三国志NET KMY Visterでの武将更新は、index.php(トップ)でもしますよwただし、status.phpとindex.phpを両方表示して、交互に更新されてはたまりませんので、クッキー使って最後の更新から20秒以内の更新を規制してみたいです。武将データの更新のときは、何もしません。マップで30秒自動更新って時点でぜいたくしてますからねー。それにしてもmetaタグ以外で自動更新するって、昔の人は思いつかなかったのかなぁー。さすがWeb2.0。

明日からコマ入れの実装です。戦争とかオプションを指定するコマンド以外を明日までに全部やってしまいたいです。

24日

status.php
status.php

こんな感じです。マップはこーなりました。まず、2番目の都市が現在いる都市で、3番目が平常時の表示で、4番目がマウス乗せたときの表示です。でも3番目、ちょっと薄すぎるかなーとか思うのですが、こうでもしないと立体感が出ませんし、かといって薄い色と濃い色を逆にしてもなんか引っ込んでいるボタンに見えてきますので、なんかなぁ・・・。

で、Windows XPのあの青いウィンドウとか、XPで新しく導入されたウィンドウスタイルとかをLunaというのですが、Visterで導入した立体感にもなんか名前いるかなぁー・・・。ぢゃ、てきとーにBothで。由来は・・・なんとなく(殺

status.php
status.php

で、今日はスクリーンショットがもう1つありますwパラメータの表示はこうなるわけですが、「生首は抵抗感がある」と意見した人がいましたので、「戦勝数」に変更しました。ただ、横の長さ指定に小数(12.5%)を指定しているんですよね。小数はなんかちょっとほかのブラウザで対応しているかどうか不安なんですよね・・・。IE7でやってますけど。

ああ、言い忘れていましたが、国を読み込む関数できました。基本的にsuport.plからのそのまんま移植なのですが。で、マップデータはAjax使うので、$kpos(自分が今どこにいるかのデータ)をどうやって受け渡すか迷ったんですけど、結局クッキー使いました。GET使うとなんか、面白がった人がいたずらしてその分負荷が増えそうなので、クッキー使ってます。はい。

三国志NETデフォルト配布データでは、「suport.pl」となってますが、「suport」のつづり間違ってますね。正しくは「support」pが2つあります。でも、もし気づいたとしてもたくさんのファイルから読み込んでしまったからちょっと面倒でそのままUPしたのでは、と。(ちなみにVersionもめんどくさいのでsuportのままです)でも、Visterではちゃんと「support.php」に直してますよ~。

23日

status.php
status.php

チャットの見栄えを示すために勝手ながらサンプルとしてDLしたログを使用しています。また、見栄えをそのまま示すために修正はしていません。ご了承ください。

チャット表示できるようにしました。いやー、なかなかのものですね。立体に見えるように影をつけましたので、Versionやその他平べったいものよりはソフトで新鮮な感触がすると思います。Ajaxのチャット部分は10秒更新です。ただ、このまま公開したら「過去ログも見たい」という要望が出そうですので(Versionでの実装名:メッセージちょいとさかのぼり)、それも考えていろいろやっていきたいと思います。(その分公開までが遅れたりする・・・涙)国名を取得する関数をまだ実装していないので、実際は国名も表示されます。日時も表示していきたいのですが、ちょっとバランスがおかしくなるようなことがあってはいけないので、日時の表示に関してはちょっと慎重です。

タイトルバーにも色がつきます。で、国宛は見てのとおり赤です。当然のことですがチャットも隠せます。隠している間の更新を停止する機能もつけたいです。無駄な負荷かけますし、ページが重いなと感じたら(平常時に限ってですが)軽くできるわけですし。ただ、マップのほうは更新が長いので・・・ま、いいや、隠すほうが悪いんだし。(ぁ

Versionのほうは今日から第17期ですね。第16期では僕が閉鎖騒動を起こしてしまったり・・・。ちょっとなんたかみんなに申し訳ないので、第17期ではみんなに好かれるような対応を・・・まぁ・・・嫌われるのがおちだったりしますが。

三国志NET KMY Visterに関する要望を[[1]]で受け付けることにしました。全部は実装できませんし、実際「三国志デフォルトにあるもの以外でゲームの進行に影響を及ぼすもの全てはちょっと・・・」な開発方針に沿っています・・・--;でも宣戦布告や同盟はゲームの進行に影響を及ぼすものではないのでやりますよー。「コマンド」「イベント」「攻略」とかの要望はNGですが、今後の開発の上で参考にさしていただくのでそれも遠慮なくカキコくださいな~。

それにしてもメイリオって見やすいなー。

21日

status.php
status.php

昨日UPしたマップの右の空白ですが、都市情報を表示することにしました。マップの好きな都市にポインタを合わせると、出てきます。ポインタ離したら消えます。画像左の「TE05」のところが白くなっているのに気づきましたか?ポインタ合わせてるんです。ポインタ合わせたら都市が白くなるようにしました。(もちろんポインタはずしたらちゃんと元に戻します)

支配国が0と数字で表示されていますが、これわまだ国の名前のリストを作る関数が実装されていないためです^^;ぁー三国志NETって意外と大きいんですなぁー。これじゃ正月の完成は無理そうです(涙

で、都市情報の下にもまだ空白が残っているんですが、これはこの都市にいる武将の一覧を表示するために空けておきますね。で、武将情報はこのマップの下に表示します。友達も言っていたんですが、能力の中で人望だけ別の場所に飛んで表示されていたりするのですが、Visterではちゃんと並べますよー。チャットですが、別のタブに入れようと思ったのですが、戦争中の操作性もちょっと考慮して、情報タブ(マップの表示されてるタブ)に入れることにしました。ただ、チャットでもAjax使うので(10秒更新)、負荷が心配ですなぁー・・・。

status.php
status.php

で、これが武将情報です。生首とは、「倒した武将の数」を短く表現したものです。短く表現しないとレイアウトが崩れるのですが、ちょっと縮め方に無理が・・・いや、むしろ生首のほうがいいのでは?(をい

従来は国によってこのテーブルの色も変わっていましたが、Visterでは部分的なところだけ色を変えようと思っています。指令メッセージ、武将情報の武将名のところの色を変えたいと思っているのですが、都市情報の「支配国」の欄ももしかしたら変えるかもしれません。でも余計なところを変えたらまだ開発に遅れが(・・・・・・

あー、武将情報もブロック機能を使っていますので、表示の切り替えができますよ。切り替え用のボタンは、マップの切り替えボタンの隣につけました。武将情報の上にボタンがあったらなんとなく見にくかったし、マップの上がちょっとすーすーしてましたので(以下略

ああ、そういえば、ちょっとした萌え絵をおまけがてらにあそこに(以下略

20日

Windows XP上で「メイリオ」フォントを使う(All About)

Vistaだけでなく、Windows XPの人は、メイリオを無償で入手できるようです。 三国志NET KMY Visterには、フォントにメイリオを使っていますので、とゆかメイリオ入れているのを前提に作っているようなものですので(なにぜメイリオは自動で行間作ってくれるからline-height設定しなくでも読みやすいし)Vister公開までにインストールしていただけるとありがたいです。あ、あと、上の記事はインストール終わっても続きがありますので、注意を。

status.php
status.php

ぁーメインページ(開発中)です。マップは一応完成という形をとりましたが、12*12になっているのに気づきましたか?これは、ある機能を導入するために3の倍数でなければいけないからです。ある機能・・・ですが、今のところまだ導入しようかどうか迷っているところです。攻略の二の舞になってはいけないですし、万が一みんながこの機能を拒否してもマップが大きくなったんで結果オーライ(笑

ともかく30秒間隔でAjaxを使うのに成功。とゆかタイマー使ったんで簡単。ぁーVersionでは都市には影はついていませんが、Visterでは影がつきます!といっても、Perlそのまんまのノーマルバージョン(KMYblog参照)では影は付きませんが^^;めんどくさいので。ああ、それと、更新ボタンはつけません。Ajax使ってますし、なにより負荷が心配だったりする。(ぁ

画面上に「情報」「コマンド」がありますが、これがタブ切り替え用のボタンです。ああ一応タブの内容はAjaxではなくあらかじめ読み込んだときに送信していますので、切り替えは速いんですけれど、メインページ表示している途中にバージョンアップしたらAjaxのところがおかしくなる可能性あり。(をい

マップを12*12に広げた都合で、ちょっとマップが小さく見えたので、従来は画面の50%の幅にしてましたが、70%に伸ばしました。その分マップの横に表示できる情報量が減ったので、なにぜ長く書くと改行してしまうので、何を表示しようかいろいろ考え中です^^;

追伸:さっきのスクリーンショットですが、都市の名前を「TE01~12」にしました。TEはTESTの略です。どーせならベータ版はこのまま公開しようかと。一本道の戦争もなんたか面白そうですし^^;

19日

Visterの由来は、Vista+erなんですよねぇ・・・。英語では「何かをする人」にはerをつけてるんですよね。swimmerとかsingerとか。そういった具合でつけてみたのですが、なんか・・・じっくりこないというか・・・。でもVersionとは似ているから(Vのところが)大丈夫! ・・・多分・・・。

洗練されたインターフェース!・・・は、まだTOPしかできてませんorz

ぁぁ・・・VisterはVersionの後継者なんで、下の画像では「第1期」とありますが、公開するときは「第17期」から始めますよー。

TOPからのログインにAjaxを導入しました。導入するのに3時間もかかってしまう僕って一体・・・orz

呼び方をメイン画面からメインページに変更しまして、タブ切り替え式にしてやりましたよwで、マップとかはAjaxで読み込む予定です。どーせ受信するのは生のHTMLなわけですし、受信したものをそのまま表示すればいいだけの話ですし。

でもってちょっと、やってる人の動作環境が心配です。JavaScript使ってますからね。ちなみに僕の環境わ、Windows Vista Home BasicのMicrosoft Internet Explorer 7ですねー。マップもちょっと見栄えをよくするつもりです。もしできたら写真UPします。MAPとかいった、メインページの「ブロック」は、表示するかどうかを設定できたりします。クッキー保存もしたいですし。あ、マップは今日はもう時間がないので明日から作ります。

あ、都市はVersionのほうの登録が減ってきたのでそれに合わせて減らしときますので心配なく。しかもベータ版&いろいろシステムが変わりすぎで敬遠する人がたくさん出るであろう、という2つの理由で、都市の数は10程度、と。減らしすぎかもしれませんが、まぁベータですし(以下略

18日

index.php
index.php

三国志NET KMY Version・・・閉鎖決定です。いろいろあって閉鎖決定です。でも、三国志NETの管理はやめたくないので新しく作ることに・・・(をい

そんな感じで、今作っとります・・・。こんな感じです。フォントにはメイリオを採用。ただ、Windows Vistaにしかないんですよね。でもってどっちも最先端だからあまり気にすることなし(ry

ファイルの拡張子から見てもわかるように、PHPで作っています。さっき、クッキーを使った自動ログインを実装しました。Ajaxは・・・まだ入れてませんーー;