Skip to content

W-Feature v0.6.0-pre

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 18 Oct 13:38
· 44 commits to main since this release
81ed64d

게임패드

  • 게임패드 지원 (KTF·LGT·SKT 공통)

전체화면

  • ⛶ 전체화면 추가: 키패드를 숨기고 게임 화면을 최대로 키움.

호환성

  • 일부 KTF 게임이 이름 입력 칸에 키를 누르거나 플레이 도중 실행이 멈추던 문제 수정
  • 일부 KTF 게임이 이름 입력 화면을 만들 때 멈추던 문제 수정
  • KTF 게임이 키·터치 입력을 처리하다 게임 쪽 오류를 내면 게임 전체가 종료되던 문제 수정
  • KTF 게임이 쓸 수 있는 표준 Java 기능(수학 함수, 진법 변환, 스레드 대기 등) 추가
  • KTF 게임에서 타이머 콜백이 다른 타이머를 취소·재설정해도 무시되거나 두 번 실행되던 문제와 콜백 하나의 오류로 다른 타이머가 사라져 멈추던 문제 수정
  • 이미지를 잘라 쓰거나 복사하는 KTF 게임, 오래 플레이한 KTF 게임이 메모리가 차서 종료되던 문제와 메모리가 거의 찬 상태에서 게임 객체가 잘못 회수되던 문제 수정
  • 게임이 화면 밖 아주 먼 좌표나 화면보다 훨씬 큰 크기로 선·도형·호·이미지를 그리면 멈추던 문제 수정
  • KTF 화면 전환 중 키 입력에 게임이 끝나거나 이벤트가 두 번 전달되던 문제 수정
  • LGT Java 게임이 직접 만든 입력 스트림을 감싸 읽으면 로딩 중 데이터가 깨지던 문제 수정
  • LGT Java 게임이 스레드를 여러 번 시작하거나 4KB가 넘는 문자열을 다루면 종료되던 문제 수정
  • LGT Java 게임에서 취소한 타이머가 한 번 더 실행되던 문제 수정
  • LGT 게임에서 효과음을 오래 반복하거나 짧은 순간에 여러 번 멈추고 재생하면 종료되던 문제 수정
  • SKT LCDUI 목록에서 소프트키·메뉴 명령이 커서가 있는 항목을 고르지 않던 문제와 항목을 지운 뒤 확인 키나 게임이 목록·폼을 바꾸는 순간의 키 입력으로 게임이 끝나던 문제 수정
  • SKT 숫자 전용 입력 칸에 키패드로 영문이 입력되거나 편집할 수 없는 칸이 고쳐지던 문제, 아주 긴 문장을 표시하는 화면이 키마다 멈추던 문제 수정
  • SKT GameCanvas 게임에서 짧게 누른 키가 무시되던 문제, WIPI 화면 픽셀 읽기가 항상 실패하던 문제, WIPI 카드가 자기 위치·크기를 0으로 읽던 문제, 소프트키 상수가 사양과 다르던 문제 수정
  • SKT 같은 타이머 작업을 두 번 예약하면 두 배로 실행되던 문제 수정
  • 인터페이스에 선언된 상수 배열을 읽거나 동기화된 toString을 문자열로 이어 붙일 때 멈추던 문제, 문자열 메서드에 null을 넘기면 게임이 종료되던 문제, 데이터 끝에서 EOFException이 나지 않던 문제 수정
  • Java 게임의 static synchronized 메서드와 클래스 객체에 거는 synchronized 블록이 서로 막지 않아 스레드끼리 값을 함께 고칠 수 있던 문제 수정
  • ARM 코드의 일부 명령(CLZ·BLX 레지스터·포화 연산·하프워드 곱셈)이 잘못 실행되던 문제와 LDR·LDM으로 Thumb 코드로 돌아갈 때 상태가 바뀌지 않던 문제 수정

