Unity est un moteur en "black box", c'est à dire que tu n'a pas le source code disponible. Tu peux le programmer dans plusieurs langages, dont principalement le C#. A ma connaissance par de système de programmation visuelles (blueprint). C'est un excellent outil pour faire des petits jeux ou moyens jeux, sur plusieurs plateformes. Unity est plutot simple d'approche et d'utilisation. Ca tourne bien sur des machines de capacité faibles ou moyennes. Pour les jeu beaucoup plus gros, mieux vaut se tourner vers Unreal. La version 5 est nouvelle, elle devrait être stable d'ici peu. La communauté est très forte.
Unreal est un moteur entierement en C++ dont le source code est disponible. C'est un moteur très gourmand qui permets de faire beaucoup de choses. Il est indiqué pour les gros jeux. Il tourne principalement sur console et PC, même si il y a des essais timide pour les mobiles et HTML5. Il y a beaucoup d'outils integrés comme les blueprints. Le moteur nécessite des configurations moyenne voir très grosses. La version 4.8 est plutôt stable mais dans sa globalité le moteur n'est pas encore mature (aucun jeu pro sorti avec). Vu que le code source est dispo, il est possible de modifier pour ajouter ce qui manque (mais attention c'est de la programmation haut niveau). La communauté est moyenne.
A un niveau amateur, les deux moteurs sont gratuits.
(et je ne pense pas que la France se comporte comme les autres pays)