I'm going to have to disagree with much of the advice given so far as it's just wrong...
Unity is a very popular and free engine, though their 2D support is a brand new addition so you'll find a small amount of good tutorials but more are being made all the time. Unity3D is not just C#, you can also use Boo which is Unity's modded version of Javscript. However, you do not need to know ANY CODE at all to make games with Unity3D. There are many games out there by a developer who hasn't written a single line of code in their game using visual coding tools like PlayMaker (
http://www.hutonggames.com/). Even as a professional developer I have used PlayMaker with Unity for rapid prototype development as much of the time it is faster than writing the code to do what it can do.
If you want to stick with a familiar language that you have already worked with in the past you have more options as well. Since you've used LUA with Gary's Mod, I would highly recommend checking out Corona SDK (
http://coronalabs.com/products/corona-sdk/) a 2D mobile game framework to develop cross-platform apps, if you would like to work with a familiar language.
My advice to you if you want to get into making games, is just start making games! Start small with tutorials and a visual scripting program in an engine like PlayMaker, then as you learn more programming start to write code as you go to supplement what you can't do with visual scripting.
When it comes to game development, it doesn't matter your choice of language to start, just that you're making games. As you make more games it's important that you learn from the previous failures/successes and improve on them each new project. Pick up a few books on game development, join gamedev.net, Unity community forums (if using Unity), and check out other games and releases starting developers are making. Learn from them and get new ideas for improving your games and skills.
You're not going to be a professional game developer overnight, but it starts with making that first game.