바이브코딩으로 미소녀 뱀서류 슈팅 게임 만들어보니
최근 코딩을 잘 몰라도 생성형 인공지능의 도움을 받아 느낌대로 앱이나 서비스 그리고 게임 등을 개발하는 바이브코딩이 많은 관심을 받고 있다. 업무에서 필요한 간단한 프로그램들은 바이브코딩을 통해 제작해 사용하는 사람이 많아졌을 정도로 관심이 뜨겁다.
이에 최근 업데이트가 진행된 챗GPT(ChatGPT)의 GPT-5.5 버전 도움을 받아 직접 게임을 만들어 봤다. 처음에는 브라우저로 간단히 즐길 수 있는 HTML 버전부터 시작해 비주얼 스튜디오 코드(VS Code)에 ChatGPT Plus 사용자가 사용할 수 있는 소프트웨어 엔지니어링 에이전트 코덱스(Codex)의 도움을 받아 각종 이미지를 생성해 더하고 파이썬 기반의 실행 파일까지 직접 만들어봤다.

먼저 GPT에 ‘바이오하자드’를 연상시키는 어두운 생존 호러 분위기, 게임 플레이는 ‘뱀파이어 서바이버즈’식 자동 전투 구조를 더한 게임을 만들어 달라고 명령했다. 주인공은 반드시 미소녀 캐릭터로 설정하고, 5마리를 쓰러뜨리면 레벨업 선택지를 고르는 성장 구조, 1대 맞으면 죽는 적부터 시작해서 10단계까지 10종에 달하는 등장 적을 구현하는 것이 핵심 조건이었다.

1분도 안 걸리는 시간이 지나자 브라우저에서 구동할 수 있는 버전이 만들어졌다. 게임 제목도 자기가 알아서 적당히 만들었다. 게임은 어두운 배경을 기반으로 캐릭터를 WASD로 조작하는 형태였다. 공격은 자동 조준해 발사하는 형태였다. 미소녀 캐릭터를 강조했더니 캐릭터를 무려 분홍색으로 강조해줬다.

적을 5마리 물리치면 레벨업에 따른 다양한 선택지도 등장했다. 레벨업 시에는 최대 HP 증가, 공격속도 증가, 이동속도 증가, 탄환 추가, HP 흡수, HP 자동회복 등의 선택지와 탄환 피해 증가, 관통 사격, 탄속 증가, 받는 피해 감소 같은 선택지까지 오히려 주문한 것보다 많은 형태의 선택지를 게임에 어울리는 형태로 알아서 추가해줬다. 놀라울 따름이었다.

다만 자동으로 조준해 발사를 하는 형식이라 약한 적부터 물리쳐 레벨을 빠르게 올리는 전략적인 플레이가 힘들었다. 이에 자동 조준보다는 마우스로 조준하는 감각을 살려 플레이할 수 있는 게임을 요구했다. 이후 GPT는 금방 새로운 게임을 선보였다. 이쯤부턴 제법 플레이하는 맛이 살아나기 시작했다.
다만 레벨업이 적을 5마리 물리칠 때마다 진행되다 보니 무기가 강력해진 후반에는 아무것도 안 하고 레벨업 선택지만 고르는 참사가 벌어졌다. 레벨업마다 요구 처치 수가 증가하고 진행치가 초기화되는 구조로 변경이 필요했다. 게임은 기본적으로 수학이 중요하다는 점이 새삼 생각되는 부분이었다.

이후에는 아예 개발용 프롬프트를 GPT에게 부탁해봤다. 맨 처음 게임 제작을 시작했을 때보다 비교적 발전한 형태의 초기 문구를 넣었더니 GPT는 3500자 분량에 달하는 프롬프트로 변경해줬고, 기자는 해당 프롬프트를 활용해 브라우저에서 진행할 수 있는 게임 개발을 요청했다.
GPT는 ▲미소녀 생존자 캐릭터 ▲WASD / 방향키 이동 ▲가장 가까운 적 자동 조준 사격 ▲1~10단계 적 시스템 ▲초반 30초 1~2단계 적 중심 등장 ▲레벨업마다 처치 카운터 초기화 ▲5마리 → 10마리 → 15마리 → 20마리 식 레벨업 조건 증가 ▲레벨업 시 3개 강화 카드 선택 ▲HP 증가, 공격속도, 이동속도, 탄환 추가, HP 흡수, 자동회복, 공격력, 관통탄, 방어력 등 강화 ▲생존 시간, HP, 레벨, 처치 수 UI ▲게임오버 및 다시 시작 ▲붉은 경고등, 안개, 어두운 연구소 풍 배경 연출 게임을 완성했다고 알려왔다.

