Смотря какие игры и под какую платформу.
Если знать С++, то можно писать под любую платформу и с максимальной производительностью самих игр, но необходимо провести много времени для изучения самого С++, так как стрелять из него по ногам можно очень долго. Также стоит отметить, что существуют бесплатные средства(движки, либы, и т.д.) под любую из платформ. И что-бы не говорили, в gamedevе он будет востребован еще очень долго, так-как нет другой альтернативы, которая давала бы столько возможностей за относительно малые требования к аппаратуре.
На С# можно писать тоже, почти под все, но бесплатных инструментов, которые обхватывали все платформы попросту нет. Плюс не совсем ручное управление памятью, что важно для оптимизаций игр, но для маленьких, несложных и кратко-временных(в разработке) игр или прототипов он подходит идеально.
Есть еще разнообразные связки веб-технологий(HTML+JS, Flash и т.д.), но они в основном предназначены именно для веба.
Насчет Java я очень сомневаюсь, поскольку её скорость выполнения и требования к оперативной памяти оставляют желать лучшего. А в играх динамическое выделение и освобождение памяти это обычное дело.