LabHub

블로그

게임 엔진 2026 — Godot 4.3 / Unity / Bevy / Unreal 5.5 / Defold / Stride 비교 심층 가이드

한국어English日本語

들어가며: 2026년의 게임 엔진 지도

2023년 9월 Unity의 런타임 수수료 발표는 인디 게임 업계를 두 번 흔들었습니다. 한 번은 발표 그 자체로, 또 한 번은 발표 이후 떠나간 개발자들이 만들어낸 새 흐름으로. 2024년 4월 정책이 거의 전면 철회되었지만, 신뢰는 한 번 무너지면 쉽게 복구되지 않는다는 사실이 산업 전체에 각인되었습니다.

2026년 5월 현재 게임 엔진 시장은 대략 다음과 같이 구분됩니다.

이 글은 각 엔진의 2026년 현재 상태, 강점과 한계, 그리고 "어떤 프로젝트에 무엇을 골라야 하는가"를 정리합니다. 한국·일본 게임사의 실제 사용 현황도 마지막에 담았습니다.

1. Unity 런타임 수수료 사태 — 무슨 일이 있었나

2023년 9월: 발표

2023년 9월 12일, Unity Technologies는 "Runtime Fee"를 발표했습니다. 골자는 두 가지였습니다.

  1. 게임이 일정 매출/설치 수 기준선(Personal 플랜: 연 매출 USD 200,000 + 200,000회 설치)을 넘으면 설치당 수수료가 부과된다.
  2. 2024년 1월 1일부터 적용되며, 이미 출시된 게임의 과거 설치까지 소급 추정할 수 있다.

업계 반응은 격렬했습니다. Cult of the Lamb 개발사 Massive Monster, Among Us의 Innersloth, Mega Crit(Slay the Spire)이 공개 비판 성명을 냈고, 일부는 "Unity로는 다시는 만들지 않겠다"고 선언했습니다. 해킹/리인스톨/시연 부스 데모로도 과금 위험이 있다는 점이 핵심 문제였습니다.

2023년 9월~10월: 수정 발표

발표 직후 Unity는 트위터(X)를 통해 "이미 출시된 게임은 제외", "한 사용자 당 한 번만 카운트", "Personal 플랜은 새 정책 적용 안 함" 등 여러 수정 사항을 단계적으로 발표했습니다. 하지만 신뢰는 이미 깨졌고, John Riccitiello CEO는 2023년 10월 사임했습니다.

2024년 4월: 정책 철회

새 CEO Matthew Bromberg는 2024년 4월 9일, 런타임 수수료 정책 전면 철회를 발표했습니다. 대신 Pro/Enterprise 가격을 8~25% 인상하는 방식으로 매출을 보전했습니다. Personal 플랜은 사실상 무료(연 매출 USD 200,000 미만)로 유지되었습니다.

그러나 시장 점유율은 회복되지 않았다

itch.io의 2024년 통계에 따르면 Unity 신규 프로젝트 비율은 사태 이전 대비 40% 이상 감소했고, Godot 신규 프로젝트는 같은 기간 2배 이상 증가했습니다 (수치는 itch.io 공식 통계 및 GDC 2024 Godot 세션 발표 기준). 한 번 잃은 신뢰의 비용은 그만큼 큽니다.

교훈

2. Godot 4.3 — 인디 게임의 새 표준

2026년의 위치

Godot은 MIT 라이선스의 오픈 소스 게임 엔진입니다. 2024년의 Unity 이탈로 가장 큰 수혜를 본 엔진이고, 2026년 5월 기준 안정 버전은 4.3, 4.4 베타가 진행 중입니다. Steam 출시 게임 중 Godot로 만들어진 비율은 사태 이전 2~3%대에서 2026년 8% 수준까지 상승했습니다 (SteamDB 비공식 추정).

4.x 시리즈의 기술적 도약

GDScript vs C# 선택

# GDScript: Python 같은 문법, 엔진과 가장 잘 통합됨
extends CharacterBody2D

@export var speed: float = 200.0
@export var jump_velocity: float = -400.0

func _physics_process(delta: float) -> void:
    if not is_on_floor():
        velocity.y += get_gravity().y * delta

    var direction := Input.get_axis("move_left", "move_right")
    velocity.x = direction * speed

    if Input.is_action_just_pressed("jump") and is_on_floor():
        velocity.y = jump_velocity

    move_and_slide()
// C#: 같은 로직, 정적 타입과 더 강한 IDE 지원
using Godot;

