
나는 원래 게임을 좋아했다. 아니 지금도 좋아한다. 그래서 언젠가 내가 직접 게임을 만들고 보고 싶다는 생각은 늘 가지고 있었다.
그러나 내가 이상적으로 생각하고 있는 게임은 현대의 게임 개발 생태계 구조에서 자본과 기술력을 충당 할 수 없다. 그렇다면 노선을 바꿔서 혼자서 개발 할 수 있을 정도의 인디 게임을 취미로 시작해서 만들어 보는 건 어떨까 라는 생각을 해 봤다.
나는 웹 개발자로 게임 개발에 대한 지식은 없다. 하지만 프로그래밍 언어를 이해 하고, 코드를 작성하거나 수정 할 수 있는 기초적인 지식은 가지고 있다.
따로 필요한건 게임의 디자인적인 요소가 필요했다. 하지만 따로 디자이너를 구하거나, 외주를 통해 일정 비용을 지불해서 게임 리소스를 만드는 것은 아무래도 부담이 된다.
이런 이유로 직접적인 게임 개발에 대한 꿈은 언제나 계속 마음속에만 품고 있었다.
그러다가 우연히 '스테이블 디퓨전으로 만드는 게임' 그래픽 이라는 책을 보게 되었다.
AI의 발전으로 게임에 필요한 모든 자원을 나 혼자 만들어 볼 수 있는 환경이 만들어진 것이다.
그래서 한 번 맘 속에 품었던 해 보고 싶었던 게임 개발을 해 보기로 한다.
1인 게임 개발의 현실을 보면 보통 3~ 5년 이상 개발을 했다와 같이 아주 긴 시간 개발 과정이 있는 것 같다. 나의 경우 과연 끈기 있게 게임을 실제 출시의 단계까지 만들 수 있을까란 의문이 동시에 들지만, 게임 개발 분야에 대해서도 조금 알고 싶은 마음이 있어서 그냥 해 보기로 한다.
게임을 플레이 했던 입장에서도 알게되는 자연스러운 게임 개발 엔진이 있다. 그런 게임 엔진에 대해서 우선 정보를 찾아보고 정리 하면 다음과 같다.
유니티는 가장 널리 사용되는 게임 엔진 중 하나로, 모바일, PC, 콘솔, VR 등 다양한 플랫폼을 지원한다. C#을 기반으로 한 스크립팅을 사용하며, 풍부한 에셋 스토어와 커뮤니티의 지원을 받을 수 있다.
멀티플랫폼 지원: 한 번 개발하면 다양한 플랫폼에 쉽게 배포 가능
강력한 에셋 스토어: 다양한 무료 및 유료 리소스를 활용 가능
C# 기반의 스크립팅: 상대적으로 배우기 쉬운 프로그래밍 언어 사용
2D 및 3D 게임 개발 가능: 다양한 장르의 게임 제작에 적합
VR/AR 지원: 가상현실 및 증강현실 콘텐츠 개발 가능
언리얼 엔진은 에픽게임즈에서 개발한 강력한 게임 엔진으로, 특히 고퀄리티 3D 그래픽을 요구하는 게임에서 많이 사용된다. 블루프린트(비주얼 스크립팅) 기능을 통해 프로그래밍 없이도 게임 로직을 구현할 수 있는 장점이 있다.
최상급 그래픽 품질: 사실적인 그래픽과 실시간 렌더링 기능 제공
블루프린트 시스템: 코드 작성 없이도 게임 로직을 구현 가능
무료 사용 가능: 수익이 일정 기준을 넘지 않으면 무료로 사용 가능
다양한 플랫폼 지원: PC, 콘솔, 모바일, VR까지 다양한 환경 지원
RPG Maker(쯔꾸르)는 프로그래밍 경험이 없는 사람도 쉽게 RPG 게임을 만들 수 있도록 설계된 게임 엔진이다. 기본적으로 JRPG 스타일의 게임을 제작하는 데 최적화되어 있으며, 다양한 템플릿과 리소스를 제공한다.
초보자 친화적: 코딩 없이 간단한 클릭만으로 게임 제작 가능
JRPG 스타일 게임 제작 최적화: 턴제 전투 시스템과 타일 기반 맵 제작 지원
커뮤니티 지원: 다양한 플러그인과 리소스를 활용 가능
한정된 확장성: 자유도가 상대적으로 낮고 복잡한 기능 구현이 어려움
고도엔진은 오픈소스 기반의 무료 게임 엔진으로, 2D 및 3D 게임 개발을 지원한다. 가벼운 엔진이면서도 강력한 기능을 제공하며, 독자적인 GDScript 언어를 사용한다.
완전 무료 오픈소스: 상업적 사용에도 완전 무료
GDScript 사용: Python과 유사한 문법으로 간단한 코드 작성 가능
가벼운 실행 환경: 저사양에서도 원활한 개발 가능
다양한 플랫폼 지원: PC, 모바일, 웹, 콘솔까지 지원
위 내용은 ChatGPT에 의해 정리된 내용이다. 결국은 내가 구상하고 있는 게임의 그래픽 (2D/3D)과 출시(호환)를 위한 플랫폼, 개발 난이도, 유료 정책 등 다양한 방향에서 고려할 점을 찾아야 했다. 나는 2D 게임을 구상했다. 유니티를 선택하고, 유니티에서의 2D 게임 개발 지원과 함께, 무료와 일부 유료 에셋을 통한 빠른 게임 그래픽 구현은 충분히 좋은 고려 대상이었다.
하지만 결론적으로는 나는 LÖVE 라는 엔진을 선택하기로 했다.
다음은 그 특징이다.
LÖVE는 2D 게임 개발을 위한 오픈소스 게임 프레임워크로, 루아(Lua) 언어를 기반으로 한다. 간결한 구조와 가벼운 성능으로 인해 인디 개발자들에게 인기가 많다.
Lua 스크립팅 사용: 간단한 문법과 유연한 개발 환경 제공
경량 엔진: 저사양에서도 원활하게 실행 가능
오픈소스: 자유롭게 커스터마이징 가능
2D 게임 최적화: 3D 기능 없이 2D 게임 개발에 집중
이 엔진을 알게 된 이유는 플레이 했던 게임 '발라트로' 가 이 엔진으로 만들어졌기 때문.
오픈소스와 함께 2D 게임 최적화라는 이유, 나름 성공한 인디 개발자의 선례가 있기도 하니 그냥 이게 좋아 보여 선택 하기로 했다.
ChatGPT의 도움을 통해 게임 아이디어를 구체화 했다. 게임의 기본적인 스토리, 컨셉, 장르, 진행방식 과 같은 부분을 설명하면 이것의 구체화를 도움받기로 한다.
무엇을 계획하고 결정 해야 하는지 물어보니 다음과 같은 답변을 받아 볼 수 있었다.
게임 장르: 예를 들어, 퍼즐, 액션, 플랫폼 등 어떤 장르의 게임을 만들고 싶은지 결정하세요.
게임 목표: 플레이어가 어떤 목표를 달성해야 하는지 정리하세요.
핵심 컨셉: 게임의 독창적인 점이나 매력적인 요소는 무엇인지 고민하세요. 예: 독특한 스토리, 창의적인 메커니즘 등.
간단한 설정이나 스토리를 추가하면 게임의 몰입감을 높일 수 있습니다.
캐릭터, 배경, 주요 사건 등을 구상하세요.
게임의 기본적인 플레이 루프를 정의하세요.
예: 플레이어가 이동하고, 점프하고, 적을 피하는 구조라면 이 동작을 구현할 계획을 세우세요.
너무 복잡하게 시작하지 말고, 최소 기능(MVP)을 목표로 하세요.
게임 제작에 필요한 리소스를 정리하세요:
그래픽: 캐릭터, 배경, UI
사운드: 배경 음악, 효과음
코드: 주요 기능의 구현 계획
생성형 AI를 통해 그래픽을 제작하려 한다면, 필요한 이미지를 목록화하세요.
LÖVE 엔진에 대해 간단히 학습하세요:
Lua 언어의 기본 문법
LÖVE의 주요 기능 (ex. 이미지 로드, 충돌 감지 등)
개발 환경 설정: IDE(예: VS Code), LÖVE 설치 등.
게임 화면을 종이에 그리거나 디지털로 간단히 스케치하여 구조를 확인하세요.
플레이어가 상호작용할 요소를 명확히 표시하세요.
다음 단계
이 모든 것을 정리한 후, 간단한 프로토타입 제작에 들어가는 것이 좋습니다. 프로토타입은 게임의 기본적인 플레이 방식을 시험해볼 수 있는 첫 번째 버전입니다.
위 내용을 토대로, 나의 게임 개발에 대한 내용을 구체화함과 동시에, 어느정도 개발 방향을 잡아 볼 수 있었다. (게임 내용에 관한 부분은 비밀임과 동시에, 깊게 설명하기에는 무리가 있는 특화된 부분이라 뺀다)
그래서 나는 우선 1차 목표로 프로토 타입을 만들어 보기로 한다. 우선 실제로 동작하는 게임에 앞서서, 내가 생각했던 대로 게임 그래픽을 생성하고, 이것을 게임 화면에 적용 할 수 있는지를 먼저 만들어 보려고 한다. 이 목표를 0차 프로토 타입으로 명명하고 게임 리소스 생성과 함께, LÖVE 엔진(Lua 언어)의 기초 내용을 포스팅 하며 맨땅에 헤딩하는 포스팅을 작성 할 계획이다.
0차 프로토 타입의 목표는 다음과 같다.
내가 생성한 게임 그래픽 리소스가 게임 내 변경에 따라 바로 화면에서 변경이 가능한지 우선 테스트 해 보고 싶다. 그리고 이 과정 중에서 불편한 점이나, 기술적으로 해결하기 힘든 부분이 있다면 언제든지 다른 엔진으로의 변환도 고려 하고 있다. (게임 리소스는 공통으로 사용 가능 할 것으로 예상 하고 있다.)
이상적인 구조는 사전 설계와 함께 최대한 작업 효율을 극대화 할 수 있도록 하는 것이 좋을 것이다. 하지만 일단 게임 개발에 대한 지식도 없고, 노하우도 없는 단계에서 일단 0차 프로토 타입은 그 때마다 필요한 요소의 작업 순서에 맞게 작업하려고 한다. 또 이에 맞춰 블로그 포스팅과 함께 작업 해 보려고 한다.
대략적으로 구상하고 있는 단계는 다음과 같다.
위 내용대로 진행 하면서, 세부 내용만으로도 꽤나 긴 여정이 될 것으로 예상하고 있다.
그리고 갑자기 Spine 이라는 것이 등장하는데, 이것은 내가 사전에 구상하고 있는 게임 내 그래픽 자원과 함께 구현을 위해 필요한 애니메이션 제작 툴이다.
2D 게임을 만든다고 할 때는 대표적 애니메이션 기법으로 스프라이트(Sprite) 방식과 스켈레탈 애니메이션 (Skeletal Animation) 방식이 있다.
스프라이트 방식은 개별 이미지 파일(스프라이트)을 프레임 단위로 조합하여 애니메이션을 구현하는 방식이다. 주로 2D 게임에서 사용되며, 픽셀아트 스타일이나 전통적인 애니메이션 기법과 유사하다.
프레임 단위 애니메이션: 개별 이미지를 빠르게 교체하여 움직임 표현
빠른 렌더링: 간단한 그래픽 처리를 통해 성능 부담이 적음
파일 크기 증가: 다양한 애니메이션을 위해 여러 스프라이트 시트가 필요

