Skip to content

画面レイアウト設計 / Screen Layout Design

1. キャンバスサイズ / Canvas Size

PropertyValue
Resolution1280 x 720 px (720p)
Aspect Ratio16:9
RendererPixiJS v8 (WebGL / WebGPU)
Target FPS30 fps (streaming-optimized)
Coordinate OriginTop-left (0, 0)

2. レイヤー構成 / Layer Structure

PixiJS の Container 階層で Z-order を管理する。下層から上層の順に描画される。

Managed via PixiJS Container hierarchy. Layers are drawn bottom-to-top.

ZLayer NameContentBlend
0bgLayerRoom tilemap (floor, walls, windows)Normal
1furnitureLayerFurniture, appliances, itemsNormal
2characterLayerJohn, Sara, Eve spritesNormal
3bubbleLayerSpeech bubbles, reaction icons ("!", "?", heart)Normal
4uiLayerStatus bars, clock, LifeCoin displayNormal
5effectLayerTip effects, item drop animations, particlesAdditive
6overlayLayerFull-screen event overlays, fade transitionsNormal

3. 画面レイアウト全体図 / Full Screen Layout

┌──────────────────────────────────────────────────────────────────┐
│ 0,0                                                    1280,0   │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              TOP BAR (Info Bar)  y: 0-40                 │   │
│  │  ┌──────────┐  ┌────────────┐  ┌────────────────────┐   │   │
│  │  │ Day 12   │  │ 18:30 JST  │  │ 💰 LC: 1,234      │   │   │
│  │  └──────────┘  └────────────┘  └────────────────────┘   │   │
│  └──────────────────────────────────────────────────────────┘   │
│                                                                  │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │                                                          │   │
│  │              GAME VIEWPORT  y: 40-620                    │   │
│  │                                                          │   │
│  │    ┌─────────┐        ┌─────────┐                       │   │
│  │    │  John   │        │  Sara   │                       │   │
│  │    │  32x32  │        │  32x32  │                       │   │
│  │    └─────────┘        └─────────┘                       │   │
│  │         ┌──────────────────────┐                         │   │
│  │         │ "Dinner smells great │                         │   │
│  │         │  tonight!"           │                         │   │
│  │         └──────────────────────┘                         │   │
│  │                     ┌───────┐                            │   │
│  │                     │ Eve   │                            │   │
│  │                     │ 24x24 │                            │   │
│  │                     └───────┘                            │   │
│  │                                                          │   │
│  └──────────────────────────────────────────────────────────┘   │
│                                                                  │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              STATUS BAR  y: 620-720                      │   │
│  │  ┌──────────────────┐┌──────────────────┐┌────────────┐ │   │
│  │  │ John  HP ███░ 80 ││ Sara  HP ████ 85 ││ Eve HP ██░ │ │   │
│  │  │ 🍖 60 😊 70     ││ 🍖 50 😊 75     ││ 🍖 55 😊80 │ │   │
│  │  │ ⚡ 75 😰 30     ││ ⚡ 80 😰 25     ││ ⚡ 70 🐾50 │ │   │
│  │  └──────────────────┘└──────────────────┘└────────────┘ │   │
│  └──────────────────────────────────────────────────────────┘   │
│                                                        1280,720 │
└──────────────────────────────────────────────────────────────────┘

4. エリア定義 / Area Definitions

4.1 トップバー / Top Bar (Info Bar)

ゲーム日数・時刻・LifeCoin 残高を表示する横帯。

Horizontal strip showing game day, clock, and LifeCoin balance.

