/HelloPlanet

Graduation work

Primary LanguageC++

⭐Hello, Planet!⭐

한국공학대학교 Hello, Planet!팀 졸업작품

TEAM MEMBER

이름 역할
원윤식 클라이언트
김재원 서버
김연중 기획, 그래픽, 서브 클라이언트

DEVELOPMENT ENVIRONMENT

✏️ 기획

1. 연구 목적

  • DirectX 12를 이용한 3D게임 제작

    • DirectX 파이프라인 이해
    • 조명, 그림자, 3D 애니메이션 구현
    • 멀티쓰레딩을 이용한 렌더링 시간 단축
  • BOOST/ASIO 비동기 서버 구축으로 멀티플레이 구현

    • 비동기 I/O 프로그래밍 이해
    • 시야 처리와 멀티쓰레드 프로그래밍으로 높은 동시접속자수를 처리할 수 있는 서버 구현

2. 게임 특징

  • 외계 행성에서 몰려오는 몬스터를 처치하는 멀티플레이 슈팅 게임
  • 플레이어는 3가지 무기 중 하나를 선택해서 플레이
  • 게임은 라운드 형식으로 진행되며 각 라운드 종료 후 보상 획득
  • 마지막 라운드의 보스를 처치하는 것이 최종 목표

3. 기술적 요소 및 중점 연구 분야

  • 클라이언트
    • 3D 애니메이션
      FBX SDK를 이용한 애니메이션 구현
    • 조명 및 그림자
      방향성 조명과 그림자 구현
    • 멀티쓰레딩
      멀티쓰레딩을 이용한 렌더링 속도 향상
  • 서버
    • 시야 처리
      필요한 계산만 처리하여 서버 부하 감소
    • NPC AI
      A* 알고리즘과 Path mesh로 몬스터 AI 구현
    • BOOST/ASIO 라이브러리
      C++ 표준 라이브러리로 제작한 서버로 리눅스 등에서도 작동하도록 구축

📂 소스

1. 클라이언트

1-1. 클라이언트 구조

· class GameFramework
├── · class Timer
└── · class Scene
    ├── · class Camera
    │   └─ · class Player
    ├── · class Mesh
    │	└─ · struct Vertex
    │	└─ · struct Material
    │	└─ · struct Joint
    │	└─ · struct Animation
    ├── · class Shader
    ├── · class Texture
    └─┬─ · class GameObject
      │  └─ · class Mesh
      │  └─ · class Shader
      │  └─ · class Texture
      │  └─ · struct TextureInfo
      │  └─ · struct AnimationInfo
      ├─ · class UIObject : public GameObject
      ├─ · class Skybox : public GameObject
      ├─ · class Bullet : public GameObject
      └─ · class Player : public GameObject
         └─ · class Camera

2. 서버