Effectivement, c'est une question ultra vague...
Personnellement, si tu veux t'orienter vers du JV, t'as plusieurs choix, mais voici ceux qui me paraissent le plus pertinents :
- Unity
Il gère aussi la 2D. Faut t'orienter vers du C Sharp principalement ici, mais n'ayant pas trop touché au moteur, je vais pas m'avancer plus.
- UDK
Là, c'est pas super méchant dans l'ensemble, vu que ya le Kismet, et qu'en gros pour faire des trucs de bases, tu va juste avoir besoin d'agencer des nodes. Pas de la progra à proprement parler, mais plus de la logique de programmation. Ya aussi le language d'UDK, mais là, bonne chance.
- CryEngine ? J'ai pas encore mis la main dessus, donc je connais pas particulièrement, mais renseignes toi, sait-on jamais.
Les trois ci-dessus sont des moteurs graphiques avec un moteur physique, donc si c'est "juste" pour implémenter un gameplay, ce sera le plus simple.