Je ne suis pas sûr de comprendre ce que tu entends par virtualiser un jeu vidéo. Si j'ai bien saisi ta pensée, c'est à peu près ça. On passe finalement assez peu de temps sur le développement en lui-même.
En ce moment, je travaille sur un logiciel de gestion pour un dispensaire SPA. J'ai passé une petite semaine à les écouter m'expliquer leur besoin, à étudier comment ils fonctionnent. À partir de là, pendant une semaine, je leur ai présenté des maquettes du programme, en dessinant les fenêtres à venir au crayon à papier. Une fois les maquettes validées, j'ai rédigé un cahier des charges indiquant exactement ce que le programme devra faire.
Tout ça, c'est les spécifications fonctionnelles de mon programme : il devra permettre de faire ça, ça, quand on clique sur ce bouton, il devra se passer ça, telle fenêtre contiendra le tableau suivant...
Ensuite, on passe au travail algorithmique. Toujours sur papier, préparer des algorithmes, c'est à dire concevoir les actions effectuées par l'ordinateur et leur enchaînements. Par exemple, pour mon jeu, j'ai prévu que si un personnage n'a plus de vie, il meurt. Eh bien, là, je regarde comment je vais le faire : si la variable vie est inférieure à 0, alors appeler la fonction "meurt"...
Encore sur papier, je prépare la structure de mes données. Ma base de données contiendra des usagers, des animaux, un animal appartient à un usager et est d'une espèce, etc.
Ensuite seulement, je commence le développement à proprement parler, que j'ai ici décidé de faire en C++ avec Qt. Au moment où je commence à coder, je dois savoir exactement tout ce que je vais faire, et ne plus avoir à me soucier que des problèmes purement techniques.