Skip to content

Hostfs/unitywebGL

Repository files navigation

Unity WebGL 게임 플랫폼 프로젝트

이 문서는 Unity WebGL 기반 게임 플랫폼 프로젝트의 구조와 실행 방법을 안내합니다.

💿 프로젝트 개요

이 프로젝트는 웹 브라우저에서 실행되는 Unity 게임과, 이를 둘러싼 웹 프론트엔드(상점, 마이페이지 등), 그리고 모든 데이터를 관리하는 백엔드 서버로 구성됩니다.

  • 백엔드 (Backend): Express.js 기반의 REST API 서버. 데이터베이스와 통신하며 모든 비즈니스 로직을 처리합니다.
  • 프론트엔드 (Frontend): React.js 기반의 웹 애플리케이션. 아이템 상점, 마이페이지 등 웹 UI를 제공하며 Unity 게임을 호스팅합니다.
  • Unity: C# 스크립트로 작성된 게임 클라이언트. WebGL로 빌드되어 프론트엔드에 탑재됩니다.

🚀 실행 방법

1. 데이터베이스 설정

  1. 로컬 환경에 MariaDB 또는 MySQL을 설치합니다.
  2. DB 관리 도구를 사용하여 DB에 접속한 후, 다음 SQL 파일들을 순서대로 실행합니다.
    1. init.sql (테이블 구조 생성)
    2. init-data.sql (샘플 데이터 추가)

2. 백엔드 서버 실행

  1. v/backend 폴더로 이동합니다.
  2. npm install 명령어로 의존 라이브러리를 설치합니다.
  3. .env 파일의 DB 접속 정보(DB_USER, DB_PASSWORD 등)가 로컬 DB 환경과 일치하는지 확인합니다.
  4. npm run dev 명령어로 서버를 시작합니다. (기본 포트: 3001)

3. 프론트엔드 앱 실행

  1. v/frontend 폴더로 이동합니다.
  2. npm install 명령어로 의존 라이브러리를 설치합니다.
  3. npm start 명령어로 개발 서버를 시작합니다.
  4. 브라우저에서 http://localhost:3000 주소로 접속하여 웹사이트를 확인합니다.

💻 코드 역할 안내

Backend (/backend/src)

  • api/: API 경로(URL)를 정의하고, 들어온 요청을 적절한 컨트롤러에 연결합니다. (auth.js, items.js, shop.js 등)
  • controllers/: 실제 요청을 받아 데이터 유효성을 검사하고, 서비스 계층을 호출하여 결과를 클라이언트에 응답합니다.
  • services/: 데이터베이스 조회/수정, 트랜잭션 처리 등 핵심 비즈니스 로직을 수행합니다.
  • config/: database.js 파일이 있으며, DB 커넥션 풀을 설정하고 관리하여 성능을 최적화합니다.
  • middleware/: authMiddleware.js가 있으며, API 요청 시 JWT 토큰을 검증하여 라우트를 보호하는 수문장 역할을 합니다.

Frontend (/frontend/src)

  • pages/: HomePage, ShopPage 등 웹사이트의 각 페이지를 구성하는 메인 컴포넌트입니다.
  • components/: Navbar 등 여러 페이지에서 재사용되는 작은 UI 컴포넌트입니다.
  • contexts/: AuthContext.js가 있으며, 로그인 상태, 사용자 정보(gold 포함) 등 앱 전체에서 공유되어야 할 전역 데이터를 관리하고 동기화합니다.
  • services/: api.js 파일이 있으며, axios를 사용하여 백엔드 API를 호출하는 모든 함수를 중앙에서 관리하고, 요청 헤더에 JWT 토큰을 자동으로 주입합니다.

Unity (/unity/Assets/Scripts)

  • API/: APIManager.cs가 있으며, 백엔드 API와의 모든 통신을 담당하는 싱글톤 클래스입니다.
  • Managers/: 게임의 핵심 시스템을 관리하는 싱글톤 클래스들입니다.
    • GameManager: 사용자 정보, 게임 상태 등 전반적인 데이터를 관리합니다.
    • UIManager: UI 패널과 요소들을 제어합니다.
    • EventManager: 매니저 간의 의존성을 없애기 위한 이벤트 기반 통신을 담당하여 확장성을 높입니다.
    • ObjectPool: 오브젝트 생성/파괴에 따른 성능 저하를 막기 위한 최적화 패턴입니다.
  • Models/: DB 테이블 구조와 일치하는 C# 데이터 클래스들입니다.
  • Config/: GameConfig.cs가 있으며, ScriptableObject를 사용하여 API 주소 등 주요 설정을 코드와 분리하여 유연성을 확보합니다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published