Files
mini-test-projects-2-release/module-c/module-c-kr.md
2026-04-12 18:58:03 +09:00

6.0 KiB

🎮 Test Project: Module C - CyberTyper 2026

1. 프로젝트 개요 (Project Overview)

본 과제는 영문 타이핑을 기반으로 한 고성능 아케이드 게임 개발입니다. 선수는 제공된 words_data.json 파일을 분석하여 **데이터베이스(MySQL)**를 설계하고 , 탄환이 실시간 좌표를 추적하여 단어를 파괴하는 역동적인 프론트엔드 엔진을 API와 연동하여 완성해야 합니다.

2. 주요 용어 정의 (Technical Definitions)

  • VFX (Visual Effects): 게임 내 시각 특수 효과입니다. 탄환 충돌 시 글자가 파편으로 부서지는 효과 등을 의미합니다.
  • WPM (Words Per Minute): 분당 단어 입력 속도 지표입니다. (계산식: 타이핑한 총 단어 수 / 플레이 시간(분))
  • HP (Health Point): 플레이어의 생명력(100%)이며, 단어를 놓칠 때마다 차감되어 0%가 되면 게임이 종료됩니다.

3. Step 1: 백엔드 API 및 데이터베이스 설계 (Server-side)

모든 API 엔드포인트는 /module_c/api/ 경로를 사용하며 , 데이터의 영속성(Persistence)을 보장해야 합니다.

A. 데이터베이스 구성 (필수 구현)

  • Word Table: 제공된 words_data.json의 내용을 기반으로 단어 텍스트, 난이도 레벨, 고유 점수 정보를 저장하는 테이블을 생성해야 합니다.
  • Ranking Table: 플레이어 이름, 최종 점수, 최대 콤보를 저장하는 테이블을 설계해야 합니다. 이 데이터는 서버 재시작 후에도 유지되어야 합니다.

B. API 로직 요구사항

  • 단어 공급 API (GET /module_c/api/words?level=n):
    1. 요청한 난이도(level)에 해당하는 단어 중 랜덤하게 추출합니다.
    2. 중복 방지: 현재 게임 화면에 이미 나타나 있는 단어는 중복해서 호출되지 않도록 처리해야 합니다.
  • 랭킹 API: POST 요청을 통해 기록을 DB에 저장하고, GET 요청 시 상위 Global TOP 5 기록을 점수 내림차순으로 반환합니다.

C. 제출물 (Deliverables)

  • 선수는 작성한 API 소스코드와 함께, 설계한 데이터베이스 구조를 확인할 수 있는 table.sql 파일을 반드시 루트 폴더에 포함해야 합니다.

4. Step 2: 게임 엔진 및 점수 로직 (Front-end Development)

A. 난이도별 설정 (생성 주기 및 낙하 속도)

단어는 화면 상단(y=0)의 가로축 랜덤 위치에서 생성되어 아래로 이동합니다.

난이도 (Level) 단어 생성 주기 (Interval) 낙하 속도 (Speed) 난이도 가중치 (Multiplier)
Level 1 2.0초마다 1개 생성 느림 (50px/sec) 1.0
Level 2 1.5초마다 1개 생성 보통 (80px/sec) 1.5
Level 3 1.0초마다 1개 생성 빠름 (120px/sec) 2.0

B. 상세 점수 산출 공식 (FinalScore)

FinalScore = BasePoints + (CurrentCombo \times LevelMultiplier)
  • BasePoints (고유 점수): 맞춘 단어가 DB에서 가지고 있는 고유 점수 값입니다.
  • $CurrentCombo$: 연속 성공 횟수입니다. (성공 시 +1, 단어가 바닥에 닿으면 즉시 0으로 초기화).
  • 표시: 계산된 점수는 게임 화면 Score 영역에 실시간 누적 표시됩니다.

C. HP 시스템 및 회복

  • 감소: 단어가 바닥(Bottom Line)에 닿으면 HP가 10% 차감됩니다.
  • 회복: 20 콤보 달성 시마다 현재 줄어든 HP의 **5%**가 보너스로 즉시 회복됩니다.

5. Step 3: UI/UX 및 장면별 명세 (Design Implementation)

A. 3-Scene SPA(Single Page Application) 구조

  • 본 과제는 페이지 전체 새로고침 없이 자바스크립트를 통해 화면이 전환되는 SPA 구조로 개발되어야 합니다.
  • Scene 1 (Start): 플레이어 이름 입력 및 난이도 선택.
  • Scene 2 (Play): 실제 게임 진행 화면.
  • Scene 3 (Result): 최종 점수 요약 및 Global TOP 5 랭킹 출력 화면.

B. 시작 화면 (Start Scene)

  • 입력 요소: 게임 제목(CyberTyper 2026), 플레이어 이름 입력란(필수), 난이도 선택(Level 1, 2, 3) 라디오 버튼 또는 선택창.
  • 시작 버튼: 모든 정보가 입력되면 활성화되며, 클릭 시 게임 화면으로 진입합니다.

C. 게임 화면 필수 구성 요소 (채점 항목)

  • Score: 실시간 누적 점수판.
  • Combo: 현재 연속 성공 횟수.
  • WPM: 실시간으로 계산되는 분당 타수.
  • HP Gauge: 시각적으로 변하는 생명력 바.
  • Input Field: 플레이어가 영문 단어를 입력하는 텍스트 영역.
  • Falling Words: 상단 랜덤 위치에서 낙하하는 단어들.

D. 투사체(Projectile) 및 피버 효과

  • 탄환 및 충돌: 엔터 입력 시 하단에서 단어의 실시간 좌표로 탄환이 발사되며, 충돌 시 글자 파편 VFX가 발생하며 단어가 소멸합니다.
  • Fever Mode 시각 효과: 20 콤보 달성 시 화면 중앙에 "FEVER MODE" 텍스트 애니메이션이 잠시 나타났다가 사라져야 하며, 배경의 네온 VFX는 기존 배경과 시각적으로 확연히 구분되어야 합니다.

E. 랭킹 화면 (Result Scene)

  • 데이터베이스에서 불러온 Global TOP 5 순위표를 표시합니다. 순위표에는 1등부터 5등까지의 순위와 이름, 점수, 순위달성일시가 표시되어야 합니다.
  • [New Game] 버튼 클릭 시 모든 설정을 초기화하고 이름 입력 화면으로 되돌아갑니다.

6. 채점 기준 요약 (Marking Scheme - 25.00)

항목 상세 기준 배점
Design (7.0) 탄환/파편 역동성, 필수 UI(HP, Score) 가시성 및 VFX 완성도 7.0
Front-end (11.0) 난이도별 로직(주기/속도), 중복 없는 단어 관리, 탄환 좌표 연산 11.0
Back-end (7.0) DB 테이블 설계 및 데이터 영속성, TOP 5 랭킹 API 설계 7.0