Quake 2 (aka id Tech 2) is a great game and engine to hack. The source is pretty well laid out and the code is small enough that it doesn't take forever to become familiar with it. It also has a great entity system that makes it a really suitable for prototyping.
I spent the last couple of nights stripping as much of the game code as I could out, right down to the essentials, and then stripping the game data down to the bare minimum as well. I built a plain cube map with a single info_null entity, that gets loaded on startup, acting as a gateway map. The info_null entity contains a "model" key, which loads an arbitrary md2 from disk (in this case, some couch model I found online).
Next I set about embedding Chicken Scheme into the game code as an interpreter, and a few thousand segfaults later, it works! I have output redirection and an "eval" command for the console, allowing you to type some code and get a response.
I also started on a high level API for controlling in game objects that I will just implement as I go, that looks a little like this:
(q2:fire-blaster (q2:get-player-by-name "Player"))
So for just a couple hours of work I have a decent engine and scripting language that can be built up in whatever direction I decide to go with it :D