이 문서는 Unity WebGL 기반 게임 플랫폼 프로젝트의 구조와 실행 방법을 안내합니다.
이 프로젝트는 웹 브라우저에서 실행되는 Unity 게임과, 이를 둘러싼 웹 프론트엔드(상점, 마이페이지 등), 그리고 모든 데이터를 관리하는 백엔드 서버로 구성됩니다.
- 백엔드 (Backend): Express.js 기반의 REST API 서버. 데이터베이스와 통신하며 모든 비즈니스 로직을 처리합니다.
- 프론트엔드 (Frontend): React.js 기반의 웹 애플리케이션. 아이템 상점, 마이페이지 등 웹 UI를 제공하며 Unity 게임을 호스팅합니다.
- Unity: C# 스크립트로 작성된 게임 클라이언트. WebGL로 빌드되어 프론트엔드에 탑재됩니다.
1. 데이터베이스 설정
- 로컬 환경에
MariaDB또는MySQL을 설치합니다. - DB 관리 도구를 사용하여 DB에 접속한 후, 다음 SQL 파일들을 순서대로 실행합니다.
init.sql(테이블 구조 생성)init-data.sql(샘플 데이터 추가)
2. 백엔드 서버 실행
v/backend폴더로 이동합니다.npm install명령어로 의존 라이브러리를 설치합니다..env파일의 DB 접속 정보(DB_USER,DB_PASSWORD등)가 로컬 DB 환경과 일치하는지 확인합니다.npm run dev명령어로 서버를 시작합니다. (기본 포트: 3001)
3. 프론트엔드 앱 실행
v/frontend폴더로 이동합니다.npm install명령어로 의존 라이브러리를 설치합니다.npm start명령어로 개발 서버를 시작합니다.- 브라우저에서
http://localhost:3000주소로 접속하여 웹사이트를 확인합니다.
api/: API 경로(URL)를 정의하고, 들어온 요청을 적절한 컨트롤러에 연결합니다. (auth.js,items.js,shop.js등)controllers/: 실제 요청을 받아 데이터 유효성을 검사하고, 서비스 계층을 호출하여 결과를 클라이언트에 응답합니다.services/: 데이터베이스 조회/수정, 트랜잭션 처리 등 핵심 비즈니스 로직을 수행합니다.config/:database.js파일이 있으며, DB 커넥션 풀을 설정하고 관리하여 성능을 최적화합니다.middleware/:authMiddleware.js가 있으며, API 요청 시 JWT 토큰을 검증하여 라우트를 보호하는 수문장 역할을 합니다.
pages/:HomePage,ShopPage등 웹사이트의 각 페이지를 구성하는 메인 컴포넌트입니다.components/:Navbar등 여러 페이지에서 재사용되는 작은 UI 컴포넌트입니다.contexts/:AuthContext.js가 있으며, 로그인 상태, 사용자 정보(gold포함) 등 앱 전체에서 공유되어야 할 전역 데이터를 관리하고 동기화합니다.services/:api.js파일이 있으며,axios를 사용하여 백엔드 API를 호출하는 모든 함수를 중앙에서 관리하고, 요청 헤더에 JWT 토큰을 자동으로 주입합니다.
API/:APIManager.cs가 있으며, 백엔드 API와의 모든 통신을 담당하는 싱글톤 클래스입니다.Managers/: 게임의 핵심 시스템을 관리하는 싱글톤 클래스들입니다.GameManager: 사용자 정보, 게임 상태 등 전반적인 데이터를 관리합니다.UIManager: UI 패널과 요소들을 제어합니다.EventManager: 매니저 간의 의존성을 없애기 위한 이벤트 기반 통신을 담당하여 확장성을 높입니다.ObjectPool: 오브젝트 생성/파괴에 따른 성능 저하를 막기 위한 최적화 패턴입니다.
Models/: DB 테이블 구조와 일치하는 C# 데이터 클래스들입니다.Config/:GameConfig.cs가 있으며,ScriptableObject를 사용하여 API 주소 등 주요 설정을 코드와 분리하여 유연성을 확보합니다.