Yes, I agree with your ideas for the quality options. Are minimap and resampling still expensive?
I'd even cut smooth ingame resampling altogether from the options (have it always off). But I don't mind much as long as it's off by default.
-- Simon
I wouldn't ever want to use it myself either. It's mostly there because it was trivial to implement - in fact,
not having a combined option for menus and in-game was extra work compared to just having one option for all of them. Once the code was added to make it not work in-game, it was trivial to add an option to
enable it again in-game.
Resampling is no more (or less) expensive than it always was. High-quality minimap will always be expensive, because it involves rendering the
entire level (usually, NeoLemmix takes a few shortcuts and only renders the on-screen parts; the difference can be noticable on weaker machines)
and smooth-resampling it to a much smaller size, and it generally updates every frame. The regular minimap on the other hand involves a very simple resample operation based on the physics map (rather than the graphical layout), so has virtually no impact.
Graphics32 is, by far, the most efficient software-based graphics library for Delphi / Lazarus (as far as I know). I did some tests a while back on a few of them, and Graphics32 was about 60 times as fast as the next best (BGRABitmap). Better performance would be possible with hardware-accelerated rendering, but this would be a huge task - pretty much all graphical code would need to be entirely written, as would some physics code that relies on Graphics32 under-the-hood (although I guess there is no reason why Graphics32 couldn't still be used for physics, with the new code used only for rendering). On the plus side, due to the magnitude of this task and the level of rewriting required, it would be a good opportunity to get rid of Delphi altogether and port NeoLemmix to Lazarus (which is free and open-source). I have recently made some efforts towards porting NeoLemmix to Lazarus anyway, although not much to show for it yet - I have it to the point where it compiles, but it doesn't do anything useful.