반응형
연관글
- 2025.04.18 - [Programing/javascript] - 💰 숫자를 한글로 금액 단위로 표현
- 2025.04.18 - [Programing/javascript] - 💻 숫자를 한글 숫자 표기로 변환
- 2025.05.27 - [Programing/javascript] - JavaScript로 구현하는 금액의 영어 단위 변환 (Number to Words)
- 2025.05.27 - [Programing/javascript] - JavaScript로 구현하는 금액 단축 표기 (K / M / B 표기법)
- 2025.06.11 - [Programing] - 엑셀/스프레디시트에서 숫자를 한글로 표기하는 방법 총정리 (Excel to Hangul Conversion)
왜 게임에서는 데미지 숫자를 축약해서 보여줄까?
게임에서는 데미지가 점점 커지는 구조가 많습니다. 특히 방치형 게임, RPG, 시뮬레이션 장르에서는 데미지나 골드 수치가 수십억, 수조 단위 이상으로 넘어가는 경우가 많습니다. 이럴 때 "1,234,567,890,123" 같은 숫자를 그대로 보여주면 사용자 입장에서 읽기 어렵고 UI도 복잡해집니다.
그래서 보통 "A 단위", "B 단위", "Z 단위"처럼 1,000 단위마다 알파벳을 붙이는 방식이 사용됩니다. 이를 통해 수치를 직관적이고 간단하게 표현할 수 있습니다.
A ~ ZZZZ 방식의 축약 표기 방식 개요
- "1K" 이후부터는 "A", "B", ..., "Z" → "AA", "AB", ..., "ZZZZ" 형태로 확장
- 각 알파벳은 1,000의 제곱 단위로 매핑됨
- 게임에서는 "데미지 축약" 외에도 자원, 골드, 경험치, 스킬 포인트 등에도 이 방식을 씁니다
자바스크립트로 구현하기
1. "단위 매핑 로직"
알파벳을 기반으로 숫자를 단위 문자열로 변환합니다. A → 1K, B → 1M, C → 1B ... 와 같은 식입니다.
2. "숫자 나누기 및 자리 맞춤"
1,000으로 나누면서 단위 수를 증가시키고, 대응하는 알파벳 문자열을 계산합니다.
3. "소수점 자리수 제어"
정수 혹은 소수점 한 자리까지 출력되도록 설정합니다.
4. "예외 처리"
- 0은 "0"으로 출력
- 음수는 부호 유지
전체 코드 예제
function formatGameNumber(num, digits = 1) {
if (num === 0) return "0";
const sign = num < 0 ? "-" : "";
num = Math.abs(num);
const getUnit = (index) => {
let unit = "";
while (index >= 0) {
unit = String.fromCharCode(65 + (index % 26)) + unit;
index = Math.floor(index / 26) - 1;
}
return unit;
};
let count = 0;
while (num >= 1000) {
num /= 1000;
count++;
}
const unit = count === 0 ? "" : getUnit(count - 1);
return sign + num.toFixed(digits).replace(/\.0+$/, "") + unit;
}
출력 예시
console.log(formatGameNumber(123)); // "123"
console.log(formatGameNumber(12345)); // "12.3A"
console.log(formatGameNumber(987654321)); // "987.7C"
console.log(formatGameNumber(1234567890123)); // "1.2F"
console.log(formatGameNumber(-100000000000000)); // "-100Q"
이 방식은 단위를 AA, AB, ..., ZZZZ까지 무한 확장할 수 있으므로, 초고수치 환경에서도 사용할 수 있습니다.
성능 및 활용성
- 성능: O(log n) 수준의 연산이므로 대부분의 UI 환경에서 충분히 빠릅니다
- 활용성: 숫자 데이터가 폭발적으로 커지는 게임에서 핵심 유틸로 활용됩니다
- 확장성: 26진법 기반 단위 확장이므로 단위 제한이 없습니다
마무리 및 추천 자료
게임에서 "데미지 축약"은 UX 측면에서도 중요한 요소입니다. 복잡한 숫자를 간결하게 보여주는 이 기능은 게임 UI의 품질을 높이고 사용자 피로도를 낮춰줍니다.
게임 수치 표현이나 시뮬레이션 시스템 설계에 관심이 있다면 다음 리소스를 추천합니다:
게임 개발자라면 다양한 단위 축약 방식과 사용자 친화적인 출력 전략을 함께 고려해보시기 바랍니다.
반응형
'Programing > javascript' 카테고리의 다른 글
| JavaScript canvas로 이미지 리사이즈 (1) | 2025.06.26 |
|---|---|
| JavaScript로 구현하는 금액 단축 표기 (K / M / B 표기법) (0) | 2025.05.27 |
| JavaScript로 구현하는 금액의 영어 단위 변환 (Number to Words) (0) | 2025.05.27 |
| 기수 정렬 (Radix Sort) 설명과 JavaScript 예제 (1) | 2025.05.22 |
| 힙 정렬 (Heap Sort) 설명과 JavaScript 예제 (0) | 2025.05.22 |
| JavaScript 비교 연산자 (1) | 2025.05.18 |
| JavaScript 조건문 (0) | 2025.05.18 |
| JavaScript 반복문 (0) | 2025.05.18 |