DiaryDan20051220

2005-12-20 19:02:11 +0900 (6895d); rev 5

log: どうも先週末にエリアの実装をはじめたみたいなんだけど、数日間ほったらかしていたから感覚がまだもどらない。

先週悩んでいた部分は、

  • ひとりのキャラクターが所有する人形は異なるエリアに存在出来るか?
    • →できる。人形が area_id を持ち area は dolls を 1:n で所有する
  • つまりゴーストにエリアの概念はない
    • あらゆるエリアにワープ出来る?まあ直接実体化はしないんだけど
    • どこにある人形にも憑依出来るのか?
  • キャラクターがワールドログアウトすると人形は全てワールドから消える!?
    • ワールドから消えるのを area_id = nil としようと思ったけどダメだ
      • →どこに復活するの?という問題が
  • ということはキャラクターがワールドログアウトしても人形はワールドに残るべき
  • 魂(ゴースト)だけ抜ければいい?
    • でもゴーストと人形は人形が死ぬまで結びついて行けないといけないから、ゴーストが眠るのかな
  • いやゴーストもそのままでキャラクターのゴーストの憑依だけなくなればいいんじゃないだろうか

__

ちなみにまずユーザーがキャラクターを持ちます。

class User < ActiveRecord::Base
  has_many :characters, :dependent => true, :order => :id
  has_one :user_character, :dependent => true
end

キャラクターはユーザー(ゲームに登録した人)がワールドに参加するための人格です。ユーザーはキャラクターを複数持つこともできますが、アクティブなキャラクターはひとつです。

user_character とはユーザーとアクティブなキャラクターを関連づけるものです(なんかもっと簡単に関連づけられそう気も)。

class Character < ActiveRecord::Base
  belongs_to :user, :dependent => true
  has_one :user_character, :dependent => true
  has_many :ghosts, :dependent => true, :order => :id
  has_many :dolls, :dependent => true, :order => :id
end

そのユーザーの現在のゴーストは

user = User.find(id)
user.active_character.dolls

で取り出します。

PG(プレイヤーゴースト)やその人形(メインのボディ)は

user.active_character.player_ghost
user.active_character.player_doll

で参照出来るようになっています。

Comments

Name:

system revision 1.162