웹 게임 코드 스멜 탐색 연구
초록
**
본 논문은 361개의 JavaScript 웹 게임을 대상으로 JSNose 도구를 이용해 기존 코드 스멜 13종을 탐지하고, 9개의 게임을 직접 분석해 게임 전용 프로그래밍 패턴 위반을 확인한다. 결과는 일반적인 언어 기반 스멜 도구가 게임 특유의 품질 문제를 포착하지 못함을 보여주며, 게임‑특화 코드 스멜 탐지 도구의 필요성을 제시한다.
**
상세 분석
**
이 연구는 웹 기반 게임이라는 특수 도메인에 코드 스멜 분석을 적용한 최초 사례 중 하나로, 두 가지 주요 연구 질문(RQ1, RQ2)을 설정하였다. RQ1은 “게임 컨텍스트에서 기존 코드 스멜의 분포는 어떠한가?”이며, RQ2는 “게임‑특화 코드 스멜이 존재한다면 기존 스멜과 어떻게 다른가?”이다.
데이터셋 구축 과정은 GitHub에서 ‘web games’와 ‘JavaScript’를 키워드로 검색한 뒤, README가 영어가 아닌 경우나 게임 엔진·IDE와 같은 비게임 레포지토리를 제외하는 필터링 절차를 거쳐 361개의 실제 게임 프로젝트를 확보하였다. 각 레포지토리는 평균 5~7개의 .js 파일, 약 1 000줄 이상의 코드량을 포함한다.
스멜 탐지는 JSNose(13가지 스멜 정의 포함)를 사용했으며, 탐지 결과는 표 II에 정리되었다. 가장 빈번하게 발견된 스멜은 ‘Closure Smells(s1)’(전체 스멜의 19.8%)과 ‘Large Object(s6)’(36.3%)이며, ‘Empty Catch(s3)’과 ‘Switch Statement(s12)’는 거의 나타나지 않았다. 평균적으로 한 게임당 711개의 스멜이 보고되었지만, 스멜이 전혀 없는 게임은 34.97%에 불과했다.
표 III의 수동 분석에서는 9개의 대표 게임을 선정해 게임 프로그래밍 패턴 위반을 검증하였다. 여기서는 ‘Decoupling’(컴포넌트·이벤트 큐 분리)과 ‘Optimization’(데이터 로컬리티·오브젝트 풀) 두 가지 패턴을 중점적으로 살펴보았다. 결과는 대부분의 게임이 P3(데이터 로컬리티)와 P1(컴포넌트 디커플링) 위반을 보였으며, 일부는 P4(오브젝트 풀)까지 위반했다. 흥미롭게도 이러한 위반은 JSNose가 탐지한 스멜과 직접적인 상관관계가 없었다. 즉, 기존 스멜 도구는 게임 특유의 성능·메모리 관리 문제를 포착하지 못한다는 점을 시사한다.
연구자는 이러한 격차를 두고 두 번째 연구 질문에 답한다. 게임‑특화 스멜은 ‘전역 변수 남용’, ‘중첩 콜백 과다’, ‘이벤트 큐 차단’ 등 실시간 렌더링·물리 연산에 직접적인 영향을 주는 구조적 문제를 포함한다. 현재 JSNose가 제공하는 13가지 스멜은 전통적인 소프트웨어 유지보수 관점에 초점을 맞추고 있어, 게임 엔진 내부의 프레임 레이트 저하, 메모리 파편화 등 성능 중심 이슈를 반영하지 못한다.
한계점으로는 (1) 데이터셋이 오픈소스 GitHub 프로젝트에 국한돼 있어 상업용 게임이나 모바일 게임을 포괄하지 못한다는 점, (2) JSNose의 정확도(정밀도·재현율) 검증이 논문 내에서 충분히 제시되지 않았다는 점, (3) 수동 분석이 9개에 불과해 일반화에 한계가 있다는 점을 들었다. 향후 연구에서는 게임‑특화 스멜 정의를 체계화하고, 머신러닝 기반 탐지 모델을 구축해 다양한 플랫폼(HTML5, Unity WebGL 등)으로 확장할 필요가 있다.
**
댓글 및 학술 토론
Loading comments...
의견 남기기