방금 다른 글에서 게임 실행시 무반응이여서, nwjs 를 교체해 고쳤다는 말이 있기도 하고,
게임의 nwjs를 업그레이드 (게임 성능/보안/등 향상을 위한) 해서 올리는 자료 글들이 종종 보이는 거 같습니다.
그래서 만약 개개인이 어렵지 않게 고치거나 업그레이드 할 수 있는 거면,
별도로 문제 제시 게시글을 작성하기 전이나 직접 업그레이드 할 시 시도해 볼 수 있지 않을까 해서 텍스트 작성중입니다.
아래 작성된 텍스트에 의견 부탁드립니다.
좋은 가이드가 완성 되는 시, '정보' 탭으로 게시글을 올리도록 하겠습니다.
nw.js 업그레이드 및 문제해결
여기 자료들 받아 게임 하시거나 다른 RPG Maker 게임을 하시다보면 nw.js 실행 파일을 자주 보실겁니다.
nw.js 은 알만툴(RPG Maker)의 runtime 입니다.
nw.js 는 RPG Maker MV 와 MZ 가 사용합니다.
nw.js를 업그레이드하는 주된 이유는 최신 Chromium 및 Node.js 버전을 반영하여
퍼포먼스(속도) 향상, 보안 취약점 해결, 그리고 새로운 웹 API 및 ES 기능 지원을 통해 애플리케이션의 안정성과 기능성을 확보하기 위함입니다.
최신 버전은 더 나은 렌더링 성능과 안정성을 제공합니다
이 가이드는 얘초에 실행이 불가하던 게임에 대한 문제해결이 아니라,
잘 되던 게임이 nw.js와 윈도우 시스템 호환 문제를 겪을 시의 문제해결 대처 가이드이며, nw.js 업그레이드 가이드이기도 합니다.
nw.js 업그레이드로 문제해결이 더 많겠지만, 모든 상위 nw.js 버전이 전 버전에 호환이 된다는 보장은 없습니다.
문제 #1:
nw.js 버전 불일치로 게임 실행시 무반응일 때가 있습니다.
문제 #2:
게임 실행 후 타이틀까진 문제 없는데, '게임 실행' 누르면 꺼져버림.
오래 된 버전의 runtime 사용 시 발경할 수 있습니다.
해결 시도 #1:
우선 게임이 RPGM MV (RPG Maker MV)인지 RPGM MZ (RPG Maker MZ)인지 확인합시다.
MV일 경우, 게임파일\www\js 경로 파일명들이 rpg_..js 들이 보이며,
MZ일 경우, 게임파일\js 경로 파일명들이 rmmz_..js 들이 보입니다.
https://nwjs.io/downloads 에서 신규 버전의 nw.js를 받아 세팅하기.
Stable normal 으로 받으시기 바랍니다.
MV일 경우, 게임 폴더에서 'www' 폴더와 'package.json' 파일 외의 것들이 nw.js 파일들입니다.
MZ일 경우, 게임 폴더에서 'data', 'img', 'audio', 'js', 'movies', 'fonts' 폴더 외의 것들이 nw.js 파일들입니다.
이 nw.js 파일들은 백업해두고, 신규 버전 파일들을 여기에 넣어 nw.js를 업그레이드.
(동봉되어 있던 게임 제품 설명서 .txt, .pdf, 등등 파일을 같이 날려버리는 분들이 많아 보이는데, 보존하는 걸 권장합니다.)
'nw.exe'를 전에 게임실행 파일의 이름이였던 파일명으로 바꿔주세요.
그리고 게임 실행.
게임 실행시 'Required value 'name' is missing or invalid' 라는 오류 창이 뜬다면,
'package.json' 파일을 열어 "name"의 값을 아무거나 써주세요.
"'name"의 값은 소문자영어/숫자/- 외의 사용은 권장하지 않습니다.
nw.js 호환 오류 창이 뜬다면, 플러그인이 nw.js와 호환이 안 맞아서일 수도 있습니다.
MV 에서 최신 nw.js로 안 된다면, 최대 많은 플러그인과 호환이 맞는 v0.49.2 를 권장하기도 합니다.
그 외의 오류 메세지 창이 뜬다면 어렵지 않게 검색으로 답을 찾으실 수 있을겁니다.
추가 #1:
nw.js 업데이트시 게임 화면이 상좌 측에 붙어 실행이 될 때가 있는데,
고치자면 'package.json' 에서 아래로 수정:
...
"window": {
...
"icon": "www/icon/icon.png",
"position": "center"
}
추가 #2:
pixiJS 업그레이드.
PixiJS는 WebGL과 WebGPU를 사용하여 웹 브라우저에서 풍부하고
상호작용적인 그래픽, 애니메이션 및 게임을 표시하는 고성능 오픈 소스 2D 렌더링 라이브러리입니다.
앞서 말했듯, nw.js 는 Chromium (웹) 소스 기반입니다.
MV일 경우 '게임파일경로\www\js\libs\pixi.js' 을 백업.
MZ일 경우 '게임파일경로\js\libs\pixi.js' 을 백업.
RPG Maker MV 에선 기본적으로 v4를 쓰며, 그 이하/이상을 쓰면 플로그인 등 호환 문제가 생길 수 있어, v4.8.9 를 사용합니다.
https://github.com/pixijs/pixijs/releases/tag/v4.8.9 에서, 'pixi.js' 파일을 받아 '게임파일경로\www\js\libs\pixi.js' 로 이동시키세요.
RPG Maker MZ 에선 기본적으로 v5를 쓰며, 그 이하/이상을 쓰면 플로그인 등 호환 문제가 생길 수 있어, v5.3.10 를 사용합니다.
https://github.com/pixijs/pixijs/releases/tag/v5.3.10 에서, 'pixi.js' 파일을 받아 '게임파일경로\js\libs\pixi.js' 로 이동시키세요.
추가 #3:
RPG Maker는 nw.js(Chromium) 기반으로 해, GPU 사용이 제한됩니다.
기기마다 성능에 따라 다르기에, 렌더링 문제 시 'package.json' 에서 아래로 수정:
...
"chromium-args": "--ignore-gpu-blacklist --ignore-gpu-blocklist",
"window": {
...
}
이 부분은 왠만해선 건들이지 않아도 됩니다.
해결 시도 #2:
nw.js는 앱 폴더 구조가 깨지면 바로 무반응 될 수 있습니다.
package.json이나 node_modules 폴더가 없거나 잘못되면 nw.js가 시작하지 못합니다.
게임 폴더 구조 재확인:
MV일 경우
my-app/
├─ package.json ← 앱 설정 파일, 필수
├─ nw.exe ← nw.js 런타임 게임 실행 파일. 설정 따라 이름 다를 수 있음.
├─ ... ← nw.js 관련 DLL, 파일들
├─ www/
│ ├─ index.html ← 시작 화면
│ ├─ package.json ← 앱 설정 파일, 제작자가 배포 빌드 파일 만들 떄 사용됨
│ └─ ...
├─ js/
│ ├─ main.js ← 앱 메인 스크립트 (선택)
│ ├─ node_modules/ ← JS 모듈 (필요 시)
│ └─ ...
└─ ...
MZ일 경우
my-app/
├─ package.json ← 앱 설정 파일, 필수
├─ index.html ← 시작 화면
├─ nw.exe ← nw.js 런타임 게임 실행 파일. 설정 따라 이름 다를 수 있음.
├─ ... ← nw.js 관련 DLL, 파일들
├─ audio/
├─ data/
├─ img/
├─ js/
│ ├─ rmmz_*.js
│ ├─ ...
│ └─ plugins/
├─ fonts/
├─ movies/
└─ ...
nw.js 는 package.json 을 보고 게임을 실행합니다.
{
"name": "my-app", ← "" 공백일 수도 있음
"main": "index.html",
"nwVersion": "0.71.0" ← 여기에 안 적혀 있을 수도 있음
}
앞서 #1에서 말했듯, 업그레이드 했을 시 "name"에 값을 줘야 할 수도 있습니다.
해결 시도 #3:
로그 확인.
A. 게임 실행 자체가 안 된다면 #1에서 받은 nw.js 로 실험.
1. cmd 실행
> cd 게임폴더
> 신규nw.js파일경로\nw.exe .
실행 → 에러 메시지 확인.
B. 게임의 타이틀까지만 들어갈 수 있다면,
타이틀에서 f12 눌러 개발자 도구 (Developer Tools) 실행.
콘솔에 입력:
> process.versions
펼쳐보면 nw 버전 확인 가능.
게임이 요구하는 nw.js 버전을 알 수 있을 텐데,
이 특정 nw.js 버전을 https://dl.nwjs.io/ 에서 다운해서 시도.
해결 시도 #4:
특정 DLL이 관리자 권한이 없어 접근이 안되 무반응이 될 수도 있음.
게임을 관리자 권한으로 실행.
추가로:
nw.js 앱은 Visual C++ Redistributable 또는 DirectX 같은 시스템 DLL에 의존할 수 있음.
MSVCP140.dll, VCRUNTIME140.dll 같은 파일이 있어야 한다는 뜻.
보통이라면 이 파일들이 없을 경우엔 위 특정 파일들이 없다고 오류 메세지가 뜨긴 함.
Microsoft Visual C++ Redistributable 또는 DirectX End-User Runtime 가 설치 안 되어 있으면 설치.
게임이 고쳐졌다는 게 확인이 됐고 재배포할 생각이시라면, 백업했던 nw.js 파일들을 지워주세요.
또한, 차후 자료 버전 비교 확인을 하는 이용자나 파일 업데이트/개선 등 하는 개발자 분들을 위해,
본인이 한 파일 변경이 명시가 되도록 package.json 에 '해결 시도 #2' 에 보이듯이 "nwVersion" 을 작성해 주시기 바랍니다.
pixi.js 업그레이드는, pixi.js 파일을 열면 버전이 적혀 있는 것으로 확인이 됩니다.
또한 파일 복구시 자료 버전 구별을 위해 명시해주시기 바랍니다.
#2를 #1 아래로 두는 이유는, 게임이 전에 이미 잘 작동이 된 것을 확인 했기 때문.
만약 게임 원본 백업이 없고 실수로 게임 파일을 잘못 건들었을 시 #2를 권장.
#4는 관리자 권한이 필요한 시스템 안전에 영향을 끼치는 단계이기에 마지막으로 적어뒀습니다.
