Compartilhar via


Instalação e manutenção de jogos

Este artigo descreve um conjunto de práticas recomendadas que podem ajudar a reduzir a frustração do usuário sobre o tempo necessário para instalar um jogo, evitar chamadas de suporte desnecessárias e permitir que os usuários comecem a jogar da maneira mais rápida e tranquila possível.

Instalação inicial

Os usuários compram jogos porque gostam de jogá-los e não porque gostam de instalá-los. A instalação de um jogo deve ser o mais rápida, direta e indolor possível para o usuário final. Idealmente, os usuários finais não deveriam nem mesmo ver uma interface de instalação, eles deveriam poder simplesmente colocar o disco do jogo na bandeja e começar a jogar.

Simplificação da interface do usuário de instalação

Aspectos comuns das interfaces de instalação de jogos existentes interferem na experiência desejada do usuário final:

  • Fazer perguntas desnecessárias ao usuário.

    Por exemplo, muitos jogos perguntam se o usuário deseja instalar o DirectX. Se o jogo exigir que o Microsoft DirectX seja executado e a versão correta do DirectX ainda não estiver instalada, o jogo deve simplesmente instalar o DirectX.

  • Fazer perguntas ao usuário que a grande maioria responderá da mesma maneira.

    Para usuários comuns, as configurações padrão para o caminho de instalação, o local do menu Iniciar e assim por diante estão corretas. Ofereça opções avançadas para usuários que desejam alterar essas configurações.

A interface do usuário de instalação deve ser projetada para permitir que o usuário comum comece a jogar o mais rápido possível. Se o AutoRun estiver habilitado no computador do usuário, que é o padrão, o programa de instalação deverá presumir que o usuário deseja o mais rápido possível, ignorando quaisquer perguntas desnecessárias. O programa de instalação deve começar a instalar o jogo no caminho de instalação padrão, de preferência usando uma configuração como a descrita em Instalação sob demanda. É apropriado dar aos usuários a chance de alterar as configurações de instalação antes de iniciá-las automaticamente. No entanto, isso deve ser feito solicitando que o usuário pressione uma tecla para obter opções de configuração avançadas e que, em seguida, prossiga automaticamente com as opções padrão se o usuário não pressionar essa tecla dentro de cinco a dez segundos.

Se o AutoRun não estiver habilitado no computador do usuário, o programa de instalação deverá presumir que o usuário não deseja que o programa de instalação comece a instalar o jogo automaticamente. Se o programa de instalação for iniciado por algum meio diferente do AutoRun, deverá ser iniciada a interface do usuário de configuração avançada.

Redução do tempo necessário para a instalação

Atualmente, a maioria dos jogos do Microsoft Windows leva de cinco a trinta minutos para concluir o processo de instalação. Por outro lado, a maioria dos jogos de console não leva mais do que trinta segundos, desde o momento em que o usuário insere o CD do jogo até ele poder jogar. Essa diferença se deve ao fato de que a maioria dos jogos do Windows é projetada para executar a maior parte, senão todo, o conteúdo do disco rígido do computador, já os consoles, que não têm um local para armazenar permanentemente grandes quantidades de conteúdo, exigem que ele seja executado a partir da mídia de origem. Embora o carregamento de conteúdo do disco rígido local torne os tempos de carregamento mais rápidos no jogo, a desvantagem é que todo esse conteúdo precisa ser copiado da mídia de origem para o disco rígido em algum momento. A maioria dos jogos do Windows opta por copiar todo o conteúdo para o disco rígido de uma só vez, como parte de um processo de instalação. Isso prejudica a experiência inicial do usuário com o jogo, fazendo com que o usuário assista a uma barra de progresso por vários minutos antes de poder jogar.

Existem duas abordagens que podem ser usadas para minimizar o tempo gasto na instalação inicial do jogo: instalação mínima e instalação sob demanda.

Instalação mínima

Em um cenário de instalação mínima, o jogo instala apenas um conjunto mínimo de conteúdo no disco rígido. Normalmente, isso consiste apenas no executável do jogo e nas DLLs. O restante do conteúdo é acessado diretamente da mídia de origem. Isso reduz drasticamente o tempo necessário para instalar, já que o executável de um jogo raramente é maior que 10 a 20 MB. A desvantagem é que o jogo leva mais tempo para carregar o conteúdo durante o jogo, pois deve carregá-lo da mídia de origem de forma mais lenta.

