XNA Core Game Programming library.
Uses interfaces and delegates, in tune with the .NET way, with inheritence used for implementation reuse.
Traditional techniques for game programming in C++ involve inheritence, and lots of it! Modern programming techniques make use of interfaces and closures (delegates).
Opting in to a feature (e.g. require Content Manager) traditionally required providing a virtual method to call, then overriding it in subclasses. Now you can simply implement an interface, and plug in!
Like you, I have a day job that does not involve game programming. It does however involve programming; for me it is a hobby and
a career. As such, time on this project is limited, and all we need is participation and the lots of little bits of time and effort add up to something good!
Keep reading, and if you like these concepts, then this project is for you!
The XNA Games Core uses a number of cooperating components.
The interaction boundaries of the system components are represented by interfaces. In order for a component to opt-in to a service (e.g. to register packages), it must implement the necessary interface(s). These are used by the "owner" of the interface (not the implementor).
Screen ManagerLayersPackagesInput ManagerGame State MachineOperations