Just by playing with it. For me it was, AMX Mod, and SmallC, they have a bunch of plugins that you could compile with the tools they gave you, and they also had a bunch of people making plugins for these Counter - Strike servers that would add things like jetpacks and crap like that. I was like, that's awesome, I want to be able to do that! So I found the source code of the plugins, as AMX Mod was under the GPL everyone had to give out their source code for their plugins if they gave out the binary on the forums. From there, I started playing on the servers with the plugin devs, helping them test their plugins, they would give me the code, and say, I'm having a problem in this area of the plugin, from Line X to Line Y, and that's what I need you to test. Just by doing things like that you learn alot about how to program because you see how the engine and how your actions with the engine and there by your actions effect the plugin. It was a pretty easy way of learning for me. This is what I'm trying to get at with PRISM, people that don't know how to program, learning PHP from the fun side, games! Learning about event based programming with it.