질문과 답변

Extra Form

1.이미 MV에서 찍은 맵칩을 그대로 무손실 이미지로 출력하는법이 있나요?


2.중요한건데, 예전 아방스에서 파라셀러 맵핑이 렉을 줄여주고 최적화에 도움이 된다는 요지의 글을 읽었습니다. 특히, 커다란 맵에서요.


하지만 얀플라이는 파라셀라 맵핑은 큰 맵일수록 맵칩 방식보다 렉이 더 심해진다고 했습니다.


무엇이 맞는 말이죠? 모바일에서 게임 최적화는 아주 중요하다고 생각합니다.

 

 3.Grid-Free Doodads는 용량 말고 최적화 측면에서 얼마나 부담이 될까요?

 

 

 

 

 

■ 질문전 필독!
  • 질문할 내용이 이 게시판이나 강좌에 이미 있는지 확인합니다.
  • 하나의 게시물에는 하나의 질문만 합니다.
  • 제목은 질문의 핵심 내용으로 작성합니다.
  • 질문 내용은 답변자가 쉽게 이해할 수 있도록 최대한 상세하게 작성합니다.
  • 스크립트의 전문이 필요할 경우 txt 파일 등으로 첨부해 주시기 바랍니다.
  • 답변받은 게시물은 삭제하지 않습니다.
  • 답변이 완료된 경우 해당 답변해주신 분들께 감사의 댓글을 달아줍니다.
    • 처음 오신 분들은 공지 게시물을 반드시 읽어주세요!

※ 미준수시 사전경고 없이 게시물을 삭제합니다.

