Ir para o conteúdo

Red Dead Redemption (Game Mobile Android) Problema com a latência de assets no S3 e CloudFront para projeto de jogo

0

Olá, comunidade,

Estou desenvolvendo um projeto pessoal inspirado no universo de Red Dead Redemption e estou usando a seguinte estrutura para organizar os assets:

👉👉 https://sites.google.com/view/modhello-com/red-dead-redemption 👈👈

Estou enfrentando alguns desafios e gostaria da opinião de vocês, que têm mais experiência com a infraestrutura da AWS.

Visão Geral do Cenário A ideia é usar um bucket S3 para armazenar todos os assets do jogo (texturas, modelos 3D, áudios, etc.) e distribuí-los globalmente com baixa latência usando o Amazon CloudFront. A estrutura de arquivos no bucket está organizada por tipo e função, como podem ver no link de referência.

O Problema Notei que, dependendo da região do usuário, o tempo de carregamento inicial dos assets está um pouco alto. Já configurei uma distribuição do CloudFront apontando para o bucket S3, mas parece que ainda não está otimizado como deveria.

Configuração Atual Bucket S3: Localizado em us-east-1, com acesso público bloqueado e servindo os dados para o CloudFront através de um OAI (Origin Access Identity). CloudFront: Distribuição com as configurações padrão, usando a OAI para acessar o S3. O TTL padrão está mantido. Questões Gostaria de saber se alguém tem alguma sugestão para melhorar essa arquitetura. Minhas dúvidas principais são:

A estrutura de pastas dentro do bucket S3, como a do link, pode impactar o desempenho do CloudFront? Seria melhor ter uma estrutura mais "flat"? Quais seriam as políticas de cache (Cache Policy) e TTL mais recomendadas no CloudFront para assets de jogos que não mudam com frequência? Existem outras configurações no S3 ou CloudFront, como "Transfer Acceleration" ou "Lambda@Edge", que poderiam ser úteis para reduzir a latência de forma significativa neste tipo de aplicação? Para a entrega de arquivos grandes (acima de 1GB), qual seria a melhor abordagem? Streaming com o CloudFront ou alguma outra estratégia? Agradeço antecipadamente por qualquer ajuda ou insight que possam compartilhar

feita há um mês45 visualizações
1 Resposta
0

Vou compartilhar algumas recomendações para otimizar a entrega de assets do seu jogo inspirado no universo de Red Dead Redemption:

  1. Estrutura de pastas no S3: A estrutura de pastas em si não afeta significativamente o desempenho do CloudFront. O CloudFront se preocupa com o objeto individual e não com a hierarquia. No entanto, uma estrutura organizada facilita a gestão e a aplicação de políticas específicas por tipo de asset.

  2. Políticas de cache e TTL recomendadas: Para assets de jogos que raramente mudam:

  • Configure TTLs longos (semanas ou meses) para assets estáticos
  • Use cache-control headers com "max-age" elevado
  • Considere a política de cache CachingOptimized predefinida do CloudFront para maximizar a taxa de acertos no cache
  1. Configurações adicionais para reduzir latência:
  • Ative o Transfer Acceleration no S3 se você estiver fazendo uploads frequentes de novos assets
  • Considere usar Lambda@Edge para personalizar o conteúdo com base na localização do usuário ou dispositivo
  • Ative a compressão no CloudFront para arquivos compressíveis (texturas, áudios)
  • Configure o Origin Shield do CloudFront para reduzir a carga no seu bucket S3
  • Utilize o CloudFront Functions para manipulações simples de requisição/resposta
  1. Entrega de arquivos grandes (acima de 1GB):
  • Divida arquivos muito grandes em partes menores que podem ser baixadas em paralelo
  • Use Range Requests para permitir que o cliente baixe partes específicas do arquivo
  • Configure o CloudFront para streaming de arquivos grandes
  • Considere implementar um sistema de download progressivo onde o jogo pode começar com assets essenciais e baixar o restante em segundo plano
  1. Otimizações adicionais:
  • Implemente um sistema de carregamento progressivo no jogo
  • Priorize o download de assets críticos primeiro
  • Considere usar formatos de arquivo otimizados para web/mobile
  • Implemente um sistema de versionamento para facilitar atualizações incrementais

Essas otimizações devem ajudar a reduzir significativamente a latência inicial de carregamento do seu jogo, proporcionando uma experiência mais fluida para os usuários em diferentes regiões.
Sources
VocabularySummary - Amazon Connect
Voice - Amazon Polly

respondido há um mês

Você não está conectado. Fazer login para postar uma resposta.

Uma boa resposta responde claramente à pergunta, dá feedback construtivo e incentiva o crescimento profissional de quem perguntou.