스톤에이지 8.0 구축 가이드 21
========================================================
21. 시행착오 (5) — 게임 진입 (시도 11)
========================================================
캐릭터 목록은 뜨는데 "선택" 하면 검정화면/무반응으로 게임에
못 들어가는 단계. 인코딩 절반 마이그레이션이 핵심 원인.
--------------------------------------------------------
[ ❌ 캐릭터 선택 -> 검정화면 (UTF-8 전환 회귀) ]
--------------------------------------------------------
흐름: 선택 -> 클라 lssproto_CharLogin_send(func 77) ->
GMSV -> saacproto_ACCharLoad_send -> SAAC
ACCharLoad_recv -> getCharIndexByName ->
loadCharOne(GBK char 파일) -> 이름 매칭 -> 로드.
원인: 캐릭터 파일(*.char)은 GBK 인데 saac/char.c 를 UTF-8
파싱으로 바꿈. getCharNameFromString 등이 GBK 데이터를
UTF8_CHAR_BYTES 로 잘못 순회 -> 캐릭터 데이터 손상.
해결: saac/char.c + saac/util.c 를 GBK(pre-Phase1)로 되돌림.
SAAC 측은 전부 GBK 유지가 정답.
--------------------------------------------------------
[ ❌ 선택 후 깨진 한자 다이얼로그 ]
--------------------------------------------------------
화면: "鎮 | 効瑶 ~ 佛繼 ク 埋姝 ..."
원인: recv.c:104 ACCharLoad_recv 에 "같은 MySQL 차단 중복".
char.c 는 패치했지만 recv.c 누락 -> "Password error"
응답이 GBK->CP949 변환 깨짐.
해결: recv.c 도 동일하게 우회(14번).
--------------------------------------------------------
[ ❌ MySQL auth_socket vs password ]
--------------------------------------------------------
Ubuntu root 기본 auth_socket, SAAC 는 password 123456789.
mysql_real_connect 실패 -> 모든 쿼리 실패.
해결: 권한 못 바꾸면 SAAC 소스 우회(worker 가 이미 검증).
--------------------------------------------------------
[ 검증 ]
--------------------------------------------------------
replay 클라(tmp/login_test.c)에 CharLogin(77) 추가 ->
"登陆成功 人物名称:111 状态:ACTION" + 게임데이터 3945바이트 수신.
--------------------------------------------------------
다음: 22_시행착오_전투진입.txt

야추리아 님의 최근 댓글