Portal Survival은 최근 큰 인기를 끌고 있는 이른바 "뱀서라이크"(Vampire Survivors-like) 장르의 웹 브라우저 기반 액션 서바이벌 게임입니다. 플레이어는 끝없이 몰려오는 몬스터들 사이에서 점점 강해지는 자신의 캐릭터를 조작하며, 최대한 오래 살아남아야 합니다.
이 게임의 가장 큰 차별점은 "포탈 시스템"입니다. 맵 곳곳에 무작위로 생성되는 포탈을 통해 다른 구역으로 순간 이동할 수 있으며, 이를 활용해 몰려드는 적을 뿌리치거나 유리한 지형을 선점할 수 있습니다. 단순히 적을 피해 도망치는 게 아니라, 언제, 어떤 포탈을 탈 것인가에 대한 전략적 판단이 생존의 열쇠가 됩니다.
맵에 무작위로 생성되는 포탈을 활용해 전략적으로 전장을 누빌 수 있습니다. 적을 끌고 가 한 번에 처리할 수도 있습니다.
플레이 중 획득하는 경험치로 레벨업 시 새로운 무기와 패시브 스킬을 선택합니다. 매판 다른 조합이 가능합니다.
시간이 지날수록 적이 강해지고, 특수 몬스터가 등장합니다. 1분, 5분, 10분마다 다른 양상의 전투가 펼쳐집니다.
자신의 최고 기록을 브라우저에 저장하여, 스스로 도전할 수 있습니다. 서버 기반 글로벌 랭킹은 개발 중입니다.
| 키 | 동작 |
|---|---|
| W, A, S, D 또는 방향키 | 캐릭터 이동 |
| 마우스 클릭 / 자동 | 공격 (자동 공격 기본) |
| Space | 가까운 포탈로 이동 |
| 1~4 숫자키 | 액티브 스킬 사용 |
| ESC / P | 일시정지 |
Vampire Survivors를 100시간 넘게 플레이하면서 "이 장르를 내 손으로 만들어보고 싶다"는 마음이 강하게 들었습니다. 하지만 단순 복제는 재미가 없을 것 같아, 무언가 차별점이 필요했습니다. 그래서 선택한 것이 "포탈"이었어요. 플레이어가 단순히 원을 그리며 도망치는 게 아니라, 맵을 입체적으로 활용할 수 있게 만들고 싶었습니다.
기술적으로 가장 힘들었던 건 수백 마리의 적을 동시에 렌더링하면서도 60fps를 유지하는 것이었습니다. 처음에는 프레임이 뚝뚝 떨어져서 한참을 고민했는데, 결국 Canvas의 오프스크린 렌더링과 객체 풀링, 공간 분할(Quadtree) 알고리즘을 적용해서 해결했습니다. 이 과정에서 게임 개발이 단순히 재미있는 기획만으로는 안 되고, 성능 최적화에 대한 깊은 이해가 필요하다는 걸 절실히 느꼈습니다.
또 하나 고민이 많았던 부분은 밸런싱입니다. 어떤 무기 조합은 너무 강해서 5분만에 화면을 청소해버리고, 어떤 조합은 3분도 못 버티고 죽는 현상이 계속 있었습니다. 지금도 플레이 데이터를 분석하며 꾸준히 튜닝 중입니다.
레벨업 시 선택할 수 있는 주요 무기의 특성을 간략히 소개합니다.
Portal Survival은 HTML5 Canvas 2D API와 순수 JavaScript(ES6+)로 구현되었습니다. 별도의 게임 엔진 없이 게임 루프, 충돌 판정, 파티클 시스템을 직접 구현했으며, 빌드 파일들이 정적 서빙되는 구조입니다. 일부 기능(저장, 통계)은 별도 포트(localhost:88)에서 실행되는 Node.js API 서버와 통신합니다.