AR 기반 협동 영어 학습 게임
AR 기술을 활용한 혁신적인 야외 교육 콘텐츠
- 메인 리포지토리: snap-it
- K8s Manifest: snap-it-k8s-manifest
- Word2Vec Server: snap-it-word2vec
- Word2Vec Manifest: snap-it-word2vec-manifest
Snap It은 전통적인 실내 게임의 한계를 벗어나 GPS 기반 위치 정보를 활용한 야외 협동 게임입니다. 플레이어들이 다양한 장소에서 실시간으로 협력하고 경쟁할 수 있는 교육용 콘텐츠를 제공합니다.
- AI 주제 선정: AI가 선정한 주제에 따라 각 플레이어에게 개별 사물 할당
- 시간 제한 촬영: 15초 제한시간 내 할당된 사물 촬영 및 업로드
- AI 분석: AI 이미지 분석을 통한 주제 유사도 판단 및 점수 산정
- 영어 학습: 촬영된 사물의 영어 단어 표시로 자연스러운 영어 학습 효과
- 2라운드 진행: 총 2라운드 진행 후 최고 점수자 승리
- YouTube: https://youtu.be/BrFO9eYzvFE
- Google Drive: 시연 동영상
|
황차빈 백엔드/인프라 |
이수민 클라이언트 |
김민지 디자인 |
- Unity: 6000.0.41f
- AR Foundation: AR 환경 구축
- Native WebSocket: 실시간 통신
- Google Cloud Vision API: 객체 인식
- STOMP Protocol: WebSocket 메시징
- Spring Boot: 3.4.4
- Java: 21
- WebSocket (STOMP): 실시간 게임 진행
- OAuth2 + JWT: 소셜 로그인 인증
- ConcurrentHashMap: 동시성 제어
- Google Gemini API: 주제/물건 목록 생성
- Google Cloud Vision API: 이미지 객체 인식
- Word2Vec (FastAPI): 단어 유사도 분석
- Kubernetes: 컨테이너 오케스트레이션
- ArgoCD: GitOps 기반 CD
- GitHub Actions: CI 파이프라인
- Prometheus + Grafana: 모니터링
- Docker: 컨테이너화
- OS: Android 9 (Pie, API 28) 이상
- RAM: 5GB 이상 권장
- CPU: Snapdragon 845 이상
- OS: iOS 13.0 이상
- RAM: 4GB 이상 권장
- CPU: Apple A9 칩 이상
git clone https://github.com/ChabinHwang/snap-it.git
cd snap-itcd snapit-server
./gradlew bootRunUnity Editor에서 프로젝트를 열고:
- Android/iOS 플랫폼 설정
- AR Foundation 및 필요한 패키지 설치
- 빌드 및 디바이스에 설치
- 소셜 로그인: Google, Kakao OAuth2 지원
- JWT 토큰: Access Token + Refresh Token 방식
- WebSocket 인증: JWT 기반 핸드셰이크
- 실시간 멀티플레이: STOMP 프로토콜 기반
- 방 시스템: 방 생성, 입장, 퇴장 관리
- 게임 모드: 개인전(PERSONAL) / 협력전(COOPERATE)
- 점수 시스템: AI 유사도 기반 점수 산정
- 객체 인식: Google Vision API 연동
- 거리 측정: ARMesh를 통한 공간 인식
- 물체 선택: AR 환경에서의 직관적 상호작용
- 주제 생성: Gemini API를 통한 게임 주제 자동 생성
- 유사도 분석: Word2Vec 모델 기반 단어 유사도 측정
- 이미지 분석: 촬영된 이미지의 객체 인식 및 분석
- 테스트 조건: 100,000 요청, 200 동시 연결
- 단일 Pod: 평균 응답시간 ~200ms
- 2개 Pod: 향상된 처리량과 안정성
- Object Detection: 평균 0.2초, 최대 0.3초
- Gemini API: 평균 0.7초, 최대 0.9초
# 게임 서버
cd snapit-server
docker build -t snapit-server .
# Word2Vec 서버
cd word2vec-server
docker build -t word2vec-server .# ArgoCD를 통한 자동 배포
kubectl apply -f manifests/- Prometheus: 메트릭 수집
- Grafana: 대시보드 시각화
- 실시간 모니터링: 시스템 상태, 요청 수, 응답 시간