PropertyValue
Positionx: 0, y: 0
Size1280 x 40 px
BackgroundSemi-transparent black (rgba(0, 0, 0, 0.65))
┌─────────────────────────────────────────────────────────────┐
│                         TOP BAR (1280 x 40)                  │
│                                                              │
│  [12px margin]                                               │
│                                                              │
│  ┌──────────────┐   ┌──────────────┐   ┌──────────────────┐│
│  │ 📅 Day 12    │   │ 🕐 18:30 JST │   │ 💰 LC: 1,234    ││
│  │ x:12  w:140  │   │ x:570  w:140 │   │ x:1080  w:188   ││
│  └──────────────┘   └──────────────┘   └──────────────────┘│
│                                                              │
│  LEFT-ALIGNED        CENTER-ALIGNED        RIGHT-ALIGNED     │
└─────────────────────────────────────────────────────────────┘
ElementPositionAnchorFont SizeColorFormat
Game Dayx: 12, y: 20left-center16px#FFFFFFDay {n} / {n}日目
Clockx: 640, y: 20center18px bold#FFD700HH:MM JST
LifeCoin Balancex: 1268, y: 20right-center16px#FFD700LC: {n} with coin icon

LifeCoin 表示の更新

投げ銭受信時にカウントアップアニメーション(数値が1ずつ増加する演出)を表示する。

On tip received, play a count-up animation (numbers increment one by one).

4.2 ゲームビューポート / Game Viewport

タイルマップとキャラクターが表示されるメインエリア。

Main area where the tilemap and characters are rendered.