public partial class Player : CharacterBody2D
{
    [Export] public float Speed = 200.0f;
    [Export] public float JumpVelocity = -400.0f;

    public override void _PhysicsProcess(double delta)
    {
        Vector2 velocity = Velocity;
        if (!IsOnFloor())
            velocity.Y += (float)(GetGravity().Y * delta);

        float direction = Input.GetAxis("move_left", "move_right");
        velocity.X = direction * Speed;

        if (Input.IsActionJustPressed("jump") && IsOnFloor())
            velocity.Y = JumpVelocity;

        Velocity = velocity;
        MoveAndSlide();
    }
}

선택 기준:

Godot의 한계 (정직하게)

3. Unreal Engine 5.5 — AAA의 디폴트

Nanite, Lumen, MetaSounds

UE5의 3대 기능은 2026년에도 여전히 차별화 포인트입니다.

Blueprint vs C++

Unreal은 두 가지 방식으로 게임 로직을 작성합니다.

// C++ AActor 예시
#include "MyCharacter.h"

AMyCharacter::AMyCharacter()
{
    PrimaryActorTick.bCanEverTick = true;
    GetCharacterMovement()->MaxWalkSpeed = 600.0f;
    GetCharacterMovement()->JumpZVelocity = 700.0f;
}

void AMyCharacter::MoveForward(float Value)
{
    if (Controller != nullptr && Value != 0.0f)
    {
        const FRotator Rotation = Controller->GetControlRotation();
        const FRotator YawRotation(0, Rotation.Yaw, 0);
        const FVector Direction = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X);
        AddMovementInput(Direction, Value);
    }
}

Blueprint는 비주얼 스크립팅으로 같은 로직을 노드 그래프로 표현합니다. 2026년 트렌드는 C++ + Blueprint 혼합이 표준이고, 디자이너가 Blueprint로 빠르게 반복하고 프로그래머가 핫스팟을 C++로 리팩토링하는 방식이 정착됐습니다.

라이선스 — Epic Games Royalty

적합한 프로젝트

부적합한 프로젝트

4. Bevy 0.15 — Rust ECS, 에디터 없이도 무서운 성장세

정체성

Bevy는 Rust로 작성된 데이터 지향 ECS(Entity Component System) 게임 엔진입니다. 듀얼 라이선스(MIT 또는 Apache 2.0). 2026년 5월 기준 0.15가 안정 버전이며, 1.0은 아직 발표 전입니다.

ECS 패러다임

use bevy::prelude::*;

#[derive(Component)]
struct Player;

#[derive(Component)]
struct Velocity(Vec2);

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_systems(Startup, spawn_player)
        .add_systems(Update, (movement_system, gravity_system))
        .run();
}

fn spawn_player(mut commands: Commands) {
    commands.spawn((
        Player,
        Velocity(Vec2::ZERO),
        Transform::default(),
    ));
}

fn movement_system(
    time: Res<Time>,
    mut query: Query<(&mut Transform, &Velocity), With<Player>>,
) {
    for (mut transform, velocity) in &mut query {
        transform.translation.x += velocity.0.x * time.delta_seconds();
        transform.translation.y += velocity.0.y * time.delta_seconds();
    }
}

ECS의 장점은 데이터 지향 설계로 인한 캐시 효율성시스템의 자동 병렬화입니다. 수만 개 엔티티를 다루는 시뮬레이션, 탑다운 슈터, 타워 디펜스에 강력합니다.

강점

한계

누가 쓰는가

5. GameMaker Studio 2 — 2D 거인

Opera 소유, 가격 모델 단순화

GameMaker는 1999년 Mark Overmars가 만든 후 YoYo Games를 거쳐 2021년 Opera Software가 인수했습니다. 2022년 11월부터 가격 모델이 단순화되어, 비상업적 사용은 무료, 데스크톱/모바일 출시는 일회성 또는 구독, 콘솔은 별도 라이선스입니다.

GML (GameMaker Language)

// Player Create event
hsp = 0;
vsp = 0;
grv = 0.5;
move_speed = 4;
jump_height = 10;

// Player Step event
var key_left = keyboard_check(vk_left);
var key_right = keyboard_check(vk_right);
var key_jump = keyboard_check_pressed(vk_space);

hsp = (key_right - key_left) * move_speed;
vsp += grv;

if (place_meeting(x, y + 1, obj_wall) && key_jump)
{
    vsp = -jump_height;
}