Para criar uma configuração de instalação mínima em uma instalação baseada no Windows Installer:

  • Agrupe todos os componentes a serem instalados no disco rígido em um recurso marcado para a instalação local.

    Esse recurso será chamado de recurso Bootstrap.

  • Agrupe todos os componentes que devem ser executados a partir da mídia de origem em um recurso marcado como "executar a partir da origem".

  • Ao abrir um arquivo que pode estar na mídia de origem, use a função MsiGetComponentPath para determinar o caminho do arquivo, em vez de codificar o caminho.

    Isso garante que o arquivo possa ser encontrado mesmo que a letra da unidade de CD/DVD do usuário seja alterada.

  • Comprimir o conteúdo que permanece no CD/DVD.

    A quantidade de tempo de CPU gasta descompactando o conteúdo, geralmente será ocultada pela lenta taxa de transferência de dados da unidade de CD/DVD.

  • Agrupe o conteúdo em arquivos grandes e contínuos e acesse-os em ordem sequencial.

    Os tempos de busca das unidades de CD/DVD são abismais em comparação com os dos discos rígidos, e a maioria das unidades de CD/DVD não atinge as taxas de transferência máximas, a menos que estejam lendo um arquivo grande e contínuo.

  • Disponha o conteúdo do CD/DVD na ordem em que ele provavelmente será acessado.

    Os tempos de busca são bastante reduzidos quando os arquivos são acessados na mesma ordem que o layout em disco.

Instalação sob demanda

Em um cenário de instalação sob demanda, assim como para a instalação mínima, o jogo inicialmente instala no disco rígido apenas os arquivos necessários para iniciar o jogo. No entanto, em vez de acessar o conteúdo restante da mídia de origem sempre que for necessário, o jogo instala cada parte do conteúdo no disco rígido quando é preciso pela primeira vez e, em seguida, acessa-os do disco rígido local em cada uso subsequente. O tempo necessário para a instalação inicial é tão pequeno quanto para uma instalação mínima, mas após a primeira vez que cada parte do conteúdo é acessada, os tempos de carregamento melhoram.

Para criar uma configuração de instalação sob demanda em uma instalação baseada no Windows Installer:

  • Agrupe todos os componentes a serem instalados inicialmente no disco rígido em um recurso marcado para a instalação local.

    Observe que isso é idêntico ao recurso Bootstrap para uma instalação mínima.

  • Agrupe o conteúdo restante em vários recursos com base nos componentes que provavelmente serão usados juntos.

    Por exemplo, em um jogo baseado em níveis, agrupe todo o conteúdo usado em um nível específico em um recurso. Observe que o Windows Installer permite que um componente seja compartilhado por vários recursos, portanto, se você tiver conteúdo usado em vários níveis, poderá adicionar esse conteúdo aos recursos para todos os níveis necessários sem replicar o conteúdo. Todos esses recursos devem ser marcados como "Anunciados", o que significa que eles não serão instalados inicialmente, mas podem ser instalados posteriormente, conforme necessário.

  • Quando um arquivo é necessário, primeiro verifique se o arquivo já está instalado usando a função MsiQueryFeatureState.

    Se ele ainda não estiver instalado (ou seja, seu estado é INSTALLSTATE_ADVERTISED), chame a função MsiConfigureFeature para instalar o recurso localmente. Ao abrir o arquivo depois que ele for instalado, chame MsiGetComponentPath para determinar o caminho do arquivo. Embora não seja estritamente necessário para esse cenário (já que o conteúdo sempre será instalado no disco rígido antes de ser usado), isso facilita o suporte à instalação mínima, além da instalação sob demanda.

  • Se possível, antecipe qual conteúdo provavelmente será necessário em breve e instale-o em segundo plano durante o tempo ocioso.

    A instalação em segundo plano é mais apropriada quando o jogo está em um ponto que não exige o máximo de desempenho do computador, por exemplo, durante a exibição de um filme de introdução, uma cena de corte, um menu e assim por diante.

  • Crie uma opção no menu de opções do jogo para forçar a instalação de todo o conteúdo restante.

    Para implementar isso, crie um recurso que seja pai de todos os recursos de instalação sob demanda e chame MsiConfigureFeature para instalar esse recurso mestre localmente. Isso fará com que os sub-recursos também sejam instalados localmente.

  • O layout do conteúdo deve ser semelhante ao de uma instalação mínima, exceto pelo fato de que o conteúdo deve ser agrupado apenas com outro conteúdo que possivelmente será necessário ao mesmo tempo (por exemplo, todo o conteúdo de um nível deve estar junto).

Jogabilidade após a instalação

AutoRun

