Melhor maneira de organizar entidades em um jogo?

Digamos que eu estou criando um jogo OpenGL em C ++ que terá muitos objetos criados (inimigos, personagens, itens etc.). Gostaria de saber a melhor maneira de organizá-los, pois eles serão criados e destruídos em tempo real com base no tempo, posição / ação do jogador etc.

Aqui está o que pensei até agora: posso ter uma matriz global para armazenar ponteiros para esses objetos. As texturas / contexto para esses objetos são carregados em seus construtores. Esses objetos terão tipos diferentes, para que eu possa converter os ponteiros para obtê-los na matriz, mas desejo posteriormente ter uma função renderObjects () que usará um loop para chamar uma função ObjectN.render () para cada objeto existente.

Acho que tentei isso antes, mas não sabia com que tipo inicializar a matriz, por isso escolhi um tipo de objeto arbitrário e depois lancei qualquer coisa que não fosse desse tipo. Se bem me lembro, isso não funcionou porque o compilador não queria que eu desservisse os ponteiros se não soubesse mais o tipo deles, mesmo que uma determinada função de membro tivesse o mesmo nome: (* Object5) .render () <-doesn funciona?

Existe uma maneira melhor? Como jogos comerciais como o HL2 lidam com isso? Eu imagino que deve haver algum módulo etc. que controla todos os objeto

questionAnswers(5)

yourAnswerToTheQuestion