I and a friend have been writing a game engine from scratch (except openGL/SDL2) since late August and it's pretty cool. The architecture draws heavy inspiration from the Source engine, with simplification of all aspects to reduce the amount of bullshit (and the toll on our sanity).
The above picture is just it rendering a model of mine which is half a year old, but behind that model is a proper entity. The entity system utilizes C++ runtime polymorphism and a preprocessor trick to register entities automatically. Here, the entity "prop" derives from the base, specifies its own model and material, and renders them. The entities are read from the map file, which is a text file that specifies their key-value pairs. Some may be left out, and the entity implementation has the opportunity to set defaults.
Materials also have their suck stripped - they just specify which GLSL shaders they use, and then key-value pairs such as
diffuse red.tga. The GLSL shader will then specify a
uniform sampler2D map_diffuse and be able to use that sampler to access the pixels loaded from the texture
red.tga. I'm super proud of this system.
Resources, e.g. textures, materials, shaders, and models, are cached by their name so the engine doesn't load the same thing twice if different things reference them.
Also, it obviously can't be shown with a screenshot, but all interaction with the engine is done via text commands, which are each mapped to their handlers. A handler gets the array of arguments and a flag for whether it was a press or release (no distiction between "usual commands" and "press/release commands" as in Source -- all of them can be pressed or released). Keys are bound to commands (yes, there's a command for that, and the engine runs the script at startup). Also, it's designed in such a way that when you're just pressing buttons in runtime, no text operation or copying goes on - the keys are mapped to the efficient representation.
Sorry for a barely related image and a wall of text, but again, I'm super proud of all of this, and wanted to share it. You can observe it on
GitHub I guess, but we do treat that repo as a personal one, which it is. (I do with the master branch what my heart desires.) Also, it doesn't have the model or textures.