🤔 Para Refletir :
"O que e um game dev? Uma miseravel pequena pilha de projetos !"
- codingkitsune

RPG Maker MV Possível Solução para LAG no RMMV [mv]

Hector MG. Barbossa

Cidadão
Membro
Membro
Juntou-se
24 de Junho de 2015
Postagens
121
Bravecoins
0
Pessoal, o documento completo pode ser encontrado NESTE TÓPICO.

Eu testei esse recurso em meu jogo e realmente deu certo em uma coisa que estava me incomodando muito, o pré carregamento de arquivos de áudio OGG. Não sei se tem alguma relação isso mas eu notei uma diferença enorme nesse quesito, pode ser que algo que eu tenha feito no computador tenha influenciado nisso mas não me lembro mesmo de ter feito nada atualmente (a não ser de te-lo formatado hoje u.u), mas eu testei isso a três dias atrás.

Quanto ao lag eu não testei ainda de forma correta, acredito que pode estar sim ajudando nisso também, então, sem delongas eu vou colocar abaixo somente o que você deve fazer, sem ficar explicando um monte de coisa e recurso, tem isso no link acima em inglês. Vamos lá

No seu Windows acesse a pasta no caminho <install-dir>/nwjs-win/package.json e abra esse arquivo, nele você vai encontrar o código abaixo. Notem que uma linha eu coloquei em negrito, essa linha não existe em seu arquivo original, então você deve coloca-la alí e salvar o arquivo. Provavelmente o Windows não vai deixar você substituir o arquivo existente, então save ele no seu Desktop, recorte ele e salve por cima do original substituindo-o. Rode seu RMMV e note a diferença. Comigo esta sendo uma mão na roda com o carregamento de audio, não sei se ele melhora tambem o carregamento de imagens, isso vou testar mais adiante.

{
"name": "KADOKAWA/RPGMV",
"main": "www/index.html",
"js-flags": "--expose-gc",
"chromium-args": "--ignore-gpu-blacklist",
"window": {
"title": "",
"toolbar": true,
"width": 816,
"height": 624,
"icon": "www/icon/icon.png"
}
}

Uma outra dica é para aqueles que usam resolução diferente em seus jogos. Quando forem usar resolução diferente da normal do RMMV, você deve editar esse mesmo arquivo e modificar as linhas abaixo, assim o maker toda vez que entrar ele não vai carregar a resolução padrão dele e depois a sua, vai carregar diretamente a resolução que você escolheu para seu jogo, poupando tempo e recursos da máquina. Por exemplo eu uso 816x480.

"width": 816,
"height": 624,

Espero que isso ajude o pessoal que esta sofrendo coo eu com o LAG do RMMV. Postem seus resultados pessoal!
 
giphy.gif


Vou testar quando chegar em casa!
Se funcionar espero que tenha um "argumento" semelhante para outros navegadores.
 
Olha acho bom não arriscar e colocar o código no diretório padrão.

Quando você no "Implantação" para portar seu jogo para Windows ele criará todos os arquivos desse diretório aí, então fica melhor de mudar no package.json do próprio jogo XD

PS: Aqui não mudou nada ;-;

Na RPG Maker Web é engraçado que eles fizeram um tópico pra isso... mas se fosse tão importante/necessário/não afeta em nada eles colocariam isso em uma atualização pra vir por padrão.
 
Só vai fazer diferença para algumas placas de vídeo. E só quando for exportado para Windows, se exportar pra web tb não vai fazer diferença.
 
Ah sim, com certeza.

Experimentem adicionar isso em forma de plugin, deve dar uma aliviada em mapas com muitos eventos ou pictures:

Código:
Tilemap.prototype._sortChildren = function() {
  this.children.sort(this._compareChildOrder.bind(this));
  if ($gameTemp.tileMapSortRequested()) {
    this.children.sort(this._compareChildOrder.bind(this));
    $gameTemp.clearTileMapSortRequest();
  }
};


var oldGameCharacterBase = Game_CharacterBase.prototype.updateMove;
Game_CharacterBase.prototype.updateMove = function() {
  oldGameCharacterBase.apply(this, arguments);
  if (this.isMoving()) {
    $gameTemp.requestTileMapSort();
  }
};

var oldGameTemp_initialize = Game_Temp.prototype.initialize;
Game_Temp.prototype.initialize = function() {
  oldGameTemp_initialize.apply(this, arguments);
  this._tilemapSortRequested = true;
};

Game_Temp.prototype.tileMapSortRequested = function() {
  return this._tilemapSortRequested;
};

Game_Temp.prototype.requestTileMapSort = function() {
  this._tilemapSortRequested = true;
};

Game_Temp.prototype.clearTileMapSortRequest = function() {
  this._tilemapSortRequested = false;
};

var oldSpriteCharacter_updatePosition = Sprite_Character.prototype.updatePosition;
Sprite_Character.prototype.updatePosition = function() {
  var newY = this._character.screenY();
  var newZ = this._character.screenZ();
  if (newZ !== this.z || newY !== this.y) {
    $gameTemp.requestTileMapSort();
  }

  oldSpriteCharacter_updatePosition.apply(this, arguments);
};
 
FelipeFalcon comentou:
Olha acho bom não arriscar e colocar o código no diretório padrão.

Quando você no "Implantação" para portar seu jogo para Windows ele criará todos os arquivos desse diretório aí, então fica melhor de mudar no package.json do próprio jogo XD

PS: Aqui não mudou nada ;-;

Na RPG Maker Web é engraçado que eles fizeram um tópico pra isso... mas se fosse tão importante/necessário/não afeta em nada eles colocariam isso em uma atualização pra vir por padrão.
Seria bem mais viável só que os projetos não são criados com esse arquivo junto. Pelo menos eu não achei esse arquivo na pasta do meu projeto.
 
Caso alguém tenha ficado em dúvida de onde está essa pasta pra que comprou o RpgMV pela STEAM como eu, ou seja, tem o Rpg Maker original, então o caminho é este:

Windows x32 (x86):
Código:
C:\Program Files\Steam\steamapps\common\RPG Maker MV\nwjs-win

Windows x64:
Código:
C:\Program Files (x86)\Steam\steamapps\common\RPG Maker MV\nwjs-win

Sendo C: apenas uma representação da letra atribuida à partição onde o Windows foi instalado.

[EDIT]

Pessoal, testei e pareceu funcionar bem, inclusive com o Plugin do [member=1152]Hudell[/member], só que esse desempenho eu já tinha no Firefox sem precisar de modificações.
O que percebi foi que o Firefox não parece requesitar informaões JSON por XMLRequest e no Google Chrome sim.

Ou seja, somente o Firefox permite rodar um jogo de RpgMV local, assim como o navegador nativo do RpgMV, já no Chrome tem que rodar pelo IP por que ele não conseguirá ler arquivos JSON de dados por causa da segurança do navegador e acusará:
"Failed load" ou algo assim;
 
Voltar
Topo Inferior