[Scummvm-devel] RTL branch to be merged (relevant for *all* developers)

Max Horn max at quendi.de
Tue Sep 2 15:05:49 CEST 2008


Am 02.09.2008 um 10:00 schrieb Johannes Schickel:

> On Tuesday 02 September 2008 09:21:02 Filippos K wrote:
>>> And now, opinion's corner: speaking of general behaviour, after an  
>>> engine
>>> is shutdown it should
>>> always go back to the launcher. The only way for a direct quit  
>>> should be
>>> the GMM dialog. What do
>>> you guys think about this?
>>
>> I agree on this, I believe it would be better if engines always  
>> return to
>> launcher...
>
> I'm against it actually. Most engines which feature the original  
> menu actually
> ask the user to *quit* the game and I would find it most confusing  
> if I'm
> still running ScummVM when I asked to *quit* the application.

I fully agree with Johannes here: If I press "Quit" in a game, I mean  
it. I don't want to return to the launcher then. If I want that, then  
I either have to use the GMM (or some other port specific means, e.g.  
the "Start" button on some controllers might be appropriate -- or not,  
just an example). Also, of course engines are free to augment existing  
dialogs to offer "RTL" besides offering "Quit"; but of course for most  
that will be hard or impossible, given that those in-game GUI features  
are usually rendered with image data fro the game's data files.


>> As for the engine features: I think that currently, most engines  
>> support
>> these (i.e. return to launcher, list saves etc), with some notable
>> exceptions where save games are completely handled by scripts.  
>> Wouldn't it
>> be better semantically to change these features the other way  
>> around, i.e.
>> mark engines that do NOT support them? (e.g. kSupportsRTL 		->
>> kDoesNotSupportRTL and so on)
>
> I think that it supports RTL is something special not every engine  
> (think of
> future engines) may be able to support, thus an indication flag that  
> it
> supports it makes much more sense to me than a flag that it does not  
> support
> it.

Indeed. I want the flags to stay the way mainly for two reasons:

1) Negated statements are harder to understand and easier to mix up:  
"If the kDoesNotSupportRTL flag is not set, then RTL *is* supported"  
is more complicated than "if kSupportsRTL is set, RTL *is* supported".  
Granted, this example sounds trivial, but once you have to parse in  
your mind complex code expressions based on checking this flag, you'll  
start to notice the difference.

2) An engine has to *explicitly* implement support for these features.  
Hence, it is natural that it has to *explicitly* advertise that  
feature. This way, the "default" option for the engine author (namely  
not to do anything about engine meta flags, maybe not even knowing  
about them) stays safe. If we changed it to the negated way, then  
whenever we add a new "negated" feature, all (Meta)Engines would have  
to be updated to work correctly. This is bad and breaks the "least  
surprise" principle.


Bye,
Max




More information about the Scummvm-devel mailing list