게임개발/고도엔진

Godot 엔진을 활용한 2D 플랫폼 게임 개발 예제

코딩레벨업 2024. 10. 8. 00:03
728x90
반응형

Godot 엔진은 가볍고 강력한 오픈 소스 게임 엔진으로, 2D 및 3D 게임 개발에 모두 적합한 도구를 제공합니다. 이번 예제에서는 간단한 2D 플랫폼 게임을 개발하여 Godot의 기본 사용법을 익히는 과정을 다룹니다. 이 예제에서는 플레이어 캐릭터가 점프하고, 움직이며, 플랫폼 사이를 이동할 수 있는 게임을 만들어 봅니다.

예제의 목표

  • 플레이어 캐릭터 생성
  • 기본적인 물리 엔진 설정
  • 플랫폼장애물 생성
  • 간단한 키보드 입력으로 캐릭터 조작

개발 환경 준비

  1. Godot Engine 다운로드 및 설치: Godot 다운로드 링크
  2. Godot 에디터 실행 후 새로운 프로젝트를 생성합니다.
    • 프로젝트 이름: PlatformerGame
    • 프로젝트 경로 설정: C:/YourPath/PlatformerGame
    • 2D 프로젝트 선택 후 Create & Edit 클릭

1. 플레이어 캐릭터 생성하기

  1. 새로운 씬 생성:

    • Scene -> New Scene 클릭
    • 노드 추가 (+ 버튼) -> KinematicBody2D 선택 (2D 물리 엔진의 주체가 되는 노드)
  2. 플레이어 노드 설정:

    • KinematicBody2D 이름을 Player로 변경
    • 자식 노드 추가 (+ 버튼) -> Sprite 추가 (플레이어의 시각적 표현)
    • Sprite 노드를 선택한 후 Texture 속성에 플레이어 이미지를 드래그하여 추가 (res://assets/player.png)
  3. 충돌 영역 설정:

    • Player 노드에 또 다른 자식 노드 추가 -> CollisionShape2D 선택
    • CollisionShape2DShape 속성에서 RectangleShape2D를 선택하고, 크기를 캐릭터 크기에 맞게 조정
  4. 스크립트 작성:

    • Player 노드를 선택한 후 스크립트 추가 (Attach Script) 버튼 클릭
    • 스크립트 이름을 Player.gd로 설정하고 아래 코드를 작성:
extends KinematicBody2D

# 속도 및 중력 변수 정의
var velocity = Vector2()
var speed = 200
var gravity = 500
var jump_speed = -300

# 입력 제어 함수
func get_input():
    velocity.x = 0
    if Input.is_action_pressed("ui_right"):
        velocity.x += speed
    if Input.is_action_pressed("ui_left"):
        velocity.x -= speed

# 물리 엔진과의 상호작용 정의
func _physics_process(delta):
    get_input()
    velocity.y += gravity * delta
    if Input.is_action_just_pressed("ui_up") and is_on_floor():
        velocity.y = jump_speed
    velocity = move_and_slide(velocity, Vector2.UP)
  1. 키보드 매핑:
    • Project -> Project Settings -> Input Map 탭으로 이동
    • ui_right, ui_left, ui_up에 각각 오른쪽 화살표, 왼쪽 화살표, 위쪽 화살표 키를 할당

2. 플랫폼 생성하기

  1. 새로운 씬 생성:

    • Node2D 노드를 루트로 설정한 후 Platform 이름으로 씬을 저장 (Save Scene As)
    • Node2D의 자식 노드로 StaticBody2D 추가
    • StaticBody2D의 자식 노드로 Sprite 추가
    • SpriteTexture 속성에 res://assets/platform.png 이미지 추가
  2. 충돌 설정:

    • StaticBody2D의 자식 노드로 CollisionShape2D 추가
    • CollisionShape2DShape 속성에서 RectangleShape2D 선택
    • 플랫폼 이미지 크기에 맞게 RectangleShape2D의 크기 조정
  3. 플랫폼 배치:

    • 메인 씬 (Main.tscn)을 열고 Platform 씬을 드래그하여 여러 개의 플랫폼을 배치

3. 게임 환경 구성

  1. 메인 씬 설정:

    • Main 씬을 생성한 후, Node2D를 루트 노드로 설정
    • Player 씬을 메인 씬에 드래그하여 추가
    • Platform 씬들을 적절한 위치에 배치하여 캐릭터가 점프하고 이동할 수 있는 경로 생성
  2. 카메라 설정:

    • Player 노드에 자식 노드로 Camera2D 추가
    • Current 속성을 체크하여 플레이어의 움직임에 따라 화면이 이동하도록 설정

4. 게임 테스트 및 디버깅

  • F5 키를 눌러 게임을 실행하고, 플레이어가 올바르게 움직이고 점프하는지 확인합니다.
  • 문제가 있다면, 콘솔 창에서 오류 메시지를 확인하고 필요한 부분을 수정하세요.

추가 기능 구현 아이디어

  1. 적 캐릭터 추가:

    • 적 캐릭터를 RigidBody2D 또는 KinematicBody2D로 생성하고, 간단한 AI 스크립트를 추가하여 플레이어를 추적하게 만듭니다.
  2. 아이템 및 점수 시스템:

    • 수집 가능한 아이템(예: 동전)을 생성하고, 플레이어가 아이템을 수집할 때마다 점수를 증가시키는 시스템을 구현해 보세요.
  3. 배경 음악 및 효과음:

    • 배경 음악(AudioStreamPlayer) 및 효과음(AudioStreamPlayer2D)을 추가하여 게임에 더 생동감을 부여합니다.

마무리

이 예제에서는 Godot 엔진을 사용하여 기본적인 2D 플랫폼 게임을 제작하는 방법을 배웠습니다. 이번 튜토리얼을 통해 Godot의 기본적인 노드 구조와 물리 엔진 사용법, 그리고 간단한 스크립팅 기법을 이해할 수 있었습니다. 다음 단계로는 더 복잡한 AI나 애니메이션 시스템을 추가하여 게임의 완성도를 높여 보세요!


728x90
반응형
LIST