TopImage

バナ・ディール時計を作ろう

はじめに
自分用に何かとHPを見るようになり、時計がほしいと思った今日この頃。 フリーで配布してるスクリプトも見つからなかったので、無い物は作ってみようとい事でこの企画開始!

へっぽこさんですので、ちゃんとした物が出来るかどうかはわかりませんが、少しずつ作ってみます。

いまなら、X-LARGE TREASURESさんの、Vana'naViっていう、Flash が見た目もかっこよくていいですね。FLASH いいな〜   2004.12.18 Ferio 追加
時計
Earth Time
Vana'diel Time
月齢

マウラ・セルビナ 航路

アルザビ 航路
マウラ ←→ アルザビ
アルザビ ←→ ナシュモ

マナクリッパー
ダルメルロック遊覧
マリヤカレヤリーフ遊覧
ビビキー湾 → プルゴノルゴ島
プルゴノルゴ島 → ビビキー湾

飛空挺 ジュノ発
ジュノ → サンドリア
ジュノ → バストゥーク
ジュノ → ウィンダス
ジュノ → カザム

飛空挺 周辺国発 ジュノ行き
サンドリア → ジュノ
バストゥーク → ジュノ
ウィンダス → ジュノ
カザム → ジュノ
チョコボ
サンド
バス 
ウィン
カザム
 



資料
まずは、情報収集。
まったくツールもない初期の頃なら、FF11動かして画面とにらめっこして、自力で情報収集しなくてはいけないんでしょうけど、幸い多くのツールが作成されているので、探せばどこかに情報は有るだろうと言う事で、いきなり他力本願モードです。
実装する・しない(出来る・出来ない)は、一切無視して集めた情報を書き込んでます。
検証してませんので間違ってるかもしれません。

2004/03/21 追加
  • 地球時間 2002/07/23 00:00:00 =
    ヴァナ時間(風) 0900/02/06 00:00:00
  • 地球の25倍のスピードで、時間が経過している
  • ヴァナの1時間は、ヴァナ60分
  • ヴァナの1日は、ヴァナ24時間
  • ヴァナの1ヶ月は、ヴァナ30日
  • ヴァナの1年は、ヴァナ360日(12ヶ月)
  • 曜日の移り変わりは、火 → 土 → 水 → 風 → 氷 → 雷 → 光 → 闇 →

2004/03/22 追加
  • 船は、毎日 00:00 08:00 16:00 の3便出航している

2004/03/24 追加
  • 2002/09/17 00:00:00 新月→三日月 の計算の起点に使えそうですね。
船 航路 関係
  • 到着までは地球時間で15分45秒。
