Skip to content

Repository files navigation

KOTY 카트 레이싱 프로젝트

KOTY는 언리얼 엔진 5.6으로 개발된 마리오 카트 8 디럭스를 모작한 레이싱 게임입니다. 이 프로젝트는 고급 카트 물리, 동적인 아이템 시스템, AI 제어 상대방, 다양한 게임 상태를 포함한 여러 게임 플레이 메커니즘을 선보입니다.

프로젝트 개요

이 프로젝트는 플레이어가 다양한 트랙에서 AI와 경쟁하는 3D 카트 레이싱 게임입니다. 드리프트, 부스트, 아이템 사용과 같은 고전적인 아케이드 레이싱 요소들을 특징으로 합니다.

핵심 시스템

카트 물리 및 제어

카트의 움직임과 물리는 커스텀 물리 엔진에 의해 처리되어 재미있고 몰입감 있는 운전 경험을 제공합니다.

  • AC_KartBase: 게임 내 모든 카트(플레이어 및 AI 제어)의 기본 클래스입니다.

    • 움직임: 가속, 마찰, 회전 및 속도 제한.
    • 드리프트: 드리프트 시작 및 유지 메커니즘과 관련 부스트를 포함합니다.
    • 물리: 커스텀 중력, 서스펜션 및 충돌 처리.
    • 상태 관리: 스턴 및 부스트와 같은 상태를 처리합니다.
  • AC_PlayerKart: AC_KartBase를 상속하며 플레이어 특정 기능을 추가합니다.

    • 입력 처리: 언리얼의 Enhanced Input 시스템을 사용하여 가속, 조향, 드리프트 및 아이템 사용을 위한 플레이어 컨트롤을 관리합니다.
    • 카메라 제어: 플레이어 카트를 따라가는 스프링 암 카메라 시스템을 구현합니다.
    • 애니메이션 및 효과: 다양한 액션에 대한 플레이어 애니메이션 및 시각/청각 피드백을 관리합니다.

AI 카트

AI 시스템은 플레이어에게 도전적이고 사실적인 상대를 제공하도록 설계되었습니다.

  • AAiKartController: AI 제어 카트의 동작을 지시하는 AI 컨트롤러입니다.
    • 스플라인 추적: AI 카트는 미리 정의된 스플라인을 따라 트랙을 탐색합니다.
    • 동적 행동: AI는 트랙 및 장애물 존재 여부에 따라 속도와 조향을 조절할 수 있습니다.
    • 장애물 회피: 트랙의 장애물을 감지하고 회피하기 위한 기본 로직입니다.
  • AAIKartNew: AI 카트의 폰 클래스로, 자체 물리 및 서스펜션 시뮬레이션을 포함합니다.

아이템 시스템

아이템 시스템은 플레이어가 다양한 파워업을 사용할 수 있도록 하는 핵심 게임 플레이 기능입니다. 이 시스템은 모듈식이며 쉽게 확장할 수 있습니다.

  • 아이템 기본 클래스:

    • AKotyItemBase: ApplyItemEffectOnUseItem과 같은 공통 기능을 정의하는 모든 아이템의 추상 기본 클래스입니다.
    • APhysicItemBase: 월드에 물리적 존재를 가지며 중력의 영향을 받는 아이템(예: 껍질, 바나나)의 기본 클래스입니다.
    • APhysicTrackingItemBase: 대상을 추적할 수 있는 아이템(예: 붉은 등껍질)을 위한 특수 기본 클래스입니다.
  • 아이템 컴포넌트:

    • UKotyItemHoldComponent: 카트가 아이템을 보유하고 사용하는 능력을 관리합니다. 아이템 획득(무작위 또는 특정) 및 사용을 처리합니다.
    • UKotyItemHitComponent: 카트에 부착되어 아이템에 맞았을 때 감지하고 해당 효과를 적용합니다. 무적 메커니즘을 포함합니다.
    • UKotyMovementComponent: 물리적으로 시뮬레이션되는 아이템을 위한 커스텀 이동 컴포넌트로, 중력, 튕김 및 반사를 처리합니다.
  • 구현된 아이템:

    • ABananaItem: 다른 카트를 스핀 아웃시키기 위해 트랙에 떨어뜨릴 수 있습니다.
    • AGreenTurtleItem: 직선으로 날아가는 발사체입니다.
    • ARedTurtleItem: 레이스에서 다음 카트를 추적하는 발사체입니다.
    • AMushroomSmallItem / AMushroomBigItem: 일시적인 속도 부스트를 제공합니다.
    • ABlackBombItem: 지연 후 폭발하여 주변 카트에 영향을 미칩니다.
    • AStarItem: 일시적인 무적 및 속도 부스트를 부여합니다.
    • ASquidItem: 다른 모든 레이서의 화면을 가립니다.
    • ACoinItem: 작은 속도 부스트를 제공합니다.

