1P by GN⁺ 3시간전 | ★ favorite | 댓글 1개
  • Space Cadet Pinball은 리버스 엔지니어링으로 소스화되어 여러 플랫폼에서 실행 가능함
  • Linux에서는 Flatpak 설치가 가장 쉽고, Windows 원본 게임 리소스도 포함됨
  • Full Tilt! Pinball 데이터로 바꾸면 1024x768 해상도를 쓸 수 있음
  • Full Tilt 데이터는 규칙도 바꿔 일부 불빛이 토글되지 않고 계속 켜짐
  • 판매 중단된 독점 소프트웨어는 FOSS 라이선스 전환 에스크로가 바람직함

Linux에서 Space Cadet Pinball 실행하기

  • Windows XP에 번들되던 Space Cadet Pinball은 디컴파일러와 리버스 엔지니어링 도구로 소스 코드가 만들어졌고, 여러 플랫폼에서 실행 가능하게 정리된 GitHub 프로젝트가 있음
  • Linux에서 가장 쉬운 실행 방법은 Flatpak이며, Windows 버전의 원본 게임 리소스도 함께 포함됨
  • GUI에서는 KDE Discover 같은 도구로 설치할 수 있고, CLI에서는 다음 명령으로 설치 가능함
    flatpak install com.github.k4zmu2a.spacecadetpinball
    
  • 브라우저 기반 버전도 있지만, 로컬 컴퓨터에 직접 설치해 실행하는 방식이 더 좋았음

Full Tilt 데이터로 더 높은 해상도 사용하기

  • 기본 그래픽은 480p 수준이라 거칠게 보일 수 있음
  • 별도 버전인 Full Tilt! Pinball의 게임 데이터는 1024x768 해상도 표시를 지원함
  • Full Tilt 게임 데이터는 archive.org의 zip 파일에서 받을 수 있음
  • Flatpak 버전이 이 데이터 파일을 쓰게 하려면 약간의 수동 작업이 필요함
  • 데이터 적용 절차

    • 먼저 게임을 최소 한 번 실행해 데이터 디렉터리를 생성해야 함
    • 다운로드한 zip 파일을 Flatpak 데이터 디렉터리에 직접 압축 해제함
      cd ~/.var/app/com.github.k4zmu2a.spacecadetpinball/data/SpaceCadetPinball
      unzip ~/Downloads/CADET.ZIP
      
    • 앱에 번들된 기존 데이터 디렉터리를 삭제하거나, 조심스럽게 진행하려면 이름을 바꿔야 함
      sudo rm -r $(flatpak info --show-location com.github.k4zmu2a.spacecadetpinball)/files/extra/Pinball
      
    • 이 삭제가 필요한 이유는 게임이 여러 위치에서 데이터를 찾지만, 한 디렉터리에서 데이터 파일을 찾으면 다른 위치를 더 찾지 않기 때문임
    • 사용자별 설치라면 sudo가 필요 없을 수 있지만, 설치 위치가 /var/lib/flatpak이면 root 권한이 필요함
    • 게임이 업데이트되면 3단계를 반복해야 할 수 있음
    • 다만 Flatpak 패키지는 2년 넘게 업데이트가 없어 업데이트 가능성이나 빈도는 낮아 보임

원본 데이터와 Full Tilt 데이터의 차이

  • 원본 파일과 Full Tilt 파일을 합쳐 두면 게임 안에서 원본 3DPB 데이터와 Full Tilt 데이터를 전환할 수 있음
  • 데이터 파일은 게임 규칙에도 영향을 주는 것으로 보임
  • 원본 3DPB 버전에서는 재진입 레인과 발사 레인의 불빛이 공이 지나갈 때마다 토글됨
  • Full Tilt 버전에서는 불빛이 토글되지 않고 켜진 상태로 유지되어, 불빛 세트를 완성하고 연결된 범퍼 세트를 업그레이드하기 쉬워짐
  • 비슷한 시기 일부 Mac에는 Marble Blast라는 게임이 사전 설치되어 있었고, 그 게임에도 비슷한 애착을 가진 사람들이 있었음
  • Marble Blast 시리즈는 이 핀볼 게임과 달리 이후에도 확장되어 현재 플레이 가능한 더 새로운 버전들이 있음