위와 같이 연속되는 그래픽을 만들어 놓고, 이것을 게임 화면에서 프레임 단위로 순차적으로 보여줘서 움직이는 효과를 주는 방식이다.
스프라이트 애니메이션 예시 코드 ( 출처 Crafty Beyond the Basics: Sprites )
이 방식은 캐릭터의 골격을 설정하고, 이를 기반으로 캐릭터의 각 부분을 움직이면서 애니메이션을 구현하는 방식이다. 주로 2D 및 3D 게임에서 활용되며, 보다 유연한 애니메이션을 만들 수 있다.
동적 애니메이션 가능: 하나의 리소스로 다양한 애니메이션 생성 가능
메모리 효율적: 스프라이트 방식보다 이미지 파일 크기가 작음
자연스러운 움직임 구현: 관절을 활용하여 부드러운 애니메이션 표현 가능
위 2가지 방식 중에서 내가 구상하고 있는 게임에서 게임 시스템 & 그래픽 요소로 중요한 점은, 게임 내 장비변경이 이루어졌을 때, 게임 그래픽에서도 바로 적용이 되는 것을 원했다. 스프라이트 방식을 사용한다고 하면, 모든 그래픽 변경을 하나 하나 작성 해 두어야 하며, 만약 무기와 방어구(옷)를 다르게 적용한다고 하면 모든 경우의 수를 모두 생각해서 그래픽 자원을 만들고 관리해야 하는 문제가 있을 것이 바로 예상 되었기에, 본 스켈레톤 방식을 사전에 구상했다.
이렇게 취미로 하는 게임 개발에 대한 사전 구상과 나름의 계획을 세워봤다. 다음의 첫 계획은 우선 개발환경 설정과 LÖVE 엔진의 설치와 기본을 진행하기로 한다.