1분반-자이로드롭

cdc wiki
Com238 (토론 | 기여)님의 2025년 6월 18일 (수) 23:28 판 (2.6 스테이지 레벨 디자인)
이동: 둘러보기, 검색

프로젝트 개요

기술개발 과제

국문 : 협동심 증진 및 공감각 발달을 위한 게임 ‘자이로드롭’ 개발

영문 : (Gyrodrop: A Game for Boosting Teamwork and Enhancing Multisensory Development)

과제 팀명

자이로드롭

지도교수

황혜수 교수님

개발기간

2025년 3월 ~ 2025년 6월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부 2020920058 조성채(팀장)

서울시립대학교 컴퓨터과학부 2019920037 이성호(팀원)

서울시립대학교 컴퓨터과학부 2020920051 이현제(팀원)

서론

개발 과제의 개요

개발 과제 요약

· 모바일 디바이스의 자이로센서 데이터를 이용해 게임 내 플랫폼을 기울여 캐릭터의 위치를 조작하는 3D-Platformer, 퍼즐 게임 개발

· 1인 모드(전체 축 조작)와 2인 모드(Pitch, Roll 축 분담) 지원으로 협동성 극대화

· 호스트 중심 물리 연산 + WebRTC P2P 네트워킹으로 플레이어 간 멀티 플레이 지원

· 크로스 플랫폼(Windows, macOS) + 모바일 웹 컨트롤러 지원으로 접근성 확대

개발 과제의 배경 및 효과

· 모바일 VR·센서 기반 인터랙션 시장 확대, 캐주얼 협동 게임의 수요 증가

· 기기 내장 자이로센서 활용으로 별도 디바이스 없이 본인의 스마트폰 사용 가능

· 실시간 P2P 멀티플레이 지원으로 원격지의 사용자와 협동 플레이 가능

· 교육·재활(노인 치매 예방, 협동 훈련) 등 파생 활용 가능

개발 과제의 목표 및 내용

· 협동 플레이를 유도하는 게임 맵 디자인 - 하나의 축만을 이용하여 게임을 클리어하기 어렵도록 설계

· 원격지 멀티 플레이 실시간성 확보 – 게임 클라이언트 간 실시간 동기화 지연 시간을 30ms 내외로 유지

· 다양한 기믹 요소(열쇠, 발판, 점프대, 이동 플랫폼, 부숴지는 발판 등)를 구현하여 게임의 난이도와 긴장도를 높임

· 9개의 맵(3가지 난이도, 각 난이도별 3개의 맵) 개발

· 웹 컨트롤러 연동으로 별도의 컨트롤러 없이도 PC에서 플레이 가능하도록 설계 – 컨트롤러 지연 시간은 100ms 내외로 유지

관련 기술의 현황

관련 기술의 현황 및 분석(State of art)

  • 전 세계적인 기술현황

1) 자이로 센서

  a) 자이로 센서는 각속도를 측정하여 회전 방향과 속도를 정확히 감지하는 역할을 한다. 최근의 자이로 센서 기술은 MEMS(미세전자기계 시스템) 기반으로 소형화 및 고정밀화가 이루어졌으며, 

현실 세계와 가까운 가상 환경 경험을 제공할 수 있기에 스마트폰, VR 기기, 게임 컨트롤러 등 다양한 분야에서 필수적인 기술로 자리 잡았다.

  b) 최근 자이로 센서는 가속도 센서와 결합하여 6축 센서를 구성하며, 여기에 자기장 센서를 추가해 9축 센서로 발전하였다. 이를 통해 더욱 정확한 공간 인식과 자세 추적이 가능해졌다.  
  c) 최신 자이로 센서는 초당 300~2000 DPS(degrees per second)의 정밀한 각속도 측정 범위를 제공하며, 모바일 게임 환경에서 미세한 움직임까지 정확히 감지할 수 있게 되었다.  

