[UE5] ShootWonban #1 - 기획 초안

ChangJin·2024년 8월 5일
0

Unreal Engine5

목록 보기
95/114
post-thumbnail

2024.08.05

이번 글에서는 원반 사격 게임의 기획 초안을 다룹니다. 이 게임의 주요 기능, 사용 기술, 각 기능의 구현 방법 등을 상세히 설명합니다. 원반 스폰, 원반 이동, 사용자 입력 처리, UI 구성, 점수 계산 등 게임의 핵심 요소들을 다루며, 프로젝트 진행을 위한 구체적인 로드맵을 제시합니다.

한 줄 요약하면 원반 사격 게임입니다.

깃허브!
https://github.com/ChangJin-Lee/ShootWonban

프로젝트 예상 기간

  • 2024.08.05 ~ 2024.08.15

참여인원

  • 2명

참고 자료

작업 비율

  • 프로토타입 단계에서부터 최대한 C++만을 사용할 것.
  • 이전 Project_StackBlock에서 블루프린트의 사용이 많았음.

초안

1. 원반 스폰

원반 스폰은 게임의 중요한 기능 중 하나로, 일정한 규칙에 따라 새로운 원반을 생성합니다.

  1. 스폰 위치

    • 원반을 특정 위치에 스폰합니다. 예를 들어, 게임 월드 내 여러 위치에 스폰 포인트를 배치하고, 일정 시간마다 이 포인트에서 원반을 스폰합니다.
    • 코드 예시:
      FVector SpawnLocation = FVector(FMath::RandRange(-500.f, 500.f), FMath::RandRange(-500.f, 500.f), 300.f);
      FRotator SpawnRotation = FRotator::ZeroRotator;
      GetWorld()->SpawnActor<AClayPigeon>(ClayPigeonClass, SpawnLocation, SpawnRotation);
  2. 스폰 타이밍

    • 원반이 일정한 시간 간격으로 스폰되도록 설정합니다.
    • 코드 예시:
      GetWorld()->GetTimerManager().SetTimer(SpawnTimerHandle, this, &AShootWonbanGameMode::SpawnClayPigeon, SpawnInterval, true);

2. 원반 이동

원반의 이동은 물리 엔진이나 커스텀 로직에 의해 제어됩니다.

  • 포물선 이동
    • 원반이 포물선을 그리며 이동하도록 설정합니다.
    • 코드 예시:
      FVector Velocity = FVector(FMath::RandRange(-500.f, 500.f), FMath::RandRange(-500.f, 500.f), 1000.f);
      ClayPigeon->GetMesh()->SetPhysicsLinearVelocity(Velocity);

3. 사용자 입력 처리

사용자의 입력을 처리하여 게임의 주요 기능을 수행합니다.

  1. 프로젝트 세팅 → 입력 → 액션 및 바인드 설정

    • 프로젝트 설정에서 입력 매핑을 설정합니다. 예를 들어, 마우스 좌클릭 시 총을 쏘도록 매핑합니다.
    • 예제:
      PlayerInputComponent->BindAction("Fire", IE_Pressed, this, &AShootWonbanCharacter::Fire);
  2. 카메라 확대 및 조준

    • 마우스 우클릭 시 카메라가 확대되어 조준하도록 설정합니다.

    • 코드 예시:

      void AShootWonbanCharacter::BeginZoom()
      {
          CameraComponent->FieldOfView = ZoomedFOV;
      }
      
      void AShootWonbanCharacter::EndZoom()
      {
          CameraComponent->FieldOfView = DefaultFOV;
      }

4. UI 구성

게임의 다양한 상태를 표시하는 UI를 설계합니다.

  1. 메인 메뉴

    • 게임의 메인 메뉴를 제작합니다. 시작, 가이드, 종료 버튼을 포함합니다.
    • UI 요소:
      • 시작 버튼: 게임을 시작합니다.
      • 가이드 버튼: 게임 설명 화면으로 이동합니다.
      • 종료 버튼: 게임을 종료합니다.
  2. 인게임 UI

    • 게임 중에 표시되는 UI를 제작합니다. 현재 웨이브, 남은 원반 수, 남은 총알 수 등을 표시합니다.
    • UI 요소:
      • 웨이브 정보: 현재 웨이브와 총 웨이브 수를 표시합니다.
      • 남은 원반 수: 현재 웨이브에서 남은 원반 수를 표시합니다.
      • 남은 총알 수: 플레이어가 사용할 수 있는 남은 총알 수를 표시합니다.
  3. 게임 종료 화면

    • 게임이 종료되었을 때 표시되는 화면을 제작합니다. 최종 점수와 다시 시작 버튼 등을 포함합니다.

5. 점수 계산

플레이어가 맞춘 원반의 수에 따라 점수를 계산합니다.

  • 점수 계산 로직
    • 플레이어가 맞춘 원반의 수를 카운트하여 점수를 계산합니다.
    • 코드 예시:
      int32 CalculateScore(int32 HitCount, int32 TotalCount)
      {
          return (HitCount / TotalCount) * 100;
      }

패배 조건

게임에서 플레이어가 패배하는 조건을 설정합니다.

  1. 남은 총알 수가 0이 되면 게임 종료
    • 플레이어가 사용할 수 있는 총알이 모두 소진되면 게임이 종료됩니다.
    • 코드 예시:
      if (RemainingAmmo <= 0)
      {
          EndGame();
      }

이 기획 초안을 바탕으로 프로젝트를 진행하고자 합니다. 각 작업을 분담하여 효율적으로 작업을 진행하고, 구체적인 로드맵을 작성하여 게임을 완성할 예정입니다. 추가적인 정보나 수정이 필요하면 언제든지 알려주세요!

profile
게임 프로그래머

0개의 댓글