ID(識別子)の検討(内部データを使えるだろうか)

| コメント(0)

データをデータベースに格納しようとすると、主キーたるID(識別子)の仕組みを決めなければなりません。データを一意に識別するための道具ですね。

その場限りの仕組みならば、例えばScalar::Util::refaddrでメモリの番地を使う策も十分巧く回ります。しかし永続データとしてセッションを跨いで使用する場合には、UUID(GUID)をData::UUID辺りで見繕うか、或いはいわゆる「背番号」を付けるか、名前で一意に識別できるのならばそれを使うであるとか、色々な選択肢を採らざるを得ません。

これが業務でやっているようなシステムであれば、それはいわゆる「決めの問題」であるので、詳細要件で合意を得られれば完了です。

ところがこういう趣味の世界でファンが勝手に外野で作るようなシステムだと、勝手に決めてしまって良い物かどうか、いつも悩みます。

取り敢えずWorld(ゲームサーバー(群))であれば、FFXIの場合は00 : Bahamut, 01 : Shiva, ...といった具合に分かるので、それを使えばよいのです。

では逆にItem(装備とアイテム)では? 名前が被ることは容易に想像出来るので、やはりIntなIDにしたいところです。しかし勝手なID(オレオレID)を付けたとすると、例えば外部データサイトとの連携をしたい場合に、外部データサイトA用のIDをデータとして持つとか、或いはオレオレIDと外部データサイトのIDとの変換テーブルを持つとか、そういった面倒なことになってしまいます。

EQであればクライアントに落ちてくるゲーム内部データを解析してデータサイトを構築・運営したサイトをいくらでも知っています。例えばAllakhazamです。内部IDはつまり公式なIDであるので、オレオレIDを作らなくて済むので、是非ともこれを採用したいところです。

さて、AllakhazamはFFXIにもありますFFXIVもできそうですが、このFFXIのアイテムIDが内部データ由来の物なのかそうでないのかが分かりません。もしご存じの方がいらっしゃったら教えていただけると嬉しいです。

というようなことを考えると、予習の意味でFFXIを始めた方が良いのかも知れませんね。MMORPGに共通して必要になりそうなシステムは作れますし、実際に私の8年くらい昔のシステムを現代的に書き直している部分が少なからずありますが、やはり各ゲーム固有の要検討項目というものは出て来るわけですので。

コメントする

筆者"Gardejo"について

  • Twitter: @gardejo
  • GitHub: gardejo
  • CodeRepos: gardejo
  • CPAN: MORIYA

このサイトについて

Eorzea System Worksは、架空のシステム開発結社です。

FF14.name (FinalFantasyXIV.name)では、アヴァター(プレイヤーキャラクター)の管理システムやイベント出欠・リマインダシステムや、リンクシェル(LS)運営・管理システムやDKPシステムなどを設計・開発・公開する予定です。

関連サイト

関連サイトでは、他にもFF14に関連するサイトをいくつか紹介しています。

リンク, トラックバック歓迎

このブログへのリンク(どのページでも構いません)やトラックバックを歓迎します。

設計・開発・運用の参考にさせていただきますので、コメントもお気軽にお寄せください!

個別の記事に対するご意見などのほか、目安箱もご用意しています。

このブログ記事について

このページは、Gardejoが2009年6月28日 17:50に書いたブログ記事です。

ひとつ前のブログ記事は「ArkをCGIで動かすスクリプト(1)」です。

次のブログ記事は「Movable TypeでのシンタックスハイライトはMT::Plugin::VimColorで」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

2014年2月

            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28  

やや真面目なサイト