Bạn có cần trình quản lý tài nguyên cho các trò chơi HTML5 không?


7

Thông thường, trình quản lý tài nguyên là cần thiết cho các trò chơi trên máy tính để bàn / thiết bị di động. Nhưng nó có cần thiết cho các trò chơi HTML5 (trình duyệt) không?

Trách nhiệm chính của người quản lý tài nguyên là đảm bảo không có bản sao của tài nguyên trong bộ nhớ. Nhưng trong trình duyệt, khi bạn yêu cầu một cái gì đó, yêu cầu thường được lưu trữ. Vì vậy, khi bạn thực hiện một yêu cầu khác cho cùng một tài nguyên, tài nguyên sẽ không được tải nữa. Bạn ngay lập tức nhận được nó. (CMIIW).

Vì vậy, bạn có cần trình quản lý tài nguyên cho các trò chơi trình duyệt html5 không?

Cảm ơn.

Câu trả lời:


6

Trừ khi bạn vượt xa những gì có thể được lưu trữ hợp lý trong bộ nhớ, bạn không cần một trình quản lý tài nguyên nâng cao. Điều đó cũng đúng với các trò chơi trên máy tính để bàn, hầu hết các trò chơi "nhỏ" đều biến mất khi chỉ cần tải mọi thứ vào bộ nhớ khi khởi chạy, và sau đó nó sẽ ở đó khi cần.

Trong HTML và JavaScript, bạn không có quyền kiểm soát trực tiếp tài nguyên theo cùng một cách, trình duyệt có trình quản lý tài nguyên tích hợp hoạt động cho bạn. Tuy nhiên, có thể là một ý tưởng tốt để giúp nó một chút để đạt được tất cả các hình ảnh được tải khi khởi chạy và ngăn không cho chúng bị tải khi không sử dụng.

Với mục đích này, bạn có thể tạo ra một loạt các yếu tố hình ảnh và đính kèm các hình ảnh cần thiết vào chúng, điều này sẽ khiến hình ảnh được tải và lưu lại trong bộ nhớ. Bạn thậm chí không cần phải đính kèm chúng vào tài liệu, chúng có thể đơn giản tồn tại dưới dạng các thực thể ảo trong tập lệnh của bạn.

Đây là phần tải của một trò chơi tôi đã viết. Nó tải 27 hình ảnh theo cách được mô tả, nó liên tục kiểm tra xem tất cả chúng có được tải cùng với thân tài liệu hay không, nó hiển thị một bộ đếm cho người dùng biết quá trình tải đã tiến triển đến đâu và cuối cùng gọi một hàm để hiển thị menu khi tất cả các tài sản nạp vào.

<body onload="bodyloaded=1">
<div id='maindivid'>
<p id='loadtext' style='text-align:center;'>
Loading 0/28
</p>
</div>
<script type="text/javascript">
bodyloaded=0
prlimg=new Array
for(a=0;3>a;a++){
prlimg[a]=new Array
for(b=0;3>b;b++){
prlimg[a][b]=new Array
for(c=0;3>c;c++){
    prlimg[a][b][c] = new Image
    prlimg[a][b][c].src = a+(b+(c+".png"))
}
}
}
function updateload(){
    elementsloaded=bodyloaded
    for(a=0;3>a;a++){
    for(b=0;3>b;b++){
    for(c=0;3>c;c++){
        elementsloaded+=prlimg[a][b][c].complete
    }
    }
    }
    document.getElementById('loadtext').innerHTML="Loading "+elementsloaded+"/28"
    if(elementsloaded==28){menu()}
    else{setTimeout("updateload()",100)}
}
updateload()
</script>
//Further code goes here
</body>

Xem mã trong hành động .

Khi tôi nhìn lại, có một vài điều tôi có thể làm khác đi, nhưng nó đủ để thể hiện chức năng.


Cảm ơn, hóa ra tôi vẫn cần một người quản lý tài nguyên. Bên cạnh việc làm như bạn đã làm, tài nguyên của tôi cần một số khởi tạo trước khi nó sẵn sàng để sử dụng. Ví dụ, các shader trong webgl. Nếu tài nguyên cần khởi tạo, chúng ta không thể chỉ dựa vào trình duyệt.
eckyputrady
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.