docs(webgl): 화면 대응과 로컬 확인 결과 상세 기록

구현 결정, 검증 증거, 로컬 DB 적용과 게임 등록, 사용자 긍정 의견 및 남은 확인을 기록한다. 스크린샷 15장과 갤러리를 보존하고 링크와 이미지 해시를 검증했다.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
이정수 2026-10-14 17:20:43 +09:00
parent 90af59939c
commit e67996e5f3
21 changed files with 240 additions and 0 deletions

View File

@ -21,3 +21,5 @@ last_reviewed: 2026-10-14
최종 정적 UI detect에서 기존 소개 패널 accent border와 숨겨진 thumbnail preview만 지적되었다. 후자는 src를 먼저 설정한 뒤 표시하므로 broken-image 오탐이다. 변경된 플레이어·크기 설정에서 확인된 새 UI 결함은 없었다. 실제 HEAD 이전 JSP를 임시 복사본에 대입한 동일 SSR regression은 실패(exit 1), 현재 JSP는 통과(exit 0)했다. 이는 markup 회귀 증거이며 이전 브라우저 geometry 실행 증거는 아니다. 최종 정적 UI detect에서 기존 소개 패널 accent border와 숨겨진 thumbnail preview만 지적되었다. 후자는 src를 먼저 설정한 뒤 표시하므로 broken-image 오탐이다. 변경된 플레이어·크기 설정에서 확인된 새 UI 결함은 없었다. 실제 HEAD 이전 JSP를 임시 복사본에 대입한 동일 SSR regression은 실패(exit 1), 현재 JSP는 통과(exit 0)했다. 이는 markup 회귀 증거이며 이전 브라우저 geometry 실행 증거는 아니다.
보완 검증에서는 CDP touch 이벤트의 pointerType=touch, isTrusted=true와 실제 Unity 메뉴 전환을 함께 확인했다. 세로 일반 화면의 Shop, 가로 확대·resize 후 Open Upgrades가 입력 좌표에 맞게 전환되었고 같은 iframe/Unity 상태를 유지했다. 실제 물리 터치 기기의 스모크는 별도 사용자 확인 항목이다. [보완 검증 보고서](../../.atp/work-session/20261014-091658/supplemental-verification.md), [최초 검증 보고서](../../.atp/work-session/20261014-091658/verification.md), [최종 문서·UI 감사](../../.atp/work-session/20261014-091658/artifacts/final-doc-ui-audit.md)에 근거와 한계를 남겼다. 재현 절차는 [등록·실행 가이드](../usage/webgl-display.md)에 있다. 공유·운영 DB 적용과 배포는 검증 harness에 포함하지 않는다. 보완 검증에서는 CDP touch 이벤트의 pointerType=touch, isTrusted=true와 실제 Unity 메뉴 전환을 함께 확인했다. 세로 일반 화면의 Shop, 가로 확대·resize 후 Open Upgrades가 입력 좌표에 맞게 전환되었고 같은 iframe/Unity 상태를 유지했다. 실제 물리 터치 기기의 스모크는 별도 사용자 확인 항목이다. [보완 검증 보고서](../../.atp/work-session/20261014-091658/supplemental-verification.md), [최초 검증 보고서](../../.atp/work-session/20261014-091658/verification.md), [최종 문서·UI 감사](../../.atp/work-session/20261014-091658/artifacts/final-doc-ui-audit.md)에 근거와 한계를 남겼다. 재현 절차는 [등록·실행 가이드](../usage/webgl-display.md)에 있다. 공유·운영 DB 적용과 배포는 검증 harness에 포함하지 않는다.
후속 로컬 확인에서 개발 DB `dev`에 마이그레이션을 적용하고 앱을 재시작한 뒤 게임 9/10/11을 등록했다. 스크린샷 15장과 사용자 “괜찮은거 같네” 의견을 포함한 현재 상태는 [상세 작업 기록](../work-log/2026-10-14-webgl-display-session.md)에 정리했다. 운영 환경 배포와는 별개다.

View File

