●サービスの目的について
サービス名:フラグメントペット
個人サイトに住みつく、ドット絵のへんなヤツ。
サイトの情報断片を食べて育ち、似たにおいのする個人サイト同士をゆるくつなぐ。
一番の目的は、個人サイト管理者同士がつながること。
SNS的なタイムラインやフォロー文化ではなく、昔の個人サイト・WEBリング・足あと文化に近い、ゆるい交流を目指す。
AI連携はしない。
PHPとDBを使い、無料サーバーや低コストなサーバーでも動かせる軽い構成を目指す。
●設置方法について
管理者が自分のサイトアドレスを登録する。
登録後、発行された表示用リンクやタグを自分のホームページに貼る。
自サイト以外の登録を完全に防ぐのは難しい。
ただし、確認用タグを貼ってもらい、サーバー側がそのタグを確認することで、
「そのサイトを編集できる人だけが本登録できる」形にする。
表示方法は、古い個人サイトにも貼りやすい形を優先する。
例:
・バナー型
・簡易ウィジェット型
・リンク型
操作ボタンは基本的に置かない。
クリック、タップ、長押しなどで反応する。
●ペット作成について
キャラクターは、ドット絵のへんなヤツ。
初代たまごっちくらいの簡単な動きにする。
最初に断片パーツを組み合わせて1体を作る。
体、目、口、飾り、色などのパーツを組み合わせる。
画像パーツではなく、文字記号をキャンバス上に自由配置して作る方式にする。
1行の顔文字ではなく、等幅セルに並べる文字絵でもなく、文字記号をパーツとして座標指定で置いていく。
小さなキャンバス上に、記号の断片を貼り合わせたような生き物を作る。
生成したペットは画像化する。
初回生成時に、文字記号パーツをキャンバス上へ自由配置し、その結果をPNG画像として保存する。
以後の表示は、そのPNG画像を使う。
これにより、表示時の処理を軽くし、閲覧者環境によるフォント差や配置崩れを避ける。
外部サイトへの貼り付け、バナー表示、対戦画面でも同じ画像を使える。
例:
・記号
・括弧
・点
・線
・カタカナ
・ひらがな
・全角記号
文字記号方式の利点:
・画像制作の負担が少ない
・サーバー負荷が軽い
・古い個人サイト文化と相性がよい
・「断片を組み合わせて生まれた」感じが出る
・表示環境に合わせてサイズを変えやすい
文字記号方式にする場合、フォント差で見た目が崩れすぎないように注意する。
サービス側で指定したWebフォントを使う。
目と口は必須。
どんなに変な形でも、目と口があることでペットとして認識できるようにする。
ペットクリエイトはランダム生成ではなく、管理者が自分で組み立てる方式にする。
基本操作は、記号を選ぶ、サイズを選ぶ、キャンバス上に置く、決定する、だけにする。
記号そのものを複雑に加工せず、大きくしたり小さくしたりする程度に留める。
一度置いた記号は、あとから選択して移動できる。
選択中の記号には枠を出し、右下に小さいハンドルを表示する。
ワードの図形のように、その右下ハンドルをドラッグしてサイズ変更できるようにする。
文字記号方式の生成ルール例:
・キャンバスサイズを決める
・文字記号パーツを座標指定で配置する
・体の外形を記号のまとまりで作る
・目を2つ配置する
・口を1つ配置する
・余白や模様を少し入れる
・PNG画像として保存する
・生成後の見た目は固定する
見た目の成長はなし。
生まれた見た目は固定で、その子の個性になる。
初回に、自サイトのジャンルタグを最大5つ食べる。
このタグが、近しいサイト間交流の鍵になる。
タグは、散歩先や対戦相手の選定に使う。
似たタグを持つサイト同士が出会いやすくなる。
見た目の生成にもタグを少し反映してよい。
ただし、処理が重くならないよう、生成は初回のみ。
●ペットの持つステータスについて
名前
誕生日
飼育歴
健康度
タグ(最大5つ)
勝利数
対戦数
勝率
飼育歴は、誕生日からの経過日数。
見た目には影響しないが、称号・セリフ・趣味活動・散歩報告などに使える。
成長は見た目ではなく、内部ステータス・称号・セリフ・対戦記録などで表現する。
公開ステータスとして重要なのは勝率。
●行動について
12:00から10分ほど
ごはん(確定 前のごはんからHP更新があったかだけを見る)
12:10~13:00
趣味活動(ランダム)
13~17時の間で一時間
さんぽ-確定 訪問先のWEB情報を拾ってくる
●ごはんについて
12:00から10分ほど、ごはん時間になる。
前回のごはんからホームページ更新があるかを見る。
更新がある場合:
家に新しい情報があるので、それを食べる。
健康度を維持、または少し回復する。
更新がない場合:
家にごはんがないため外食する。
外食は健康度を下げる原因になる。
外食パターンはランダム。
・外食中
・コンビニ弁当
・配達ごはん
外食中の場合は、置き手紙を残して画面からいなくなってもよい。
健康度の増減:
・更新ありの家ごはん 健康度 +3
・更新なしの外食 健康度 -3
・連続外食2日目以降 追加で -1
・健康度の上限は100、下限は0
健康度は急に大きく上下させない。
毎日更新していると少しずつ良くなり、更新がない日が続くと少しずつ悪くなる。
●HP更新判定について
更新量は見ない。
「更新あり」か「更新なし」だけを判定する。
基本は、管理者への質問でよい。
「前回のごはんからHPを更新しましたか?」という、したか・していないかの自己申告を中心にする。
勝率のために嘘をつくことも技術的には防がない。
厳密な監視より、ペットを気に掛けることで、管理者が自分のホームページを見る習慣ができることを優先する。
自動判定を入れる場合も、補助的な扱いにする。
サーバーに負担をかけない方法を優先する。
登録URLのHTMLを軽く取得し、前回取得時のハッシュと違うかを見る。
判定は1サイトにつき1日1回まで。
ごはん前に判定できれば理想だが、無料サーバーなどで定期実行が難しい場合は、
その日の最初のアクセス時に遅延実行してもよい。
手動の「更新した」申告も用意する。
トップページに変化が出ない更新、画像だけの更新、別ページの更新などは、
管理者が手動で申告できるようにする。
負荷対策:
・1サイト1日1回まで
・取得サイズに上限を設ける
・タイムアウトを短くする
・script、style、コメントなどは判定から除外してよい
・必要なら、判定対象にする範囲をHTMLコメントで指定できるようにする
判定に使う情報:
・last_checked_at
・last_content_hash
・last_update_detected_at
・manual_update_reported_at
ごはん時の判定:
前回ごはん以降に更新があれば家ごはん。
更新がなければ外食。
趣味活動リンク
・本を読む
・運動
●さんぽについて
1日1回、13時~17時の間で1時間さんぽに出る。
その間、ペットは画面から姿を消す。
戻ってくると、他のサイトを訪問してきたことを報告する。
報告から、そのサイトへ飛べる。
報告文は「ただいま。〇〇さんのおうちにいってきた。[サイトに行く]」のようにする。
サイトを「おうち」と呼ぶことで、個人サイト同士を訪ねる感じを出す。
訪問先は、タグが近いサイトを優先する。
ただし、完全固定にならないようランダム性も入れる。
実際にペットが相手サイトへHTTPアクセスする必要はない。
DB上で「訪問した」扱いにする。
ユーザーが報告リンクを押した時だけ、実際に相手サイトへ移動する。
訪ねたペットだけではなく、訪ねてきたペットの情報も見られる。
●ステータスについて
からだ:ぱわふる 91~100(勝率+20%)
からだ:ばっちり 71~90(勝率+10%)
からだ:ふつう 51~70 (勝率+0%)
からだ:へろへろ 30~50(勝率-10%)
からだ:もうだめ 0~29(勝率-20%)
※勝率補正は、実際の勝敗にそのまま加算しない。
「健康なペットが少し有利」くらいにとどめる。
●かじりあいバトル
基本的に50%で勝負が決まる
互いのペットが持つ健康度を少しだけ反映する。
勝率 = 50 + (自分の補正 - 相手の補正) / 4
例:
ぱわふる vs ふつう 55%
ぱわふる vs もうだめ 60%
へろへろ vs ばっちり 45%
もうだめ vs ぱわふる 40%
長期的には、HP更新をまめにして健康度を保っているペットが少し勝ちやすい。
ただし、単発の勝敗はほとんどランダムで決まる。
●プロトタイプについて
PHP化の前に、静的HTML/CSS/JavaScriptで挙動確認用プロトタイプを作る。
場所:prototype/
画面サイズは横200×縦300。
この小さい画面の中で完結する。
外部の大きな管理画面に頼らず、ペット表示、最低限の操作、ペットクリエイトを小窓内に収める。
プロトタイプで確認すること:
・文字記号をキャンバス上に自由配置してペットを作る
・ペットはランダムではなく、自分で組み立てる
・記号を大きくしたり小さくしたりして配置する
・生成したペットをPNG画像として保存し、以後は画像として表示する
・名前とタグを保存する
・健康度、飼育歴、勝率を表示する
・ごはんの自己申告で健康度が増減する
・趣味活動を表示する
・さんぽ中は画面から消え、戻ってきたら訪問先を報告する
・情報かじりあいバトルの勝敗を試せる
プロトタイプはDBを使わず、ブラウザのlocalStorageに保存する。
本実装ではPHPとDBに置き換える。