세이브

  • KTF·LGT·SKT의 파일 저장 동작을 한 가지 규칙으로 통일
  • 대소문자나 유니코드 정규화만 다른 세이브 이름이 macOS·iOS·Windows에서 한 파일을 함께 써 서로 덮어쓰던 문제 수정
  • Windows가 쓸 수 없는 이름의 세이브가 저장되지 않던 문제 수정.
  • SKT 게임에서 지운 세이브가 빈 파일로 남아 있는 것으로 보이던 문제, 닫지 않은 파일에 쓴 세이브가 게임을 끄면 사라지던 문제, 같은 파일을 여러 번 열면 방금 쓴 내용이 보이지 않거나 이전 내용으로 덮이던 문제 수정
  • LGT 게임이 같은 파일을 여러 번 열면 서로 쓴 내용이 보이지 않거나 나중에 닫은 쪽이 덮어쓰던 문제, 파일 출력 스트림에 쓴 내용이 flush 전까지 다른 읽기·퀵세이브에 반영되지 않던 문제, 지운 저장 파일이 게임 종료 때 되살아나던 문제 수정
  • KTF Java 게임이 같은 파일을 두 번 열면 먼저 연 쪽이 나중에 쓴 내용을 보지 못하던 문제와 잘라내기로 연 파일이 첫 쓰기 전까지 이전 세이브를 보여 주던 문제 수정
  • 이름(SKT)이나 PID(KTF·LGT)에 콜론·물음표 등이 들어가거나 이름이 긴 게임이 브라우저에서 세이브 없이 실행되어 진행이 사라지던 문제 수정.
  • SKT WIPI 파일 열기 모드를 사양과 다르게 처리해 세이브가 읽히지 않거나 짧은 세이브 뒤에 이전 세이브 뒷부분이 남던 문제 수정
  • SKT 저장소 목록이 어긋나거나 두 스레드가 같은 저장소를 고칠 때 세이브가 덮이거나 오래된 내용이 남을 수 있던 문제와 세이브를 읽지 못하면 빈 세이브로 덮어쓸 수 있던 문제 수정
  • LGT 게임 종료 처리 중에 쓴 저장 내용, Java 파일 출력 스트림으로 쓴 저장 내용, 저장소 쓰기가 실패한 저장 내용이 사라지던 문제 수정
  • LGT 게임이 저장 파일을 잘라내기로 열고 닫으면 이전 저장이 남던 문제와 같은 데이터베이스를 두 번 열면 새 기록이 이전 내용으로 덮이던 문제 수정
  • LGT Java 게임이 이미 닫은 파일을 다시 닫으면 게임이 종료되던 문제와 파일을 닫은 뒤에도 열려 있던 스트림으로 쓴 저장 내용이 사라지던 문제 수정
  • KTF 게임에서 잘못된 파일 이름 하나로 이후 세이브가 실패하거나 한 세션에서 파일을 4095번 넘게 열면 저장하지 못하던 문제, 지운 세이브가 남아 있는 것으로 보이던 문제 수정
  • KTF Java 게임이 저장할 때 바이트마다 파일 전체를 다시 써서 오래 멈추던 문제 수정
  • 일부 LGT 게임이 한글 이름의 세이브 파일을 만들면 macOS·iOS에서는 저장되지 않고 Windows에서는 다른 한글 이름의 세이브와 한 파일을 쓰던 문제 수정
  • 손상되었거나 비어 있는 세이브 백업을 가져오면 세이브가 지워지거나 일부만 복원되던 문제와, macOS에서 방금 복원한 세이브가 지워질 수 있던 문제 수정
  • 세이브 가져오기 확인을 페이지 안의 확인 창으로 물어, iOS 앱에서 가져오기가 아무 동작도 하지 않던 문제 수정

소리

  • 앱(Android WebView)처럼 오디오 시계의 정밀도가 낮은 환경에서 짧은 음이 한 시점에 몰리거나 잘못된 크기로 끝나던 문제 수정
  • 소리 이벤트를 게임 시각에 맞춰 예약 재생해 전송 묶음이나 게임 속도 변경 때문에 리듬이 뭉개지던 문제 개선
  • 전송 중 소리 이벤트가 조금(0.2초 이내) 늦게 도착하면 끊지 않고 이어서 재생하고 빠지거나 더 늦게 도착하면 현재 재생 상태로 복구
  • 게임 처리가 잠깐 밀렸다가 따라잡을 때 소리가 끊겼다 다시 나던 현상 감소
  • 같은 채널·음을 쓰는 소리 하나를 멈추면 다른 소리까지 끊기던 문제와 멈춘 효과음의 잔향이 계속 울리던 문제 수정
  • 게임이 바꾼 기기·클립 볼륨이 실제 소리에 반영되도록 수정 (KTF·LGT·SKT), SKT 플레이어 음소거도 반영
  • 일부 KTF 게임에서 게임 안 음량 설정이 소리에 반영되지 않던 문제 수정
  • 일부 KTF 게임이 일시정지할 때 배경음도 함께 멈춤
  • 일시정지한 소리를 다시 재생하면 처음부터 시작하던 문제 수정
  • 재생 중 볼륨·익스프레션·팬 변경, 서스테인 페달, 피치 벤드 범위, 컨트롤러 초기화 지원
  • 효과음(PCM) 트랙의 볼륨·익스프레션·팬 반영
  • 재생 이벤트를 받는 게임에 재생 상태 알림 전달 (KTF·LGT·SKT Java)
  • SKT: 반복 횟수를 지정한 소리가 끝없이 반복되거나 끝나도 재생 중으로 남던 문제, 효과음 톤을 256번 넘게 재생하면 실패하던 문제 수정
  • 일부 곡이 중간부터 1~15분 동안 소리가 나지 않던 SMAF 해석 오류 수정
  • 일부 음의 세기가 잘못 재생되던 SMAF 해석 오류 수정
  • 손상된 소리 파일 때문에 메모리를 과하게 쓰지 않도록 해석 한도 추가
  • 핸드셋 트랙이 다섯 개 이상인 손상된 SMAF 사운드를 재생하면 게임이 종료되던 문제 수정

