Da schon Unity vorgeschlagen wurde, das auf C# aufsetzt, möchte ich gerne noch MonoGame empfehlen.
MonoGame ist deutlich simpler; man kann Audio abspielen, den User Input abfragen, und Texturen (sowie Shader) auf den Bildschirm zeichnen. Im Prinzip haben die meisten eigenen Klassen dann eine Update Funktion für die Spiellogik, sowie eine Draw Funktion, die vorgibt, welche Textur wo gezeichnet werden soll.
Der Vorteil ist, dass man nicht viel lernen muss, um alle Funktionalitäten des Spieles realisieren zu können, das ist aber auch der Nachteil, dass es keine vollwertige Spieleengine ist, und man erweiterte Funktionen wie Physik, Animationen, und auch GUI Elemente selbst designen muss.
Ein Button wäre zB eine Klasse, die eine Hintergrundtextur mit etwas Text zeichnet, und in einer Update() Funktion überprüft, ob darauf geklickt wurde.
Ich kann MonoGame wirklich sehr empfehlen, es ist sehr einfach, man hat die volle Kontrolle, es läuft auf Windows, Linux, Konsolen und Handys, und bei unserem 2D Spiel war es mehr als performant genug, es lief auf zB auf einem Intel Atom auf integrierter Grafik mit 60FPS.
Dafür gibt es zwar dann ein paar Kniffe (wie zB in Draw() Funktionen die Zeichenaufufe nicht direkt an die Grafikkarte senden lassen, sondern pro Frame nur ein, bzw wenige Male, gebündelt in einem sogenannten SpriteBatch).
Es wird auch von viele Spielen wie zB. Stardew Valley oder Bastion, benutzt.
Ah, und keine Angst vor C#, es ist von der Syntax sehr ähnlich zu C++, etwas wie Java, und ist unter Visual Studio sehr angenehm zu Entwickeln. Man kann zB beim Debuggen Code verändern, der dann direkt in das laufende Spiel übernommen wird.
Das ist dann aber auch Werbung genug, ich lass noch ein paar Links da:
MonoGame Wiki
MonoGame Download
XNA Referenz (MonoGame ist eine OpenSource Implementation der XNA API, wenn man Fragen hat, findet man unter zB. "SpriteBatch XNA" meist mehr wie mit "SpriteBatch MonoGame", die Lösungen lassen sich aber 1 zu 1 übertragen.