PropertyValue
Positionx: 0, y: 40
Size1280 x 580 px
Tile Size32 x 32 px
Grid40 columns x 18 rows (effective)
ViewTop-down (bird's eye)
┌────────────────────────────────────────────────────────┐
│                GAME VIEWPORT (1280 x 580)               │
│  y: 40                                                  │
│                                                         │
│  ┌──────────────────────────────────────────────────┐  │
│  │            ROOM TILEMAP                           │  │
│  │                                                   │  │
│  │  ┌────────┐                                      │  │
│  │  │ Kitchen │  ┌───┐  ┌──────┐  ┌──────┐         │  │
│  │  │ area   │  │Tbl│  │ Sofa │  │ Desk │         │  │
│  │  │        │  └───┘  └──────┘  │(John)│         │  │
│  │  └────────┘                    └──────┘         │  │
│  │                                                   │  │
│  │     ┌────┐                         ┌────────┐    │  │
│  │     │Bath│                         │ Bed    │    │  │
│  │     │room│                         │(futon) │    │  │
│  │     └────┘          ┌────┐         └────────┘    │  │
│  │                     │Eve │                        │  │
│  │                     │bed │                        │  │
│  │                     └────┘                        │  │
│  └──────────────────────────────────────────────────┘  │
│                                                  y: 620 │
└────────────────────────────────────────────────────────┘

スプライトサイズ / Sprite Sizes

CharacterSprite SizeCollision BoxWalk Speed
John32 x 32 px24 x 16 px (bottom-center)2 px/frame
Sara32 x 32 px24 x 16 px (bottom-center)2 px/frame
Eve24 x 24 px16 x 12 px (bottom-center)3 px/frame

スプライトのアンカーポイントは足元中央 (0.5, 1.0) に設定する。Y座標ソートにより奥のキャラが先に描画される。

Sprite anchor is set to bottom-center (0.5, 1.0). Y-sort ensures characters further back are drawn first.

4.3 ステータスバー / Status Bar

キャラクターごとのステータスを常時表示する下部パネル。

Bottom panel showing per-character stats at all times.

PropertyValue
Positionx: 0, y: 620
Size1280 x 100 px
BackgroundSemi-transparent black (rgba(0, 0, 0, 0.75))
┌──────────────────────────────────────────────────────────────────┐
│                      STATUS BAR (1280 x 100)                      │
│  y: 620                                                           │
│                                                                   │
│  ┌─ John (430 x 88) ──┐ ┌─ Sara (430 x 88) ──┐ ┌─ Eve (380x88)┐│
│  │                     │ │                     │ │              ││
│  │ [Face] John  ♥78    │ │ [Face] Sara  ♥78    │ │ [Face] Eve   ││
│  │ HP  ████████░░  80  │ │ HP  █████████░  85  │ │ HP  ████░ 90 ││
│  │ HGR ██████░░░░  60  │ │ HGR █████░░░░░  50  │ │ HGR ████░ 55 ││
│  │ MOD ███████░░░  70  │ │ MOD ███████░░░  75  │ │ MOD ████░ 80 ││
│  │ ENG ████████░░  75  │ │ ENG ████████░░  80  │ │ ENG ████░ 70 ││
│  │ STR ███░░░░░░░  30  │ │ STR ██░░░░░░░░  25  │ │ MSC ████░ 50 ││
│  │                     │ │                     │ │              ││
│  │ x:8                 │ │ x:442               │ │ x:876        ││
│  └─────────────────────┘ └─────────────────────┘ └──────────────┘│
│                                                           y: 720 │
└──────────────────────────────────────────────────────────────────┘

ステータス項目 / Status Items

John & Sara (Human Characters)

StatusAbbrIconBar ColorRange
HPHP❤️#FF4444#44FF440-100
HungerHGR🍖#FF8C000-100
MoodMOD😊#FFD7000-100
EnergyENG#00BFFF0-100
StressSTR😰#FF6B6B0-100

Eve (Dog)

StatusAbbrIconBar ColorRange
HPHP❤️#FF4444#44FF440-100
HungerHGR🍖#FF8C000-100
MoodMOD😊#FFD7000-100
EnergyENG#00BFFF0-100
MischiefMSC🐾#DA70D60-100

ステータスバー色変化

HP バーは値に応じてグラデーション変化する:

  • 70-100: Green (#44FF44)
  • 30-69: Yellow (#FFD700)
  • 0-29: Red (#FF4444) + 点滅アニメーション

HP bar color changes by value:

  • 70-100: Green (#44FF44)
  • 30-69: Yellow (#FFD700)
  • 0-29: Red (#FF4444) + blinking animation

ステータスバーのレイアウト詳細 / Status Bar Layout Detail

ElementPosition (relative to panel)Size
John Panelx: 8, y: 6430 x 88 px
Sara Panelx: 442, y: 6430 x 88 px
Eve Panelx: 876, y: 6396 x 88 px
Face Iconx: 4, y: 4 (per panel)24 x 24 px
Name Labelx: 32, y: 4 (per panel)auto width
Love Scoreright-aligned in panel headerauto width
Bar Width200 px (John/Sara), 160 px (Eve)10 px height
Bar Label (Abbr)x: 32, y: offset per row14px font
Bar Value (Number)right of bar, 4px gap12px font

5. 吹き出し / Speech Bubbles

キャラクターの会話・コメント返信・投げ銭リアクションに使用する。

Used for character dialogue, comment replies, and tip reactions.

5.1 吹き出しレイアウト / Bubble Layout

         ┌────────────────────────────┐
         │ "Dinner smells great       │
         │  tonight! Let's eat        │
         │  together~"                │
         │                            │
         │  [To: cooking_fan_123]     │  ← comment reply attribution
         └──────────┬─────────────────┘


              ┌──────────┐
              │ Character │
              │  Sprite   │
              └──────────┘

5.2 吹き出し仕様 / Bubble Specifications

PropertyValue
Max Width280 px
Min Width80 px
Padding12 px (all sides)
Border Radius8 px
Background#FFFFFF (opacity 0.95)
Border2 px solid #333333
Tail8 px triangle pointing down to character
PositionCentered above character sprite, 8 px gap from sprite top
Z-IndexbubbleLayer (layer 3)

5.3 テキスト仕様 / Text Specifications

PropertyValue
Font Size14px
Line Height1.4 (≈ 20px)
Max Lines4 lines
Max Characters (JP)60 characters (approx. 15 chars x 4 lines)
Max Characters (EN)120 characters (approx. 30 chars x 4 lines)
Text Color#333333
Word Wrapenabled
Overflowtruncate with "..."

5.4 吹き出しの種類 / Bubble Types

TypeBorder ColorUse CaseDuration
Normal#333333Character-to-character dialogue5s
Comment Reply#4A90D9Responding to viewer comment6s
Tip Reaction#FFD700 (gold)Thanking a tipper8s
Whisper / Thought#999999 (dashed border)Internal monologue, sleep talk4s

5.5 吹き出しの表示ルール / Display Rules

  • 同時に表示できる吹き出しは最大 3個(キャラクター1体につき1個)

  • 重なり防止: 他キャラの吹き出しと重なる場合は水平方向にオフセットする

  • 画面外はみ出し防止: ビューポート端に近い場合は内側にクランプする

  • フェードイン (200ms) → 表示 → フェードアウト (300ms)

  • Maximum 3 bubbles displayed simultaneously (1 per character)

  • Overlap prevention: offset horizontally if overlapping another character's bubble

  • Screen edge clamping: clamp to viewport edge when character is near screen border

  • Fade-in (200ms) → display → fade-out (300ms)

5.6 コメント返信の帰属表示 / Comment Reply Attribution

コメント返信時は吹き出し下部に返信先ユーザー名を表示する。

When replying to a comment, show the target username at the bottom of the bubble.

┌──────────────────────────────┐
│ "Thanks for watching!        │
│  I'm making curry tonight!"  │
│                              │
│  ┌─────────────────────────┐ │
│  │ 💬 To: cooking_fan_123  │ │
│  └─────────────────────────┘ │
└──────────────────────────────┘
ElementFont SizeColor
Attribution label11px#888888
Username11px bold#4A90D9

6. 投げ銭エフェクト表示エリア / Tip Effect Display Area

投げ銭(Super Chat / TikTok Gift)受信時のビジュアルエフェクト領域を定義する。

Defines the visual effect regions for incoming tips (Super Chat / TikTok Gift).

6.1 ティア別エフェクト領域 / Effect Areas by Tier

┌──────────────────────────────────────────────────────────────────┐
│                                                                  │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │ ★ TIP BANNER AREA (Small/Medium tips)                    │   │
│  │   y: 44 ~ 88   (height: 44px)                           │   │
│  │   ┌──────────────────────────────────────────┐           │   │
│  │   │  🎉 100 LC from yuki_chan!                │           │   │
│  │   │      "Cup noodles arrived!"              │           │   │
│  │   └──────────────────────────────────────────┘           │   │
│  └──────────────────────────────────────────────────────────┘   │
│                                                                  │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │ ★ ITEM DROP ZONE (center of viewport)                    │   │
│  │   x: 440~840, y: 200~420                                 │   │
│  │                                                          │   │
│  │              ┌──────┐                                    │   │
│  │              │ Item │  ← drops from top with bounce      │   │
│  │              │ 48x48│                                    │   │
│  │              └──────┘                                    │   │
│  │                                                          │   │
│  └──────────────────────────────────────────────────────────┘   │
│                                                                  │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │ ★ FULL-SCREEN EFFECT (Large tips 5,000+ LC)              │   │
│  │   Entire viewport (1280 x 720)                           │   │
│  │   - Screen flash / sparkle particles                     │   │
│  │   - BGM change                                           │   │
│  │   - Special cut-in animation (center 640x360)            │   │
│  └──────────────────────────────────────────────────────────┘   │
│                                                                  │
└──────────────────────────────────────────────────────────────────┘

6.2 ティア別エフェクト仕様 / Effect Specs by Tier

Small Tips(100-499 LC)

PropertyValue
Banner Positionx: 640 (center), y: 66
Banner Sizeauto-width (max 600px) x 44 px
Banner BGrgba(255, 215, 0, 0.9) (gold)
Banner Text16px bold, #333333
Item Drop Startx: random(440-840), y: 40
Item Drop EndNear receiving character position
Item Sprite Size48 x 48 px
Drop AnimationEase-out bounce, 800ms
Banner Duration3 seconds

Medium Tips(500-4,999 LC)

PropertyValue
Banner Positionx: 640 (center), y: 66
Banner Sizeauto-width (max 800px) x 52 px
Banner BGrgba(255, 165, 0, 0.95) (orange-gold)
Banner Text20px bold, #FFFFFF
Sparkle Particles20-40 particles, spread from banner
Delivery AnimationKnock SFX → door opens → item slides in
Banner Duration5 seconds

Large Tips(5,000+ LC)

PropertyValue
Full-Screen FlashWhite overlay, opacity 0→0.6→0, 500ms
Cut-in Areax: 320, y: 180, size: 640 x 360 px (center)
Cut-in BGrgba(0, 0, 0, 0.8) with gold border
Banner Text28px bold, #FFD700, with glow effect
Particle Count100+ sparkles across full screen
BGMFade current → fanfare → fade back
Banner Duration8 seconds
Special EventEvent-specific sequence begins after banner

6.3 投げ銭バナーのテキスト表示 / Tip Banner Text Format

Small:   "🎉 {amount} LC from {username}!"
Medium:  "✨ {amount} LC from {username}! ✨"
Large:   "🌟🌟 {amount} LC from {username}!! 🌟🌟"

アイテム確定時(下段追加)/ When item determined (second line):
         "{item_name_jp} / {item_name_en}"

7. リアクションアイコン / Reaction Icons

キャラクターの頭上に表示される小さな感情アイコン。

Small emotion icons displayed above character heads.

    ┌──┐
    │❗│  ← reaction icon (16x16 or 24x24)
    └──┘
  ┌──────┐
  │ Char │
  │      │
  └──────┘
IconMeaningTrigger
Surprised / NoticeComment directed at character
Confused / ThinkingDeciding action
❤️Love / AffectionHigh love score event
💢AngryArgument
💤SleepingSleep action
🎵Happy / SingingHigh mood
💦EmbarrassedTeasing comments
ExcitedTip reaction
🍖HungryHunger below 20
PropertyValue
Size24 x 24 px
PositionCentered above sprite, y: sprite.top - 28 px
AnimationBounce-in (200ms) + float (up-down 2px, 1s loop)
Duration2 seconds

8. OBS シーン設定 / OBS Scene Configuration

8.1 メインシーン / Main Scene

OBS Studio でゲーム画面をキャプチャするための Browser Source 設定。

Browser Source configuration for capturing the game screen in OBS Studio.

PropertyValue
Source TypeBrowser Source
URLhttp://localhost:3000
Width1280 px
Height720 px
FPS30
CSS(empty — game handles all styling)
Shutdown source when not visibleOFF
Refresh browser when scene becomes activeOFF
Custom frame ratechecked, 30 fps
┌──────────────────────────────────────────────────────────────────┐
│                    OBS Scene: "AI Cohabitation Life"              │
│                                                                   │
│  Sources (bottom to top):                                        │
│                                                                   │
│  ┌───────────────────────────────────────────────────────────┐   │
│  │ 1. [Browser Source] Game Screen                            │   │
│  │    URL: http://localhost:3000                              │   │
│  │    Size: 1280 x 720                                       │   │
│  │    Position: (0, 0)                                       │   │
│  │    FULL CANVAS — no scaling needed                        │   │
│  └───────────────────────────────────────────────────────────┘   │
│                                                                   │
│  All UI elements (status bar, clock, tip effects, speech         │
│  bubbles) are rendered INSIDE the PixiJS canvas.                 │
│  No additional OBS overlays are needed for game UI.              │
│                                                                   │
│  Optional OBS-only overlays:                                     │
│  ┌───────────────────────────────────────────────────────────┐   │
│  │ 2. [Image] Channel logo watermark (optional)              │   │
│  │    Size: 80 x 80                                          │   │
│  │    Position: top-right (1192, 4)                          │   │
│  │    Opacity: 40%                                           │   │
│  └───────────────────────────────────────────────────────────┘   │
│  ┌───────────────────────────────────────────────────────────┐   │
│  │ 3. [Text] "LIVE" indicator (optional)                     │   │
│  │    Font: 14px bold                                        │   │
│  │    Color: #FF0000 with white outline                      │   │
│  │    Position: top-right (1220, 48)                         │   │
│  └───────────────────────────────────────────────────────────┘   │
│                                                                   │
└──────────────────────────────────────────────────────────────────┘

8.3 配信設定 / Streaming Settings

SettingYouTube LiveTikTok Live
ProtocolRTMPRTMP
Resolution1280 x 7201280 x 720
Bitrate (video)2,500-4,000 kbps2,000-3,000 kbps
Bitrate (audio)128 kbps128 kbps
Encoderx264 or NVENCx264 or NVENC
Keyframe Interval2 seconds2 seconds
ProfileHighHigh
Rate ControlCBRCBR

マルチプラットフォーム配信

YouTube と TikTok に同時配信する場合は、OBS の Multi-RTMP プラグインまたは Restream.io を使用する。ローカルマシンの CPU/GPU リソースに注意。

For simultaneous streaming to YouTube and TikTok, use OBS Multi-RTMP plugin or Restream.io. Monitor local machine CPU/GPU resources.


9. フォント選定 / Font Selection

日本語と英語の両方で読みやすく、ピクセルアートの雰囲気に合うフォントを選定する。

Select fonts that are readable in both JP and EN, matching the pixel art aesthetic.

9.1 プライマリフォント / Primary Font

Use CaseFontFallbackNotes
UI Text (status, clock, LC)"DotGothic16""Press Start 2P", monospaceGoogle Fonts. Pixel-style JP+EN
Speech Bubbles"M PLUS 1p" (Regular 400)"Noto Sans JP", sans-serifGoogle Fonts. Readable JP+EN
Tip Banner"M PLUS 1p" (Bold 700)"Noto Sans JP", sans-serifBold for impact
Numbers (stats, LC)"Press Start 2P""DotGothic16", monospacePixel number aesthetic

9.2 フォント読み込み / Font Loading

typescript
// Google Fonts CDN (in index.html or loaded via WebFontLoader)
const FONT_URLS = [
  'https://fonts.googleapis.com/css2?family=DotGothic16&display=swap',
  'https://fonts.googleapis.com/css2?family=M+PLUS+1p:wght@400;700&display=swap',
  'https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap',
]

9.3 フォントサイズ一覧 / Font Size Reference

ElementFontSizeWeightColor
Game Day labelDotGothic1616px400#FFFFFF
ClockDotGothic1618px400#FFD700
LifeCoin balancePress Start 2P14px400#FFD700
Status bar nameDotGothic1614px400#FFFFFF
Status bar abbrDotGothic1612px400#CCCCCC
Status bar valuePress Start 2P12px400#FFFFFF
Speech bubble textM PLUS 1p14px400#333333
Comment attributionM PLUS 1p11px400#888888
Tip banner (small)M PLUS 1p16px700#333333
Tip banner (medium)M PLUS 1p20px700#FFFFFF
Tip banner (large)M PLUS 1p28px700#FFD700

10. カラーパレット / Color Palette

ピクセルアートの温かみと視認性を両立するカラーパレット。

A color palette balancing pixel art warmth with readability.

10.1 UI カラー / UI Colors

NameHexUsage
ui-bg-dark#1A1A2ETop bar / status bar background base
ui-bg-overlayrgba(0,0,0,0.65)Top bar overlay
ui-bg-statusrgba(0,0,0,0.75)Status bar overlay
ui-text-primary#FFFFFFPrimary UI text
ui-text-secondary#CCCCCCSecondary / label text
ui-text-muted#888888Attribution, hints
ui-gold#FFD700LifeCoin, clock, highlights
ui-link#4A90D9Comment attribution, links

10.2 ステータスバー カラー / Status Bar Colors

NameHexUsage
bar-hp-high#44FF44HP 70-100
bar-hp-mid#FFD700HP 30-69
bar-hp-low#FF4444HP 0-29
bar-hunger#FF8C00Hunger bar
bar-mood#FFD700Mood bar
bar-energy#00BFFFEnergy bar
bar-stress#FF6B6BStress bar
bar-mischief#DA70D6Mischief bar (Eve)
bar-bg#333333Bar background (unfilled)

10.3 吹き出しカラー / Speech Bubble Colors

NameHexUsage
bubble-bg#FFFFFF (95% opacity)Bubble background
bubble-border-normal#333333Normal dialogue
bubble-border-comment#4A90D9Comment reply
bubble-border-tip#FFD700Tip reaction
bubble-border-thought#999999Thought / whisper
bubble-text#333333Bubble text

10.4 エフェクトカラー / Effect Colors

NameHexUsage
effect-gold#FFD700Tip sparkles
effect-orange#FFA500Medium tip banner
effect-white#FFFFFFLarge tip flash
effect-particle#FFE4B5Particle glow

10.5 ゲーム画面カラー / Game Screen Colors

NameHexUsage
room-floor#D2B48CWood floor base
room-wall#F5F5DCWall base
room-shadowrgba(0,0,0,0.15)Furniture shadows
room-window-lightrgba(255,255,200,0.3)Window light overlay
night-overlayrgba(10,10,40,0.4)Nighttime tint (22:00-6:00)
morning-overlayrgba(255,200,100,0.15)Morning tint (6:00-8:00)
evening-overlayrgba(255,120,50,0.2)Evening tint (17:00-19:00)

11. 時間帯別演出 / Time-of-Day Rendering

ゲーム内時刻に応じてビューポートの色調を変化させる。

Viewport color tint changes based on in-game time.

Time (JST)OverlayLightingNotes
6:00-8:00morning-overlayWarm yellow tintWindow light bright
8:00-17:00NoneNatural / neutralFull brightness
17:00-19:00evening-overlayOrange sunset tintWindow shows sunset
19:00-22:00Slight dimIndoor lights onWarm interior glow
22:00-6:00night-overlayDark blue tintOnly lamp areas lit

12. レスポンシブ考慮 / Responsive Considerations

OBS Browser Source は固定サイズで取り込むため、レスポンシブ対応は不要。ただし、デバッグ用にブラウザで直接開く場合の挙動を定義する。

OBS Browser Source captures at a fixed size, so responsive design is unnecessary. However, behavior when opening directly in a browser for debugging is defined below.

ScenarioBehavior
OBS Browser SourceFixed 1280x720. No scaling.
Desktop browser (debug)Canvas fixed at 1280x720. CSS margin: 0 auto centers it. Black letterbox around canvas.
Window smaller than 1280x720CSS transform: scale() to fit, maintaining aspect ratio.

13. パフォーマンス指針 / Performance Guidelines

MetricTargetNotes
Frame rate30 fps stableOBS captures at 30 fps; higher is unnecessary
Draw calls< 50 per frameUse sprite batching and texture atlases
Texture memory< 64 MBAll sprites in shared atlas (2048x2048)
Particle count (idle)0Particles only during tip effects
Particle count (max)150Large tip effect peak
Speech bubble updatesOn text change onlyNo per-frame recalculation
Status bar updatesOn state change onlyWebSocket push triggers redraw

14. 座標早見表 / Coordinate Quick Reference

全レイアウト要素の座標を一覧化する。

Consolidated list of all layout element coordinates.

ElementxyWidthHeightAnchor
Canvas001280720top-left
Top Bar00128040top-left
Game Day label1220autoautoleft-center
Clock label64020autoautocenter
LifeCoin label126820autoautoright-center
Game Viewport0401280580top-left
Status Bar06201280100top-left
John Status Panel862643088top-left
Sara Status Panel44262643088top-left
Eve Status Panel87662639688top-left
Tip Banner (small)64066max 60044center
Tip Banner (medium)64066max 80052center
Item Drop Zone440-840200-420400220center
Cut-in (large tip)320180640360top-left