퀵세이브/퀵로드

  • 재생 중이던 소리의 위치·음량·일시정지 상태를 퀵로드와 재접속 후에도 이어서 재생
  • 게임 속도를 바꾼 KTF 게임의 퀵세이브·소리 시각이 어긋나던 문제 수정
  • 일부 SKT WIPI 게임에서 퀵세이브가 거절되던 문제 수정
  • 범위를 벗어난 사운드 데이터 하나 때문에 이후 모든 퀵세이브가 거부되던 문제 수정
  • 게임이 버린 이미지가 남아 있으면 KTF 퀵세이브가 거절되던 문제 수정

문자 입력

  • 일부 게임에서 문자 입력 후 다른 버튼을 한 번 더 눌러야 입력한 글자가 화면에 나타나던 문제 수정 (KTF·LGT·SKT)
  • 일부 KTF 게임에서 이름을 입력하면 첫 글자만 들어가고 '입력 불가능'으로 표시되던 문제 수정
  • 일부 LGT 게임에서 이름이 제대로 들어갔는데도 '입력 불가능'으로 표시되던 문제 수정
  • 일부 LGT 게임에서 이름을 끝까지 입력해도 앞 두 글자만 들어가던 문제 수정
  • 일부 LGT 게임에서 문자 입력이 매번 실패하고 이름에 '0'이 들어가던 문제 수정
  • LGT 게임에서 입력 칸이 없는 화면(시작 화면·메뉴 등)에도 '입력 가능'으로 표시되던 문제 수정
  • 일부 SKT 게임에서 입력한 이름이 어두운 입력 칸에 묻혀 보이지 않던 문제 수정
  • 단말 문자셋(KSC5601)에 없는 글자(이모지, '똠'·'햏' 같은 일부 한글 등)는 '입력 불가능'으로 거절

성능

  • 키를 누르고 뗄 때마다 키패드 화면 배치를 다시 계산하던 비용 제거
  • 소리가 나지 않는 동안 서버가 매 틱 보내던 소리 시각 메시지를 0.1초에 한 번 이하로 줄여 브라우저 부담 감소
  • 연결이 밀려 소리 시각 메시지를 보내지 못할 때 재생 중인 소리 전체를 다시 맞추며 끊던 문제 수정
  • 게임 실행 속도 3~5% 향상, SKT 게임의 Java 실행은 최대 9% 향상 (빌드 최적화 프로파일 갱신)

보안

  • 치트 콘솔 명령으로 서버의 파일을 읽고 쓸 수 있던 문제 수정
  • 다른 사이트의 페이지가 서버에 게임 추가·삭제나 세이브 가져오기 같은 요청을 보낼 수 있던 문제 수정
  • 게임 삭제 요청으로 게임이 아닌 관리 파일까지 지울 수 있던 문제 수정
  • 비정상적으로 큰 크기나 압축 데이터를 담은 이미지·파일·배열 하나로 서버가 메모리 부족으로 종료될 수 있던 문제 수정
  • Java 게임이 메모리를 끝없이 할당하면 서버가 메모리 부족으로 다른 게임까지 함께 종료될 수 있던 문제 수정

서버

  • 리버스 프록시 뒤에서 외부 요청으로 서버를 종료(/api/shutdown)할 수 있던 문제 수정
  • 서버 종료 명령이 게임 정리가 끝나기 전에 종료됐다고 알리던 문제 수정
  • 종료 처리에서 멈추는 게임이 대기 중이면 서버가 끝나지 않던 문제 수정
  • 심볼릭 링크로 연결한 게임 폴더가 목록에 나오지 않던 문제 수정

디버그

  • 디버그 빌드 로그에 소리 재생 지연 통계 표시

기타

  • 안드로이드 앱에서 게임 진동이 울리지 않던 문제 수정
  • 저장소에서 직접 빌드하려면 Go 1.26 이상 필요
  • Xcode 27로 빌드한 iOS 앱이 iOS 27에서 켜자마자 종료되던 문제 수정
  • 확인 창이 열린 상태에서 키보드 키가 게임에 전달되던 문제 수정
  • 전체화면 전환이나 창 크기 변경 시 연사가 꺼지고 누르고 있던 키가 풀리던 문제 수정
  • 게임 목록이 다시 그려진 뒤 속도·화면 크기 메뉴가 다른 게임의 값을 보여 주던 문제 수정
  • 서버에 연결할 수 없을 때 브라우저의 영어 오류 문구가 그대로 보이던 문제, 다시 연결된 뒤에도 재연결 대기가 길게 남던 문제, 연결이 끊기며 실패한 퀵세이브·퀵로드 안내가 바로 사라지던 문제 수정
  • 안드로이드 앱에서 화면 밀도나 글꼴 크기를 바꾸면 진행 중인 게임이 종료되던 문제, 앱을 뒤로 가기로 닫을 때 게임 종료 시점의 세이브가 빠질 수 있던 문제, 앱을 닫자마자 다시 열면 이전 게임의 종료 처리가 끝나기 전에 새 서버가 시작되던 문제 수정
  • 치트 패널에서 '값 모름' 검색을 반복하면 메모리가 계속 늘던 문제 수정