Eu só preciso criar instâncias de todos os meus gráficos na memória carregados do arquivo? Qual a melhor forma de lidar com isto? Eu só preciso de algum tipo de gerenciador de ativos que crie essas instâncias gráficas durante a tela de carregamento e depois seja referido posteriormente?
Quais são as coisas comuns que precisam ser pré-carregadas nos jogos? Quanto devo pré-carregar?
Vale a pena mostrar algum tipo de barra de progresso? Como posso manter o tempo de carregamento curto? Como deve ser a tela de carregamento?
Quais são alguns bons exemplos de telas de carregamento? Algum exemplo de código?
Especificamente, meu jogo é para Andriod (Java / mobile), mas fique à vontade para tornar suas respostas genéricas.
Respostas:
O que é típico de pré-carregar é tudo o que você precisará em tempo real. Excepto conceitos como clipmaps e megatextures (onde a idéia é carregar as partes necessárias e atualizá-las iterativamente à medida que você se desloca no mundo), você desejará manter tudo o que precisa para seu nível / área / qualquer outra coisa na memória e não no disco. O IO é sloooow e você não deseja carregar suas texturas quando virar a esquina e ela está prestes a ser exibida. E por tudo, quero dizer texturas, sons, malhas, metadados ... tudo.
Se você pode mostrar uma barra de progresso (ou seja, você tem um mapeamento preciso das etapas de carregamento em porcentagem), então mostre-a. Caso contrário, mostre pelo menos algo, como uma mensagem curta de texto ou um indicador de carregamento, que é atualizado após cada etapa, para que você possa ao menos dizer que algo está acontecendo.
Se houver algo que você sabe que será necessário, mas não imediatamente, você pode carregá-lo em segundo plano e interromper o jogo (não ótimo, mas certifique-se de que isso raramente aconteça) se for necessário muito cedo. Isso ajudará você a manter o tempo de carregamento baixo. Eu não sei muito sobre o desenvolvimento do Android, ou se será demais para o dispositivo lidar com o jogo, mas geralmente é bastante leve na CPU, por isso não deve haver um grande problema lá.
fonte
Você precisa estar "Reticulating Splines"
fonte
Depende se você estiver indo para uma tela de carregamento e transições instantâneas de nível ou várias cargas.
Eu diria que o último seria melhor na memória.
Algo como:
//First loading screen
Load menu layouts or whatever
Load GUI assets
Show something to pass the time
Switch to menu
//In between levels
Remove any graphics specific to the last level - get rid of something that isn't going to reappear like a boss.
Load level graphics that haven't already been loaded
Again, show progress or something to pass the time
E quando você estiver carregando, certifique-se de não ter uma tela preta. Ou, nesse caso, uma tela estática. Muitas vezes eu vi uma imagem estática por um tempo no início de um aplicativo e pensei imediatamente que ela havia travado.
Uma boa maneira de envolver o jogador simplesmente seria um plano de fundo bem desenhado de uma cena no jogo, ou alguma referência à história; uma barra de carregamento com / sem porcentagem, desde que não seja um 'carregamento' estático; e então talvez algumas informações.
fonte
Nas plataformas iphone e Android, você deve carregar todas as texturas e sons. O carregamento de texturas e sons é muito lento em telefones antigos como iphone 2G, 3G ou G1. Você não pode fazer isso no jogo.
fonte
Como já foi dito, se você puder carregar todos os dados de um nível antes de começar a jogá-lo, terá um desempenho muito melhor. É uma fonte comum de problemas no período de tempo para carregar ativos durante o jogo.
Coisas comuns a serem feitas durante uma tela de carregamento é uma imagem de fundo estática, um nível muito simples, algumas dicas e truques sobre como jogar, animações rápidas etc.
Aqui está a tela de carregamento do APB. Muito legal. :) http://www.youtube.com/watch?v=p5STix1t_1E&feature=related
Aqui está um pseudo-código para mostrar uma barra de progresso em uma tela de carregamento:
Ugh, forçado a usar! = Porque interrompeu a renderização do código quando usei <
fonte
As telas de carregamento podem ser usadas para ocultar praticamente qualquer coisa; carregamento de ativos, quaisquer conexões que ele precise fazer (tcp, etc), preenchendo mapas com objetos de jogo e inicialização.
A maneira como costumo lidar com as coisas é ter algum tipo de gerente de ativos (ou talvez um gerente para cada tipo de ativo - sons, gráficos etc.) e fazer com que carreguem o que será usado na memória. Depois, faça com que seu jogo retire referências dos gerentes.
Mostrar uma barra de progresso, determinar o que pré-carregar, etc. parece depender do seu projeto, é o tempo de carregamento e o seu gosto. As barras de progresso são boas se forem precisas e são uma carga longa (é bom saber quanto tempo você precisa esperar).
Com isso dito, no meu telefone Android, eu tendem a favorecer aplicativos que têm sua própria tela de carregamento personalizada e de bom gosto. Não precisa de uma barra, mas a animação informa ao usuário os programas que estão funcionando. Eu acredito que o Android tem uma barra padrão que você pode usar, o que faz o trabalho bem.
Aqui está uma pergunta SO que pode lhe interessar.
fonte
Vale ressaltar que as plataformas com requisitos de controle de qualidade (por exemplo, X360, PS3, DS etc.) exigirão que você tenha alguma forma de animação na tela de carregamento (ou na verdade qualquer tela que permaneça estática por mais de alguns segundos )
Isso ocorre porque, caso contrário, o usuário pode pensar que seu jogo travou, quando na verdade está demorando muito para carregar. Mesmo quando isso não é um requisito, eu certamente o aconselharia.
Qualquer forma de animação é boa, mas uma barra de progresso simples pode não ser a melhor, pois grandes etapas no carregamento podem fazer com que a barra de progresso não se mova por um tempo, o que significa que a tela é tão estática como se houvesse sem bar. Melhor mostrar alguma imagem em movimento contínuo, como um ícone rotativo, além de um indicador de progresso.
fonte
Para as telas de carregamento do Conquest , eu acompanhava um pouco da descrição da missão (que tipo de jogo era, assim como um pouco da história da missão) e alguma ajuda básica sobre os comandos.
No fundo, eu estava carregando sons. Os gráficos eram todos carregados sob demanda, e isso parecia funcionar muito bem para o nosso jogo, mas os sons eram um urso, então eu pré-carreguei todos os sons necessários para a missão. O botão Carregando / Iniciar fica desativado até que tudo esteja carregado, mas não tenho nenhum tipo de animação (o que seria uma boa coisa para adicionar).
Este é o nosso primeiro jogo, então ainda estamos aprendendo muito, mas isso funcionou bem para nós até agora.
fonte