플레이해보니 앞선 사례처럼 자동 조준이라는 문제가 있어 마우스로 조준할 수 있게 변경하고, 지금보다 난도를 조금 더 올리면 어떻겠냐는 추가 조건을 다시 줬다. 그러자 마우스 방향으로 탄환이 나가도록 조준 구조를 바꾸고 생성, 속도, 충돌 피해를 올리는 방향으로 게임을 수정했다. 미소녀 설정을 살려 분홍색 머리카락(?)을 붙여 넣은 것이 눈에 띈다.
웹브라우저에서 돌아가는 게임들이 간단하게 작성될 수 있음을 확인했고, 이후 좀 더 본격적인 개발을 위한 프로그램을 준비했다. 마지막으로 만든 웹브라우저 버전의 코드를 입문이 쉬운 것으로 알려진 프로그래밍 언어 파이썬 코드로 변경해 달라고 요청했다. 3~4분 정도가 지나자 게임명.py 파일이 하나 나왔다. 지금보다 더욱 완성도 높은 형태의 게임을 만들 수 있는 기본이 준비됐다.

파이썬 개발이 처음이라면 파이썬 코드를 보고 수정하기 위한 작업도 진행해야 한다. 바이브코딩을 위한 코덱스가 VS Code 환경을 지원하므로 VS Code 환경을 구성할 필요가 있다. 개발 환경을 처음 구성한다면 각각 홈페이지에서 내려받아 설치하면 된다. 파이썬도 마찬가지이며 윈도우 PC의 경우 어떤 경로에서든지 파이썬을 실행할 수 있는 선택지 정도만 체크해 설치하면 완료다.
이후 VS Code에서도 파이썬 문서를 작성할 수 있도록 확장 메뉴에서 파이썬을 검색 후 설치하면 된다. 그리고 파이썬 게임 개발의 경우 Pygame을 설치해야 한다. VS Code의 터미널에서 pip install pygame 명령어를 입력하면 금방 설치가 완료된다. 사실 이것도 코덱스만 잘 세팅해두면 자동으로 알아서 하게 만들 수도 있다.

이번에는 VS Code 작업환경에서 코덱스의 도움을 받는 것이 핵심으로, 확장에서 코덱스를 검색해 설치하고 ChatGPT 아이디로 로그인해 코덱스가 VS Code의 보조 사이드바에서 동작할 수 있게 만들었다. 임의의 폴더를 하나 만들어 게임명.py를 넣고 VS Code에서 불러왔다. 만약 코덱스가 잘 동작하지 않는다면 폴더를 다시 열어 작성자를 신뢰하도록 하자. 프로그램을 개발하며 실행하기 때문에 파일 작성자를 신뢰할 필요가 있다.
이후부터는 웹페이지에 접속해 개발하던 것보다 개발이 더 전문적으로 이뤄지고 있다는 느낌을 받을 수 있다. VS Code에서도 코덱스를 활용해 웹에서 사용하던 방식대로 개발을 이어 가면 된다. 코덱스 채팅창에 해당 코드가 문제가 없는지 확인해보라고 요청한 뒤 별 문제가 없는 것을 확인하고 이미지 제작을 부탁했다.

최근 GPT가 이미지 2.0으로 엄청나게 주목받고 있는 만큼 게임 주인공 캐릭터를 이미지 2.0을 활용해서 그려달라 요청했다. 특히 회전 방향에 맞춰 모습이 바뀔 수 있도록 주인공은 8방향을 요청했고, 적도 10종류에 맞춰 그려달라 했다. 이후 알아서 코덱스가 작업을 시작했고 작업 완료와 함께 왼쪽의 파이썬 코드도 맞춰서 변경됐다.

