Beh, in realtà il punto è che non so esattamente come procedere, o meglio non so bene di cosa si occupa specificatamente un Game Engine Programmer rispetto agli altri. L'unica cosa su cui sono sicuro è che il mio obiettivo non è quello di creare il codice da zero, quindi penso che la strada che voglio intraprendere non sia quella di Game Engine Programmer. Il punto è: quali sono esattamente i compiti degli altri? Non vorrei che alla fine scelgo un ruolo che non mi si addice.
Come detto sopra, studi piccoli e medi tipicamente usano game engine già completi, collaudati e mantenuti da professionisti (Unreal Engine, Cryengine, Unity...).
Il ruolo che tu descrivi è riservato a grandi studi (almeno qualche decina di sviluppatori software) dove i ruoli sono molti e diversi. Se tu lavori nel team di engine develeoper (insieme ad altre persone ovviamente, non lo farai mai da solo a meno che non devi scrivere giochi semplicissimi), ci saranno altri team che si occuperanno delle animazioni, altri dei tools per lo sviluppo e interfacce utente, altri del networking, altri si occuperanno del gameplay, dei contenuti...
Giusto per darti una idea, sul sito del team Cryengine nella sezione "carriere" ci sono offerte di lavoro per posizioni aperte nei più disparati ruoli, tra cui, appunto, engine programmer:
http://www.crytek.com/career/offers...gramming-engineering/senior-engine-programmer Nella colonna di sinistra vedrai anche altre posizioni aperte e la descrizione delle stesse. Puoi farti una idea dell'immensità di competenze e il numero di persone richieste anche solo per creare l'engine, su cui dopo qualcuno creerà un gioco (Cryengine è un engine, non un gioco...).
Riassumendo: il C++ è il linguaggio d'elezione per creare engine potenti e complessi, ma voglio sottolineare un paio di cose:
1) C++ è un linguaggio complesso e "pericoloso", se non lo conosci bene rischi di farti male.
2) C++ è solo un linguaggio, per contribuire allo sviluppo di un engine è necessario avere forti competenze in software engineering e software development (non solo saper programmare, ma anche sapere *come* farlo).
3) Programmare è solo parte dell'implementazione: se programmi la parte grafica dovrai avere solide nozioni di algebra lineare e algoritmi; se programmi la parte network dovrai conoscere le reti di calcolatori molto bene... e così via
4) Non lo fai da solo.