1P by GN⁺ | ★ favorite | 댓글 1개
  • 1997년 PC 게임 LEGO Island가 설치 없이 브라우저에서 실행되는 완전 포트로 공개되어, 오래된 Windows 게임을 최신 기기에서 바로 플레이할 수 있음
  • 포트의 기반은 바이트 단위로 원본을 재현한 LEGO Island decompilation과 Windows 의존성을 걷어낸 포터블 버전임
  • 최신 브라우저와 WebAssembly 멀티스레딩이 필요하며, 첫 실행은 약 25MB 스트리밍 후 시작되고 오프라인 설치는 약 550MB를 사용함
  • 키보드·마우스, 게임패드, 터치스크린을 지원하고 Configure 메뉴에서 조작, 언어, 해상도, 오프라인 플레이 같은 실행 조건을 조정할 수 있음
  • 원본 핵심 게임플레이는 유지하면서 와이드스크린, 4K, 버그 수정, 확장, 저장 편집, 멀티플레이 같은 현대적 기능을 더한 점이 특징임

브라우저 포트의 기반

  • LEGO Island는 1997년 원본 PC 게임을 브라우저에서 바로 플레이할 수 있게 만든 재구현판임
  • 구현에는 Emscripten과 WebAssembly가 쓰였고, 최신 기기에서 별도 설치 없이 실행되도록 구성됨
  • 이 프로젝트는 LEGO Island decompilation을 기반으로 함
    • 해당 디컴파일 프로젝트는 원본 소스 코드를 완전하고 바이트 정확하게 재구성함
  • 이후 portable version이 만들어지며 그래픽, 오디오, 입력, 설정 등 Windows 의존성이 최신 크로스플랫폼 대안으로 교체됨
  • 현재 LEGO Island는 Windows, Linux, macOS, iOS, Android, Nintendo Switch, PlayStation Vita, 웹을 포함해 10개 이상 플랫폼에서 실행됨
  • 브라우저 버전은 원본 Interleaf 스트리밍 코드를 사용해 1997년 CD-ROM처럼 콘텐츠를 점진적으로 로드함
  • 프로젝트가 아직 활발히 개발 중이어서 일부 버그가 남아 있을 수 있음

실행 환경과 조작 방식

  • 실행에는 WebAssembly 멀티스레딩을 지원하는 최신 브라우저가 필요함
  • 지원 브라우저와 최소 버전은 다음과 같음
    • Chrome 95 이상
    • Firefox 92 이상
    • Edge 95 이상
    • Safari 15.4 이상
    • iOS에서는 iOS 18 이상이 권장됨
  • 입력 방식은 Configure 페이지에서 조정 가능함
    • Keyboard & Mouse: 화살표 키 또는 WASD를 쓰는 데스크톱 조작
    • Gamepad: 아날로그 스틱과 D-pad를 쓰는 컨트롤러 지원
    • Touch Screen: 모바일용 터치 조작 방식 선택
  • 게임패드 지원 범위는 브라우저에 따라 달라질 수 있음

로딩, 오디오, 저장

  • 첫 로드에서는 약 25MB 데이터를 스트리밍함
    • 확장 기능을 켜면 더 많은 데이터를 받을 수 있음
  • 초기 로딩에는 안정적인 인터넷 연결이 권장됨
  • 오프라인 플레이는 Configure 메뉴에서 전체 게임 파일을 설치해 사용할 수 있음
    • 필요한 용량은 약 550MB
  • 브라우저가 사용자 상호작용 전 오디오 재생을 막는 경우가 있어, 소리가 나지 않으면 애니메이션 인트로의 mute 아이콘을 클릭해야 함
  • 진행 상황은 자동 저장됨
    • 저장을 확실히 하려면 Infocenter로 돌아가 exit door를 사용해 메인 메뉴로 나가야 함
    • 탭을 바로 닫을 때도 “best effort” 저장을 시도하지만 항상 보장되지는 않음