2) 게임 엔진

  a) 게임 개발 및 실시간 시뮬레이션 구현을 위한 대표적인 기술로는 **Unity Engine**과 **Unreal Engine**이 있다.  
  b) Unity Engine  
     i) Unity는 직관적인 인터페이스와 높은 접근성을 바탕으로, 다양한 플랫폼에서의 실시간 콘텐츠 개발을 지원하는 범용 게임 엔진이다.  
     ii) 모바일·데스크탑·웹·콘솔·XR 등 크로스 플랫폼 개발에 최적화되어 있으며, 하나의 프로젝트로 다수의 플랫폼에 쉽게 빌드할 수 있는 기능을 제공한다.  
     iii) NVIDIA PhysX(3D)·Box2D(2D) 기반 물리 시뮬레이션, DOTS/ECS 구조를 통한 병렬 연산 지원.  
     iv) Shader Graph·Visual Effect Graph·Timeline 등 시각적 툴과 방대한 Asset Store 생태계 제공.  
     v) C# 스크립팅과 활발한 커뮤니티 자료가 강점이다.  
  c) Unreal Engine  
     i) Epic Games가 개발한 고성능 실시간 렌더링 엔진으로 AAA급 게임 및 고품질 비주얼 콘텐츠 제작에 특화.  
     ii) 최신 버전 UE5는 Nanite(가상화 지오메트리)·Lumen(실시간 글로벌 일루미네이션) 도입으로 실사 수준 그래픽 구현.  
     iii) Chaos Physics, Cloth Simulation, Rigid/Soft Body Dynamics 등 내장, C++ 성능 제어와 Blueprint 시각 스크립팅 지원.  
     iv) 높은 표현력 대비 시스템 요구 사양과 학습 난이도는 높은 편이나, 영화·건축·디지털 트윈 등 산업 분야에서도 널리 사용된다.

시장상황에 대한 분석

  • 경쟁제품 조사 비교

1) Super Monkey Ball : 키패드/조이스틱 기반 싱글플레이 중심. 자이로 입력과 협동 요소 부재.

2) Tiltagon : 빠른 템포 생존형 싱글플레이. 멀티플레이·협동 요소 없음.

3) Rolling Sky : 터치 드래그 방식 싱글플레이. 자이로·협동 요소 없음.

→ 본 과제 게임은 자이로 기반 직관적 2인 협동 설계로 차별화.

  • 마케팅 전략 제시

1) 대학 커뮤니티(에브리타임·인스타 릴스) 타겟 티저 영상 배포

2) 자체 랜딩 페이지 gyrodrop.xyz 운영

3) 게임 스토어 — Stove — 출시

개발과제의 기대효과

기술적 기대효과

• 자이로 데이터 실시간 취합 및 피어 간 실시간 동기화 기술 확보 • WebRTC 기반 P2P 게임 상태 동기화 기술 구현

경제적·사회적 기대 및 파급효과

• 친구·가족이 함께 즐기는 2인 협동 소셜 게임 제공 • 협동심 증진과 공감각 발달로 노인 치매 예방 프로그램 등 파생 활용 가능

기술개발 일정 및 추진체계

개발 일정

스크린샷 2025-06-19 오후 3.58.09.png

구성원 및 추진체계

1. 조성채(팀장) : 게임 클라이언트 개발, 프로젝트 총괄

2. 이현제(팀원) : 게임 클라이언트 개발, 레벨 디자인

3. 이성호(팀원) : 게임 클라이언트 개발, 서버 개발

설계

2.1 사용자 요구사항

게임 플레이 • 1 (D, 중요도: 대) 플레이어가 멀티플레이 룸을 생성 또는 입장하고, 스테이지를 선택하여 상대방과 게임을 플레이할 수 있다. • 2 (D, 대) 2명의 플레이어가 자이로 센서를 통해 각각 Pitch/Roll 축을 담당하여 판의 기울기를 조작할 수 있다. • 3 (D, 중) 한 스테이지에서 공이 목표 지점까지 최단 거리로 이동하는 시간이 1 분 이내여야 한다. • 4 (D, 대) 협동 플레이를 유도하는 맵 디자인을 제공해야 한다.  * 두 축을 동시에 기울여야만 통과 가능한 경로  * 시간차를 맞춰야만 클리어 가능한 점프 구조 등 다양한 기믹 포함 • 5 (D, 중) 크로스 플랫폼 지원. 자이로 센서가 없는 기기는 모바일 기기를 컨트롤러로 사용해 조작 가능해야 한다. • 6 (W, 소) 레벨 디자이너용 스테이지 제작 툴을 제공해야 한다.

기술적 요소 • 1 (D, 중) 자이로 센서 입력 반응속도 ≤ 100 ms • 2 (D, 대) 게임 서버―클라이언트 실시간 동기화 ≤ 30 ms • 3 (D, 중) 렌더링 ≥ 60 FPS 유지 • 4 (W, 중) CI/CD 제공으로 빠른 개발·배포 가능 • 5 (W, 소) 오케스트레이션 기반 수평 확장 가능

2.2 기능 정의 및 정량목표

