Eu acho que os jogos modernos deveriam ter conseguido se livrar das telas de carregamento.
Suponho que a verdadeira razão pela qual ainda temos telas de carregamento é que a maioria dos jogos foi projetada para rodar no hardware do Xbox 360. Como tal, eles serão limitados na quantidade de aríete em que podem carregar as coisas e em quanto eles podem fazer rosqueamento. Se você não tiver memória RAM suficiente, será necessário retirar muitas coisas da memória e recarregá-las do disco. Também é mais fácil carregar tudo de uma vez.
Também há momentos em que coisas como o disco rígido podem parar. O que acontece se o usuário estiver executando antivírus em segundo plano. Se você não estiver pré-carregando o material, poderá ser necessário que o jogo pause enquanto aguarda o carregamento dessa malha ou a exibição espontânea de coisas.
Jogos como Skyrim podem fornecer a você um mundo aberto que você pode percorrer o quanto quiser, mas assim que abre uma porta para carregar uma masmorra relativamente pequena, você fica preso em uma tela de carregamento.
O único motivo pelo qual pude ver a tela de carregamento de masmorra sendo necessária é se eles usam alguma iluminação pré-cozida extra pesada usada para cenas internas que são razoavelmente grandes para carregar (feitas de uma malha gigante ou possuem mapas de luz detalhados) ou precisam de alguns cálculos para serem feitos em tempo de execução. Eu acredito que as masmorras de Skyrim são construídas a partir de malhas modulares em vez de uma malha gigante (pelo menos eu acho que o Oblivion é onde).
Não há motivo real para carregar mais do que as coisas que você realmente pode ver ao entrar no nível. Da mesma forma que os jogos não renderizam coisas que você pode ver, você pode selecionar o que realmente precisa ser carregado imediatamente. Você também pode colocar muitos objetos fictícios no espaço reservado. Em seguida, você pode usar o encadeamento para carregar de forma assíncrona objetos nas áreas circundantes, suas malhas, texturas e assim por diante, à medida que o reprodutor se move pelo ambiente.
A maneira como eu abandonaria as telas de carregamento é a seguinte:
Carregue as propriedades básicas do mundo do jogo. Scripts globais.
Carregue a posição do jogador.
Carregue o nó da célula de grade / BSP dessa posição.
Carregue apenas as caixas delimitadoras dos objetos nessa célula.
Calcule o que realmente seria renderizado (testes nas caixas delimitadoras, talvez testes de renderização por oclusão)
Carregue as malhas do material que é renderizado.
Carregue os materiais das texturas das malhas.
Faça mais testes para ver se mais regiões estão visíveis e precisam ser carregadas (ou seja, consulte uma renderização de uma célula da grade inteira como um cubo gigante).
Depois que tudo visível estiver carregado, inicie a renderização.
Carregue o restante das coisas nas células e Carregue mais, conforme necessário. Carregue regiões próximas e faça algumas previsões básicas sobre os movimentos dos jogadores para escolher quais regiões precisam ser carregadas primeiro. Continue até a memória ficar cheia.
Existem outras coisas que precisam ser levadas em consideração. Por exemplo, algumas coisas precisam ser carregadas, mesmo que não sejam visíveis. Por exemplo, um inimigo que está atrás do jogador fora da região precisaria estar ativo para poder correr em direção ao jogador e atacá-lo. Possivelmente, o material de teste de oclusão não é essencial, pois você imediatamente desejará carregar qualquer coisa próxima, para que esteja lá quando o jogador se mover e se tornar visível, mas pode demorar um segundo para ir direto para a renderização (mas se o tempo estiver tão próximo, você estará provável que tenha problemas com o material aparecendo).
Se possível, essas etapas devem ser iniciadas antes de serem necessárias, encadeadas em segundo plano. Por exemplo, se você estiver no menu principal do jogo, ele deverá começar a pré-carregar a área inicial, depois que você escolher "Novo Jogo" (ou assim que o menu aparecer) e a última gravação para continuar. Outras gravações podem ser pré-carregadas quando você move o mouse sobre elas. À medida que você se aproxima de uma porta de masmorra, ela deve começar a carregar o próximo nível (embora se você puder fazer isso, não precisará de uma porta de masmorra especial, pois elas realmente são apenas para acionar uma tela de carregamento). Carregue em segundo plano enquanto o vídeo é reproduzido. Dessa forma, você nem precisaria de uma pequena tela de carregamento inicial.
Você pode pular muito disso se não se importar com as coisas que estão surgindo. Algo como o Second Life apenas deixa você com coisas aparecendo, já que, sendo recuperado da internet, não há muito o que fazer sobre isso. O credo de assassino tem esse efeito em que coisas entram em cena, para que você possa se safar por motivos artísticos.