Encompass is an engine-agnostic framework to help you code games.
The architecture forces you to break your game logic down into small, easily digestible elements and lets you build game objects out of reusable, non-interdependent components.
It is currently available with a TypeScript implementation that compiles to JS or Lua (!) and an early (but still perfectly usable!) C# implementation.