Programing/javascript

JavaScript로 구현하는 게임 데미지 단위 축약 (A ~ ZZZZ)

2025. 5. 27. 15:51
반응형

연관글

  • 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의 품질을 높이고 사용자 피로도를 낮춰줍니다.

게임 수치 표현이나 시뮬레이션 시스템 설계에 관심이 있다면 다음 리소스를 추천합니다:

  • MDN Math.log10
  • GameDev StackExchange 숫자 축약 관련 토론
  • replit 자바스크립트 실습 환경

게임 개발자라면 다양한 단위 축약 방식과 사용자 친화적인 출력 전략을 함께 고려해보시기 바랍니다.

반응형

'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
'Programing/javascript' 카테고리의 다른 글
  • JavaScript canvas로 이미지 리사이즈
  • JavaScript로 구현하는 금액 단축 표기 (K / M / B 표기법)
  • JavaScript로 구현하는 금액의 영어 단위 변환 (Number to Words)
  • 기수 정렬 (Radix Sort) 설명과 JavaScript 예제
Dongkkase
Dongkkase
개발자로 일하면서 부딪히는 문제풀이가 누군가에게 도움이 되길 바라며
    반응형
  • Dongkkase
    정집사의 개발로그
    Dongkkase
  • 전체
    오늘
    어제
    • All (478)
      • 금융 (61)
      • Programing (295)
        • Algorithm (39)
        • API (2)
        • javascript (122)
        • CSS (8)
        • HTML (10)
        • PHP (15)
        • JAVA (27)
        • JSP (17)
        • JSP 예제 (1)
        • IOS (1)
        • Android (1)
        • Sencha Touche (1)
        • bat file, cmd (0)
        • 디버깅 (2)
        • SQL (21)
        • MS-SQL (1)
        • MySQL (13)
        • 보안 (5)
      • Server (14)
        • Docker (1)
        • Windows (9)
        • Linux (3)
        • jeus (1)
      • Database (6)
      • IT 일반 (15)
      • 리뷰 (38)
        • Book (17)
        • 제품 (2)
        • 영화 소개 (11)
        • 음악 소개 (7)
      • 잡생각 (36)
        • 회고 (3)
        • 컬럼 (4)
        • 자료실 (6)
        • 낙서장 (12)
        • 위시리스트 (2)
        • WOW (1)
        • 덕 (1)
  • 인기 글

  • 최근 댓글

  • 태그

    자바스크립트
    자바
    IT·컴퓨터
    위시리스트
    읽고 싶은 책
    IT블로그
    JavaScript
    IT 관련
    블로그
    기초
    SQL
    js패턴
    iT's MY LiFE
    Java
    자바스크립트유틸
    php
    디자인패턴
    It
    jsp
    사고 싶은 책
Dongkkase
JavaScript로 구현하는 게임 데미지 단위 축약 (A ~ ZZZZ)
상단으로

티스토리툴바