VVVVVV 소스 코드 공개
(github.com/TerryCavanagh)- 2010년 인디 게임 VVVVVV의 소스 코드가 공개됐으며, 게임 제작은 Terry Cavanagh, 음악은 Magnus Pålsson이 맡았음
- 데스크톱 버전의 소스 코드는 저장소의 desktop_version 폴더에 있음
- VVVVVV는 여전히 상업적으로 판매 중이지만, 개인 사용 목적의 빌드는 자유롭게 컴파일할 수 있음
- 컴파일된 버전을 배포하려면 저장소의 LICENSE.md를 확인해야 함
- VVVVVV 업데이트 관련 논의는 비공식 VVVVVV Discord의
vvvvvv-code채널에서 주로 이뤄짐
공개된 소스 코드
- 이 저장소는 Terry Cavanagh의 2010년 인디 게임 VVVVVV 소스 코드를 담고 있음
- 소스 코드 공개 발표는 Terry의 블로그 공지에서 확인할 수 있음: announcement
- 데스크톱 버전 소스 코드는 desktop_version 폴더에 있음
사용과 배포 조건
- VVVVVV는 thelettervsixtim.es에서 여전히 상업적으로 구매할 수 있음
- 개인 사용 목적이라면 게임을 직접 컴파일할 수 있음
- 컴파일된 게임 버전을 배포하려면 LICENSE.md를 확인해야 함
업데이트 논의 채널
- VVVVVV 업데이트 논의는 비공식 VVVVVV discord에서 주로 진행됨
- 관련 채널은
vvvvvv-code임
댓글과 토론
Hacker News 의견들
-
고등학교 끝무렵 가족과 London에 갔을 때 게임 개발자가 되고 싶어서 Terry Cavanagh에게 이메일을 보냈는데, 놀랍게도 점심을 같이 먹자고 흔쾌히 응해줬음
정말 친절했고 여러 인생 조언도 해줬음. 아이디어 대부분은 거창한 비전에서 나온 게 아니라, 게임 메커닉을 만지작거리며 실험하다가 얻는다고 했던 게 기억남. 아무튼 멋진 사람이고, 그가 V라고 부르던 VVVVVV를 오픈소스로 공개해서 반가움- “아이디어 대부분은 메커닉을 만지작거리며 실험하다가 얻는다”는 부분이 중요함. 너무 많은 사람이 새로운 아이디어가 추상적 개념에서만 나온다고 생각하지만, 매체 자체를 가지고 놀다가도 얼마든지 생길 수 있음
- 두 문장은 참이라고 배웠음: 물어보지 않으면 거절도 받을 수 없고, “영웅을 만나지 말라”는 말은 허상임
정말 별로인 사람 몇 명을 만나봐야 진짜 괜찮은 사람을 제대로 알아볼 수 있음 - 멋진 일임. 그 만남이 이후 진로 선택에 영향을 줬는지, 결국 게임 개발자가 됐는지, 아니면 시도라도 해봤는지 궁금함. 결말이 있으면 늘 재미있음
- 그가 해준 인생 조언이 정확히 뭐였는지 궁금함
-
정말 재미있는 게임. 게임을 엄청 많이 하는 편은 아닌데, 이걸 받으려고 Humble Bundle을 샀던 기억이 남
끝까지 플레이한 몇 안 되는 게임 중 하나였음. Terry, 멋진 작업과 좋은 시간에 감사함. 덧붙여 veni vidi vici는 진짜 욕 나오게 어려웠고 한참 걸렸음
https://www.youtube.com/watch?v=4CtiY5D6HCs- 번들을 사고 “용량 큰 더 흥미로운 게임들이 다운로드되는 동안 가벼운 2D 플랫폼 게임이나 해보자”라고 생각했는데, 결국 그날 저녁을 통째로 여기에 썼음
- 이 영상은 각 화면을 겨우 통과하고도 왼쪽에 착지하는 경험을 제대로 담지 못함
- 사과하긴 했음. “I’m sorry”라는 화면이 있었으니까 :P
- 기억이 맞다면 몇백 번쯤 시도한 끝에 겨우 깼음. 덕분에 Final Fantasy XV의 Pitioss 던전을 끝낼 인내심을 준비한 셈임
당시 남자친구는 VVVVVV를 사준 사람이었는데, 노데스 올 트링킷 달리기를 시도하고 있었음. 도대체 게임을 얼마나 잘하는 건지 이해가 안 됐음. 그리고 VVVVVV 사운드트랙인 PPPPPP는 여전히 자주 들음. 특히 관련 osu! 스트림 트랙들이 좋음 - 초기 Humble Bundle들을 샀고, VVVVVV는 그때부터 Steam 라이브러리에 묵혀 있었음. 이제 한번 해봐야겠음
-
관련 글들임. 다른 것도 있을지 궁금함
Is opening up your source code worth it? Terry Cavanagh thinks it was for VVVVVV - https://news.ycombinator.com/item?id=25727963 - 2021년 1월
Many games are held together by duct tape - https://news.ycombinator.com/item?id=22043156 - 2020년 1월
VVVVVV Source Code Released - https://news.ycombinator.com/item?id=22011465 - 2020년 1월
VVVVVV’s source code is now public, 10 year anniversary jam happening now - https://news.ycombinator.com/item?id=22011358 - 2020년 1월
VVVVVV 60% Off On The Mac App Store This Weekend - https://news.ycombinator.com/item?id=2347676 - 2011년 3월 -
Graphics::print_level_creator(...)의 주석에서 “by {author}” 대신 얼굴을 표시한다고 되어 있음
“by”가 작성자 언어와 달라 어색할 수 있고, 다른 언어에서는 길어져 기존 레벨 제한을 깨며, “by”와 작성자 이름에 서로 맞지 않는 글꼴이 필요할 수 있고, 성별·이름 굴절 같은 문법 문제도 피할 수 있으며, 얼굴로 표시하는 게 말이 되고, 이 결정이 슬픈 사람도 웃는 얼굴이 어차피 기운 나게 해줄 거라는 이유였음. 반박하기 어려움 -
글에 링크된 https://distractionware.com/blog/2020/01/vvvvvv-is-now-open-...에서 C++ 버전에는 Flash로 먼저 만들고 흠까지 그대로 직접 포팅했다는 걸 떠올려야 이해되는 이상한 부분이 많다고 했음
예를 들어i,j,k같은 임시 변수를 함수 안에 선언하지 않으려고 각 클래스의 멤버로 선언하는 습관이 있었고, Flash에서는 지루한 이유로 함수 안 선언이 귀찮았기 때문이라고 함. 그 결과 추적하기 어려운 버그가 생겼고, 특히 엔티티 충돌 처리에서는 여러 함수가 같은i변수를 공유해서 무한 루프도 가능했다고 함. 정말 나빠 보이고, 게임 코드는 엉망이라는 편견을 확인해 줌- 오히려 훌륭하게 들리고, 게임 프로그래머가 일반 프로그래머보다 더 많이 배운다는 의심을 확인해 줌
- 나중에 잊기 전에 적어두자면, 코드는 엉망이어도 재미있을 수 있음. 새로운 아이디어 안에서 흥미로운 버그가 만들어지고 발견되는 경우임
코드는 훌륭하지만 지루할 수도 있음. 잘 작성됐지만 구현이 밋밋한 계산기 앱 같은 것임. 코드는 엉망이고 지루할 수도 있음. 수백 개의 예외 조건이 있고 각각에 비슷하지만 서로 다른 버그가 많은, 설계가 부족한 B2B 제품 같은 경우임. 코드는 훌륭하면서 흥미로울 수도 있음. Doom 같은 것들임 - 사람들이 실제로 이렇게 한다고? 갑자기 JavaScript에서 모든 멤버 앞에
this.를 붙여야 하는 게 훨씬 덜 거슬림
-
같은 제작자의 Super Hexagon도 언급하고 싶음. 엄청 단순하면서도 정말 재미있고 중독성이 강한 게임
어디선가 제작자가 하루 정도만 들여 만들었다고 읽은 기억이 있음. 그리고 VVVVVV 사운드트랙인 PPPPPP도 멋짐- 같은 제작자 게임 얘기라면 Dicey Dungeons도 엄청 재미있음. 덱 빌딩 로그라이크와 비슷하지만 카드 대신 주사위를 씀
고유 캐릭터가 여섯 명쯤 있고, 캐릭터별 여러 도전 과제가 있으며, 규칙이 계속 바뀌어서 게임을 다시 생각하게 만듦. 유머도 많고, 아직 못 해본 무료 DLC와 모드 콘텐츠도 있음 - Super Hexagon이 같은 개발자 작품인 줄 몰랐음. VVVVVV와는 완전히 다른 종류의 게임인데도 정말 재미있었음
인디 개발자가 초기 성공 뒤 완전히 새로운 장르로 방향을 트는 건 늘 흥미롭고, 그런 식으로 멋진 보석들이 나왔음. 예를 들면 Fallen London -> Sunless Sea -> Cultist Simulator 같은 흐름임 - Super Hexagon을 10분 하는 것 말고는 몰입 상태에 들어가는 확실한 방법이 없음
- 이 추천에 동의함. 배우는 과정이 정말 재미있는 게임
처음엔 불가능해 보이지만 뇌가 적응함. 마치 매트릭스 너머를 보는 느낌임 - 이 게임에 인생의 정말 많은 시간을 썼음
여러 사람에게도 공유해서 다들 미치게 만들었음. 아직도 Steam 보관함에 5~6개쯤 남아 있을 거라고 믿음. 혹시 모르니까. V, SMB, Braid와 다른 많은 게임도 마찬가지임. 때로는 작은 영감과 엉성한 그래픽만 있으면 충분함
- 같은 제작자 게임 얘기라면 Dicey Dungeons도 엄청 재미있음. 덱 빌딩 로그라이크와 비슷하지만 카드 대신 주사위를 씀
-
캐나다에서 California로 막 이사 와서 일자리가 절실하던 시기가 있었고, Comcast에서 방문 판매 일을 구했음
그 일을 싫어해서 자주 차 안에 앉아 책임을 회피하며 휴대폰으로 VVVVVV를 했음. Terry 덕분에 잠깐 숨 돌릴 수 있었음 -
멋진 게임. 그 시대 인디 게임답게 코드가 진짜로 엉망이라서 보기 좋음
- “진짜로 엉망”이라는 표현이 딱 맞음. 가장 마음에 드는 부분은 3300줄짜리
Game::updatestate()함수와 거대한 switch 문임 - 원래 Flash로 작성한 뒤 C++로 포팅했으니 엉망인 부분 중 일부는 설명됨. 전부는 아니지만
- 이 코드는 진심으로 영감을 줌. 코드 품질을 지나치게 떠받드는 게 항상 최선은 아니라는 교훈임
- 이 코드에는 아무 문제 없음. 이건 루프 펼치기라고 부르고, 게임 성능을 유지해 줌
- “진짜로 엉망”이라는 표현이 딱 맞음. 가장 마음에 드는 부분은 3300줄짜리
-
Zig용으로 패키징해뒀고,
zig build만 실행하면 Linux, macOS, Windows에서 게임을 플레이할 수 있음
https://github.com/allyourcodebase/VVVVVV -
함수 안에서 쓰는 곳마다 선언하기 싫어서 모든 클래스에
i,j,k를 선언했고, 예상대로 지저분하고 어려운 버그가 생겼다고 고백했음
그런 코드로 괜찮은 게임을 만들어냈다는 게 놀라움- 거의 모든 게임에는 온갖 끔찍한 해킹성 코드가 들어 있음. 물론 이건 내가 본 것 중에서도 꽤 심한 편임