원본 호환성과 성능 조정

  • 이 포트는 원본 1997년 PC 게임의 완전 포트이며 핵심 게임플레이는 동일함
  • 시작 전 Configure 페이지에서 여러 언어를 선택할 수 있음
    • 영어는 1.01.1 버전을 모두 선택 가능함
  • 추가 개선 기능도 포함됨
    • 와이드스크린을 지원함
    • 조작 방식이 개선됨
    • 디컴파일 프로젝트에서 나온 다수의 버그 수정이 반영됨
    • 디스플레이 최대 해상도로 실행할 수 있음
    • 4K 실행도 가능함
  • 성능이 불안정하면 다른 브라우저 탭을 닫아 메모리를 확보하고 하드웨어 가속을 사용하는 것이 권장됨
  • 모바일에서는 저전력 모드가 아닌지 확인해야 함
  • 지연이 있으면 Configure에서 해상도를 낮출 수 있음

새 기능과 고급 기능

  • 멀티플레이 모드는 공개 또는 비공개 섬을 만들고 최대 16명이 실시간으로 LEGO Island를 함께 탐험할 수 있게 함
  • Scene Player는 300개 이상의 원본 LEGO Island 애니메이션을 재생 제어와 공유 링크로 볼 수 있게 함
  • Nick Brick's Memories는 멀티플레이에서 원본 게임 내 애니메이션을 다른 플레이어와 재연하고 memories로 수집하는 기능임
  • Discord 로그인으로 Cloud Sync, memories, 멀티플레이 기능을 활성화할 수 있음
  • Cloud Sync는 로그인 상태에서 저장 파일과 설정을 기기 간 자동 백업함
  • 충돌 보고 오버레이는 문제가 발생했을 때 진단 정보를 캡처하고 보고서를 제출할 수 있게 함
  • Save Editor는 브라우저에서 저장 파일을 보고 수정할 수 있음
    • 플레이어 이름, 캐릭터, 최고 점수를 변경할 수 있음
  • 편집 기능은 여러 게임 요소를 다룸
    • Sky Color Editor: 섬 하늘 그라디언트 색상을 편집함
    • Vehicle Part Editor: 차량 부품과 색상을 3D 미리보기로 수정함
    • Vehicle Texture Editor: 기본 프리셋 또는 업로드 이미지로 차량 텍스처를 바꿈
    • Actor Editor: 66개 게임 액터의 모자, 색상, 분위기, 소리, 동작을 애니메이션 3D 캐릭터 미리보기로 편집함
    • Plant Editor: 81개 섬 식물의 변형, 색상, 분위기, 소리, 동작을 탐색하고 수정함
    • Building Editor: 섬 건물의 변형, 소리, 동작을 3D 미리보기로 바꿈
  • 개발자와 고급 사용자를 위한 Debug menu도 있음
    • LEGO Island 로고를 5번 탭하면 OGEL mode가 열림
    • 위치 이동, act 전환, 애니메이션 재생 같은 디버그 기능에 접근할 수 있음

확장과 렌더링 개선

  • 확장 시스템은 커뮤니티 제작 콘텐츠와 수정을 가능하게 함
  • 제공되는 확장과 개선에는 다음이 포함됨
    • HD Textures: 비주얼을 개선함
    • HD Music: 고음질 오디오를 제공함
    • Extended Bad Ending FMV: 잘리지 않은 베타 애니메이션을 보여줌
    • Widescreen backgrounds: 와이드 디스플레이에서 3D 가장자리를 제거함
    • SI Loader: 커뮤니티 콘텐츠와 수정을 위한 확장 시스템임
  • 렌더링과 그래픽 기능도 추가됨
    • WebGL 렌더링을 지원함
    • WebGL이 없는 기기에서는 소프트웨어 렌더러 대체 경로를 사용함
    • OpenGL ES 2.0/3.0 렌더러를 제공함
    • 32비트 컬러를 지원함
    • MSAA 안티앨리어싱을 사용할 수 있음
    • anisotropic filtering을 적용할 수 있음
    • 전체 화면 모드를 지원함
  • 여러 버그 수정과 성능 개선도 반영됨
    • WebGL 드라이버 호환성 문제가 수정됨
    • Firefox 사생활 보호 모드에서 정상 동작함
    • 터치 좌표 변환 문제가 수정됨
    • ViewLODList 메모리 누수가 수정됨
    • GPU mesh 업로드가 VBO로 개선됨
    • backface culling이 활성화됨
    • SIMD 최적화 z-buffer clearing이 적용됨