이식성과 보존

  • 오래된 게임이 충분히 사랑받았고, 특히 역량과 동기가 있는 사람이 작업한 덕분에 여러 플랫폼에서 실행 가능한 형태가 됨
  • 소스 코드가 어떤 형태로든 있으면 게임을 다양한 플랫폼으로 이식할 수 있다는 큰 장점이 있음
  • 이 프로젝트 덕분에 Mac, Windows, Linux뿐 아니라 Android와 Nintendo Switch에서도 실행 가능한 것으로 보임
  • 원 개발자에게 비용을 지불할 수 있다면 지불하고 싶지만, 특히 Full Tilt 버전 게임 데이터 다운로드의 합법성에는 우려가 있음
  • 해당 데이터는 상용 제품에 포함된 저작권 있는 아트와 데이터이기 때문임
  • FOSS 라이선스로 만들어진 결과물을 선호하더라도 현실이 항상 그렇게 작동하지는 않으며, 좋은 것을 만드는 사람들이 보상받아야 더 많은 좋은 결과물이 나온다고 봄

독점 소프트웨어와 소스 코드 에스크로

  • 소프트웨어 보존도 중요한 목표임
  • 이상적으로는 이런 독점 소프트웨어가 어떤 형태의 소스 코드 에스크로에 들어갈 수 있어야 함
  • 원 저작권자가 제품을 판매하는 동안에는 그 권리가 존중되어야 함
  • 하지만 판매를 중단하기로 선택했다면, 사용자가 자신이 쓰는 소프트웨어를 개선하고 유지할 수 있도록 코드가 FOSS 라이선스로 전환되는 방식이 바람직함
  • 이런 방식은 창작자 권리, 사용자 권리, 보존이라는 목표 사이의 균형을 맞추는 데 도움이 될 수 있음
