타일 맵이 2D 배열로 유지되는 2D 등각 투상 게임을 만들고 있습니다. javascript - 2D 배열 초기화 속도
게임 루프는 크기와 맵 배열의 내용을 시작하기 전에
초기화되어야하고 나는이 중 하나입니다 것으로 나타났습니다 : 여기에 16 * 16 맵이 너무 당신이 아이디어를 얻을 생겼는지 프로그램을로드 할 때 가장 큰 병목 현상. 지도가 5000 * 5000이면 상대적으로 고급 컴퓨터에서 약 7 초가 걸릴 수 있습니다 (그림은 꽤 느림).자바 스크립트의 속도에 더 문제가 있습니까? 아니면 코드가 격렬하게 비효율적으로 수행하고 있습니까?
타일 내용을 가지고 배열과 같이 초기화 :
// Create Array to represent tile contents
mapArray = new Array(mapWidth);
for (var i = 0; i < mapWidth; i++) {
mapArray[i] = new Array(mapHeight);
for (var j = 0; j < mapHeight; j++) {
mapArray[i][j] = new Tile("water", 0, false);
}
}
그 배열 보류 아래의 타일 클래스 객체 :
// Tile class
function Tile(type, height, mouseOver) {
// Add object properties like this
this.type = type;
this.height = height;
this.mouseOver = mouseOver;
}
메모리에 5000 * 5000 = 25,000,000 개의 타일 오브젝트를로드하는 경우를 고려하십시오. 그게 많아! 현재 플레이어의 위치에서 로컬 인 객체를 초기화하는 것이 더 합리적 일 수 있습니다. 한 번에 가장 가까운 144x144 영역 만로드되는 MineCraft를 생각해보십시오. – mellamokb
흠, 그건 생각을위한 음식입니다. 고맙습니다. 나는 게임 엔진으로하고 싶은 일이 궁극적으로 위에서 설명한 방법이 최선인지를 결정할 것이라고 생각합니다. 예를 들어, 미니 맵 개요 소프트를 구현하고 싶다면 전체 맵이 이미 초기화되어 있어야 볼 수 있습니다. – Suipaste