가. 기능 정의 • GR1 게임 룸 생성: 멀티플레이 룸 생성 • GR2 게임 룸 입장: 상대방 정보로 룸 입장 • GR3 스테이지 플레이: 룸 내 스테이지 선택·플레이 • GY1 자이로 데이터 취득: 기기 자이로 데이터 수집 • GY2 자이로 대체 취득: 자이로 없는 기기에서 모바일 컨트롤러 사용 • GY3 자이로 반응 속도: 게임 반영 ≤ 100 ms • GY4 자이로 데이터 취합: 두 플레이어 자이로 데이터 서버 반영 • GS1 기믹 상호작용: 점프대·발판·열쇠 등 ≥ 3종 • GS2 스테이지 레벨 디자인: 협동 기믹 포함 맵 비율 ≥ 80 % • GS3 네트워크 동기화: 서버―클라이언트 RTT ≤ 30 ms • GS4 렌더링: 최신 스마트폰 기준 60 FPS 보장 • GD1 레벨 에디터 도구: Unity 내부 맵 제작 지원 • GD2 배포·서버 관리: Kubernetes·Docker 기반 CI/CD·수평 확장

나. 기능별 정량목표 (평가 시 점수 = ∑ [기능 점수 × 중요도 계수] × 100) • GR1 ~ GR3, GY1, GY2, GY4, GD1: 구현 여부(개발 1 / 미개발 0) • GY3: (반응속도 ≤ 100 ms) → 점수 = max(0, 1 – 반응속도/100) • GS1: 점프대·발판·열쇠 등 구현 기믹 수 n → 점수 = max(1, n/6) • GS2: 협동 기믹 포함 맵 비율 p → 점수 = p/100 (목표 ≥ 0.8) • GS3: RTT ms → 점수 = max(0, 1 – RTT/30) • GS4: 평균 FPS f → 점수 = min(1, f/60) • GD2: 구현 여부(1/0)

2.3 세부기술 선택사항

