안녕하세요 emulatorJS 에 대한 국내 자료가 거의 없는것 같아 간단하게 소개드립니다.
레트로 에뮬게임을 하는 방법이 참 다양해졌는데 제가 딱 원하는 솔루션이 없어 그동안 고민이 많았습니다.
- 앤버닉 제품같은 전용 기기들은 별도의 지출이 필요하고, 상대적으로 화면이 작은데다, 게임의 세이브 파일 공유가 쉽지 않고, 뭔가를 계속 들고 다녀야 하며, 충전까지 신경써야 한다는 점.
- 아케이드보다는 고전 JRPG 위주로 하기 때문에 패드/스틱의 정확성 보다는 노가다한 세이브 파일의 클라우드화가 중요했고
- 휴대폰이 아이폰이라 에뮬레이터 설치도 쉽지 않고
- 스팀에 레트로아크가 있지만 스팀링크도 실행시키려면 PC 를 wol 로 켜야 하고, 윈도우 로그인시켜야 하고..
아무튼 이래저래 부족하거나 불편한 점이 있어서 결론적으로 emulatorJS 로 선택했습니다.
오픈소스프로젝트인데 대략적으로는 레트로아크를 다시 웹으로 쏴준다고 보면 되겠습니다.
그래서 웹브라우저가 지원되는 대부분의 장치에서 별도의 설치없이 에뮬게임을 할 수 있습니다.
에뮬레이터 지원은 PSP 까지는 어려울거 같고 그 이하는 거의 다 가능합니다.
비슷하게 웹에서 운영되고 있는 사이트들 보신적 있을 겁니다.
- https://archive.org/details/softwarelibrary_msdos_games
도스박스를 백으로 돌려서 웹에서 바로 구동되는 건데 이걸 자체적으로 나스같은데다 구현하는 거죠.
emulatorJS 프로젝트 주소입니다.
- 공식주소 : https://emulatorjs.org/
- 깃헙 : https://github.com/EmulatorJS/EmulatorJS
- 도커 : https://docs.linuxserver.io/images/docker-emulatorjs/
- Qnap : https://www.myqnap.org/?s=emulatorjs
- 시놀로지는 따로 패키지화 되어있는지 모르겠습니다.
도커로 쉽게 만들수 있어서 패키지 아니더라고 각 나스에 바로 적용할 수 있을 거에요.
주의할건 80포트가 이미 사용중이라면 다른포트로 변경해주기만 하면 됩니다.
3000번 포트로 롬파일관리, config 관리 등을 할 수 있고, 기기별 이미지, 롬이미지 같은거 꽤 잘 찾아줘서 비주얼도 괜찮습니다.
바탕화면에 브라우저 바로가기 만들어서 --kiosk 옵션 넣고 클릭하면 브라우저 테두리 없이 깔끔하게 전체화면으로 쓸 수 있습니다. 사용자가 여러명일때 개별 프로파일을 만들어서 따로 사용할 수 있습니다.
기본적으로 키보드로 조작하고 (해보지는 않았는데 엑박패드도 지원한다고 합니다.) 패드 지원 잘 됩니다.
휴대폰 모바일 브라우저의 경우에는 가상 패드도 뜨기 때문에 아이폰에서 하기도 괜찮았습니다.
내부적으로 파일관리자를 지원해서 롬파일 넣을때 드래그해서 넣기도 편합니다.
추가로 웹페이지에서 구동되는거라, 게임을 본인의 웹페이지에 임베드 시킬 수 있습니다. 본인 블로그 같은데 한쪽에 갤러그라도 띄워두시면..
- 설명 : https://emulatorjs.org/docs/Embed.html
- 데모 : https://sites.google.com/view/emulatorjs/games?authuser=0
참고영상
-
-
패드, 스틱 같은 것들 연결도 쉽게 구성 할 수 있는건가요?
---------------------------------------------
PC 에 엑박패드 연결된 상태에서 별도의 설정없이 잘 동작합니다.
클라우드 세이브도 된다 하니 네이티브가 아니어도 충분하겠네요 ㅎㅎ
/Vollago
지금 세팅해봤는데 너무 잘 됩니다...
해당 내용 보고 설치해봤는데 3000포트와 80포트를 전부 사용중이라서 3001포트와 8081포트로 내/외부포트를 전부 설정을 했는데 접속이 안됩니다.
제가 역방향 프록시를 사용하고있는데 그때문일까요?
아니면 포트를 내부 혹은 외부포트를 변경하면 안되는게 있을까요?
docker run -d \
--name=emulatorjs \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Etc/UTC \
-e SUBFOLDER=/ `#optional` \
-p 3000:3000 \
-p 80:80 \
-p 4001:4001 `#optional` \
-v /path/to/config:/config \
-v /path/to/data:/data \
--restart unless-stopped \
lscr.io/linuxserver/emulatorjs:latest
저는 이거로 했구요, -p 랑 -v 부분의 왼쪽 항목들만 수정했습니다. -v 에 /path/to/data 부분을 서버에 원하는 폴더로 지정하신거죠?
psx 롬 파일은 .chd 확장자로 구해서 업로드하시면 됩니다.
혹은 chdman.exe를 통해서 chd로 변환하세요.
그리고 psx 롬 파일을 스캔할 때 권한 문제가 생길 수도 있어요.
롬 스캔 과정에서 root 권한으로 실행되나 봐요.
PGID를 0으로 설정하니 정상적으로 스캔되고 실행됐어요.
(PUID까지 0으로 하면 업로드가 불편해지니...)
아 그리고 엑박 패드는 따로 설정 안 했는데 2P(1P는 키보드)로 인식 잘 됩니다.
설치하고 설정은 위와같이 했는데 포트만 8001과 3001로 설정했는데 안되네요..ㅠ.ㅠ
제가 역방향프록시를 사용하고 있는데 역방향 프록시에 대하여 지식이 별로 없어서..
역방향 프록시 사용하고 난뒤로는 포트포워딩을 하고 연결을 하면 연결이 잘 안되더라구요..
공부좀 더 해보겠습니다. 감사합니다.^^
혹시 PS1 처음에 로딩할때 시간이 오래 걸리지는 않나요? 이게 장점이자 단점이 서버에서 구동되는걸 스트리밍 방식으로 화면을 보내는게 아니라, 아예 브라우저단에서 자바스크립트로 구동되는거라, 세이브파일도 브라우저내에 browserfs 에 저장되서요.. 혹시 플스 CD 같이 용량 큰걸 브라우저의 캐시파일로 가지고 있는건 아닐지...
예상하신 대로 .chd 파일을 다운로드합니다.
철권3의 경우 450M 정도 되는데 다운로드만 약 18초 걸리네요.
----------
확인해 봤는데 매 실행시 다운로드를 시도하기 때문에 캐시 수명이 짧으면 매번 로딩이 길어지네요.
저도 linuxserver 도커 이미지로 설치했습니다.
도커의 포트 매핑은 시놀로지포트:컨테이너포트로 지정하시면 되어요.
예를 들어 시놀로지 포트를 3001, 8081로 사용한다면...
3001:3000
8081:80
이렇게 해주셔야 합니다.
에뮬 서버의 포트는 설정을 건드리지 않은 이상 3000, 80이 고정이에요.
시놀로지 역방향 프록시 규칙에서는...
대상 입력란에 아래처럼 입력하면 될 것 같은데요.
http://localhost:3002
http://localhost:8081
역방향을 쓰시면 공유기에서 시놀로지의 3001, 8081을 포워딩할 필요가 없죠.
역방향을 안 쓰고 바로 접속할 경우 시놀로지의 3001, 8081을 포워딩해 주면 됩니다.
레트로아크 기반이라 게임중 F1 누르면 레트로아크 설정메뉴가 뜨는데 이 설정을 수정하면 컨테이너에 설정이 저장되는 방식이 아니라 각각 사용자의 브라우저에 저장되는 방식인가봅니다.
제가 한 설정 다른컴퓨터에서는 적용 안되어있고 제 컴퓨터에만 적용되어있네요... 그리고 각각 컴퓨터별로 따로 설정이 저장이 되며 브라우저 설정을 날리면 레트로아크 설정값도 날아가네요...
그리고 게임 플레이중에 NAS CPU 점유율이 안올라가는거 말이죠... 이거 컨테이너가 있는 컴퓨터나 NAS에서 처리하는게 아니라 브라우저로 롬파일만 땡겨오고 브라우저에서 처리하는건가요? 뭔가 신기한 방식인거같아요...
이러면 구축하고 아무한테나 주소 뿌려서 같이 재미있게 해도 부담없을꺼 같긴 합니다.
저도 처음에 그게 신기하고 헷갈렸었어요. 세이브가 되긴 하는데 서버 어디에도 세이브파일이 없어서요.
emulatorJS 의 원래 프로젝트의 목적이 웹페이지에 구동기(레트로아크)만 제공하는 형태더라구요. 그걸 또 다른 사람이 UI입혀서 도커형태로 만든거구요.
https://demo.emulatorjs.org/
여기 보시면 원제작자의 의도가 어떤건지 알수 있어요. 사용자가 롬이나 바이오스를 직접 업로드해서 로컬에서 게임해라.. 정도인데, 아마도 저작권등을 이유로 반쯤은 의도된 설계이지 싶어요.
내부적으로 브라우저내에 browserFS 라는 가상의 파일시스템을 만들어놓고 거기서 돌아가더라구요. 80포트로 붙은 다음에 왼쪽 위에 보면 흰색 탐색기 아이콘이 있는데, 그걸 누르면 browserFS 의 내부 파일구조에 접근가능하고, 프로파일에 로그인한다음 push to server 를 하면 그때 브라우저에서 서버의 config 쪽으로 설정이나 세이브 파일이 넘어갑니다.
최초 로딩시 서버에서 가져오고, 변동이 발생하면 서버에 업로드하는. 즉 서버 베이스 파일연동을 만들어달라는 요청이 있었는데 24년 1월중에 개발중이라고 붙어있긴 했는데 아직 업데이트되지는 않았습니다.
전 오히려 지금 이방식이 더 만족스럽네요... Profile Management에서 사용자를 만들고 로그인하면 설정값이 저장되고 실행시 브라우저로 넘어오는방식이면 로그인만 해두면 다른컴퓨터에서도 제 설정값을 불러온다는거잖아요?
오... 좋은데요? 당장 만들고 설정을 저장해둬야 겠네요...
그렇지 않아도 segaMS 의 오디오 설정에서 YM2413을 비활성 시켜놓는걸 기본으로 하고싶었거든요..
혹시 게임세이브파일도 로그인하면 그쪽으로 저장되는 방식인건가요?
암튼 소개 감사해요... 브라우저로 추억의 게임을 하게 되다니..
네, 게임내세이브, 강제세이브, 레트로아크 설정 등이 같이 넘어갑니다.
단 현재 기준으로는 push to server 버튼을 눌러야 해서.. 조금 귀찮아요
아래와 같이 오류가 뜨네요,
required files are missing, the game cannot be run.
Faild to load content
rom이 문제인지 설정이 문제인지 모르겠는데 혹시 아래 rom 테스트 해주실 수 있는 분 계실까요
https://wowroms.com/en/roms/mame/download-the-king-of-fighters-98-the-slugfest/87366.html
GBA 같은건 잘 되는군요.
arcade는 테스트해 보니까 fbneo나 다른 mame용이 아니라 mame 2003버젼으로 롬을 구해야 하네요. 네오지오 게임 킹오파시리즈나 메탈슬러그 구동되는거 확인했습니다.