As games are based on many different subsystems things like graphics (DirectX, OpenGL, ...), sound (OpenAL, Ogg Vorbis, ...) or physics (collisions, ...), what libraries do you know that are useful for game development in C# and what benefits do they offer?
- XNA High level wrapper on DirectX9. Allows you to get up and running quickly. Supports PC, Xbox360 and windows phone 7. Support Xact audio aswell as its own SoundEffect API.
- SlimDX Lower level wrapper on DX9/10/11. If its in the DX SDK, its wrapped here.
- OpenTK Wrapper on OpenGL/AL.
- SDL.net A port of thr popular SDL lib.
- WaveEngine Component based game engine architecture, C# api, 2d and 3d physics engine, beautiful visual effects, cross-platform support Android, Linux, Mac, iOS & Windows, advanced layout system and much more.
- NeoAxis A 3D engine with support for NVIDIA PhysX physics engine, C# bindings, supports WPF & Windows Forms, rich selection of tools like map, object, model, material, terrain editors, in game browser using Chromium, Pathfinding with Navigation Mesh and more.
- TorqueX A 2D/3D engine for XNA. Good editor suppport, garage games have recently reinvested in the engine after a period of neglect.
- truevision 3d C++ game engine with c# bindings
- Axiom A rewrite of Ogre in c#. Supports numerous backed rendering APIs.
- Unity is a C++ graphics/game engine that supports gameplay scripting in C#
- AngelXNA A port of EALA's open source angle protoypeing framework
- Farseer A popular 2D physics engine, supports .net(desktop), compact(xbox) and micro(silverlight).
- Jitter a relatively new 3D physics engine, Much better than its completion.
- Box2Dx A direct port of box2D
- Box2D.XNA Another port of Box2D for XNA; more recent than Box2Dx
- BulletX A c# port of Bullet, seems to be abandoned.
Obviously there is XNA from microsoft itself: http://creators.xna.com/en-US/ Games made with XNA work on Windows and (via Creators club) on Xbox360. I think this is perfect to get one's feet wet in rapid game development. I haven't got my feet wet in XNA properly yet, so I can't judge it yet. But, looking from sidelines it looks like best thing since sliced bread. Sure, you can't do everythign with it. But you can make fast prototypes and working games of indie quality and beyond.
Other library is SlimDX - http://slimdx.org/ which some might say is closer to metal/reality if you don't want to work with XNA. Thus, great for doing fast prototyping - especially if your primary game development is C or C++. Also, great for doing tools.
There's also a port of the C Library SDL to .NET, SDL.NET. I personally would use XNA in C# because it's just a well put together library, very customizable and also beginner friendly.
Disclaimer: The following recommendation may or may not be biased due to my personal involvement in the development of this engine.
Duality is an extensible 2D game engine that comes with a WYSIWYG editor system. Quick overview:
- It's plugin-based. You don't write a new application, but a plugin that contains all your code.
- Plugins feature runtime reload from the editor. Allows fast iteration.
- Open Source, written entirely in C#, based on OpenTK / OpenGL / OpenAL
- Relatively new (2 - 3 years) and still in development - but already usable.
- Handles Rendering, Audio, User Input, Physics, Serialization, Resource and Object Management
- Lots of helper classes and default Components to get you started.
In case you want to give it a go, you can either directly download the latest binary release or compile it yourself using the source code from GitHub. To get some more information, a visit to the info website and the community forums might pay off. Just follow the links from the info website I've included above.
BulletX is a 100% C# port of Bullet Physics, which is usable with XNA.
On the tools side an incredible useful library is the "Managed Extensibility Framework", which is now actually part of .Net 4.0. It allows you to create plug-ins or automatic discovery of instances of classes ridiculously easily, which is -very- useful for your tools.
The biggest one (and most proven) to this day is the XNA framework. You can even take advantage of XNA to build your tool sets. The benefit is you have a framework that includes the libraries you need (physics, sound, graphics) wrapped in one package and the huge plus is that if you do something really well you can try and pump it into XBLA.
XNA is a pretty big library for PC/Xbox360, handling your graphics, sound, input, etc.
The Tao Framework (used in this book that I've found pretty useful: C# Game Programming For Serious Game Creation), which wraps OpenGL and many other useful game programming features (accessible via C#) is worth a look. However, it has been superceded by the Open Toolkit Library (OpenTK), which was mentioned in another answer. I find it odd that the book uses the Tao Framework instead of OpenTK, considering Tao has been inactive for about 2 years (and the book is brand new). Still, a useful framework that is worth checking out.
Not exactly what you asked but Unity is a game engine that supports scripting in c#
I find SFML.Net to be a great choice, and it is what I personally use. Beware though, do not use the binaries provided on the site, but instead get the latest from the SVN. The site version is highly outdated.