이번 메탈페이블은 12월달부터 2월까지 작업하고, 3~11월까동안은 입시때문에 놨다가 12월달 중반기부터 다시 시작한건데
갈아엎기 전께 최적화도 왠지 안좋고, 여러모로 갈아치울게 많아서 갈아엎고 시작한겁니다. 그러니 지금 만들고있는
프로젝트는 실제작기간이 꼴랑 3달정도 되는겁니다. 이번에 만든건 최적화를 많이 마음에 두고 한거라 여기저기 신경쓴게
많죠. 그중 하나가 바로 파티클 시스템을 직접 만들어서 기존보다 효율성을 높이는건데, 그중 일환이 파티클에 쓰이는
그래픽을 미리 불러와서 파티클을 사용할때 그래픽을 불러옴으로써 생기는 맵상의 잔렉을 없애주는 것입니다.
저는 프리로딩이라고 부르고, 게임을 시작하기 전에 로딩 바가 뜨고 진행률을 보여줍니다. 말그대로 그냥 여운 줄려고 만드는
그런 로딩이 아닌 레알, 진짜 최적화를 위한 로딩이죠.
문제는 오늘 제가 만들어둔 프리로딩을 뜯어고치면서 결함을 발견했다는 겁니다. 오늘 저는 원래 쓰던 파티클 엔진에
작은 새 기능을 추가하면서 프리로딩 스크립트를 같이 뜯어고치는데, 기존 프리로딩 스크립트는 같은 이미지 파일을 사용하는
파티클이 두개이상 있을경우 같은 이미지파일을 그만큼 여러번 불러오는 결함이 있었던겁니다. RPG만들기 스크립트 구조상
두번 불러와도 메모리 사용량이 크게 등락하지는 않지만 여러번 불러오는 처리를 하는만큼 처리시간은 자연스레 길어지는
겁니다. 그래서 제가 생각해낸것이 큐(Queue) 배열을 준비하고 거기에 처리해야할 것들만 담아두는겁니다.
조건문을 사용해서 같은 이미지를 사용하면 한번만 불러오게 하는거죠.
그 다음에는 큐 배열에 들어있는 정보를 통해, 필요한 것만 바로바로 처리를 해주는겁니다. 그랬더니 로딩시간이
50%정도 단축됬습니다. 물론 기존 로딩시간도 제 컴퓨터 기준으로 6초정도라서 길지는 않지만,
게임 킬때마다 로딩을 한다고 치면 되도록이면 짧을수록 좋죠. (또 본래 알만은 로딩과정이 없죠.)
특히나 매번 게임을 테스트하기위해 키는 제작자 입장에서는 1초라도 줄어드는게 유익합니다.
* RPG::Cache 에 들어있는 함수들은 비트맵을 불러와 반환해주는 역할도 하지만, 단독으로 사용할경우 비트맵을
불러와 메모리에 등록시켜줍니다. 이렇게 하면 나중에 비트맵을 사용할때 따로 메모리 등록을 할 필요가 없기때문에
미리 비트맵을 불러오면 잔렉을 줄여줄수 있습니다.
* 하지만 저처럼 파티클이나 각종 효과를 많이 쓰시는 분이 아니라면 알만을 위해 굳이 로딩스크립트를 만들 필요는
없습니다. 또 그런경우에는 안 만드는게 더 효율적입니다. 하지만 게임 내에서 그래픽을 한번에 많이 쓰는 경우라면
조금은 고려해볼 가치가 있습니다. 하지만 램이 낮은 컴퓨터에서는 오히려 안좋을수도 있습니다.