@ -0,0 +1,185 @@
---
kind: work-log
title: WebGL 화면 대응 구현과 로컬 확인 기록
owner: bibimbap
status: implemented-local-review
last_reviewed: 2026-10-14
source_session: 20261014-091658
implementation_commit: ddd9abf
verification_closure_commit: 90af599
---
# WebGL 화면 대응 구현과 로컬 확인 기록
사용자가 업로드한 Unity WebGL 빌드마다 기준 화면 크기를 감지·저장하고, 실행 화면이 그 비율을 유지하며 가용 공간에 맞춰 표시되도록 구현했다. 등록자가 크기를 직접 교정할 수 있고, 확대·전체화면·창 크기 변경에도 실행 중인 게임을 유지한다. 특정 게임의 이름이나 해상도에 맞춘 특별 분기는 없다.
구현과 격리 검증 이후 로컬 개발 DB에 마이그레이션을 적용하고 앱을 재시작했다. 실제 고라니 게임과 가로·정사각형 검증용 빌드가 로컬 서비스에 등록되어 있다. 사용자는 브라우저에서 확인할 수 있는 상태에서 **“일단 여기까지 상세히 기록하자. 괜찮은거 같네”**라고 평가했다. 현재 단계의 긍정적 검토 의견으로 기록하며, 실제 모바일 기기의 모든 동작을 확인했다는 의미로 확대하지 않는다.
## 요청과 범위 확정
최초 입력은 `/Users/wemadeplay/Downloads/GoraniCoin-WebGLTest.zip`이었다. 다른 개발자가 만든 실행용 빌드이며 Unity 원본 프로젝트는 포함하지 않았다. 사용자는 고정된 실행 영역과 화면 크기가 달라질 때 제대로 표시되지 않는 문제를 해결하려고 했다.
첫 제안은 원래 비율을 유지하는 플레이어 크기 조정이었다. 사용자가 **“단순히 내가 준 예시에만 맞추는게 아니라 사용자가 업로드한 게임에 맞춰서야”**라고 범위를 명확히 했다. 이에 따라 수동 비율 선택만 제공하는 수준에서 업로드별 크기 감지, 등록·수정 시 저장, 상세 화면 자동 적용까지 범위를 확정했다.
Unity 내부의 UI 앵커·Canvas Scaler·카메라 배치는 수정하지 않았다. 현재 기능은 빌드가 선언한 기준 비율로 브라우저 실행 영역을 맞춘다. 모든 비율에서 게임 내부 UI가 재배치되어야 하는 경우에는 해당 개발자의 원본 수정과 재빌드가 필요할 수 있다.
## 기존 화면에서 확인한 문제
| 대상 | 기존 동작 | 영향 |
| --- | --- | --- |
| 서비스 상세 플레이어 | 16:9, 최대 높이 `min(70vh, 520px)` | 세로 게임이 낮은 가로 영역 안에서 작게 표시됨 |
| 제공 빌드 | 기준 390×844, PC에서도 세로 유지 | 서비스의 고정 가로 영역과 비율이 다름 |
| 제공 빌드 HTML | 폭은 줄이지만 높이는 viewport 높이를 유지 | 폭이 먼저 제한되면 원래 비율이 깨질 수 있음 |
| Unity 렌더 타깃 | canvas CSS 크기와 자동 동기화가 이미 활성화됨 | 초기 width/height만 보고 렌더 해상도가 고정이라고 판단하면 안 됨 |
제공 빌드는 Unity `6000.0.74f1`이었다. 캔버스 표시 크기, GPU drawing buffer, 게임 내부 UI 배치를 구분하여 조사했다. 세부 근거는 [조사 보고서](../../.atp/work-session/20261014-091658/research/research.md)에 있다.
## 크기 감지와 등록 저장
작성자가 직접 지정한 값이 우선한다. 자동 감지는 선택된 `index.html`과 같은 디렉터리의 `build-info.json`에 있는 `width`·`height`, 명확한 canvas 또는 `#unity-container`의 정수 pixel CSS, 명시 canvas 속성 순으로 처리한다.
업로드된 JavaScript를 실행하거나 외부 리소스를 요청하여 크기를 추론하지 않는다. 상대 단위·동적 표현식·외부 CSS·JavaScript style 대입 등 정적으로 해석하기 어려운 템플릿은 감지 대상에서 제외한다. 메타가 없거나 잘못되었어도 정상 빌드 업로드는 계속 허용한다.
| 검증 항목 | 계약 |
| --- | --- |
| 폭과 높이 | 둘 모두 정수, 각각 1~16384 |
| 종횡비 | 1:32~32:1 |
| 기본 canvas 300×150 | 자동 감지 근거에서는 제외, 직접 지정은 허용 |
| 파일 읽기 상한 | HTML 1MiB, JSON 64KiB |
| 분석 경로 | 업로드 저장 루트 내부의 파일만 사용 |
| 감지 실패 | 미확인 상태로 등록 가능. 상세는 기본 16:9 사용 |
자동 감지값은 빌드의 선언값이다. 실제 게임 의도와 다르면 등록·수정 화면의 직접 지정으로 교정한다. 상세 감지 계약은 [화면 크기 계약](../contracts/webgl-display-metadata.md)에 있다.
ZIP 업로드 응답에 `displayWidth`, `displayHeight`, `displaySource`를 추가했다. 등록·수정 화면에서 “빌드에 맞추기” 또는 “직접 지정”을 선택한다. 자동 저장은 브라우저가 보낸 크기 대신 서버에 저장된 빌드에서 다시 감지한다.
직접 지정한 값은 새 ZIP을 선택해도 유지하며, 자동 모드에서는 새 빌드 결과를 반영한다. 이전 클라이언트가 크기 파라미터를 보내지 않는 수정 요청은 같은 빌드 경로라면 기존 메타를 보존하고, 경로를 교체하면 다시 감지한다.
기존 게임의 크기 값이 null이면 상세·수정 조회에서 파일을 읽어 감지한다. 조회 중 DB 백필은 하지 않는다. 작성자가 수정 화면에서 자동 저장하거나 직접 지정할 수 있다. 기존 인증·CSRF·소유권 검증을 유지했다.
## 플레이어 비율과 상태 유지
크기 계산은 `scale = min(가용 폭 / 기준 폭, 가용 높이 / 기준 높이)`를 사용한다. 양축이 공간을 넘지 않게 iframe 크기를 정하고 중앙에 배치한다. 일반 높이 한도는 `min(70dvh, 720px)`이며 vh fallback이 있다.
“크게 보기”와 “전체화면”은 같은 iframe과 src를 유지한다. 창 크기 변경·방향 전환·확대·복귀 때문에 Unity 인스턴스를 다시 만들지 않는다. 전체화면 API가 없거나 거절되면 크게 보기로 전환한다. 닫기·Esc·스크롤 및 포커스 복귀도 지원한다.
부모는 iframe 박스만 조정하므로 별도 asset origin을 사용할 때도 내부 canvas DOM 접근이 필요하지 않다. 이 계약은 Node 테스트로 확인했으며, 다른 origin의 실제 서비스 조합은 별도 실행하지 않았다. 실제 Unity 실행과 입력 검증은 같은 origin의 격리 환경에서 수행했다.
## 저장 구조와 변경 파일
`games`에 nullable `display_width`, `display_height`, `display_source`를 추가했다. 폭·높이 pair, 범위, 종횡비, source CHECK를 두었다. 신규 DB 정의와 기존 DB용 마이그레이션을 함께 작성했다. 기존 행 삭제·백필 없이 적용하며 재실행 가능하다.
| 영역 | 주요 파일 |
| --- | --- |
| 정적 감지 | `WebglDisplayMetadata.java` |
| 업로드·저장·상세 모델 | `GameUploadController.java`, `GameController.java` |
| 데이터와 SQL | `GameData.java`, `GamesMapper.java` |
| 화면과 입력 | `game-register.jsp`, `game-detail.jsp`, `webgl-player.js`, `webgl-player.css` |
| DB | `db/schema.sql`, `db/migrations/20261014-game-display-metadata.sql` |
| Java 검증 | `WebglDisplayMetadataTest`, `GameDisplayMetadataTest`, `GameUploadControllerSecurityTest`, `WebglDisplayDatabaseContractTest` |
| 플레이어 검증 | `src/test/js/webgl-player.test.cjs` |
| 통합 실행 | `scripts/verify-webgl-display.sh` |
구현은 `feat/v2`의 `ddd9abf`, 최초 검증 세션 종료 기록은 `90af599`에 커밋했다. 원격 push와 운영 환경 배포는 수행하지 않았다.
## 검증 결과와 증거 범위
| 검증 | 결과 |
| --- | --- |
| Java 전체 테스트 | 377건, 실패·오류 0. 일반 실행에서 opt-in L2 1건 skip |
| Node 플레이어 테스트 | 11/11 통과 |
| WAR package | 통과 |
| PostgreSQL L2 | 임시 DB에서 별도 활성화하여 1/1 통과. 반복 마이그레이션, 기존 행 보존, 제약, 신규·기존 스키마 정합, 실제 저장·수정과 7개 mapper 조회 확인 |
| JSP 실행 | 인증 후 등록·상세·수정 경로 5개 HTTP 200 |
| 비율과 경계 | 세로 390×844, 가로 1280×720, 정사각형 800×800 각각 4 viewport, 총 12/12 통과 |
| viewport | 320×844, 1440×900, 844×390, 640×300 |
| 상태 유지 | resize·확대·전체화면/복귀·API 거절 fallback에서 동일 iframe/src/Unity 유지, 추가 load 0 |
| 입력 | trusted CDP touch로 세로 Shop, 가로 확대·resize 후 Open Upgrades 전환 확인 |
| 무결성 | 원본 ZIP 및 저장·HTTP 제공 HTML SHA-256 보존 |
| 회귀 | 실제 이전 JSP를 임시 복사본에 적용하면 동일 SSR 테스트 실패, 현재 JSP에서는 통과 |
| UI와 문서 | 영향맵 21개 파일과 기능 링크 확인. detect 2건은 기존 스타일 및 숨겨진 preview 오탐 |
현재 12개 화면 조합의 경계·비율 검증은 모두 통과했다. 수정 전 실패 증거는 실제 이전 JSP의 SSR 계약에 대한 것이며, 이전 브라우저에서 12개 geometry 조합을 재실행한 증거는 아니다.
Unity 준비 후 CSS client 크기와 drawing buffer를 별도로 검사했다. 데스크톱 일반은 291×630 / 582×1260, 전체화면은 388×840 / 776×1680이었다. 표시 크기와 렌더 버퍼를 혼동하지 않았다.
터치 검증은 `pointerType=touch`, `isTrusted=true`와 이름이 있는 게임 버튼의 실제 화면 전환을 함께 확인했다. 최초 모바일 emulation에서 trusted mouse click만 나온 결과는 터치 통과로 집계하지 않고, 별도 Chrome CDP 검증으로 보완했다. 자동 브라우저 터치는 확인했으며 실제 물리 기기 스모크는 남아 있다.
브라우저 console error와 앱 stacktrace는 없었다. Unity 경고, autoplay 및 iframe sandbox 경고는 검증 보고서에 별도로 기록했다.
가이드의 `java -jar` 예시는 현재 WAR의 Main manifest 부재로 실패하여, 실제 성공한 Java 21의 Maven `spring-boot:run` 명령으로 수정했다. 기본 Java launcher가 런타임을 찾지 못하는 macOS 환경의 경로 예시도 추가했다.
## 로컬 적용과 테스트 게임 등록
최초 구현 검증은 임시 PostgreSQL과 별도 포트 앱에서 수행했다. 이후 사용자가 **“테스트용 게임 로컬에 등록해줘 내가 브라우저에서 직접 보게”**라고 요청하여 현재 로컬 개발 서비스에 적용했다.
| 항목 | 현재 로컬 상태 |
| --- | --- |
| 앱 | `bibimbap-app`, `http://localhost:8080` |
| DB | `bibimbap-db`, 호스트 포트 5433, database `bibimbap`, schema `dev` |
| DB 변경 | `20261014-game-display-metadata.sql` 적용 완료. 세 display 컬럼 확인 |
| 앱 반영 | `docker compose restart app` 완료 |
| 등록 방식 | 전용 로컬 테스트 계정의 정상 가입·로그인, CSRF를 거친 ZIP 업로드와 게임 등록 API |
| 공개 접근 | 상세·플레이어 JS/CSS·빌드 진입 HTML HTTP 200, 세 게임 공개 상태 |
| 저장 | 일반 업로드 저장소와 Docker uploads 볼륨. 격리 검증용 임시 DB에만 남긴 등록이 아님 |
| ID | 게임 | 기준 크기 | 주소 | 내용 |
| --- | --- | --- | --- | --- |
| 9 | 고라니 코인 · 화면 대응 테스트 | 390×844 | [실제 게임](http://localhost:8080/game/9) | 받은 Unity 빌드 그대로 업로드 |
| 10 | 가로형 · 화면 비율 검증 | 1280×720 | [가로형](http://localhost:8080/game/10) | 콘텐츠 없는 검증 빌드, 흰 캔버스 |
| 11 | 정사각형 · 화면 비율 검증 | 800×800 | [정사각형](http://localhost:8080/game/11) | 콘텐츠 없는 검증 빌드, 흰 캔버스 |
세 게임 모두 `display_source=build-info`이고 공개 상태다. 기록 직전에 비로그인 요청으로 상세 HTTP 200과 기준 크기 data 속성을 다시 확인했다. 고라니 게임을 기본 브라우저로 열었다. 비밀번호와 세션 쿠키는 기록하지 않는다.
ID와 URL은 현재 개발 DB의 시점 정보이며 DB 초기화나 삭제 후에는 달라질 수 있다. 등록 메타와 업로드 경로는 [local-games.json](./assets/2026-10-14-webgl-display/local-games.json)에 보존했다.
## 스크린샷 15장 보존
사용자 요청으로 `/tmp/bibimbap`에 PNG 15장, `index.html` 갤러리와 `README.txt`를 모았다. 임시 디렉터리 정리 이후에도 확인할 수 있도록 이 기록과 함께 복사본을 보존했다.
[보존한 스크린샷 갤러리](./assets/2026-10-14-webgl-display/index.html) · [이미지 목록](./assets/2026-10-14-webgl-display/README.txt)
| 번호 | 화면 | 이미지 크기 |
| --- | --- | --- |
| 01 | 서비스 상세 데스크톱, 실제 세로 게임 | 1440×900 |
| 02 | 서비스 상세 모바일, 실제 세로 게임 | 320×844 |
| 03~04 | 일반 화면 Home / Shop | 각각 500×757 |
| 05~06 | 가로 확대 Shop / Upgrades | 각각 844×390 |
| 07~08 | 모바일 Home / Shop | 각각 390×844 |
| 09~10 | 추가 촬영 실제 게임 데스크톱 / 모바일 | 1440×900 / 390×844 |
| 11~12 | 가로형 검증 빌드 데스크톱 / 모바일 | 1440×900 / 390×844 |
| 13~14 | 정사각형 검증 빌드 데스크톱 / 모바일 | 1440×900 / 390×844 |
| 15 | 추가 촬영 실제 게임 전체화면 | 1440×900 |
01~08은 앞선 실제 서비스와 입력 검증 화면이다. 09~15는 현재 제품 플레이어 JS/CSS를 실행한 별도 로컬 확인 화면이다. 가로·정사각형의 흰 영역은 검증용 캔버스이며 완성된 게임 콘텐츠가 아니다.
## 사용자 판단과 남은 확인
사용자 의견은 **“괜찮은거 같네”**이며, 이 상태를 상세히 남기고 작업을 여기서 정리하기로 했다. 자동화와 로컬 확인에서 새 동작의 결함은 관찰하지 않았다.
추가 구현을 시작한 상태는 아니다. 이후 확인할 항목은 실제 터치 기기의 크게 보기·전체화면·방향 전환·게임 버튼 스모크와, 필요 시 서로 다른 asset origin의 실제 서비스 실행이다. 운영 환경에 적용할 때는 해당 DB 마이그레이션을 먼저 실행하고 앱을 반영해야 한다. 로컬 `dev` 적용 완료와 운영 배포 완료를 구분한다.
모든 템플릿의 의도 크기를 완벽히 추론하는 기능은 제공하지 않는다. 정적 크기 선언이 없거나 실제 의도와 다르면 작성자가 직접 지정한다. Unity 내부 화면 배치는 빌드 개발자와 별도로 다룬다.
## 다음 확인 순서
1. [고라니 게임](http://localhost:8080/game/9)에서 일반 화면, 크게 보기, 전체화면, 복귀를 확인한다.
2. 창 크기나 방향을 바꾸고 게임 상태 및 Shop / Upgrades 입력이 유지되는지 확인한다.
3. [가로형](http://localhost:8080/game/10)·[정사각형](http://localhost:8080/game/11)의 캔버스로 비율과 여백을 비교한다.
4. 다른 실제 빌드 등록 시 자동 안내와 직접 지정 저장을 확인한다.
5. 실제 모바일 기기 또는 별도 origin 배포가 필요하면 해당 환경 스모크를 수행한다.
검증 명령과 실행 방법은 [사용 가이드](../usage/webgl-display.md), API·저장 규칙은 [계약 문서](../contracts/webgl-display-metadata.md)를 따른다.
## 관련 기록
- [구현 변경 이력](../changes/2026-10-14-webgl-display.md)
- [최초 조사](../../.atp/work-session/20261014-091658/research/research.md)
- [설계](../../.atp/work-session/20261014-091658/implementation/design.md)
- [구현 보고](../../.atp/work-session/20261014-091658/implementation/report.md)
- [최초 독립 검증](../../.atp/work-session/20261014-091658/verification.md)
- [입력 보완 검증](../../.atp/work-session/20261014-091658/supplemental-verification.md)
- [최종 문서와 UI 감사](../../.atp/work-session/20261014-091658/artifacts/final-doc-ui-audit.md)
- [최초 세션 보고서](../../.atp/work-session/20261014-091658/report.md)
최초 세션 보고서는 구현·격리 검증 완료 시점의 기록이다. 후속 스크린샷 수집, 로컬 DB 적용, 실제 서비스 등록과 사용자 긍정 의견은 이 기록의 현재 상태를 따른다. 과거 검증 보고서의 최초 미확인 항목은 보완 검증과 함께 읽는다.

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

View File

@ -0,0 +1,22 @@
bibimbap 실행 화면 스크린샷 15장
index.html을 열면 전체 화면 목록을 볼 수 있습니다.
01–08은 이전 검증 스크린샷, 09–15는 이번에 추가 촬영한 제품 플레이어 확인 화면입니다.
가로·정사각형은 게임 콘텐츠 없는 검증용 빌드이며 흰 영역은 해당 캔버스입니다.
실제 제공 게임은 세로형입니다.
01-service-desktop-portrait.png — 서비스 상세 · 데스크톱 · 실제 게임 (1440×900)
02-service-mobile-portrait.png — 서비스 상세 · 모바일 · 실제 게임 (320×844)
03-game-home-normal.png — Home · 일반 화면 (500×757)
04-game-shop-normal.png — Shop · 일반 화면 (500×757)
05-game-shop-expanded-landscape.png — Shop · 가로 확대 (844×390)
06-game-upgrades-expanded-landscape.png — Upgrades · 가로 확대 (844×390)
07-game-home-mobile.png — Home · 모바일 (390×844)
08-game-shop-mobile.png — Shop · 모바일 (390×844)
09-actual-game-portrait-desktop.png — 세로 실제 게임 · 데스크톱 (추가 촬영) (1440×900)
10-actual-game-portrait-mobile.png — 세로 실제 게임 · 모바일 (추가 촬영) (390×844)
11-test-build-landscape-desktop.png — 가로 검증용 빌드 · 데스크톱 (1440×900)
12-test-build-landscape-mobile.png — 가로 검증용 빌드 · 모바일 (390×844)
13-test-build-square-desktop.png — 정사각형 검증용 빌드 · 데스크톱 (1440×900)
14-test-build-square-mobile.png — 정사각형 검증용 빌드 · 모바일 (390×844)
15-actual-game-portrait-fullscreen-desktop.png — 세로 실제 게임 · 전체화면 (추가 촬영) (1440×900)

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,29 @@
[
{
"name": "고라니 코인 · 화면 대응 테스트",
"url": "http://localhost:8080/game/9",
"gameId": 9,
"width": 390,
"height": 844,
"webglPath": "/game/a4602641-5fa6-4cc1-9047-a8d7786bb1f9/GoraniCoin-WebGLTest/index.html",
"publicStatus": 200
},
{
"name": "가로형 · 화면 비율 검증 (1280×720)",
"url": "http://localhost:8080/game/10",
"gameId": 10,
"width": 1280,
"height": 720,
"webglPath": "/game/1e2ddd48-4cf1-4b0e-a222-f4bf3f79d8df/index.html",
"publicStatus": 200
},
{
"name": "정사각형 · 화면 비율 검증 (800×800)",
"url": "http://localhost:8080/game/11",
"gameId": 11,
"width": 800,
"height": 800,
"webglPath": "/game/01e8b5db-00d8-4d0c-b0c6-b302dec6ba5d/index.html",
"publicStatus": 200
}
]

View File

@ -4,6 +4,7 @@
## 목록 ## 목록
- [2026-10-14-webgl-display-session.md](./2026-10-14-webgl-display-session.md) — 업로드별 WebGL 크기 감지·저장, 비율 유지 확대·전체화면 구현과 검증, 로컬 게임9/10/11 등록 및 스크린샷15장 보존. 사용자 “괜찮은거 같네” 의견과 남은 확인 항목 포함. `status: implemented-local-review`.
- [2026-06-17-jam-platform-roadmap.md](./2026-06-17-jam-platform-roadmap.md) — bibimbap 플랫폼 고도화 목적별 워크스트림 로드맵. 4개 W(W1 거버넌스/RBAC · W2 게임잼 · W3 사이트플랫폼 · W4 유저배지)+운영으로 재구조. 게임잼은 W2 하나. 의존성(빌드순서) 유지 + 잼일정 분리가능 여부 명시. S→W 매핑 + 150635 대비 교정 5건 포함. `status: active`, source_session: 20260617-150635, restructured_by: 20260617-162536. - [2026-06-17-jam-platform-roadmap.md](./2026-06-17-jam-platform-roadmap.md) — bibimbap 플랫폼 고도화 목적별 워크스트림 로드맵. 4개 W(W1 거버넌스/RBAC · W2 게임잼 · W3 사이트플랫폼 · W4 유저배지)+운영으로 재구조. 게임잼은 W2 하나. 의존성(빌드순서) 유지 + 잼일정 분리가능 여부 명시. S→W 매핑 + 150635 대비 교정 5건 포함. `status: active`, source_session: 20260617-150635, restructured_by: 20260617-162536.
- [2026-06-17-w3-feature-skeletons.md](./2026-06-17-w3-feature-skeletons.md) — W3(사이트 플랫폼) 5개 서브기능 골자 카탈로그. 기능당 목적·핵심동작·결합/의존·미결질문·후속진입점(윤곽 깊이, 미결 해소 안 함). 코드 현황 대조(tag/review 테이블 신규·Interceptor 미구현·`/game/**` 핸들러 미등록). 결합표 + 착수순서 제언(W3-2 1순위) + QG-1~3. 당장 구현 아님. `status: confirmed`(20260617-174635 세션서 5기능+착수순서 항목별 합의), source_session: 20260617-172407. ⚠️ **코드 현황 #2·#3 stale (2026-06-23 정정)** — w2-w4-skeletons 참조. - [2026-06-17-w3-feature-skeletons.md](./2026-06-17-w3-feature-skeletons.md) — W3(사이트 플랫폼) 5개 서브기능 골자 카탈로그. 기능당 목적·핵심동작·결합/의존·미결질문·후속진입점(윤곽 깊이, 미결 해소 안 함). 코드 현황 대조(tag/review 테이블 신규·Interceptor 미구현·`/game/**` 핸들러 미등록). 결합표 + 착수순서 제언(W3-2 1순위) + QG-1~3. 당장 구현 아님. `status: confirmed`(20260617-174635 세션서 5기능+착수순서 항목별 합의), source_session: 20260617-172407. ⚠️ **코드 현황 #2·#3 stale (2026-06-23 정정)** — w2-w4-skeletons 참조.
- [2026-06-23-w2-w4-full-design-summary.md](./2026-06-23-w2-w4-full-design-summary.md) — **W2+W3(잔여)+W4 풀설계 통합 요약/설계 인덱스**. 11기능(W2-1~6·W3-1/3-3/3-4/3-5·W4) 풀설계(W1-design 깊이, 오픈질문 0) 진입 인덱스 + 크로스-W 결정 매트릭스(정석 확정) + 교차정합 감사 verdict(HIGH 1 해소·동결 단일권위 유지) + 골자 stale 정정 3건 + 착수순서. 설계 본문은 `.atp/work-session/20260623-104307/implementation/`. 설계 전용(코드 0줄). `status: active`, source_session: 20260623-104307, resumed_from: 20260622-180054. - [2026-06-23-w2-w4-full-design-summary.md](./2026-06-23-w2-w4-full-design-summary.md) — **W2+W3(잔여)+W4 풀설계 통합 요약/설계 인덱스**. 11기능(W2-1~6·W3-1/3-3/3-4/3-5·W4) 풀설계(W1-design 깊이, 오픈질문 0) 진입 인덱스 + 크로스-W 결정 매트릭스(정석 확정) + 교차정합 감사 verdict(HIGH 1 해소·동결 단일권위 유지) + 골자 stale 정정 3건 + 착수순서. 설계 본문은 `.atp/work-session/20260623-104307/implementation/`. 설계 전용(코드 0줄). `status: active`, source_session: 20260623-104307, resumed_from: 20260622-180054.