게임 로직

게임의 흐름과 규칙은 여러 핵심 클래스에 의해 관리됩니다.

  • AC_RaceGameMode: 메인 레이스 루프를 관리합니다.

    • 상태 머신: 레이스 상태(Cinematic, Ready, Play, End)를 제어합니다.
    • 플레이어 관리: 플레이어를 생성하고 레이스 시간을 관리합니다.
    • 저장/로드: UC_KotySaveGame을 통해 최고 레이스 시간 저장 및 로드를 처리합니다.
  • AC_MenuGameMode: 모드 선택 및 카트 선택과 같은 다양한 화면을 탐색할 수 있도록 사전 게임 메뉴 시스템을 관리합니다.

  • AC_RaceManager: 모든 카트의 순위를 추적하고 업데이트하는 등 게임 플레이 중 레이스 특정 로직을 관리합니다.

트랙 기믹

  • AC_BoostZone: 트랙에서 통과하는 모든 카트에 속도 부스트를 제공하는 구역입니다.
  • AC_EndZone: 랩을 추적하고 레이스를 종료하는 역할을 하는 결승선입니다.
  • AC_StartLakitu: 시각적 신호로 레이스 시작을 알리는 캐릭터입니다.

사용자 인터페이스 (UI)

UI는 플레이어에게 레이스 중 필수 정보를 제공합니다.

  • UC_RaceWidget: 다음을 표시하는 메인 인게임 HUD입니다:
    • 현재 아이템.
    • 랩 카운트.
    • 플레이어의 현재 순위.
    • 레이스 타이머 및 카운트다운.
  • UC_EndWidget: 최종 시간 및 순위를 보여주는 레이스 후 화면입니다.

소스 코드 구조

C++ 소스 코드는 Source/KOTY/ 아래의 다음 주요 디렉터리로 구성됩니다:

  • / (루트): AC_KartBase, AC_RaceGameMode, AC_MenuGameMode와 같은 핵심 게임 플레이 클래스를 포함합니다.
  • AI_Player/: AI 컨트롤러 및 AI 카트 폰의 본거지입니다.
  • Gimmick/: 부스트 패드 및 결승선과 같은 트랙 기능을 위한 액터를 포함합니다.
  • Item/: 모든 아이템 관련 클래스를 포함하며, 다음으로 더 세분화됩니다:
    • Base/: 아이템의 추상 기본 클래스.
    • Byproduct/: 아이템에 의해 생성되는 액터(예: 폭발).
    • Component/: 아이템 시스템을 위한 재사용 가능한 컴포넌트.
    • Implement/: 각 아이템의 구체적인 구현.
  • PlayerKart/: 플레이어 제어 카트 및 해당 컨트롤러를 포함합니다.
  • UI/: 사용자 인터페이스 위젯을 위한 C++ 클래스.
  • Utility/: 이징 함수를 위한 UC_MathUtility와 같은 헬퍼 클래스 및 함수를 포함합니다.

About

마리오카트 8 모작 레이싱 게임

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages