
이 스터디는 이지스퍼블리싱 Do it! 스터디와 함께 합니다.
해당 도서를 보유하고 있는 누구나 디스코드 채널에서 참여 신청하실 수 있습니다.책 발행 시점으로부터 변동된 사항이 있을 때 헤매지 않고 물어볼 상대가 있는 곳,
공부하다가 막히면 언제라도 저자 분께 직접 질문할 수 있는 곳!
게다가 스토디 완주자에게는 선물도 있다고 하니 관심 있는 분들은 참고 바랍니다.현재는 《Do it! 바이브 코딩 + 안티그래비티》 및 《Do it! LLM을 활용한 AI 에이전트 개발 입문》
두 권의 스터디가 진행되고 있으며, 저는 《Do it! 바이브 코딩 + 안티그래비티》 스터디에 참여하고 있습니다.
여담
지난 4월 SeSAC 「파이썬 기초 및 생성형 AI 교육과정」 온라인 교육에
고립은둔청년 전형으로 참여하며 안티그래비티를 아주 살짝 찍먹했었는데
이번에 이 책으로 공부하려고 보니 뭔가 달라져 있었다.
안티그래비티가 있고 안티그래비티 IDE가 있고?얜 뭐고 쟨 뭐지 하고 있었는데
출판사에서 제공해주신 자료를 보니 어떤 식으로 사용하는지 좀 감이 잡혔다.
역시 독자들의 삽질을 줄여주는 좋은 출판사구나 싶다.안티그래비티 IDE는 기존의 "개발자가 AI를 활용하여 개발할 때 쓰는 도구" 느낌이고
안티그래비티 2.0은 좀 더 바이브코딩에 특화되어 있는 느낌이다.
서울청년센터 강북에서 진행된 「비개발자를 위한 바이브코딩」 강의에서 봤던 Codex가
안티그래비티 2.0이랑 비슷한 느낌이었던 것 같다.
안티그래비티를 활용하여 바이브 코딩을 하는 첫 예제로 레트로 게임을 만들어 본다.
ROCK 법칙을 사용하여 안티그래비티에게 프롬프트를 전달하며
기획 및 레퍼런스 탐색부터 MVP 모델 개발까지 코드 한 줄 쓰지 않고 해낼 수 있다.
책에서와 같이 레트로 스타일의 우주 슈팅 게임 아이디어를 요청하자
나의 안티그래비티는 다음과 같은 네 가지를 추천해 주었다.
🤖 ANTIGRAVITY | 기획자 에이전트
👾 네오 인베이더 (Neo Invaders)
스타일: 클래식 고정형 화면 슈팅 (갤러그, 스페이스 인베이더 스타일)핵심 플레이 방식:
화면은 고정되어 움직이지 않으며, 내 우주선은 화면 맨 아래에서 좌우로만 움직일 수 있습니다.
화면 위쪽에서 대형을 이루며 좌우로 좁혀 내려오는 외계인 군단을 하나씩 쏴서 맞추는 가장 기본적이고 클래식한 방식입니다.🛠 개발 관점의 특장점:
구현 난이도: ★☆☆☆☆ (매우 쉬움)
화면이 스크롤되지 않고 우주선이 한 축(X축)으로만 움직이기 때문에 복잡한 수학이나 물리 연산이 필요 없습니다.
프로그래밍의 기초인 '리스트(List)'와 '반복문(Loop)'을 사용해 여러 마리의 적을 화면에 배치하고 관리하는 방법을 배우기에 가장 완벽한 입문용 프로젝트입니다.시각적 재미 요소:
적이 탄환에 맞았을 때 알록달록한 네모 픽셀 조각(파티클)들이 사방으로 흩뿌려지는 연출만 넣어주어도 훌륭한 타격감을 줄 수 있습니다.
🚀 스타 체이서 (Star Chaser)
스타일: 무한 종스크롤 우주 종주 슈팅 (1942, 드래곤 플라이트 스타일)핵심 플레이 방식:
우주 배경이 위에서 아래로 계속해서 부드럽게 흘러갑니다.
내 우주선은 화면 상하좌우를 자유롭게 날아다니며, 정면에서 빠른 속도로 몰려오는 소행성이나 적 우주선들을 피하고 격추해야 합니다.🛠 개발 관점의 특장점:
구현 난이도: ★★☆☆☆ (쉬움~보통)
배경 이미지를 화면 위아래로 이어 붙여 끊임없이 순환시키는 '무한 루프 배경 스크롤' 기술을 배울 수 있습니다.
적들이 화면 밖에서 생성되어 아래로 지나가는 로직과 내 우주선 사방에 부딪히는 '상하좌우 충돌 판정'을 다루게 됩니다.시각적 재미 요소:
배경을 2~3겹으로 겹쳐서 뒤에 있는 별은 느리게, 앞에 있는 행성은 빠르게 움직이게 만드는 '스크롤 속도 차이(패럴랙스 효과)' 를 주면 우주선이 엄청난 속도로 질주하는 듯한 멋진 입체감을 낼 수 있습니다.
'3방향 미사일', '관통 레이저' 같은 무기 강화 아이템 획득 효과도 시각적 만족도가 높습니다.
☄️ 아스트로 브레이커 (Astro Breaker)
스타일: 360도 회전 관성 슈팅 (아스테로이드 스타일)핵심 플레이 방식:
화면 가운데에서 내 우주선을 360도 회전시켜 원하는 방향으로 총을 쏩니다.
조종할 때 약간 미끄러지는 듯한 '우주 관성(가속도)' 이 느껴집니다. 화면 사방에서 밀려오는 거대한 돌(소행성)을 쏘면 작은 돌 여러 개로 쪼개지는데, 이 파편들까지 모두 요리조리 피하며 파괴해야 합니다.🛠 개발 관점의 특장점:
구현 난이도: ★★★☆☆ (보통)
삼각함수(sin, cos)를 활용해 우주선의 각도에 맞춰 미사일을 날리고, 미끄러지는 관성 운동을 물리 공식으로 가볍게 코딩해 보는 재미가 있습니다.
거대한 객체가 탄환에 맞았을 때 더 작은 크기의 독립된 객체 2개로 분할되는 물리 분열 로직을 구현해 볼 수 있습니다.시각적 재미 요소:
화면 왼쪽 끝으로 나가면 오른쪽 끝에서 다시 나타나는 루프 맵 효과, 그리고 소행성이 연쇄적으로 쪼개지면서 사방으로 튕겨 나가는 역동적인 화면 연출이 쾌감을 선사합니다.
🛡 네오 쉴드 (Neo Shield)
스타일: 기지 방어형 마우스 조준 슈팅 (미사일 커맨드 스타일)핵심 플레이 방식:
내 우주선은 움직이지 않고, 화면 아래에 고정된 행성 방어 기지가 있습니다.
플레이어는 마우스 포인터로 적의 미사일이나 운석이 떨어지는 상공을 겨냥한 뒤 클릭합니다. 클릭한 자리에서 거대한 둥근 에너지 막(폭발)이 일어나 적의 공습을 막아내야 합니다.🛠 개발 관점의 특장점:
구현 난이도: ★★☆☆☆ (쉬움~보통)
캐릭터의 이동 구현 부담이 전혀 없는 대신, 마우스 좌표를 추적하여 투사체가 날아가는 포물선 또는 직선 궤적을 계산합니다.
탄환이 터지면서 생기는 둥근 폭발 반경(원형 범위) 안에 들어오는 적들을 한꺼번에 쓸어버리는 '범위 충돌 판정'을 마스터할 수 있습니다.시각적 재미 요소:
하나의 폭발이 옆의 폭발로 이어지는 '연쇄 반응(체인 리액션)' 효과를 주어, 마우스 클릭 한 번으로 하늘 가득 날아오던 위협을 도미노처럼 쓸어버리는 폭발적인 쾌감을 줄 수 있습니다.
나는 3번 아스트로 브레이커를 기반으로 MVP를 기획하고 만들어 달라고 했다.
내 사전 지식을 포함하여 요구사항을 조금 수정하여 진행해 보았다.
가령 패키지 관리자는 pip가 아닌 uv를 사용하도록 한다거나.
그러면서도 코드 부분은 건드리지 않고 전부 AI가 작성하도록 놔뒀는데
충분히 그럴듯한 무언가가 만들어지더라.
🤖 ANTIGRAVITY | 개발자 에이전트
코딩 초보자분들이 게임 코드를 쉽게 이해하고 확장할 수 있도록, 전체 코드를 한 파일에 모으는 대신 역할별로 4개의 파일로 나누어 개발하는 방안을 제안합니다.
📂 제안하는 프로젝트 구조
1.config.py: 화면 크기, 네온 레트로 색상, 우주선 및 소행성의 속도 등 게임 전반의 설정값들을 한곳에 모아 관리합니다.
2.sprites.py: 화면에 그려지고 움직이는 객체들(우주선, 미사일, 소행성, 그리고 이펙트 파티클)을 Pygame Sprite를 이용해 클래스로 정의합니다.
3.game.py: 게임 대기 화면, 플레이 중, 게임 오버 등의 상태 흐름을 관리하고 충돌 처리 및 점수 계산을 담당합니다.
4.main.py: Pygame을 초기화하고 게임을 실제로 실행하는 진입점입니다.상세한 개발 방향과 세부 일정은 생성된 구현 계획서(implementation_plan.md) 에 정리해 두었습니다. 계획서를 확인하신 후, 이 방향으로 진행해도 괜찮을지 말씀해 주시면 바로 코드 작성을 시작하겠습니다!
디자인 에이전트에게 이미지 에셋을 요청하고
개발자 에이전트에게 그것을 코드에 적용하도록 요청하여
최종적으로는 다음과 같은 결과물이 나왔다.
여긴 좀 실습하기가 애매했다.
어떤 파일이 어느 디렉토리에 있는지 찾기 어려운 상황을 꺼려하는 나로서는
이미 모든 파일이 적절한 디렉토리의 적절한 하위 디렉토리에 들어있기 때문이다.
파일을 검색으로 찾는 게 아니라 터미널에서 cd 명령어로 이동해서 찾는 게 익숙하다 보니...ㅎ
그렇다고 실습용으로 엉망인 디렉토리를 만들기도 뭣하고...
그래도 자동화 스크립트를 어떻게 만들어 달라고 할 수 있는지 알게 되었고
Gemini API Key 발급받아서 사용하는 방법도 알게 되었으니
괜찮은 아이디어가 떠오르면 써먹을 수 있을 것 같다.
5년 전 일이긴 하지만 컴퓨터공학을 전공했다 보니 여긴 대체로 아는 이야기였다.
서버리스는 개념만 알고 실습해 본 적은 없어 수파베이스는 이번에 처음 알게 되었다.
PostgreSQL은 종종 썼지만 늘 Docker에서 썼으니까.
복잡한 백엔드 작업이 필요한 게 아니라면 괜찮아 보인다.
컨텍스트 오염을 막기 위한 멀티세션 전략은
비단 개발 쪽에서만 유효한 이야기는 아닌 것 같다.
Gemini 사용할 때도 컨텍스트 섞이는 거 싫어해서
주제 바뀔 때마다 새 채팅으로 하다 보니 익숙한 편이다.
diff 뷰어도 git 사용하며 이전 커밋과 비교할 때 많이 봤던 거고.
이 파트는 가볍게 훑는 느낌으로 넘어갔다.