Para jogar um jogo que já está instalado, o usuário só precisa inserir o disco de instalação na bandeja da unidade. A primeira coisa que o executável AutoRun no disco deve fazer é verificar se o jogo já foi instalado e, em caso afirmativo, iniciá-lo. Supondo que o jogo tenha sido instalado usando uma instalação baseada no Windows Installer, a verificação para determinar se o jogo está instalado pode ser realizada com uma única chamada para a função MsiQueryProductState.

Conversão de uma instalação sob demanda em uma instalação completa

Embora uma instalação sob demanda permita que o usuário comece a jogar muito antes de uma instalação completa, um usuário pode querer instalar explicitamente o restante do conteúdo do jogo no disco rígido local. O usuário pode querer jogar sem precisar da mídia de origem ou pode simplesmente querer evitar os tempos de carregamento mais longos, que são resultados da instalação do conteúdo sob demanda. Se a configuração do jogo usar o Windows Installer, poderá fornecer uma opção na interface do usuário de opções do jogo para concluir a instalação do conteúdo restante. Quando o usuário seleciona essa opção, o jogo pode chamar MsiConfigureFeature para forçar os recursos restantes a serem instalados localmente, não há necessidade de gerar um aplicativo de instalação separado para fazer isso.

Manutenção de software e conteúdo de jogos

Uma das vantagens que os jogos do Windows têm sobre os de console é a relativa facilidade com que o editor pode lançar atualizações para o jogo após seu lançamento inicial. Se essas atualizações introduzem novos conteúdos ou apenas corrigem bugs, é importante tornar o processo de atualização o mais fácil possível para o usuário final. O processo de atualização é ainda mais importante para jogos online, que normalmente exigem que todos os usuários estejam executando a versão mais recente do jogo para se conectar.

Verificação automática de atualizações

Os usuários não devem ter que se lembrar de procurar patches. Se houver uma atualização disponível para o jogo, o usuário deverá, pelo menos, ser notificado e, de preferência, o patch já deverá ter sido baixado.

Uma maneira simples de um jogo verificar se há atualizações, é conectar-se a um servidor da Web hospedado pelo editor usando um URL específico e baixar um arquivo de texto que especifique o número da versão mais recente disponível do jogo, juntamente com um URL para baixar de um pacote que atualizará o jogo para a versão mais recente.

Verificar se há atualizações sempre que o usuário joga é adequado para garantir que o usuário esteja executando a versão mais recente. No entanto, se a existência de uma nova atualização for descoberta imediatamente antes de o usuário tentar jogar, o usuário poderá ser forçado a adiar o jogo até que o download da atualização seja concluído. Para atualizações grandes ou conexões lentas, esse atraso pode ser de horas. Para evitar forçar o usuário a esperar antes de jogar, o jogo pode usar o Agendador de tarefas para agendar verificações periódicas de novas atualizações. Se uma atualização for detectada, o jogo poderá começar a baixar a atualização imediatamente, sendo provável que ela seja completamente baixada e esteja pronta para instalação na próxima vez que o usuário for jogar.

Baixar patches automaticamente

Quando o jogo detectar que há uma nova atualização disponível, ele deverá começar imediatamente a baixá-la. Como a tarefa que verifica se há atualizações normalmente é executada silenciosamente em segundo plano, o download precisa ser o mais discreto possível. O BITS (Serviço de Transferência Inteligente em Segundo Plano) é um recurso do sistema operacional que permite que os aplicativos baixem arquivos da Internet mesmo quando o próprio aplicativo não está em execução. Os trabalhos de download do BITS são executados somente quando o usuário está conectado e somente quando o computador já está conectado à rede. O BITS não tentará forçar a máquina a se conectar à rede por conta própria. Se o usuário se desconectar da rede ou fizer logoff, o trabalho do BITS será pausado e retomará o download na próxima vez que o usuário fizer logon e se conectar à rede. O aplicativo pode configurar seus trabalhos do BITS para usar apenas a largura de banda da rede que, de outra forma, permaneceria sem uso, a fim de impedir que o trabalho afete o desempenho de quaisquer outros aplicativos que possam estar usando a rede (por exemplo, um jogo online). O BITS está disponível no Windows XP e no Windows 2000 Service Pack 3.

Outros recursos

Para obter mais informações sobre as tecnologias mencionadas neste artigo, consulte os seguintes tópicos:

Para obter mais informações sobre como usar o Windows Installer para jogos, sintonize a coluna Conduzindo o DirectX do próximo mês, "Introdução ao Windows Installer para desenvolvedores de jogos".

MsiConfigureFeature

MsiQueryProductState

MsiQueryFeatureState

MsiGetComponentPath