Skip to content

사진을 찍어 주제에 대한 가장 높은 유사도 점수를 얻는 게임

Notifications You must be signed in to change notification settings

nunsori/snap-it

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Snap It 📸🎮

AR 기반 협동 영어 학습 게임
AR 기술을 활용한 혁신적인 야외 교육 콘텐츠

Unity Spring Boot Kubernetes FastAPI

🔗 관련 리포지토리

🎯 프로젝트 개요

Snap It은 전통적인 실내 게임의 한계를 벗어나 GPS 기반 위치 정보를 활용한 야외 협동 게임입니다. 플레이어들이 다양한 장소에서 실시간으로 협력하고 경쟁할 수 있는 교육용 콘텐츠를 제공합니다.

🎮 핵심 게임플레이

  • AI 주제 선정: AI가 선정한 주제에 따라 각 플레이어에게 개별 사물 할당
  • 시간 제한 촬영: 15초 제한시간 내 할당된 사물 촬영 및 업로드
  • AI 분석: AI 이미지 분석을 통한 주제 유사도 판단 및 점수 산정
  • 영어 학습: 촬영된 사물의 영어 단어 표시로 자연스러운 영어 학습 효과
  • 2라운드 진행: 총 2라운드 진행 후 최고 점수자 승리

🎥 시연 영상, 사진

Image

👥 팀원

chabin
황차빈

백엔드/인프라
yejin
이수민

클라이언트
yejin
김민지

디자인

시스템 아키텍처

Image

인프라 아키텍쳐

클라이언트 (Unity)

  • Unity: 6000.0.41f
  • AR Foundation: AR 환경 구축
  • Native WebSocket: 실시간 통신
  • Google Cloud Vision API: 객체 인식
  • STOMP Protocol: WebSocket 메시징

서버 (Spring Boot)

  • Spring Boot: 3.4.4
  • Java: 21
  • WebSocket (STOMP): 실시간 게임 진행
  • OAuth2 + JWT: 소셜 로그인 인증
  • ConcurrentHashMap: 동시성 제어

AI

  • Google Gemini API: 주제/물건 목록 생성
  • Google Cloud Vision API: 이미지 객체 인식
  • Word2Vec (FastAPI): 단어 유사도 분석

인프라 & DevOps

  • Kubernetes: 컨테이너 오케스트레이션
  • ArgoCD: GitOps 기반 CD
  • GitHub Actions: CI 파이프라인
  • Prometheus + Grafana: 모니터링
  • Docker: 컨테이너화

🚀 시작하기

사전 요구사항

Android

  • OS: Android 9 (Pie, API 28) 이상
  • RAM: 5GB 이상 권장
  • CPU: Snapdragon 845 이상

iOS

  • OS: iOS 13.0 이상
  • RAM: 4GB 이상 권장
  • CPU: Apple A9 칩 이상

설치 및 실행

1. 리포지토리 클론

git clone https://github.com/ChabinHwang/snap-it.git
cd snap-it

2. 서버 실행 (로컬 개발)

cd snapit-server
./gradlew bootRun

3. 클라이언트 빌드

Unity Editor에서 프로젝트를 열고:

  1. Android/iOS 플랫폼 설정
  2. AR Foundation 및 필요한 패키지 설치
  3. 빌드 및 디바이스에 설치

🎯 주요 기능

🔐 인증 시스템

  • 소셜 로그인: Google, Kakao OAuth2 지원
  • JWT 토큰: Access Token + Refresh Token 방식
  • WebSocket 인증: JWT 기반 핸드셰이크

🎮 게임 시스템

  • 실시간 멀티플레이: STOMP 프로토콜 기반
  • 방 시스템: 방 생성, 입장, 퇴장 관리
  • 게임 모드: 개인전(PERSONAL) / 협력전(COOPERATE)
  • 점수 시스템: AI 유사도 기반 점수 산정

📱 AR 기능

  • 객체 인식: Google Vision API 연동
  • 거리 측정: ARMesh를 통한 공간 인식
  • 물체 선택: AR 환경에서의 직관적 상호작용

🤖 AI 기능

  • 주제 생성: Gemini API를 통한 게임 주제 자동 생성
  • 유사도 분석: Word2Vec 모델 기반 단어 유사도 측정
  • 이미지 분석: 촬영된 이미지의 객체 인식 및 분석

📊 성능 테스트 결과

Word2Vec API 성능 테스트

  • 테스트 조건: 100,000 요청, 200 동시 연결
  • 단일 Pod: 평균 응답시간 ~200ms
  • 2개 Pod: 향상된 처리량과 안정성

Google Vision API 응답시간

  • Object Detection: 평균 0.2초, 최대 0.3초
  • Gemini API: 평균 0.7초, 최대 0.9초

🐳 Docker & Kubernetes

Docker 빌드

# 게임 서버
cd snapit-server
docker build -t snapit-server .

# Word2Vec 서버
cd word2vec-server
docker build -t word2vec-server .

Kubernetes 배포

# ArgoCD를 통한 자동 배포
kubectl apply -f manifests/

📈 모니터링

  • Prometheus: 메트릭 수집
  • Grafana: 대시보드 시각화
  • 실시간 모니터링: 시스템 상태, 요청 수, 응답 시간

About

사진을 찍어 주제에 대한 가장 높은 유사도 점수를 얻는 게임

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 87.1%
  • ShaderLab 5.7%
  • Java 5.0%
  • HLSL 1.2%
  • JavaScript 0.5%
  • Mathematica 0.5%