Hacker News 의견들
  • Space Cadet Pinball 원작자 중 한 명인데, 오래된 핀볼 게임을 아직도 살려둘 만큼 좋아해 주는 사람들이 있다는 게 정말 멋짐
    이 글을 Cinematronics 공동창업자이자 친구들인 Mike Sandige(리드 엔지니어)와 Kevin Gliner(디자이너 겸 제품 관리자)에게도 전달할 예정이고, 둘 다 나만큼 즐겁게 볼 것 같음

    • Windows 기본 설치에 재미있는 게임이 들어 있던 건 정말 특별했으니, 게임을 만들고 Microsoft에 팔아줘서 고마움
      그 덕분에 중학교 타자 수업에서 핀볼 리그를 할 수 있었음. 게임의 어떤 부분을 맡았는지, 작업 중 재미있는 일화나 찾기 어려웠던 버그 이야기가 있는지도 궁금함
    • NT 4를 처음 쓸 때 여러 대의 기계를 설치하며 계속 지켜봐야 했는데, Space Cadet Pinball 덕분에 길고 지루한 밤들을 버틸 수 있었음
      커리어 내내 그때 운이 좋았다고 떠올렸고, 미치지 않게 해준 게임이라 고마움
    • Space Cadet Pinball을 Windows 기본 구성에 넣은 건 Windows 역사상 가장 강력한 판매 포인트 중 하나였고, 그걸 만들어줘서 정말 감사함
      이 게임은 실제 핀볼 세계에 들어가고 준프로 수준까지 가는 데 큰 영향을 줬음. 늘 묻고 싶었는데, Space Cadet Pinball의 공식 후속작을 만들기 위해 다시 설계 단계로 돌아갈 생각이 있는지 궁금함
      엔시티피케이션, 소액결제, 가상 핀볼 쪽의 플레이어에게 불리한 라이선스 문제 속에서 여러 세대가 이런 향수를 바라고 있을지도 모름. 이미 너무 많이 생각해둔 상태라 필요하다면 가진 걸 다 쏟을 의향도 있지만, 먼저 답을 듣고 싶음
    • Windows 2000 기본 설치에 포함되어 있었기 때문에 컴퓨터실마다 있었고, 현실에서 잠시 벗어나는 좋은 휴식이었으며 오래 가는 게임 경험이었음
      나중에는 Deluxe Skijump, Doom, Starcraft를 가져오는 사람들이 생겼지만 Space Cadet도 여전히 충분한 선택지였음
    • 글 마지막의 소스 코드 에스크로 제안에 대해 어떻게 생각하는지 궁금함
      Software Heritage의 외부 계약자인데, 지금 이 일을 하고 있는지는 모르겠지만 그런 역할을 맡기에 이상적인 조직이라고 봄
      https://www.softwareheritage.org/
  • 이 재현판이 원작과 얼마나 정확히 같은지 말도 안 될 정도이고, 겉모습과 손맛이 거의 동일함
    작성자는 원본 소스 코드를 보지 않고 exe 파일을 역컴파일하는 것만으로 만들었으니 사실상 완전히 눈먼 상태에서 해낸 셈임. 그러니 “듣지도 말하지도 보지도 못하는 아이가 핀볼은 끝내주게 친다”는 말이 딱 맞음

    • 원작에서는 시작 시퀀스 중에 “hidden test” 같은 걸 입력하면 커서로 공을 움직일 수 있었던 걸로 기억함
      이 버전에서도 되는지 궁금해서 나중에 컴퓨터 앞에 가면 직접 해볼 생각이었는데, AUR 버전을 설치해 보니 실제로 됨. 게임 시작 시퀀스 중 “hidden test”를 입력하면 공을 끌 수 있음
    • Microsoft가 Pinball용 디버그 심볼을 제공한다는 점도 참고할 만함
    • 원래 클린룸 방식이라면 직접 디스어셈블된 코드를 보면 안 되고, 다른 사람이 보고 문서화한 걸 받아야 하는 것으로 이해하고 있음
      물론 Claude에게 디스어셈블된 코드에서 명세를 쓰게 하면 비슷하게 가능할 수도 있겠음
  • GitHub를 보니 흥미로움: https://github.com/k4zmu2a/SpaceCadetPinball
    여러 콘솔로 이식되어 있고, 브라우저 버전도 있음: https://pinball.alula.me/
    또 Space Cadet Pinball은 내가 몰랐던 Maxis의 더 큰 게임 Full Tilt! Pinball의 일부였음. Windows 95에 DOOM을 번들로 넣을 뻔했지만 “핀볼 같은 게임은 안 되나?”라는 식으로 거절됐고, 결국 이렇게 됨
    https://en.wikipedia.org/wiki/Full_Tilt!_Pinball#Development

    • 이 스레드 다른 곳에서 CEO가 DOOM 작업설을 부인했음
    • Full Tilt 버전은 훨씬 강화된 버전이고, Windows 번들 버전에는 없는 멀티볼이 들어 있음
  • 작년에 Shopify에서 Space Cadet에서 영감을 받은 핀볼 게임을 만들었고, 아직 여기서 플레이할 수 있음: https://bfcm.shopify.com/
    매년 Black Friday에 상점들의 매출을 실시간으로 시각화하는 사이트를 내는데, 예전에는 실제 판매가 판매자에서 구매자로 이동하는 호로 표시되는 지구본 정도였음. 최근 몇 년은 웹사이트를 더 재미있고 상호작용적으로 바꾸고 있음
    핀볼 기계 프로그래밍은 꽤 어려웠고, 엔지니어 2명과 아티스트 1명 팀이 한 달 반 정도 작업했음. 작동 방식이 궁금하다면 핀볼 기계 옆 데스크톱 컴퓨터에 과정 메모를 넣어 두었음

    • 가운데에서 왼쪽 먼 쪽에 있는, 힘겹게 끙 소리를 내며 공을 “던지는” 공 포획 장치가 정말 마음에 듦
  • 글 하단의 소스 코드 FLOSS 에스크로 언급이 마음에 듦
    법적으로 구현하긴 어렵겠지만, 소프트웨어가 판매 중일 때는 폐쇄 소스였다가 더 이상 판매되지 않으면 자동으로 오픈소스가 되는 아이디어는 잠재 사용자나 구매자 입장에서 매력적임. 최악의 경우, 회사가 망하거나 프로젝트를 취소했을 때 종속이 줄어듦
    https://kde.org/community/whatiskde/kdefreeqtfoundation/가 조금 떠오름

    • FLOSS 에스크로와 같지는 않지만, 소스 코드 에스크로는 대형 기업용 소프트웨어 계약에서 꽤 흔함
      이런 일을 중개하는 회사도 있음: https://www.escrowcompany.co/source-code-escrow/
    • 소프트웨어 에스크로는 매우 흔하고, 예를 들어 Windows 소스 코드 에스크로가 있는 곳에서 일한 적도 있음
    • 솔직히 소스 코드 자체가 그렇게 유용할지는 모르겠음
      판매가 중단된 뒤에는 재배포, 디컴파일, 리버스 엔지니어링, 재구현을 합법으로 만들면 충분히 커버된다고 봄
  • Full Tilt 버전에는 Windows 버전에 없는 멀티볼도 있음
    두 불빛이 같은 색일 때 웜홀로 쏘면 공을 잠글 수 있고, 공 3개를 잠그면 시작됨
    Space Cadet을 좋아한다면 Visual Pinball도 꼭 해보길 권함. Space Cadet보다 더 좋은 핀볼 게임이 훨씬 많고, 사람들이 만든 멋진 테이블이 무료로 많이 있음. 다만 Windows 전용인 것 같음. 테이블은 VBScript로 스크립팅되고 PinMAME은 COM 객체로 로드됨
    덧붙이면, 이걸 조금 해킹해 보니 Space Cadet의 프로그래밍은 꽤 엉성했음. 조명 상태가 게임 상태를 그대로 반영함. 그래서 랭크업 조명 쇼가 재생되는 동안 공을 잃거나 미션을 시작하면 랭크를 건너뛸 수 있는 버그가 생김

    • 다행히 그건 틀렸음
      VPX는 이제 Linux, Mac, iOS, Android에서도 돌아가고, jsm174의 선구적인 작업 덕분에 잘 실행됨. VBScript 부분은 필요한 만큼의 Wine으로 처리하고 나머지는 네이티브임
      서라운드 사운드 피드백(SSF), Direct Output Framework(DOF), Pinup Popper 팩(PUP Packs) 등도 지원함. 예전에는 Windows 전용이던 GUI도 이제 ImGUI를 통해 Windows/Mac/Linux 버전에 내장되어 플레이 중에도 띄울 수 있음
      써보고 싶다면 GitHub에 로그인해서 플랫폼별 최신 액션을 내려받으면 됨 [0]. Windows가 아닌 사용자는 작년 10.8.0 릴리스보다 Windows 버전과의 기능 격차가 가장 많이 줄어든 master 최신 버전이 좋음. Metal과 Vulkan을 지원하는 새 다중 스레드 렌더링 백엔드가 있는 BGFX 버전을 쓰면 됨
      더 알고 싶다면 Virtual Pinball Chat Discord [1]나 위키 [2]를 보는 게 좋음. 개발자들이 VPX를 크로스플랫폼으로 만들기 위해 많이 노력했고, 그 결과가 보임. 나도 이걸 기반으로 Pincab [3]을 만들었고 정말 훌륭함
      추가로, VPX는 이제 Batocera에서도 지원되지만 거기 포함된 VPX 버전은 꽤 오래됐음
      [0] https://github.com/vpinball/vpinball/actions/workflows/vpinb...
      [1] https://discord.gg/BhR9h5aWm
      [2] https://github.com/dekay/vpinball-wiki/wiki/About-Visual-Pin...
      [3] https://github.com/dekay/vpin-cabinet/
    • 더 사실적인 게임이 더 재미있을 것 같고, Space Cadet을 좋아하는 건 어린 시절 추억 때문일지도 모른다고 직감했음
      하지만 다른 핀볼 게임을 할수록 Space Cadet 자체가 훌륭한 게임이라는 걸 더 인정하게 됨. 손맛이 좋고 계속 붙잡아두는 요소도 다양함
      그만큼 즐길 수 있는 다른 핀볼 게임을 찾고 싶었고, 가장 가까웠던 건 Xenotitle과 Demon's Tilt였지만 익숙해지고 잘하기가 더 어려웠음. 그다음으로 좋은 건 개인적으로 Yoku's Island Express라고 봄
    • 핀볼을 많이 해봤는데, Space Cadet은 설계, 균형, 흥미 면에서 아주 좋은 핀볼 게임
      과소평가할 게임이 아님
  • Visual Pinball용으로는 이걸 확인해볼 만함: https://archive.org/details/vpinball-x-73-space-cadet / https://github.com/vpinball/vpinball
    더 나은 것도 있을 수 있지만, JP 버전은 다른 소프트웨어를 잔뜩 설치하고 설정하지 않아도 바로 동작함
    https://youtube.com/results?search_query=JP%27s+Space+Cadet - https://youtu.be/UXfohCzilrQ
    요즘 이런 핀볼들을 만드는 방식이 정말 놀라움
    더 많은 테이블은 여기에도 있음:
    https://vpforums.org/index.php?app=downloads&showcat=50
    https://vpuniverse.com/files/category/82-vpx-pinball-tables
    https://virtualpinballspreadsheet.github.io
    https://nailbuster.com/wikipinup
    https://archive.org/search?query=visual+pinball+tables

    • 이 프로젝트를 비 Windows 환경에서 돌리려다 꽤 고생했음
      Linux/Mac에서는 뭘 해도 멈추거나 크래시가 났고, 지금은 족쇄를 조금씩 벗는 중이지만 여전히 Windows 지향 프로젝트임
    • Visual Pinball은 정말 놀라울 정도로 훌륭하고, 아티스트와 테이블 개발자들로 이루어진 거대하고 활발한 커뮤니티가 받쳐주고 있음
      고품질 테이블이 수백 개 있고 매주 12개 이상 새 릴리스가 나옴. 물리적 핀볼 테이블로는 불가능한 일을 하는 새 오리지널 테이블도 있지만, 1950년대부터 2000년대까지의 전설적인 상업용 핀볼 기계를 정성스럽게 재현한 것도 많음. 십대 때 기억하는 테이블은 이미 에뮬레이션되어 있을 가능성이 큼
      MAME이 사라지기 전 아케이드 게임을 보존하듯, VPin 커뮤니티는 미래 세대가 전기기계식 기계를 즐길 수 있도록 역사 보존을 하고 있음. 내부적으로 Visual Pinball에서는 PinMAME이라는 특수 MAME 버전이 핀볼 기계 ROM을 에뮬레이션하고, Visual Pinball은 3D 렌더링과 물리 시뮬레이션을 담당함
      대부분은 키보드로 데스크톱에서 플레이하지만, 일부 MAME 플레이어가 전용 버튼과 조이스틱이나 아케이드 캐비닛을 붙이듯 VPin도 핀볼 기계처럼 생긴 캐비닛에서 실행할 수 있음. 플레이필드 자리에는 평면 스크린이 있고, 플리퍼 버튼과 실제 플런저로 가상 공을 발사함
      VPin은 스테레오 사운드도 지원하지만 일반 PC 사운드 카드의 7.1 출력 추가 채널로 서브우퍼, 베이스 셰이커, 최대 4채널 위치 기반 햅틱 피드백을 구동할 수 있음. 트랜스듀서가 실제 핀볼 범퍼와 슬링샷이 캐비닛 안에서 작동하는 느낌, 나무 플레이필드 위를 금속 공이 구르는 미세한 진동까지 재현하는 정확도에 놀랐음
      내 캐비닛에는 렌더링된 플리퍼 위치 아래에 실제 핀볼 기계용 플리퍼 솔레노이드도 넣었음. VPin 캐비닛이 실제 핀볼 기계 8대와 커스텀 MAME 아케이드 캐비닛 옆 게임룸에 놓여 있어서, 전체 느낌이 진짜에 가깝다고 보증할 수 있음
      Visual Pinball을 해보고 싶다면 @eahm이 위에서 링크한 Pinup Popper 자동 설치 프로그램으로 시작하길 강력히 권함: https://nailbuster.com/wikipinup/doku.php
      이 훌륭한 결과물은 여러 프로젝트가 매끄럽게 함께 작동해서 나온 것이지만, 처음에는 올바른 순서와 위치에 설치하는 게 헷갈릴 수 있음. 첫 설치 때 문서를 좀 읽어야 하는 건 약간 귀찮았지만, 이제는 원클릭 친화적이지 않은 점이 오히려 장점이라고 봄. 너무 가볍게 몰려와 스팸을 뿌리는 이용자를 걸러낼 만큼만 복잡해서, 완전히 무료인 레트로 인접 취미에 여전히 지식 많고 참여도 높은 커뮤니티가 남아 있음
  • 소스 코드 에스크로 아이디어가 마음에 들고, 국가 정부가 개입하기에 좋은 영역처럼 느껴짐
    British Library가 출판된 모든 책의 사본을 보관하도록 요구하는 방식이 떠오름. 순수한 보존 목적만으로도 소스 코드에 비슷한 법을 둘 수 있지 않을까 싶음
    비유적인 금고에 잠가두었다가 소프트웨어의 지원과 수명에 관한 특정 조건이 충족된 뒤에만 여는 방식이어도 전혀 상관없음. 그 조건이 “원저작권이 만료된 뒤”, 즉 70년 이상 뒤라 해도 현재 관행보다 소스 코드 보존에는 훨씬 나음. 출시 후 10년도 안 되어 원본 소스 코드가 사라진 게임도 있음(Kingdom Hearts 1). 지금보다는 어떤 대안이든 낫다고 봄

    • 현재 상태보다 어떤 대안이든 낫다고는 잘 모르겠음
      창작자에 대한 유인은 이미 충분히 낮음. 책을 쓰면 곧바로 Anna's Archive에 올라가고 Altman 일당의 이익을 위해 LLM 찌꺼기로 소화됨. 탐사보도 기사를 여기나 Reddit에 공유하면 유료벽 우회 사이트 링크가 가장 추천을 많이 받는 댓글 중 하나가 됨
      이미 Bastiat의 깨진 유리창 같은 상황이라 사람들이 창작물을 만들 유인이 줄어들고 있음. 소프트웨어 창작자의 작업물이 더 쉽게 복제되고 저작권 세탁되는 위험을 키우고 싶지 않음. 국가 금고는 조 단위 기업들의 쉬운 표적이 될 것임
      별개로, 레트로 리버스 엔지니어링을 하는 입장에서 소프트웨어 보존과 창작자 보상의 필요 사이의 긴장을 다룬 작성자의 말은 크게 공감함
  • 조만간 게임과 데이터를 분리할 예정이고, 그러면 두 번째 부분이 더 쉬워져 커스텀 Flatpak이 데이터를 확장할 수 있게 됨
    Flatpak은 최신 런타임 유지를 위해 업데이트를 받아왔지만, 업스트림 게임 자체는 업데이트되지 않았고 Flathub는 업데이트에 대한 appstream 데이터만 보여줄 것임. Flatpak 매니페스트 저장소를 보면 최신 커밋이 6개월 전임: https://github.com/flathub/com.github.k4zmu2a.spacecadetpinb...

  • 누군가 취미 프로젝트나 회사 차원에서 Space Cadet 실제 핀볼 테이블을 만들어줬으면 좋겠음

    • 이런 시도는 몇 번 있었고, 아마 가장 잘 알려진 건 이쪽일 것 같음 [1]
      이왕이면 Sesame Street 핀볼 테이블 [2]의 실제 버전도 보고 싶지만, 그건 조금 더 야심 찬 작업일 수 있음
      [1] - https://spacecadetpinball.wordpress.com
      [2] - https://www.youtube.com/watch?v=JZshZp-cxKg
    • 많은 사람이 생각해봤지만, 기억하기로는 물리적으로 만들 수 없음
      범퍼 아래를 지나는 레인이 있는데, 실제 범퍼는 아래로 꽤 길게 내려오기 때문임: https://files.catbox.moe/pnaeri.png
    • 21년 전에 Stern 직원에게 이걸 제안했지만 당연히 아무 일도 없었음
      그때는 Halo 기계도 만들려 했는데, 그것도 아무 데도 이르지 못했음