Homegames, 8년간 만든 오픈소스 게임 플랫폼
요약
8년간 개발된 오픈소스 게임 플랫폼 Homegames를 소개합니다. 서버 중심의 실행 방식을 통해 모든 게임에 기본적으로 멀티플레이 기능을 제공하며, Claude와 같은 LLM을 활용한 게임 제작 가이드도 지원합니다.
핵심 포인트
- 서버 권위 방식의 아키텍처로 자동 멀티플레이 지원
- WebSocket 기반의 얇은 클라이언트 렌더링 구조
- Claude를 활용한 LLM 중심의 게임 제작 가이드 제공
- three.js 및 Wasm 물리 엔진을 활용한 고성능 웹 게임 구현
Kaboom Valley가 Gorilla Basic(GORILLA.BAS)을 떠올리게 해서 어린 시절 기억이 확 살아났고, 꽤 향수를 자극함
다만 이 게임은 플레이가 안 되는 듯함. 버튼이 하나도 동작하지 않고, 컴퓨터만 내 머리 위로 투사체를 쏠 수 있음 :(
Scorched Earth가 떠오름
확인해보고 수정해서 배포하겠음
직접 게임을 만드는 법을 배우려고 문서를 찾았는데 웹사이트에서 링크를 못 봤음
문서가 있다면 첫 화면에 링크를 넣어주면 좋겠음. 스튜디오는 사용자명 등을 요구해서 로그인은 안 해봤고, 시간을 들일 만한지 보기 위해 먼저 문서를 읽고 싶었음
좋은 포인트임. 스튜디오 밖에서도 볼 수 있는 문서 링크를 추가하겠음
지금 스튜디오에는 도형, 텍스트, 에셋 같은 게임 노드 타입 샘플과, Claude 등에 넣어 게임을 만들게 할 수 있는 LLM 중심 게임 가이드가 있음. 그래도 스튜디오 외부 문서를 더 추가할 예정임
어떤 게임도 플레이할 수 없었고 too many requests 오류가 너무 많았음
왜 "세션"이 필요한지 모르겠음. 클라이언트 쪽에서 실행되는 게 아닌가?
글에 깜빡하고 안 썼는데, 게임 자체는 서버에서 실행됨
덕분에 모든 게임이 기본적으로 멀티플레이를 공짜로 얻고, 클라이언트는 서버 상태를 읽고 입력만 다시 보냄. 브라우저든 커스텀 클라이언트든 원하는 방식으로 게임 서버에 접속할 수 있게 하는 게 아이디어임
모든 것에 "세션"이 필요한가? 완전히 정적 게임이나 내보내기도 가능한가?
이 게임들은 모두 서버 쪽에서 실행되고, 얇은 클라이언트는 렌더링과 입력 전송만 함
그래서 왕복 통신이 동작하려면 게임 세션이 필요함. 이론적으로 전부 클라이언트 쪽에서 할 수도 있지만, 그러면 모든 게임이 멀티플레이를 공짜로 얻는 마법이 사라짐
와! 지난 8년이 어땠는지 조금 들려줄 수 있나?
처음에는 WebSocket 위에서 단순한 렌더링 테스트를 만들기 시작했고, 이후 이미지, 폰트, 오디오 지원을 붙였음
초기 아이디어는 사람들이 자기 컴퓨터에서 호스팅하고 같은 방에서 휴대폰으로 와이파이를 통해 즐기는 Jackbox 스타일 게임을 만드는 것이었음. 여기에 이것저것 더하다가 코로나 시기에는 생산적인 건 거의 못 하고, 배포되지 않은 실험들과 100편 넘는 팟캐스트를 했음
몇 년 전 첫 아이가 생겨서 1년 정도 셀프 호스팅 쪽을 다듬은 뒤 프로젝트를 접어두려 했음. 그러다 약 6개월 전, 실제 인터넷이 이제 LAN 밖에서도 이런 게임을 돌릴 만큼 빠르고, 나를 포함해 많은 사람이 브라우저 기반 게임을 그리워한다는 걸 깨달음. 여기에 Claude 덕분에 제한된 자유 시간에도 훨씬 효율적으로 만들 수 있게 된 것이 지금 상태로 이어졌음
콘셉트는 마음에 들어서 세션을 시작하거나 참여해 몇 가지 게임을 해보려 했지만, 아무 일도 안 일어나거나 바로 끊겼음
나도 웹 게임을 만들고 있으니(내 글 기록 참고), 연결해서 이야기하고 싶은 사람은 프로필의 이메일로 연락해도 됨
미안함. HN에서 들어온 트래픽 급증 때문에 세션 관리 쪽이 버티지 못한 것 같음
앞으로 더 나아질 것임
Amiga의 Shoot 'Em Up Construction Kit 기억하는 사람 있나?
Commodore 64용도 있었음
Amos와 Blitz BASIC도 있었음
웹 게임은 이런 스타일을 훨씬 넘어섰음
three.js로 복잡한 3D를 만들고, Rapier 같은 Wasm 워커의 강체 물리 엔진을 쓰는 것도 이제 가능함. 서버 권위, 클라이언트 예측, 보정을 갖춘 전체 멀티플레이 파이프라인도 60fps로 돌릴 수 있음. 요즘은 단일 HTML에 얼마나 많은 걸 욱여넣을 수 있는지 정말 놀라움
그런 복잡한 3D 웹 게임을 써보려고 할 때마다 컴퓨터의 8코어가 전부 100%로 치솟고, 웹브라우저를 죽일 때까지 컴퓨터가 먹통이 됨
그런 복잡한 3D 웹 게임들이 얼마나 비효율적인지도 정말 놀라움
우리가 3D를 할 수 있게 됐어도 Breakout은 여전히 좋은 게임
좋은 아이디어임. 여기서 흥미로운 게임을 몇 개 찾았음
이렇게 오랫동안 이 프로젝트 작업을 멈추지 않았다는 점이 멋짐. 끝낼 시간을 못 찾는 내 프로젝트들을 계속해보자는 동기부여가 됨
앞으로 더 많이 만들 계획임. 이 대부분은 AI 도구가 나오기 전에 만들었음
그런데 이제 Claude가 꽤 인상적인 걸 한 번에 만들어낼 수 있어서 놀라움
AI 자동 생성 콘텐츠
본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기