• GR1, GR2, GY4: Node.js + NestJS 웹 서버(룸·시그널링·데이터 취합) • GR3, GS1, GS2, GS4: Unity 엔진 채택(C# 스크립팅, 물리·UI·레벨) • GY1, GY2: deviceorientation Web API, React 프런트엔드(모바일 컨트롤러) • GY3: WebSocket 실시간 양방향 통신으로 지연 최소화 • GS3: WebRTC P2P, Unity.WebRTC 패키지 + Node.js (Socket.io) 시그널링 • GD1: Unity 에디터 내 레벨 제작(전용 툴 없이) • GD2: AWS EC2 + ELB, CloudFront, Docker·Kubernetes, CI/CD 파이프라인

2.4 게임 클라이언트 설계

매니저 계층 • Managers (싱글톤) → GameManager, RoomManager, SessionManager, UIManager, SoundManager 전역 접근·의존성 주입 • GameManager: 스테이지 클리어, 로딩, 잠금 관리 • RoomManager: 룸 생성·입장·자이로 점유, URL·코드 관리 • SessionManager: P2P 연결 관리(WebRTC 등) • SoundManager: BGM·SFX 재생 • UIManager: 씬 UI·팝업 UI 생성·관리

플레이어 이동 • Raycast로 플랫폼 감지 → 중력 분해 후 표면 사영 이동 • 공 중심을 표면에 투영해 겹침·튜닝 방지, 과가속 시 감속력 부여, 낙사 자동 리셋

기믹 클래스(10 종 이상) • BrokenBoard, CubeZMover, HammerSwing, JumpPad, KeyTrigger, MovingScrew, PickUp(Score/Death), RepeatingCrusher, TeleportPad, TriggerPlate 등

UI 설계 • ReactiveProperty / IReadOnlyReactiveProperty 옵저버 패턴 • Managers.Dispatch()로 메인 스레드 안전 호출, 모델·뷰 분리

P2P 통신·RPC • WebRTC 데이터 채널 수립(Offer/Answer, ICE) → NAT Traversal • SyncManager + SyncBehaviour + SyncRPCAttribute로 RPC 직렬화/역직렬화 • Transform·게임 상태 호스트 계산 → 게스트 동기화

2.5 게임 룸 서버 설계

개요 • NestJS 서버가 룸 생성·입장·자이로 값 수집·시그널링 담당

• WebSocket + REST API, 메모리 저장소(Map) 기반 룸 관리

주요 레이어 • Repository: GameRoomInMemoryRepository, ShortCodeBase62Repository, ClientVersionJsonRepository

• Service: GameRoomService, WebRTCSignalingService, ClientVersionService

• Controller/Gateway: GameRoomController, GameRoomGateway, WebRTCSignalingGateway, ClientVersionController, HealthController

주요 API (일부) • POST /rooms  룸 생성

• POST /rooms/{id}/join 룸 입장

• GET /rooms/{id}/gyro 자이로 조회

• POST /rooms/{id}/gyro 자이로 갱신

• POST /rooms/code/{short}/join 단축 코드 입장

2.6 스테이지 레벨 디자인

Stage 1 (Tutorial) 1.png • 기믹: 없음

• 조작감 학습용, 중력 가속도로만 목적지 도달

Stage 2 (Tutorial) Example.jpg • 기믹: Key-Door

• 장애물 뒤 열쇠 획득 → 문 개방

Stage 3 (Tutorial) Example.jpg • 기믹: PickUp

• 도토리 획득 → 즉시 스테이지 리셋

Stage 4 (Easy) Example.jpg • 기믹: Maze, Key-Door

• 제한 시야 미로, 열쇠 획득 → 탈출

Stage 5 (Easy) Example.jpg • 기믹: Key-Door, Plate-Door, MovingPlatform

• Plate-Door는 제한 시간 개방, 이동 발판으로 타이밍 요구

Stage 6 (Easy) Example.jpg • 기믹: PickUp

• Roll 축 이동 + Pitch 축으로 도토리 전부 획득해야 클리어

Stage 7 (Hard) Example.jpg • 기믹: BouncingObstacle, Crusher, JumpPad

• 장애물 피해서 JumpPad → 맞은편 Crusher 주기적 돌진

Stage 8 (Hard) Example.jpg • 기믹: TeleportPad, Hammer

• 올바른 Pad만 다음 플랫폼, 잘못 선택 시 되돌아감; 360° Hammer 회전

Stage 9 (Hard) Example.jpg • 기믹: JumpPad, BrokenBoard, MovingPlatform, Hammer

• 2단계 구조; 첫 JumpPad 자동 점프 → 두 번째 단계 Grid 바닥(4.5 초 후 붕괴) + 이동 발판 3개; 압박·정밀 컨트롤 요구

개념설계안

모바일 자이로센서 입력으로 3D 플랫폼을 기울여 공을 움직이는 퍼즐·플랫폼 게임. 1인 모드(전 축)와 2인 모드(Pitch/Roll 분담)를 제공해 협동성을 강조한다. 호스트 중심 물리 연산 구조에 WebRTC P2P 네트워킹을 결합해 원격지 사용자 간 실시간 멀티플레이를 구현하고, Windows·macOS·모바일 웹 컨트롤러를 모두 지원한다.

이론적 계산 및 시뮬레이션

• 자이로-클라이언트 간 지연 계산: 교차상관 함수를 사용해 두 축 데이터의 최적 랙을 구하고 지연(밀리초) = 최적 랙 × 10으로 산출. • 네트워크 동기화 실험: 동일 NTP 서버로 1 ms 이내 시간 동기를 맞춘 두 피어 간 Unix Timestamp 차이를 10 초간 측정해 평균 지연을 검증. • 물리 시뮬레이션: 플랫폼 회전 시 공이 뜨는 현상을 방지하기 위해 캐릭터 위치를 플랫폼에 수직 투영 후 속도를 제어해 접지 상태를 유지하도록 계산.

상세설계 내용

• 매니저 계층: 싱글톤 Managers 클래스가 GameManager·RoomManager·SessionManager·UIManager·SoundManager 등을 보유, 서비스 로직에 전역 접근을 제공하며 Dispatch(Action)로 메인 스레드 안전 실행을 보장한다. • 게임 오브젝트 클래스 • RollingPlatform·MovingSaw 등 장애물은 주기적 이동 패턴과 충돌 처리 로직 내장. • PickUp(Score·Death), RepeatingCrusher, TeleportPad, TriggerPlate 등 10여 종 기믹 클래스 구현. • UI 설계: ReactiveProperty / IReadOnlyReactiveProperty 기반 옵저버 패턴으로 모델-뷰 결합을 최소화하고 Managers.Dispatch()로 UI 이벤트를 메인 스레드에 안전 반영. • 개발 프로세스: GitHub flow, dev-main 브랜치 전략, PR 승인 후 병합·Rebase 규칙, 주요 릴리스 시 dev → main 병합 후 배포.

결과 및 평가

완료 작품의 소개

프로토타입 사진 혹은 작동 장면

내용

포스터

내용

관련사업비 내역서

내용

완료작품의 평가

내용

향후계획

내용

특허 출원 내용

내용