관련 자료와 소스

댓글과 토론

Hacker News 의견들
  • 어린 조카가 Lego Island를 하는 걸 봤는데, 섬을 카메라가 날아다니는 도입 영상은 정말 멋졌음
    그런데 신난 Lego 캐릭터가 화려하고 따라가기 어려운 말투로 지시를 쏟아내는 메인 메뉴에서 완전히 막혔고, 자동차 경주 같은 재미있는 걸 하려면 책에 이름을 쓰거나 아이콘을 지도에 끌어다 놓는 추상적인 행동을 해야 했음
    몇 시간 동안 그 화면을 눌러도 사람들을 지도에 끌어다 놓아야 한다는 걸 못 깨달았을 것 같음. 훌륭한 게임이지만 요즘이라면 이렇게 만들지 않았을 듯하고, 실제 어린이에게 테스트한 인터페이스라기보다 어른이 상상한 “어린이가 좋아할 인터페이스”에 가까워 보임

    • 공평하게 보면, 책에 이름을 입력하고 나면 Infomaniac이 게임을 시작하려면 초상화를 지도 위로 끌어다 놓으라고 알려줌
    • 게임의 일부가 탐색이고, 이것저것 클릭하고 움직이는 행위가 핵심 게임플레이 메커니즘이기도 함
      다만 말한 것처럼 1996년 게임의 사용자 경험은 확실히 조금 거칠었음
    • 아이들을 과소평가하는 것 같음. 무작위로 여기저기 클릭하고 몇 시간씩 그러는 건 맞지만, 아이들은 정말 몇 시간이고 그렇게 함
      그리고 마침내 이해하는 순간이 오면 그 시간이 완전히 낭비된 건 아님. 내가 본 아이들은 기본적으로 모든 걸 무차별 대입으로 풀고, 가진 자원인 시간을 기꺼이 씀
    • 이 게임을 해본 적이 없는데도 나도 메인 메뉴에서 막혔음 :)
    • 나도 섬에 들어가지 못해서 10초쯤 헤매다가 그만뒀음 ^^
  • 포팅 뒷이야기를 다룬 영상은 여기 있음
    https://www.youtube.com/watch?v=JUNdWnI5BTk

  • 와, 정말 대단함. Windows 95에서 6살쯤 이 게임을 했던 기억이 나는데, 걸어다닐 수 있다는 것 자체가 전부 너무 멋졌음. 이제는 브라우저에서 돌아감
    디컴파일 접근이 놀라울 정도로 효과적이어 보임. 다른 사람이 StarCraft를 ARM에서 돌리려고 비슷한 일을 했고, 그 방식은 잘못됐다고 했던 걸 아는데, 그쪽은 그나마 읽을 만한 형태를 얻으려 하기보다 전부 어셈블리로 했던 것 같음

  • 대단함! 이게 MattKC의 디컴파일을 기반으로 한 건가?

    • 맞음. MattKC가 마지막 Lego Island 영상에서 이걸 언급했음
  • 이 게임은 아직도 머릿속에 남아 있음. 괴짜 같은 내레이터와 캐릭터들의 개성이 당시에는 정말 독특하게 느껴졌음
    이런 것들이나 Backyard Baseball이 브라우저나 현대 앱으로 다시 나와도 같은 느낌은 잘 안 남

  • 다음은 LEGO Racers 해볼 사람?

  • 와, 타이밍 좋다. 중학생 때 이 게임을 엄청 했고, 최근에 현대 하드웨어에서 돌릴 방법을 알아보고 있었음
    XP 가상 머신 안에 설치해서 실행까지는 했지만, 예상대로 이상적인 방식은 아니었음. 이런 게임들을 위해 레트로 게이밍 PC를 만들까 생각 중이었는데, 이제 그 일을 조금 더 미룰 수 있게 됨

  • 이 게임이 인기 있던 시대를 겪지는 않았지만, 웹 브라우저에서 플레이 가능하게 만든 건 정말 대단함
    그때 플레이하고 즐겼던 사람들에게는 기분 좋은 놀라움이 될 것 같음

  • Lego Island 2도 플레이할 수 있으면 좋겠음