본문으로 건너뛰기
DEVKBS
작업 원장
006Vstro2023.06 – 2023.08운영 중

Dpangz — League of Clonoid

브라우저에서 돌아가는 HTML5 게임의 UI 전부

기간
2023.06 – 2023.08
분류
게임
역할
프론트엔드 · UI 100%
구성
디자인 2 · 백엔드 2 · 프론트엔드 1
사이트 방문
Dpangz — League of Clonoid 데스크톱 화면
Dpangz — League of Clonoid 모바일 화면

01개요

브라우저에서 바로 플레이하는 HTML5 게임 프로젝트입니다. 캔버스 안의 게임 로직은 게임 개발자가 맡았고, 나는 게임을 감싸는 모든 것을 담당했습니다. 홈페이지 전체 UI와, 캔버스 위에 얹히는 상점·채팅·이모티콘·거래 시스템 같은 인게임 인터페이스였습니다.

일반 웹 UI와 게임 UI는 만드는 감각이 다릅니다. 웹은 문서를 읽는 흐름이지만 게임 UI는 화면을 가리지 않으면서 즉시 반응해야 합니다. 클릭 한 번의 지연이 그대로 조작감으로 이어집니다.

홈페이지 쪽에서는 게임 데이터를 시각화하는 작업이 있었습니다. 기획팀이 밸런스 수치를 엑셀로 관리하고 있었는데, 이걸 사이트에 옮길 때마다 개발자가 수동으로 반영하면 수정이 있을 때마다 병목이 생깁니다. 그래서 엑셀 파일을 그대로 읽어 차트로 그리는 구조를 만들었습니다.

02기술 결정

문제가 무엇이었고, 무엇을 골랐고, 그래서 어떻게 됐는지.

  1. 결정 01

    밸런스 데이터는 엑셀에서 직접 읽는다

    문제
    기획팀은 게임 수치를 엑셀로 관리합니다. 이걸 웹 차트로 옮기려면 개발자가 값을 코드로 옮겨 적어야 했고, 수치가 바뀔 때마다 이 작업이 반복됐습니다.
    선택
    SheetJS로 엑셀 파일을 직접 파싱해 Chart.js에 넘기는 구조를 만들고, 기획팀에는 시트 양식 가이드를 제공했습니다.
    결과
    기획이 엑셀만 갱신하면 사이트 차트가 따라 바뀝니다. 개발자를 거치지 않아 반영 속도가 빨라졌고, 옮겨 적다 틀리는 실수도 사라졌습니다.
  2. 결정 02

    캔버스 위 UI는 DOM으로 얹는다

    문제
    상점·채팅·거래창을 캔버스 안에 직접 그리면 텍스트 입력, 스크롤, 접근성 처리를 전부 새로 만들어야 합니다. 게임 로직과도 얽힙니다.
    선택
    인터랙션이 필요한 UI는 캔버스 위에 DOM 레이어로 띄우고, 게임 로직과는 이벤트로만 주고받게 했습니다. 캔버스는 게임 화면만 그립니다.
    결과
    입력·스크롤·포커스를 브라우저 기본 동작에 맡길 수 있었습니다. 게임 개발자와 작업 영역이 깔끔하게 갈려 충돌도 적었습니다.
  3. 결정 03

    이전 게임 프로젝트의 구조를 다시 쓴다

    문제
    짧은 기간에 인게임 UI 전체를 만들어야 했습니다.
    선택
    앞서 만든 HTML5 게임(Digtoc)에서 쓴 UI 레이어 구조와 이벤트 규약을 다시 가져와 이 프로젝트에 맞게 조정했습니다.
    결과
    초기 셋업 기간이 크게 줄어 UI 완성도에 시간을 더 쓸 수 있었습니다.

03주요 기능

  • 게임 홈페이지 전체 UI

    메인·소개·랭킹·공지 등 게임 외부 페이지 전반을 구현.

  • 인게임 상점·거래 UI

    캔버스 위 DOM 레이어로 상점, 아이템 거래, 인벤토리 인터페이스를 구현.

  • 채팅과 이모티콘

    실시간 채팅창과 이모티콘 선택 UI. 게임 화면을 가리지 않는 배치와 접기 동작.

  • 엑셀 기반 데이터 시각화

    SheetJS + Chart.js로 기획 엑셀을 그대로 차트로 렌더링.

  • PWA 적용

    설치 가능한 웹앱 형태로 만들어 브라우저 주소창 없이 실행되게 했습니다.

04화면

Desktop

Mobile · 반응형

  • Dpangz — League of Clonoid 모바일 화면 1

    01

  • Dpangz — League of Clonoid 모바일 화면 2

    02

  • Dpangz — League of Clonoid 모바일 화면 3

    03

05회고

게임 UI를 만들면서 '반응 속도가 곧 품질'이라는 감각을 얻었습니다. 웹에서는 200ms의 지연이 문제가 되지 않는 경우가 많지만, 게임에서는 즉시 답이 오지 않으면 조작이 먹지 않은 것처럼 느껴집니다.

개발자가 아닌 사람과 데이터를 주고받을 때는 그쪽이 이미 쓰는 도구에서 출발하는 게 제일 빠릅니다. 엑셀을 그대로 읽기로 한 건 기술적으로 특별할 게 없는 결정이었는데, 팀에서 반복하던 작업을 없앴다는 점에서 효과는 제일 컸습니다.