개발:패치_내역

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
개발:패치_내역 [2026/08/27 23:24] – ↷ 문서가 개발:패치_내역에서 개발:패치_내역:php(으)로 이동되고 이름이 바뀌었습니다 hide_d개발:패치_내역 [2026/08/28 00:00] (현재) – [v0.1.0] hide_d
줄 1: 줄 1:
 +====== Core2026 버전 패치 내역 ======
  
 + 버전 패치 내역을 요약합니다.
 +
 +실제 코드의 변경 내역은 https://gitea.hided.net/devsam/core2026/commits/branch/main 에서 확인할 수 있습니다.
 +
 +  * [[개발/패치_내역/php]]
 +
 +===== 최신 버전 =====
 +==== 개발 버전(훼) ====
 +=== 커밋 ===
 +
 +==== 마이너 최신 버전 ====
 +(v0.1.0 edd962922e4a8c28129a8783d76d428ca91f3539)
 + 
 +==== 퀘섭 최신 버전 ====
 +(v0.1.0 edd962922e4a8c28129a8783d76d428ca91f3539)
 +
 +
 +=== 주요 변경점 ===
 +=== 엔진 변경점 ===
 +=== 밸런스 수정 ===
 +=== 수정된 버그 ===
 +=== 기타 변경점 ===
 +
 +
 +==== 체섭 최신 버전 ====
 +(v0.1.0 edd962922e4a8c28129a8783d76d428ca91f3539)
 +
 +===== v0.1 =====
 +
 +==== v0.1.0 ====
 +
 +(2026-08-27) [[https://gitea.hided.net/devsam/core2026/commits/commit/edd962922e4a8c28129a8783d76d428ca91f3539|커밋목록]]
 +
 +=== 주요 변경점 ===
 +
 +  - 삼국지 모의전투 HiDCHe의 신규 버전을 공개합니다.
 +    - 삼국지 모의전투 HiDCHe PHP의 전투·턴·명령·자원·권한·로그 동작과 처리 순서를 유지합니다.
 +    - 신규 버전은 TypeScript와 Node.js를 사용하고 Gateway, Game API, Game Engine과 공통 로직 package로 구성합니다.
 +  - 게임 진행 처리속도를 높입니다.
 +    - 장수가 많은 1분 서버에서 NPC 행동과 전투 처리 지연을 줄이도록 게임 엔진과 저장 방식을 개선합니다.
 +    - 880명의 NPC로 시작한 게임을 턴 대기 없이 진행했을 때 전투·점령·멸망을 거쳐 통일까지 8분 안에 완료했습니다.
 +  - 게임 화면을 새로 구성합니다.
 +    - 기존 화면의 정보 순서, 명령 흐름, 주요 색상·글꼴·지도·메뉴 배치를 유지합니다.
 +    - Vue 3 기반 SPA로 구현해 화면 전환과 주소별 접속을 처리합니다.
 +  - 500px 모바일 화면 구성을 더 많은 페이지에 적용합니다.
 +    - 서버 선택 화면은 서버 정보와 입장 동작을 두 행으로 배치합니다.
 +    - 남아 있던 레거시 페이지도 500px 모바일 화면 구성에 맞춰 가로 넘침과 요소 겹침을 줄입니다.
 +    - 명령 입력, 지도 이동과 메뉴 조작은 touch 환경에 맞게 동작합니다.
 +  - 게임 화면의 최신 정보를 자동으로 갱신합니다.
 +    - 메인, 경매, 토너먼트, 설문 등 주요 화면에 게임 상태 변경을 실시간으로 반영합니다.
 +    - 필요한 영역만 갱신하며 편집 중인 명령과 선택값을 유지합니다.
 +    - 같은 계정으로 연 여러 browser tab의 설문·화면 상태를 현재 시즌 단위로 동기화합니다.
 +  - 삼국지 모의전투 HiDCHe PHP의 기존 자료를 신규 버전으로 가져왔습니다.
 +    - 기존 회원 계정과 권한을 이어서 사용합니다.
 +    - 명예의 전당, 왕조 일람, 연감, 지난 플레이와 기존 장수·국가·전투 기록을 조회할 수 있습니다.
 +
 +=== 엔진 변경점 ===
 +
 +  - 게임 엔진을 TypeScript로 다시 작성합니다.
 +    - 전투, 월간 변화, NPC 행동과 국가 정책, 시나리오 규칙은 PHP 버전의 판정 순서와 결과를 기준으로 옮깁니다.
 +    - seed 구성과 난수 소비 순서를 PHP 버전과 대조하며 후보가 하나뿐인 분기와 실패 분기도 같은 순서를 따릅니다.
 +    - 전투 시뮬레이터도 같은 전투 규칙과 seed 계약을 사용합니다.
 +  - 게임 API와 턴 데몬을 분리합니다.
 +    - 게임 API는 요청을 검사하고 PostgreSQL input event로 접수합니다.
 +    - 턴 데몬은 접수된 요청, 예약 턴과 월간 처리를 실행하고 변경된 게임 상태를 저장합니다.
 +    - 턴 데몬은 게임 API와 별도 process로 실행하며 profile별 lease로 실행 주체를 관리합니다.
 +  - 게임 진행에 필요한 계산과 저장을 빠르게 처리합니다.
 +    - 게임 상태를 메모리에 읽어 명령과 월간 처리를 이어서 실행하고, 바뀐 자료를 모아 데이터베이스에 저장합니다.
 +    - 880명의 NPC로 시작한 게임을 턴 대기 없이 진행해 747개월과 장수 턴 699,892회를 처리하고 8분 안에 통일에 도달했습니다.
 +  - 게임 요청과 응답을 정해진 형식으로 검사합니다.
 +    - Game API는 tRPC와 zod로 구현합니다.
 +    - 요청·응답 schema, 인증, 권한, 오류와 게임 서버 범위를 API 경계에서 검사합니다.
 +    - 인증 session과 서버 상태에서 장수·국가·소유자와 수행자를 결정합니다.
 +  - 게임 상태를 한 번에 저장하고 중복 적용을 막습니다.
 +    - PostgreSQL lease와 fencing token으로 각 게임의 턴 engine owner를 한 명으로 제한합니다.
 +    - 실행 주체가 바뀌면 이전 engine owner의 뒤늦은 저장을 거부합니다.
 +    - 명령, 월간 처리, 상태, 로그, 예약 턴과 처리 결과를 transaction 경계에서 함께 저장합니다.
 +    - 같은 요청의 중복 실행을 억제하고 input event에서 처리 상태와 결과를 조회할 수 있습니다.
 +    - 처리 중 오류가 발생하면 transaction을 rollback하거나 engine을 pause합니다.
 +    - 경매 입찰·환급·마감·낙찰, 토너먼트 경기·정산과 설문 보상도 각 처리 단위에서 함께 저장합니다.
 +  - 게임 자료 저장 구조를 바꿉니다.
 +    - PHP 버전의 MariaDB 자료 구조를 신규 버전의 PostgreSQL 자료 구조로 옮깁니다.
 +    - world, 장수, 국가, 도시, 명령, 외교, 메시지, 로그, 경매, 설문, 토너먼트와 archive를 schema와 migration으로 관리합니다.
 +    - PostgreSQL commit을 게임 상태 변경의 완료 기준으로 사용합니다.
 +  - 게임 자료 저장과 실시간 알림 전달을 분리합니다.
 +    - Redis는 session, worker 전달과 실시간 알림을 담당합니다.
 +    - durable change journal과 outbox로 실제로 바뀐 read model만 알립니다.
 +    - 브라우저에는 SSE로 변경된 정보의 종류만 전달하고 필요한 영역을 다시 조회합니다.
 +    - 여러 browser tab의 설문·화면 상태를 현재 시즌 단위로 동기화합니다.
 +  - 게임 안의 시간을 실제 시계와 분리해 관리합니다.
 +    - 장수 턴, 월간 변화, 메시지 유효기간, 경매·토너먼트 마감은 내부 게임 tick을 기준으로 처리합니다.
 +    - 운영 중 턴 간격을 분 단위로 바꿔도 현재 시각, 턴 순서와 남은 턴 수를 유지합니다.
 +    - 실제 시간을 기다릴 필요 없이 장기 게임을 고속으로 진행하거나 고정한 시각으로 단위 테스트를 실행할 수 있습니다.
 +    - 가오픈 중에는 게임 시계를 멈추고, 재개 시 긴 backlog를 현재 기준으로 안전하게 보정합니다.
 +    - 메인 시계는 Gateway의 실행 상태와 유효한 턴 엔진 lease를 확인하고, 엔진이 정지하면 시각 보정을 멈추고 상태를 표시합니다.
 +    - 상태 조회 실패는 중립 상태로 표시합니다.
 +  - 계정 로그인과 게임 접속 정보를 단계별로 확인합니다.
 +    - Gateway session을 profile별 일회용 교환을 거쳐 game session으로 바꿉니다.
 +    - 제재, Kakao 인증, 운영자와 테스트·복구용 특수 접근 자격을 서버에서 다시 판정합니다.
 +  - 관리자 권한을 업무와 게임 서버별로 나눕니다.
 +    - 회원, 공지, 감사, 서버 설정, 실행 상태, 초기화, 배포와 Gateway release 권한을 구분합니다.
 +    - 관리자 작업의 요청자·대상·사유·결과와 오류를 감사 기록에 남깁니다.
 +  - 서버 운영과 배포 작업을 자동화합니다.
 +    - 서버 초기화, 예약 초기화, 가오픈·오픈, 일시정지·재개, DB 보존 배포와 완료 서버 종료를 상태 기계로 처리합니다.
 +    - Gateway 자체 release는 현재 Gateway process 밖의 controller가 별도 queue로 처리합니다.
 +    - 각 게임 서버는 선택한 Git commit에서 API·엔진·화면을 빌드하고 실행 중인 build commit을 표시합니다.
 +    - build별 worktree와 정적 frontend artifact를 관리하고 사용 중인 release는 정리 대상에서 제외합니다.
 +  - 선택형 브라우저 게임 알림은 추후 활성화할 예정입니다.
 +    - 병력 전멸, 개인 메시지, 자율 행동·예턴 종료, 서버 가오픈·예약·오픈, 국가 멸망과 지정 연월 알림을 계정·게임 서버별로 선택하도록 설계합니다.
 +    - 현재 버전에서는 브라우저 게임 알림을 발송하지 않습니다.
 +
 +=== 밸런스 수정 ===
 +
 +  - 이번 버전에는 삼국지 모의전투 HiDCHe PHP 대비 의도적인 전투·경제·명령 수치 변경이 없습니다.
 +    - 전투 결과, 명령 조건, 자원 변화, 경매·토너먼트·유산과 시나리오 수치는 PHP 버전 동작을 기준으로 옮깁니다.
 +    - 계산·기술 상한·반올림·정렬·RNG 순서의 구현 차이는 신규 버전을 PHP 버전에 맞추는 호환 수정으로 처리합니다.
 +
 +=== 수정된 버그 ===
 +
 +  - 삼국지 모의전투 HiDCHe PHP 기준
 +    - 일반 장수 선택 pool에서 잘못된 난수 인자가 전달되어 장수 생성이 HTTP 500으로 실패하는 문제를 수정합니다.
 +      - 신규 버전은 같은 후보·seed 계약으로 원래 의도된 선택과 생성을 수행합니다.
 +    - 전쟁 기간이 양방향 외교 row에서 서로 달라져 한쪽에만 전쟁 0개월이 표시되거나 자동 종전이 늦어지는 문제를 수정합니다.
 +      - 양쪽의 더 긴 전쟁 기간을 보존하여 같은 기간으로 맞추고, 종료 시 양쪽을 함께 통상으로 전환합니다.
 +    - 외교 서신 조회 권한이 없는 메시지가 `삭제된 메시지입니다.`로 표시되는 문제를 수정합니다.
 +      - 실제 삭제와 권한에 따른 본문 가림을 구분합니다.
 +
 +=== 기타 변경점 ===
 +
 +  - 서버 선택 화면에서 오픈 건의문을 작성할 수 있습니다.
 +    - 현재 서버 빌드에 포함된 시나리오와 옵션을 선택합니다.
 +  - 관리자 화면을 업무별로 나눕니다.
 +    - 사용자·권한, 서버 목록, profile 설정, DB 보존 배포, 시나리오 초기화, 잘못 연 게임 취소, 전역 공지, 감사 기록과 Gateway release를 별도 화면으로 제공합니다.
 +  - 기존 PHP 자료를 안전하게 옮기는 관리 도구를 추가합니다.
 +    - 이관 CLI는 dry-run을 기본값으로 사용합니다.
 +    - 실제 반영은 명시적인 apply와 advisory lock, checkpoint, source·target 검사를 요구합니다.
 +    - 손상되었거나 소유권을 확인할 수 없는 자료는 apply 대상에서 제외합니다.
 +  - 메인 화면을 PHP 버전의 정보 순서에 맞춰 다시 구성합니다.
 +    - 장수·국가·도시 정보, 지도, 장수 동향, 개인 기록, 중원 정세, 메뉴와 메시지를 한 화면에서 확인할 수 있습니다.
 +    - 화면 갱신 중에도 편집 중인 명령과 선택값을 유지합니다.
 +  - 지도 우측 하단의 조작부를 설정 버튼으로 바꿉니다.
 +    - 도시명 표시와 터치 이동 방식을 지도 설정 메뉴에서 고를 수 있습니다.
 +  - 작은 화면의 서버 선택과 게임 화면을 별도로 조정합니다.
 +    - Gateway 서버 행은 작은 화면에서 정보와 입장 동작을 두 행으로 배치합니다.
 +    - 게임 화면은 500px 모바일 화면 구성을 유지하면서 가로 넘침과 겹침을 줄입니다.
 +    - desktop의 기존 표·메뉴 구조는 breakpoint 위에서 유지합니다.
 +  - 인사부의 임명 화면을 다시 설계합니다.
 +    - 승상·사마와 각 도시의 태수·군사·종사 자리에서 바로 장수를 바꿀 수 있습니다.
 +    - 500px 이하 화면에서도 관직 표와 장수 선택 창이 가로로 넘치지 않도록 조정합니다.
 +  - 발신자가 삭제한 메시지는 삭제된 자리만 남깁니다.
 +    - 메시지 행과 만료 시각을 보존하고 원문은 폐기합니다.
 +  - 토너먼트 대진표에서 참가 장수에게 바로 베팅할 수 있습니다.
 +    - 설문 게시자는 현재 기수의 장수명으로 표시합니다.
 +  - 명예의 전당에 유산 획득량 순위를 추가합니다.
 +    - 완료된 기수에서 유산 획득량이 높은 장수를 최대 10명까지 표시합니다.
 +  - 전투 시뮬레이터의 전투 계산을 브라우저에서 실행합니다.
 +    - 1,000회 전투도 게임 서버에서 계산하지 않아 다른 이용자의 게임 진행을 느려지게 하지 않습니다.
 +  - 계정 전용 아이콘과 게임 이미지를 `sam-image.hided.net` 서버에서 제공합니다.
 +  - 새 버전이 준비되면 열린 게임 화면에 안내합니다.
 +    - 60초 주기와 tab·network 복귀 시 배포 version 문서를 재검증합니다.
 +    - 같은 tab에서 새 commit당 한 번만 안내하며 새로고침 시점은 사용자가 선택합니다.
 +  - 계정 화면과 게임 화면의 운영 메뉴를 같은 설정으로 관리합니다.
 +    - 유효한 공개 URL만 노출하고, 잘못된 설정은 배포 기본 메뉴로 되돌립니다.
 +  - 전역 공지와 기존 로그에서 위험한 코드를 제거합니다.
 +    - 허용 목록의 색상·강조·link 표현을 유지하고 저장형 script, event handler와 위험한 URL을 제거합니다.
 +  - CHE 0기 정식 오픈 전 체계 점검용 `【공백지】 여명` 시나리오를 추가합니다.
 +    - 일반 공백지 규칙을 상속하고 가동 전 월에 M장 50명을 생성하는 신규 버전 전용 시나리오입니다.
 +
 +=== 알려진 문제점 ===
 +
 +  - 가오픈 이전 작업에서 시점 문제가 발생합니다.
 +    - 메시지 등의 시각이 오픈 시점으로 고정됩니다.
 +    - 기타 가오픈 이전 시점의 행동이 오픈 시점으로 고정됩니다.
 +    - 가오픈시 사전 거병을 했을 때 새로고침 없이는 군주 관련 제어가 불가능합니다.
 +      - 새로고침하면 수정할 수 있습니다.
 +    - 모바일 화면에서 깨지는 화면들이 있습니다.
 +    - 데스크탑 화면에서 이식이 덜 된 화면이 있습니다.