Depende quase inteiramente de suas necessidades específicas de jogo . Pode funcionar perfeitamente para um jogo simples, mas falha em um sistema mais complexo. Se estiver funcionando para o seu jogo, não se preocupe ou tente projetar demais até que seja necessário.
Quanto ao motivo pelo qual a abordagem simples pode falhar em algumas situações, é difícil resumir isso em um único post, pois as possibilidades são infinitas e dependem inteiramente dos próprios jogos. Outras respostas mencionaram, por exemplo, que você pode querer agrupar objetos que compartilham responsabilidades em uma lista separada.
Essa é uma das mudanças mais comuns que você pode estar fazendo, dependendo do design do seu jogo. Aproveitarei a oportunidade para descrever alguns outros exemplos (mais complexos), mas lembre-se de que ainda existem muitas outras razões e soluções possíveis.
Para iniciantes, vou apontar que atualizar os objetos do jogo e renderizá-los pode ter requisitos diferentes em alguns jogos e, portanto, precisam ser manipulados separadamente. Alguns possíveis problemas com a atualização e renderização de objetos de jogo:
Atualizando objetos de jogo
Aqui está um trecho da Game Engine Architecture que eu recomendaria ler:
Na presença de dependências entre objetos, a técnica de atualizações em fases descrita acima deve ser ajustada um pouco. Isso ocorre porque as dependências entre objetos podem levar a regras conflitantes que governam a ordem da atualização.
Em outras palavras, em alguns jogos é possível que os objetos dependam um do outro e exijam uma ordem específica de atualização. Nesse cenário, pode ser necessário criar uma estrutura mais complexa do que uma lista para armazenar objetos e suas interdependências.
Renderização de objetos de jogo
Em alguns jogos, cenas e objetos criam uma hierarquia de nós pais-filhos e devem ser renderizados na ordem correta e com transformações em relação aos pais. Nesses casos, você pode precisar de uma estrutura mais complexa, como um gráfico de cena (uma estrutura em árvore), em vez de uma única lista:
Outros motivos podem ser, por exemplo, o uso de uma estrutura de dados de particionamento espacial para organizar seus objetos de uma maneira que melhore a eficiência da execução do descarte de exibição de exibição.