// Horizontal collision
if (place_meeting(x + hsp, y, obj_wall))
{
    while (!place_meeting(x + sign(hsp), y, obj_wall))
    {
        x += sign(hsp);
    }
    hsp = 0;
}
x += hsp;

GML은 C와 JavaScript를 섞은 듯한 문법으로, 초보자에게 친숙합니다. 2026년 GameMaker는 GML 비주얼(드래그앤드롭)과 GML 코드 모두 지원합니다.

대표작

강점/약점

6. Defold — King 소유, 모바일 2D 최적

정체성

Defold는 Candy Crush의 King이 소유한 무료 2D 게임 엔진입니다. 2020년부터 소스 공개(개발자 라이선스, 수익 셰어 없음). 모바일 출시가 1급 시민입니다.

Lua 기반 워크플로우

-- player.script
function init(self)
    self.velocity = vmath.vector3()
    self.speed = 200
    self.gravity = -1000
    msg.post(".", "acquire_input_focus")
end

function update(self, dt)
    self.velocity.y = self.velocity.y + self.gravity * dt
    local pos = go.get_position()
    pos.x = pos.x + self.velocity.x * dt
    pos.y = pos.y + self.velocity.y * dt
    go.set_position(pos)
end

function on_input(self, action_id, action)
    if action_id == hash("left") then
        self.velocity.x = -self.speed
    elseif action_id == hash("right") then
        self.velocity.x = self.speed
    elseif action_id == hash("jump") and action.pressed then
        self.velocity.y = 500
    end
end

강점

약점

대표작

7. Stride — 오픈 소스 C# 엔진

정체성

Stride(구 Xenko)는 Silicon Studio가 개발하여 2018년 .NET Foundation으로 이관한 오픈 소스 게임 엔진입니다. 라이선스는 MIT. C#만으로 게임을 만든다는 Unity 개발자의 자연스러운 대안입니다.

코드 예시

using Stride.Engine;
using Stride.Core.Mathematics;

public class PlayerController : SyncScript
{
    public float Speed = 5.0f;

    public override void Update()
    {
        var deltaTime = (float)Game.UpdateTime.Elapsed.TotalSeconds;
        var direction = Vector3.Zero;

        if (Input.IsKeyDown(Stride.Input.Keys.W)) direction.Z -= 1;
        if (Input.IsKeyDown(Stride.Input.Keys.S)) direction.Z += 1;
        if (Input.IsKeyDown(Stride.Input.Keys.A)) direction.X -= 1;
        if (Input.IsKeyDown(Stride.Input.Keys.D)) direction.X += 1;

        if (direction.Length() > 0)
        {
            direction.Normalize();
            Entity.Transform.Position += direction * Speed * deltaTime;
        }
    }
}

강점/약점

8. raylib — C 언어 학습 게임 라이브러리

정체성

raylib은 Ramon Santamaria("raysan5")가 만든 C로 작성된 단순한 게임 프로그래밍 라이브러리입니다. 라이선스 zlib/libpng. 의존성 거의 없음. 2025년부터 Raysan이 Patreon으로 풀타임 메인테인.

Hello World

#include "raylib.h"

int main(void)
{
    InitWindow(800, 450, "raylib basic example");
    SetTargetFPS(60);

    Vector2 ballPos = { 400, 225 };

    while (!WindowShouldClose())
    {
        if (IsKeyDown(KEY_RIGHT)) ballPos.x += 2;
        if (IsKeyDown(KEY_LEFT)) ballPos.x -= 2;
        if (IsKeyDown(KEY_UP)) ballPos.y -= 2;
        if (IsKeyDown(KEY_DOWN)) ballPos.y += 2;

        BeginDrawing();
            ClearBackground(RAYWHITE);
            DrawCircleV(ballPos, 30, MAROON);
            DrawText("Move the ball with arrow keys", 10, 10, 20, DARKGRAY);
        EndDrawing();
    }

    CloseWindow();
    return 0;
}

누가 쓰는가

한계

9. libGDX — Java/Kotlin, 여전히 살아있다

libGDX는 2009년에 시작된 Java 기반 게임 프레임워크입니다. Aurelien Ribon, Mario Zechner 등이 메인테인. Apache 2.0 라이선스. 데스크톱, 안드로이드, iOS(RoboVM 또는 MOE), HTML5(GWT) 빌드.

