A menos que você vá além do que pode ser razoavelmente armazenado na memória, não precisa de um gerenciador de recursos avançado. Isso também é válido para jogos de mesa, a maioria dos jogos "pequenos" se limita a carregar tudo na memória no lançamento e, quando necessário, está lá.
Em HTML e JavaScript, você não tem controle direto dos recursos da mesma maneira, o navegador possui um gerenciador de recursos interno que trabalha para você. No entanto, pode ser uma boa idéia ajudá-lo um pouco, a fim de conseguir que todas as imagens sejam carregadas na inicialização e impedir que elas sejam descarregadas quando não estiverem em uso.
Para esse fim, você pode criar vários elementos de imagem e anexar as imagens necessárias a eles, isso fará com que as imagens sejam carregadas e permaneçam na memória. Você nem precisa anexá-los ao documento, eles podem simplesmente existir como entidades virtuais no seu script.
Aqui está a parte de carregamento de um jogo que escrevi. Carrega 27 imagens da maneira descrita, verifica continuamente se todas estão carregadas junto com o corpo do documento, exibe um contador para o usuário informando até que ponto o carregamento progrediu e finalmente chama uma função para renderizar o menu quando todos os ativos estão carregado.
<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>
Veja o código em ação .
Quando olho para ele novamente, há algumas coisas que eu poderia ter feito de maneira diferente, mas deve bastar para demonstrar a funcionalidade.