Basically, the premise is this - you have a character on a small map of fixed size (basically, in the style of the old top-down Zelda games). The right mouse button allows you to control your character, walking around, opening doors, talking to people, etc., while the left mouse button allows you to manipulate magic.
Screw all the old magic systems with spells and shit. Basically, the map won't technically be a "map". Its a collection of overlapping objects, each having specific properties - an innate magic, what happens if they are reacted with a magic, etc.
In a nutshell: you use the left mouse button to sap magic from the environment, combine it with other shit/magic/whatever in the environment and stuff happens. Like if there was a torch, you could harness the fire of the torch into a ball, then throw the ball at a tree. The tree object would (hopefully) have code which would be called like tree::onHitWithSomethingWhichIsOnFire and also burst into flames. Then you could grab some water from the nearby pond and throw it on the tree which would then call tree::onHitWithSomethingWhichIsSufficientlyWetToPutTheFireOut.
- Fixed maps: this allows us to ditch the notion of tile maps, which scroll really nicely and are fast to blit (no culling needed). We need each object on the map (including the map itself) to be able to react to stuff, which means we need each object to have unique qualities, and blah which would be a pain to do with a tilemap.
- Minimalist UI: Everything should be done with the mouse. No cheating by adding buttons to the screen or any of that crap - the controls should be simple and intuitive, yet yield diverse gameplay options.
- Reactivity: Each object should react with stuff in a predictable, intuitive way. If you throw fire into a gas station, it blows up. If you throw water on the fire, it might go out. Unless its an oil fire. In which case it blows up more.
- Unpredictability: Magic is an unstable thing by nature, accidents should happen. If you're not experienced enough to wad together 42 cubic metres of pure fire, you might accidentially fuck up and cause the whole map to inferno. Which would ultimately result in player::onPantsCatchFire being called, which is bad.
I hate having big massive projects, so I think I'm going to limit the scope of this to a "proof-of-concept" - just a couple of sandbox maps and such. This should be do-able, I think, as long as I don't introduce something insanely complex.