public class MyGdxGame extends ApplicationAdapter {
    private SpriteBatch batch;
    private Texture img;
    private Vector2 position;

    public void create() {
        batch = new SpriteBatch();
        img = new Texture("badlogic.jpg");
        position = new Vector2(100, 100);
    }

    public void render() {
        if (Gdx.input.isKeyPressed(Input.Keys.RIGHT)) position.x += 5;
        if (Gdx.input.isKeyPressed(Input.Keys.LEFT)) position.x -= 5;

        ScreenUtils.clear(0, 0, 0, 1);
        batch.begin();
        batch.draw(img, position.x, position.y);
        batch.end();
    }
}

대표작: Slay the Spire (Mega Crit Games, 2019) — Steam 평점 압도적 긍정, 1500만 카피 이상. 2026년에도 모드 커뮤니티가 libGDX 위에서 동작합니다. Kotlin DSL 지원으로 LibKTX가 사실상의 표준이 되었습니다.

10. LÖVE / Phaser / pygame — 2D 전문 옵션들

LÖVE 11.5 / 12.0 베타 (Lua)

function love.load()
    player = { x = 400, y = 300, speed = 200 }
end

function love.update(dt)
    if love.keyboard.isDown("right") then
        player.x = player.x + player.speed * dt
    elseif love.keyboard.isDown("left") then
        player.x = player.x - player.speed * dt
    end
end

function love.draw()
    love.graphics.rectangle("fill", player.x, player.y, 50, 50)
end

Phaser 3.80 / 4 베타 (TypeScript/JavaScript)

웹 게임 1위 프레임워크. WebGL/Canvas 자동 폴백, Arcade/Matter 물리 엔진 내장, Steam-on-Web 시대의 디폴트.

pygame 2.6 (Python)

import pygame

pygame.init()
screen = pygame.display.set_mode((800, 600))
clock = pygame.time.Clock()
player = pygame.Rect(400, 300, 50, 50)

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]: player.x -= 5
    if keys[pygame.K_RIGHT]: player.x += 5

    screen.fill((0, 0, 0))
    pygame.draw.rect(screen, (255, 0, 0), player)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

11. 한국·일본의 게임 엔진 사용 현황

한국

일본

인디 트렌드

12. 무엇을 선택할까 — 의사결정 표

프로젝트 유형1순위2순위비고
AAA 3D 오픈월드Unreal 5.5자체 엔진Lumen/Nanite
인디 3DGodot 4.3Unity 6Godot 콘솔은 W4 Games
인디 2D 픽셀 아트Godot 4.3GameMaker둘 다 우수
모바일 캐주얼 2DDefoldUnity빌드 크기는 Defold
모바일 미드코어UnityCocos Creator광고/IAP 통합
웹/브라우저 게임PhaserConstruct 3Bevy WASM도 옵션
학습/취미raylibLÖVE / pygame단순함
시뮬레이션 헤비Bevy 0.15Unity (DOTS)Rust ECS
시네마틱 어드벤처Unreal 5.5UnitySequencer/MetaHuman
1인 개발 RPGGodotRPG Maker MZGDScript 빠른 반복

팀 규모 기준

예산 기준

플랫폼 기준

마치며: 2026년의 게임 엔진은 다극화되었다

2023년 9월 이전, 인디 개발자에게 "어떤 엔진을 쓰면 되나"라는 질문의 답은 거의 자동이었습니다: Unity. 2026년 5월의 답은 훨씬 복잡합니다. 그게 좋은 일입니다. 시장이 한 회사의 정책 변경에 인질로 잡히지 않는다는 뜻이니까요.

선택의 기준은 결국 세 가지입니다.

  1. 만들려는 게임의 장르와 플랫폼: 2D 픽셀이면 Godot/GameMaker, AAA 3D면 Unreal, 시뮬이면 Bevy.
  2. 팀의 기존 역량: C#이면 Unity/Stride, Rust면 Bevy, 디자이너 친화면 GameMaker.
  3. 라이선스/거버넌스의 안정성: 오픈 소스(Godot/Bevy/Stride)는 라이선스 변경 리스크가 구조적으로 낮음.

엔진은 게임이 아닙니다. 게임을 끝내는 것이 엔진을 고르는 것보다 100배 중요합니다. 단, 1년 넘게 매달릴 작품이라면 위 세 기준에 30분만 더 투자할 가치가 있습니다.

참고 / References

댓글

아직 댓글이 없습니다.

로그인하면 댓글을 쓸 수 있습니다