Voilà mon idée:
Tu commences par faire, en parallèle:
-des programmes de + en + complexes mais avec des fonctions réutilisables utilisant l´une ou les deux des API
-sur papier, tu fais n schéma de ton moteur incluant les ECHANGES entre les différentes sections(entre le son, le graph, la physique,etc.)
-tu crées le "monde" qui sera utilisé pour ton moteur, c´est-à-dire des moyens pratiques pour les programmes utiliosant ton moteur, en outre des unités comprenant les propriétés des models, des éléments du décor,etc.
-étudies bien les jeux de différnetes générations pour trouver des idées pour optimiser ou embellir ton moteur. Deux exemples très simples qui me viennent à l´esprit. Dans Jedi Knight, les persos voient leur nombre de polygones diminuer à mesure que le joueur s´éloigne d´eux, ça peut etre une idée à retenir; et dans Max Payne, si tu as la "chance" de crever à proximité d´un mur et que tu vois les particules de sang voler lentement dans sa direction, tu verras comment se propage le sang sur le mur(le mur se colore suivant le nombre de particules qui entrent en collision avec la meme zone).
Tu devrais déjà en avoir pour un certain temps, après il ne restera plus qu´à passer à la pratique. Par contre, ne pense surtout pas à l´optimiser dès le départ, ce qui compte c´est qu´il intègre toutes les fonctionnamlités que tu as prév. Enfin donc il suffira de le déboguer le plus possible tout en l(optimisant.
Ouf...