고급강의실
2016.01.07 21:15

RPG Maker MV 메모리 누수 문제 해결법

조회 수 4734 추천 수 1 댓글 6
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

 

 
RPG Maker MV 에는 현재 여러가지 문제가 있습니다.
 
메모리 사용량 증가 문제
메모리 누수 문제
플러그인 충돌 문제
암호화 문제
용량 문제
모바일 성능 문제
HTML5 에서 세이브 데이터가 사라지는 문제
멀티 플랫폼 배포 문제
fpsmeter.js 의 MIT 라이센스 명시 위반 문제
 
이는 그 중 2가지인 메모리 사용량 증가 문제와 메모리 누수 문제를 다루는 글입니다.
 
메모리 사용량이 증가하는 문제
RPG Maker MV 에는 ImageManager 객체에 리소스 캐시 기능이 있습니다. 
 
리소스를 캐시에 저장해두고 추후에 같은 것을 다시 사용할 땐 다운로드 없이 캐시에 있는 데이터를 바로 쓸 수 있게 하는 기능으로
 
네트워크 통신량을 줄여주는 장점이 있습니다. 
 
다만 ImageManager.clear() 함수를 주기적으로 호출하지 않으면, 
 
결국 캐시 데이터가 쌓이게 돼 메모리 사용량이 증가하는 문제가 생긴다고 합니다. 
 
아래는 공식 포럼에 기재되어있는 패치 원문이며 맵 데이터를 불러올 때 캐시 데이터를 삭제하는 함수를 호출하게 됩니다.
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(function() {
// When loading a new map, consider throwing stuff away:
DataManager._oldPreCacheWiper_loadMapData = DataManager.loadMapData;
DataManager.loadMapData = function(mapId) {
    if (typeof(DataManager._lastSeenMap) == "undefined") {
        DataManager._lastSeenMap = -1;
    }
    if (mapId != DataManager._lastSeenMap) {
        // Purge image data:
        ImageManager.clear();
        // Remember new map id:
        DataManager._lastSeenMap = mapId;
    }
    return DataManager._oldPreCacheWiper_loadMapData(mapId);
}
})();
cs
 
 
메모리 누수 문제 
메모리라고 하면 자바스크립트에 있는 가비지컬렉션이 알아서 해준다고 생각하고 무시할 수 있는데
 
RPG Maker MV 함수에 문제가 있어 원경과 윈도우 객체에 메모리 누수가 발생하고 있다고 합니다. 
 
요약하면 게임을 장시간 플레이하거나 무거운 그리기 작업을 할 때 메모리 문제로 게임이 강제로 종료될 수 있는 상황에 처하게 된 것입니다. 
 
원경이나 윈도우 객체에서 PIXI에 의해 '텍스쳐'가 생성되고 GPU 메모리가 할당되는데
 
MV 에서 추후에 삭제 명령을 내리지않아 메모리 누수가 발생하게 되었다는 것입니다. (즉, 생성만 하고 해제는 따로 하지 않았다는 것)
 
패치는 아래 링크에서 내려받을 수 있습니다.
 
패치 링크
https://gist.github.com/liply/14a2cbe68d2ebb59a7fe (다른 이름으로 링크 저장)
 

 

