   Plenty of Questions
  Hey Everyone,   I know this is a lot of questions to ask, but I'm hoping for a lot of answers :)Some background first, I'm mainly just programming games as somewhat of a hobby, I'm not looking to get into the Game Industry unless the opportunity presents itself.  I am going to be using C# as the language and .NET 2.0.  I currently have VS 2005 Std. Edition.  So here are my questions :)1)  Should I try to make my own game engine or should I use one that is already made (seems hard to find a good C# engine).  The reason I ask this is because I was making a simple game using DirectX 9 and I had 4 small meshes and a layer of triangles I was using as the ground.  There were probably about 100 triangles but my game was going at like 2 fps, I'm guessing this is due to my shoddy code.2)  If I use my own game engine, what do you suggest I use as the main render loop, right now I'm using the OnPaint method, is this incorrect?3)  Where are some good C# beginner sites for someone looking to develop games.Thank you all very much and I look forward to utilizing this site alot.   
  If you want to build your own engine, here are a couple of sites to get you started.Engines:http://www.microsoft.com/events/series/msdnvideodev.mspxhttp://www.thehazymind.com/3DEngine.htmOther Tutorial Sites:http://www.thezbuffer.com/ - a collection of different mdx tutorialshttp://www.mdxinfo.com/http://www.c-unit.com/tutorials/mdirectx/http://www.riemers.net/Tutorials/DirectX/Csharp/http://www.codesampler.com/dx9src.htmhope that helps;  1) since you are still learning , i don't see why can't you make your own engine. companysuse engines to save time , but since you want to learn i recommend that you do it. a lot of thingscan effect you FPS (resloution , effects , color depth , general flaws in your algorithm).2)what you want to do is take advantage of all CPU time you have , you shouldn't wait for a msgto render. that would explain why you were getting that frame rate , try to imagine what you are doing. paint is called when a part of the window becomes clipped then it becomes visible again , plus it's called when the window resizes and in some other cases. the pattern you shouldsee here is that it isn't in order. what you should do is render in every possible chance you have. i don't really know C# but i did know vb. in vb ,you don't have access to the main app loop . so if it's anything like it ,simply create your own loop , and make it return each time to handle msgs (you should subclass too). it should render every turn but skip in some cases (no focus , minimized etc..). that should give you a decentframe rate.