Comment '9'
  • profile
    구륨 2016.09.27 13:27
    2번은 이벤트 오브젝트때문에 생기는 관점의 문제가 아닐까요? 툴 안에서의 맵핑은 한계가 많기 때문에 이벤트까지 동원해서 맵을 꾸며야 하고, 넓을 수록 필요한 이벤트 수도 늘어납니다. 하지만 통짜로 맵을 그려 넣을 경우엔 데코 용도의 이벤트 오브젝트가 거의 필요 없거든요.

    단순히 넓은 맵을 찍기만 한다면 툴 맵핑이 더 가볍겠지만 현실적으로는 이벤트 때문에 더 무거워 질것 같다는 생각이 듭니다.
  • profile
    러닝은빛 2016.09.27 18:18

    1. Orange Mapshot을 쓰면 1:1로 출력이 가능합니다.
    2. 용량과 그림 크기가 커지면 메모리가 그만큼 증가하므로 렉이 걸릴 수 있는 것이 맞습니다. 다만 캔버스 타일맵 성능이 좋지 않아서 실제로 테스트 해보면, 타일맵은 스크롤 성능이 좋지 않아서 움직일 때 마다 렉이 걸리는 듯한 느낌이 있습니다. 오히려 패러랠스 맵핑은 용량 문제가 정말 심각하지만 일단 같은 조건에서 더 부드럽게 돌아가는 느낌이 있습니다. 하지만 용량 문제로 메모리에 부담이 될 수 있는 것은 사실입니다. 다만 모바일 기본 캔버스 타일맵은 내부에 거대한 비트맵을 보관하므로 애초에 좋지 않은 부분이 있습니다. 또한 패러랠스 맵핑은 WebGL 모드에서는 사용이 불가능합니다. 모바일에서는 RAM(메모리)이 보통 1GB 정도이며 꽤 부족하고, 텍스처의 크기가 보통 4096까지가 제한이기 때문입니다.
    3. WebGL 모드로 돌리면 스크롤 성능이 좋아지므로 굉장히 빠른 속도로 이용 가능합니다. 다만 MV에서는 텍스처를 압축하지도 않기 때문에 부담이 있고 위와 같이 메모리 상에서 제한되는 부분이 좀 있습니다. 그리고 RMMV에서는 비트맵에 그림을 그린 후에 복사해서 사용하기 때문에 WebGL 모드에서도 캔버스 방식을 여전히 사용하고 있는 것도 문제입니다.


    요약

    용량 최적화 : Grid-Free Doodads 플러그인 > 패러랠스 맵핑

    스크롤 성능 : Grid-Free Doodads 플러그인 < 패러랠스 맵핑

    메모리 최적화 : Grid-Free Doodads 플러그인 > 패러랠스 맵핑

    체감상 속도 (Canvas 모드에서) : Grid-Free Doodads 플러그인 < 패러랠스 맵핑

  • ?
    잠행인 2016.09.28 08:10
    오직 속도만 비교했을때 패럴랙스랑 플러그인x인 타일셋 중엔 무엇이 더 낫습니까? 그리고 메모리 최적화란게 잘 이해가 안되는데 메모리 사용량이 높으면 게임이 느려지지 않나요?
  • ?
    잠행인 2016.09.28 08:32
    그리고 현재 프리로딩 플러그인을 쓰고있습니다. 이게 메모리에 부담주는 대신 로딩을 대폭 줄여주는 걸로 아는데, 렉은 오히려 늘어나나요?
  • profile
    러닝은빛 2016.09.28 14:53 Files첨부 (2)
    메모리도 최적화에 상당히 중요하지만, 그에 따른 CPU 사용 시간과 드로우 콜(그래픽 함수 호출 시간)을 줄이는 것도 중요합니다. 개발자 콘솔에서 CPU Pofile를 선택하면, 각 소스가 전체 시간에서 얼마나 CPU 시간을 소비하고 있는지, 어떤 소스가 시간을 많이 사용하는 지 알 수 있습니다. 또한 메모리 상태도 확인이 가능합니다. 개발자 도구에서 Pofiles - Take Heap Snapshot 을 돌리고 확인해보면 메모리를 얼마나 먹고 있는 지 확인이 가능합니다.

    일단 메모리 상에서는 일단 DOM 트리과 컴파일된 코드가 가장 많은 메모리를 차지하고 있습니다 (pixi.js, rpg_objects.js 같은 소스 코드 자체가 제일 많이 차지하고 있습니다) 프리로드에서 사용되는 CacheEntry를 보시면 얼마나 많은 소스가 캐시되고 있고 얼마나 차지하는 지를 알 수 있습니다. 다만 CacheEntry는 게임 초반에는 거의 차지하지 않기 때문에 이렇다고 말 할 수가 없습니다. 초반에는 오히려 좋은 역할을 하고 있다고 볼 수 있는데 시간이 지나면 많이 늘어날 거라고 생각 합니다. (그래서 장기간 플레이 시 저장된 이미지 캐시 메모리 때문에 튕길 수가 있습니다.) 일단 초반에는, Window 부분을 열어서 초반 메모리를 확인해보면, $dataAnimations, $dataTilesets 같은 전역 변수들이 가장 많은 메모리를 차지하고 있다는 것을 알 수 있습니다.

    렉이 늘어나는 지 줄어드는 지는 정확한 수치를 보고 확인을 해보는 것이 좋고, 어느 것이 더 좋을 지도 마찬가지로 실제 프로파일러로 테스트를 해본 후에 판단을 해보는 것이 좋습니다. 물론 이론 상으로는 Grid-Free Doodads 플러그인을 사용하는 것이 좋은 선택입니다. 다만 모바일 크로미움 내부 구현은 이론과는 전혀 다를 수 있기 때문에 이론보다는 실제 테스트가 필요합니다.

    실제 테스트 결과는 다음과 같습니다.

    - 캔버스 타일맵 (canvas tilemap)
    맵 크기 : 41 * 40
    normal.png

    일반 상태 : 35 ~ 38fps
    스크롤링 성능(플레이어를 움직이고 있을 때) : 24 ~ 28 fps (*FPS 저하 심각)
    Graphics.render 성능 : 4984.0 ms (52.95%)
    drawImage 성능 : 2078.5ms (22.08%)
    메모리 상태 : 9,115kb


    - 패럴랠스 맵핑 (Hudell's Orange Overlay)
    맵 크기 : 30 * 30 (1차 시도), 41 * 40 (2차 시도)
    pmm.png

    일반 상태 : 36 ~ 42 fps
    스크롤링 성능(플레이어를 움직이고 있을 때) : 36 ~ 42 fps (저하 없음)
    Graphics.render 성능 : 3214.5 ms (45.17%, 30 * 30), 3999.0 ms (57.8%, 41 * 40)
    drawImage 성능 : 1004.5 ms(14.11%, 30 * 30), 1439.5ms (20.55%, 41 * 40)
    메모리 상태 : 9,235kb (30 x 30), 9,081kb (41 * 40)

    이 관점에서 보면, 캔버스 모드에서의 패러랠스 맵핑은 꽤나 적절하다고 볼 수 있습니다. 

    거대한 그림을 불러와도 실제로는 화면 크기 만큼만 그리게 되니까요.

    반면 모바일 기본 모드인 캔버스 타일맵은 내부에 있는 거대한 비트맵에 실제 타일 갯수만큼 그래픽 함수를 호출해서 모든 타일을 그리게 됩니다. 

    그리고 그렇게 완성한 캔버스를 실시간으로 실제 화면 보여지는 캔버스로 화면 사이즈 만큼만 복사합니다. 

    중간에 타일을 변경하면 다시 처음부터 그립니다. 그리고 스크롤 성능도 좋지 않습니다.

    따라서 해당 플러그인으로 효과를 보려면, WebGL 모드로 돌려야 할 듯 싶습니다.

  • ?
    잠행인 2016.09.28 15:02

    저는 캠버스 타일맵핑 플러그인을 쓰지 않습니다.(혹시 플러그인을 안 써도 여기에 해당한다면 죄송합니다) 페럴렉스 맵핑을 고려하는 것도 이미지를 꾸리려는 것이 아니라 렉을 줄이기 위한 목적이었습니다. 그래도 이 조건과 같다고 봐도 될까요?

  • profile
    러닝은빛 2016.09.28 15:11

    제가 말한 것은 기본 장착된 것으로 플러그인이 아닙니다. 모바일에서는 기본적으로 Tilemap이 캔버스 타일맵으로 생성됩니다. PC에서는 ShaderTilemap으로 생성됩니다. 모바일에서는 webGL 모드로 강제로 돌려야 ShaderTilemap으로 생성됩니다. 일반적으로는 캔버스 타일맵입니다. 따라서 Grid-Free Doodads 플러그인은 모바일에서 캔버스 타일맵을 근본으로 동작하게 됩니다. 캔버스 타일맵 자체에 문제가 있어서 렉을 없애기가 힘듭니다. 또한 방금 테스트를 해보니 WebGL 모드에서도 FPS가 30밖에 나오지 않네요. 제 휴대폰은 2013년에 출시된 휴대폰으로 성능이 그렇게 좋지 않습니다. 참고 하시기 바랍니다.


    + 제가 측정한 수치 상으로는 캔버스 모드에서 그냥 패러랠스 맵핑이 더 우수했습니다. WebGL 모드에서는 텍스쳐의 사이즈가 커지면 좋지 않아지므로 패러랠스 맵핑보다는 일반적으로 생성되는 ShaderTIlemap의 성능이 더 좋았습니다.

  • profile
    러닝은빛 2016.09.28 15:30
    정리하면 모바일이라면,

    - WebGL ShaderTilemap + Grid-Free Doodads

    또는

    - Canvas Tilemap + Parallax Mapping (Hudell's Orange Overlay)

    이 되고, 이에 대한 근거는 위 댓글의 스크린샷들이 설명해주고 있네요.
  • ?
    잠행인 2016.09.28 15:33
    이해했습니다. 감사합니다

List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12391
RMMV 파라셀러 맵핑에 관한 몇 가지 의문점들 9 잠행인 2016.09.27 288
플러그인 사용 RMMV 특정캐릭터의 치명타 데미지 증가 2 Timeout 2020.04.18 119
RMMV 특정조건달성시 스킬삭제에 관하여.. 2 Yuiran 2018.06.30 106
기타 RMMV 특정스탯이 되면 죽은것으로 처리하고 싶습니다. 2 JDG 2020.08.18 50
RMMV 특정 키가 눌려지면 발동하게 하려면, 어떤 스크립트 명령어를 써야하나요? 1 파란소리 2018.06.13 254
플러그인 사용 RMMV 특정 캐릭터에게 기본 공격 평타 계산식을 바꾸고 싶습니다. 1 코코아밀크 2019.05.12 105
이벤트 작성 RMMV 특정 캐릭터들이 파티에 함께 있으면 버프가 발생하도록 만들고 싶습니다 1 유카이 2021.01.26 77
기타 RMMV 특정 직업의 특정 게이지바를 삭제하고 싶어요 2 투캉 2019.02.16 112
이벤트 작성 RMMV 특정 좌표에서 특정 버튼 누르면 이벤트가 발생하게 하고싶어요 2 지박령 2022.12.13 77
RMMV 특정 좌표로 점프하게 하는 법 3 고르고르고 2018.09.11 134
RMMV 특정 조건을 만족해야 스킬이 발동가능하게 하는법 5 Blur 2017.06.18 244
이벤트 작성 RMMV 특정 전투 시작시 메시지를 다르게 하고 싶습니다. 2 땅콩메이커 2023.03.04 45
RMMV 특정 장소에서만 연타를 못하게 하는 방법은 없나요? 투척민 2015.11.23 192
스크립트 추천 RMMV 특정 장비를 착용시 스킬에 소모하는 코스트의 비용을 낮출수 있나요? PPPL 2019.10.13 48
RMMV 특정 장비를 사용 할 경우 스킬의 데미지 계산식이 바뀌도록 하는 방법 8 RoyalNavy 2018.07.03 157
스크립트 작성 RMMV 특정 이벤트의 셀프 스위치를 변경시키려고 합니다. 2 도Vㅏ킨 2021.12.30 98
이벤트 작성 RMMV 특정 이벤트 확인 시, 타이머의 시간 증가 및 감소 방법 2 Oyr 2021.05.30 97
RMMV 특정 이벤트 주변만 밝게하기 3 sirokana 2018.06.12 345
RMMV 특정 이벤트 따라 움직이는 그림 1 파란소리 2018.10.28 110
RMMV 특정 이벤트 달성 시 상점에 파는 아이템이 추가되도록 하고 싶습니다. 6 깡토 2017.07.10 253
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 82 Next
/ 82