月齢 関係(時計の横に表示したいね)
  • 月齢は12段階しかない。
  • 満月 → 十六夜 → 居待月 → 下弦の月 → 二十日余月 → 二十六夜 → 新月 → 三日月 → 七日月 → 上弦の月 → 十日夜 → 十三夜 →
  • 同じ月齢が7日間つづく。(1周期で、84日だったんだ・・・知らなかった(汗)
種族装備 関係(実装するかは未定)
  • ヴァナ時間一週間周期で取れる種族と性別、また型紙が出るダンジョン変わる。
  • 一週間は火曜日から始まり、闇曜日に終わる。
  • ヒューム♂ → ヒューム♀ → エルヴァーン♂ → エルヴァーン♀ → タルタル♂ → タルタル♀ → ミスラ → ガルカ →
  • グスゲン鉱山 → オルデール鍾乳洞 → シャクラミ迷宮 →
2004/03/21
 はじめの一歩
とにかく、プログラムにしてみましょう。
地球時間 2002/07/23 00:00:00 =
ヴァナ時間(風) 0900/02/06 00:00:00
ここを基準に考えてプログラムを作る事にします。

地球時間は各月の日数・1年の長さがバラバラで扱いずらそうですね・・・。
では、JavaScript上ではどうやって表現しているのか見てみると、どうやらJavaScriptでは 1970/01/01 00:00:00 からの経過時間を、ミリ秒で表す事になっているようです。
経過時間と言う事で考えれば地球時間の暦を考慮しなくて良くて楽そうです。 地球時間の現在の日時と、2002/07/23 00:00:00 の差を求める事で、基準日からの経過時間(ミリ秒)がわかります。

経過時間を25倍してやればヴァナ時間での経過時間がわかります。それを、900/02/06 00:00:00に足してやればいまのヴァナ時間が求められそうですね。

ただ、プログラム内部の時間表現は、ヴァナ歴 001/01/01 からの経過時間で表現した方が後々の計算便利かな・・・。
2004/03/22 というか、もう23日だ
 船の時刻表を調べよ。
最低限の時計が動いたので、調子にのって付加機能の追加に行ってみましょう!

まずは、時刻表を思い出すことの出来た船の航路から行きたいと思います。ありがちな、出航・到着までの時間を地球時間で表示するを作りたいと思います。

丁度、切りよく8時間毎と言うことで、計算式を作ってゴリゴリ計算しても判断出来ると思いますが、汎用性が無いのでその方法は却下ですね。
どうせ、飛空挺の時に中途半端な時間が出てくると思うし、不定期な物にも対応できると良いと思うので、時刻表を用意してそこから調べる方式にします。

まずは時刻表の用意ですね。
ShipSTable = new Array("08:00", "16:00", "00:00");
1日に3便しかないんで、あっという間ですね。あらかじめ、00:00 からの経過時間を計算して秒で表記した時刻表作った方が、時刻表示→経過時間の計算を毎回省けるなんて思ったけど、メンテナンスが面倒なので却下!PCに頑張ってもらいましょう。
後々の事を考えて、時刻と時刻表を指定して、次の便は何時からかを調べるサブルーチンを作ることにしましょう。

一番近い次の時刻をどう考えるかですね・・・。
時刻表の時間と指定時刻の差を求めて一番小さい物が一番近い。と言う方針で考えてみました。 時刻差が分かれば、1/25 するだけで地球時間の待ち時間ですし、一石二鳥ですね。

・・・・

良さそうな案でしたが、差を取っただけでは、過ぎてしまった時刻の差が負の値になってより小さい物として判断されてしまいました。(汗 そのおかげでいつでも 00:00の時刻表を拾ってきてしまいました。
過ぎてしまった場合は、24時間後の時刻と差を取らないと、駄目でしたね・・・。うっかりしてました。
負の数になったら、86400秒(24時間)足すことで、処理しました。

どうやら、OKみたいですね。
サブルーチンが出来たところで、今日は終了。
2004/03/24
 エレガントな基準日を計算してみた(無意味な行動)
情報を集めていて、ようやく月齢の基準に出来る情報を見つけました。
2002/09/17 00:00:00 新月→三日月 月齢の変化と、ヴァナの日付の変化、地球の日付の変化が一致しているようで、なかなか良い情報ですね。

しかし、日付が中途半端ですね。FF11も内部には基準日が有るはずです。資料もそろってきたのである程度は計算出来ると思うので、もう少しエレガントな基準日を探してみましょう。

まったく無駄になるかもしれないし、間違っているかもしれませんが、まあ考えるのも楽しいもんです。

まずは、地球時間・ヴァナ時間・月齢の一致する時間を考えてみます。
地球時間にはE・ヴァナ時間にはVをつけて表現することにします。

地球時間  1 E日 = 24 E時間 = 600 V時間
ヴァナ時間 1 V日 = 24 V時間
月齢    7 V日 = 168 V時間
これらの最小公倍数 4200 V時間 が、1周期ですね。

4200 V時間 = 168 E時間 = 7 E日
地球の1週間で1周期だったんですね。

周期がわかればあとは、実測の基準日(2002/09/17)から1周期ずつ引いていって、それらしい日を探してみましょう。
計算量が多くて面倒なので、プログラムに頑張ってもらう事に。
-37周期 2002/01/01
-72周期 2001/05/01
-111周期 2000/08/01
-137周期 2000/02/01
-172周期 1999/06/01
-198周期 1998/12/01
-211周期 1998/09/01
-272周期 1997/07/01

プログラムを作ったから気が付いた!1週間毎なら曜日は同じなのでカレンダーで十分だった! ま、いいや4行のプログラムだし・・・
-37周期 2002/01/01が一番切りがいいですね。
基準日を変える前のプログラムに2002/01/01のヴァナ時間を求めさせてみました。
886/01/01(火)ヴァナでも、切りがいいですね!曜日の始まりまで合ってます。
とてもとてもエレガントな基準が見つかりましたので、これを使ってプログラムを直して実際のFF11と合わせてみる事にします。

その時の月齢も計算してみます。
-37周期 = -259 E日 = -6475 V日 = -925 V月齢 = -77 V月齢周期 - 1月齢
-77 V月齢周期 - 1月齢 だから、新月→三日月 の前、二十六夜 → 新月 と言うことですね。


= 結論 =
2002/01/01 = 886/01/01(火)(二十六夜 → 新月)
ホントか!? せっかく求めたのでこれを根拠にプログラムを作ってみたいと思います。

あれ・・・時間は合ってるみたいだけど、月齢全然違うや・・・


ヴァナ時間の表現は、ヴァナ歴 0/01/01 00:00:00 からの時間経過で考えてたから、月例の計算の起点も、そこまでずらさなきゃ計算合わないや(汗。
886 V年 = 318960 V日 = 3797 月齢周期 + 12 V日
ヴァナ歴 0/01/01 00:00:00 は、月例が変わる日じゃないのね・・・。ま、しょうがないか・・・。
2004/03/25
 月齢表示が出来れば、残り時間も
月齢表示が出来た時計を眺めて思ったこと。
あと何時間同じ月齢が続くか表示がほしいよね。釣りに出発しても時間があるのか!?満月に合成したい?など、時間の気になるところです。

月齢表示が終わってるから、チョイチョイだ!などと、なめてかかったらなかなか出来ません・・・。
私が、へっぽこでした。

飛空挺の時刻表つけて、表示形式のオプションつけたら、最低限の要求は終了か!?
2004/05/1
 延々と放置になっていたので見切り公開
デバグページに延々と放置になっていたので、見切りをつけて現状で完成しよ。
種族装備とちゃったし、ジュノの酒場もほとんど利用しないので、調べる気がおきな〜〜い。

ま、人間なんてこんなもんね。
2004/06/29
 バリスタエントリースケジュール
2004/6/29 バージョンアップで、バリスタが、定期イベントになった記念?

1回も参加したこと無いけど、ヴァナ時間での定期開催と言うことで、非常にカレンダー作成向きだったので、サックリ作ってみました。
詳しい検証してないので、間違ってる可能性大ですが、そこはそれ、適当で(汗
2004/11/22
 今更マナクリッパー対応
バージョンアップ 2004/09/14で、プロマシアエリアが解放にになりましたが、今更ながらにマナクリッパーの時刻表に対応しました。

バージの時刻表は調べるの面倒そうだな・・・
2004/12/18
 カレンダーHTML化
ネットをふらふらしていたら、こんな情報に出会った。

1.どこでもいいからホームページを開く。
2.下の一行を「アドレス」欄に貼り付ける。
JavaScript:document.body.innerHTML=document.body.innerHTML.split('ー').join('━(゚∀゚)━');focus();
3.Enterを押す。

うお!JavaScriptでHTML直接書き換えてやがる。innerHTML か・・・知らなかった(汗。
時計部分は、何度も呼び出しているので、再レンダリングの負荷が大きすぎると思うので、1回表示して終わりのカレンダー部分に使ってみよう。

なんて思って、密かに修正してみました。なんかいいね。
2005/09/07
 チョコボレース
チョコボレースのまとめサイトを見つけたので、ついでに送り先を表示できるようにしてみました。

この、時計スクリプト。随分中身を忘れてきて危険な状態かも(汗
2006/05/04
 アルザビ航路
アルザビ航路を適当に追加。成分無調整 情報が一部しか見つからず、ほとんど適当な時間で埋めてます。
間違っている可能性大です。信用してはいけません。