고급강의실
2016.01.07 21:15

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

조회 수 4741 추천 수 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 7383 1
192 중급강의실 한글암호 만들기 5 치와도라 2014.04.26 1856 0
191 중급강의실 픽쳐 서서히 등장! 픽쳐 서서히 퇴장! 4 치와도라 2015.04.29 965 2
190 고급강의실 타이틀에 동영상을 넣는 플러그인 사용법 5 file 러닝은빛 2016.01.08 2589 1
189 초급강의실 커먼이벤트로 은행시스템 만들기(23:00 그림 링크 재수정) 3 file 이니군 2017.08.28 1475 0
188 중급강의실 캐릭터레이더로 통맵만들기. 3 file 천무 2006.06.05 12300 23
187 고급강의실 캐릭터그래픽 픽셀 3  운 2014.07.19 3621 0
186 고급강의실 카카오소프트 님의 RGSS2 스크립트 강좌 2 Omegaroid 2014.03.27 1667 0
185 중급강의실 초보의 게임제작 도전기! #0 [RPG 만들기?] 치와도라 2015.05.05 1359 1
184 중급강의실 초보의 게임제작 도전기 #1-1[데이터 베이스 둘러보기] 2 치와도라 2015.05.05 1406 2
183 초급강의실 초보가쓰는 초보용 Rpg게임 만들기 (xp) 6 Marine 2016.03.13 6168 0
182 고급강의실 처음부터 전체화면으로 시작하기 3 file 러닝은빛 2015.12.21 4119 0
181 중급강의실 찰드 제작강의 "3" -툴의 완벽한 이해를 위한 그날까지 No.1 1 1 file 찰드 2011.09.02 3058 1
180 초급강의실 찰드 제작강의 "2" -툴을 처음 접하면- 4 ◈ÐÆЯΚ◈찰드 2008.09.29 5967 7
179 초급강의실 찰드 제작강의 "1" -겜제작을 시작할때- 5 ◈ÐÆЯΚ◈찰드 2008.08.28 6910 5
178 중급강의실 찰드 도트강의 "1" -케릭터 레이더의 이해 (1/2)- 6 ◈ÐÆЯΚ◈찰드 2009.08.16 6195 4
177 중급강의실 쯔꾸르 게임을 네코플레이어에 최적화 시켜보자! # 해상도 편 22 file 양갱님 2016.04.17 35731 10
176 고급강의실 죽노의 RGSS 이것저것(1) 6 죽은노예 2013.10.23 2129 1
175 중급강의실 저 게임만들고 싶어요!! -0- 기초 4 시버암 2014.06.13 1725 0
174 초급강의실 저 같은 사람 생기지 말라고 만드는 XAS(액션알피지[액알])강 좌!(VX ACE용) 약빨은ㄱㅏㅅㅣ 2017.11.28 1228 0
173 중급강의실 잠와서 실수가 많은 저 게임만들고 싶어요 -1- 데이터베이스-1- 1 시버암 2014.06.14 1166 0
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 Next
/ 10






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

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