Тут как раз ключевое - должен быть один основной язык (либо C# либо Java либо С++) и идин или несколько скриптовых (например вот тут можно выбрать на любой вкус http://www.robert-tolksdorf.de/vmlanguages.html) предусмотренных разработчиками движка.
Обьясню. Дело в том, что скриптовый язык (СЯ) может выполняться в виртульной машине основного языка (для С++ будет запущена виртуальная машина скриптового, например Lua или Python) и этот СЯ будет оперировать классами и объектами основного языка. Но когда мы захотим смешать 2 основных языка (например Java и C#) то получим гимморой, т.к. каждый их этих языков имеет свою виртуальную машину, свой фреймворк и средств встаивания друг в друга не имеют (в отличии от СЯ). По этому основной должен быть один - Java/C#, а уже плагины могут быть написаны как на основном так и на любом СЯ, для которого _разработчики_ предусмотрели поддержку. (т.е. просто взять любой и написать не получится, нужны так называемые "биндинги", т.е. специальные конструкции, обеспечивающие трансляцию из скриптового языка в основной и обратно).