7~8분 정도가 지나자 코덱스는 간단한 요청만으로도 캐릭터 이미지를 알아서 투명처리까지 진행한 뒤 만들어 이미지를 자동으로 잘라 방향에 따라 보이는 모습이 다를 수 있게 완성했다. 적도 단계에 맞춰 10종이나 만들어 알아서 더 강력해 보이는 순서로 제작했다. 초반에 입력해둔 미소녀 캐릭터가 중요함을 알고 있었는지 알아서 미소녀 캐릭터를 완성했다.
다만 실행해보니 적의 모습을 한 개의 이미지에서 잘라서 뽑아 쓰는 형태라 이를 10개로 나누고, 게임에 어울리는 배경도 제작하게 입력했다. 또 HD급의 해상도로 구현됐기에 맵이 작아 플레이하는 공간이 적었기에 게임 해상도를 풀 HD로 늘리거나 캐릭터를 줄여야 할 필요가 있다고 했다. 또 히트박스가 더 커져야 할 필요도 있었다.

관련 내용을 입력하자 몇 분 정도 시간이 지나자 코덱스가 알아서 게임의 해상도를 올리고, 히트박스를 키웠으며 적 캐릭터도 10개로 잘라서 완성했다. VS Code 내에서 실행해 확인해보니 확실히 이미지가 더해지자 게임이 어느 정도 모습을 갖추기 시작했다.
다음 단계는 배포를 위한 실행 파일을 만들어야 했다. 코덱스에게 이미지가 제대로 출력될 수 있도록 게임을 하나의 파일로 만들라고 명령하니 PyInstaller를 이용해 원파일 EXE로 빌드했다. 이미지 등이 포함된 assets 폴더가 실행 파일 내부에 포함되도록 처리됐고, 실행 시 이미지를 찾아올 수 있도록 코드도 보강됐다.
참고로 빌드 작업이나 이미지 생성 후 폴더 이동 작업 등은 파일이 생성되는 형태이기 때문에 권한 문제가 있어 이용자가 확인을 눌러야 작업이 완료된다. 물론 동일한 세션에서 다시 확인하지 않는 세팅도 할 수는 있다.

코드는 EXE 형태의 윈도우용 게임 파일 형태로 완성됐고, 주변 지인에게 전달해보니 안정적으로 구동됐다. 이제는 게임을 더 재미있게 개조할 필요가 있었다. 아무래도 빌드 작업도 많아질 수 있어 별도의 빌드를 직접 진행하기 위한 bat 파일도 요청해 만들어 뒀다. 간단한 작업이기에 코덱스에게 매번 시키는 것보다 직접 눌러 진행하는 것이 빠를 것이라는 판단이 있었다.
게임성 확장을 위해 보스를 추가하고 보스의 장판 형태 공격을 만들기로 했다. 보스 이미지도 코덱스가 알아서 생성했고, 장판 공격은 보스의 팔 이미지를 잘라서 바닥에서 튀어 올라오는 형태 등으로 구현하도록 했다. 이후에는 계속된 밸런스 관련 테스트와 개조가 이어졌다.

코덱스에 레벨업 조건 변경, 보스 장판 공격 요소 변경, 일시 정지, 게임 밸런스 조절 등 다양한 작업을 요청했다. 놀라운 부분은 밸런스 조절을 위해 적의 등장 수를 줄이자고 하니 등장 수를 줄이는 것보다 스폰 타임을 늘리는 형태가 더 좋다는 식의 방향으로 코드를 완성해 나갔다는 것이다.
여기에 게임의 완성도를 올리기 위해 게임 타이틀 일러스트로 활용할 이미지도 요청했고, 임의로 만들어둔 배경 음악 등도 더해봤다. 많은 부탁에도 불구하고 코덱스는 군말 없이 계속해서 코드를 수정했다.

해당 게임을 완성하고는 이런 생각도 들었다. 아예 코덱스에 입력한 한 줄로도 게임을 만들 수 있을까였다. 요청은 매우 간단했다. “간단한 횡스크롤 슈터 만들어봐. 주인공 캐릭터랑 적 캐릭터 2종 정도만 이미지 생성해서 넣어줘”를 입력하자, 5분 39초가 지나가 횡스크롤 게임이 하나 뚝딱 완성됐다. 점수와 잔기까지 추가되는 모습이 나왔다.
결과적으로 바이브코딩은 코딩을 하나도 몰라도 쉽게 결과물을 만들 수 있다는 장점이 있었다. 척하면 척하고 알아듣는 인공지능 덕분에 제법 괜찮은 모습의 결과물이 나온다. 물론 서비스를 하기에는 턱 없이 부족하고 문제도 많겠지만 아이디어를 빠르게 시각화하고 만들어 볼 수 있다는 점이 가장 큰 매력이다. 프로토타입 제작이나 초기 기획자들에게 여러 도움이 될 수 있으리라 본다.