?
  • profile
    gcyong 2016.01.08 06:01
    MV에 memory leak이 있었군요... 아직 MV 패키지를 구입하지 않아서 확실히 써보진 못했지만, 저런 간단한 명령으로도 문제를 (어느정도) 해결할 수 있다니 다행입니다.
    제 개인적인 생각에는 요즘 PC 환경이 고사양이 되어가고 있고, 보급형 PC의 CPU나 메모리도 상당 수준 올라왔다는 점으로 잦은 캐시메모리 정리보다는 속도와 편의성에 맞춘 것으로 보고있습니다.
    이렇게 깔끔하게 정리된 글은 추천하지 않을 수 없군요 ㅎㅎ 잘봤습니다!
  • profile
    러닝은빛 2016.01.08 17:07
    PC 에서는 문제점이 거의 없을 것 같습니다.
    다만 모바일(iOS)에서 30분이상 게임(장시간)을 플레이 한 결과 기기에서 메모리 부족 경고를 띄웠고 게임이 종료되었다고 합니다.
    모바일 용으로 게임을 배포할 때 이 점을 중요하게 생각해야 할 것 같습니다.
  • profile
    gcyong 2016.01.09 16:57
    아하 모바일이 있었군요.. 답변 감사합니다!
  • profile
    lklslel 2016.02.01 06:25
    자바스크립트인 이상 해당 데이터를 관리해주는 기법을

    개발자 스스로가 생각을 해내어 처리해주셔야 합니다.

    자바스크립트의 경우에 데이터 인스턴스의 갯수만 많아져도

    성능의 저하가 꽤나 발생하게 되는데요. 그 이유는 스크립트

    문자열 자체를 읽어들여 각 단계를 수행하는 ECMA스크립트

    특성상 발생하는 단점을 끌어안고 있기 때문입니다.

    자바스크립트 자체의 연산 메모리 제한 또한 걸려져 있어서

    복잡한 연산이나 동시 다발적인 그래픽 렌더링시에 성능의

    저하나 게임 속도의 저하를 눈으로 확인할 수 있게 됩니다.


    이러한 각각의 단점을 보완하기 위해서는 자바스크립트에

    대한 이해가 필요합니다. MV가 환경적인 지원을 많이

    해주기는 하지만 개발자 또한 코딩시에 스크립트의 한계를

    알고서 작성해야 합니다. 자바스크립트의 설계사상은 본래

    게임을 개발하기 위한 용도가 아니었기 때문에 과잉설계는

    피하고, 구현하려는 시스템 상의 공식이나 표현을 간소화나

    최적화로 매끄러운 연출이 끊기지 않게 해야겠습니다
  • ?
    sse 2016.06.13 19:53
    어떻게 적용하나요?
  • ?
    ㅇㅇ 2019.02.14 15:44
    정말 감사합니다 이걸 적용하니 잔렉 버벅임 다 없어지네요 신기하다

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수 추천 수
공지 초급강의실 게임제작강좌 A-Z 색인 (2016.1.24 ver) 2 file 천무 2016.01.12 7373 1
152 초급강의실 [동영상] 게임을만들자 (1편) - 시작해봅시다- 6 천무 2016.01.11 5697 5
151 고급강의실 [RGSS2 강좌] 기초편 2. 변수와 상수 천무 2016.01.10 617 0
150 고급강의실 [RGSS2 강좌] 기초편 1. 소개 file 천무 2016.01.10 845 0
149 고급강의실 Rpg Maker MV 함수 리스트(공식포럼) 2 plam 2016.01.10 1406 1
148 고급강의실 타이틀에 동영상을 넣는 플러그인 사용법 5 file 러닝은빛 2016.01.08 2578 1
» 고급강의실 RPG Maker MV 메모리 누수 문제 해결법 6 러닝은빛 2016.01.07 4734 1
146 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 18화 적 제작 및 특정지역 전투시스템 5 file 작긔 2015.12.30 1636 1
145 고급강의실 XP to MV 컨버터 사용법 3 file 러닝은빛 2015.12.28 2715 0
144 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 17화 글자 입력 퍼즐 7 file 작긔 2015.12.28 2428 1
143 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 16화 아이템 응용 5 file 작긔 2015.12.25 2620 3
142 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 15화 상자와 아이템 3 file 작긔 2015.12.25 2801 1
141 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 14화 버튼 퍼즐 5 file 작긔 2015.12.23 2109 0
140 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 13화 버튼 file 작긔 2015.12.23 1385 0
139 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 12화 숫자암호 1 file 작긔 2015.12.23 1565 0
138 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 11화 물체 움직이기 응용 2 file 작긔 2015.12.23 1332 0
137 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 10화 물체 움직이기 file 작긔 2015.12.23 1450 0
136 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 9화 타이머 file 작긔 2015.12.23 1571 0
135 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 8화 추적이벤트 file 작긔 2015.12.23 1818 0
134 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 7화 스위치를 이용한 지형만들기 file 작긔 2015.12.23 1604 0
133 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 6화 스위치의 응용 7 file 작긔 2015.12.22 4158 2
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 Next
/ 10






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)