¿Cuál es el lenguaje de programación más fácil de aprender, gratuito y con más funciones para crear juegos 2D?

Unity 3D realmente se adapta mejor a los juegos 3D. Se puede usar para hacer juegos en 2D, pero es una exageración y requiere que configures varias cosas por adelantado para el desarrollo en 2D. Probablemente por eso no se llama Unity2D.

Construct2 es, con mucho, el mejor equilibrio entre fácil de aprender y funcionalidad, hay una versión gratuita y está diseñado específicamente para juegos 2D. Construct2 es una aplicación de codificación visual para Windows. Permite a los no programadores crear juegos fácilmente arrastrando elementos de codificación desde un panel lateral a una especie de diagrama de flujo. Esto le permite crear programas sin ninguna experiencia de programación, simplemente explorando la interfaz de usuario y jugando. Esto te ayudará a enseñarte los fundamentos de la codificación real del juego HTML5. Incluso es útil para los desarrolladores de juegos profesionales porque permite la creación rápida de prototipos y la experimentación. Si bien tiene muchas limitaciones, puedes crear fácilmente casi cualquier género de juegos 2D.

Desde allí me movería a una biblioteca de javascript como createjs, phaser o impactjs. Una vez que tenga una idea de los conceptos básicos de javascript, estas son probablemente las soluciones más sólidas, aunque aún así fáciles, para hacer juegos 2D desde cero. Sin embargo, necesitarás aprender javascript y la API.

Sugeriría C #, en combinación con Unity.

Unidad

Python con pygame podría ser otra alternativa.

Pygame

Ofrecería C # combinado con Unity 3D. Hay mucha documentación tanto para C # como para usarla específicamente con Unity. Hay muchos tutoriales, una gran comunidad y puedes ponerte en marcha rápidamente. Todo lo que puedas desear para empezar a hacer juegos.