410
edits
(→General: Remove resolved entry) |
Eriktorbjorn (talk | contribs) (Add note about missing Broken Sword 2 feature.) |
||
(44 intermediate revisions by 16 users not shown) | |||
Line 1: | Line 1: | ||
{{Infobox_TODO| | |||
taskname=Main TODO List| | |||
techcontact=The ScummVM Team| | |||
subsystem=Generic| | |||
}} | |||
Here is a list of things we consider doing in the future. Note that we don't promise to do any of these, nor when we will do them. It's just a list of what we hope to be able to do one day, and some items on the list really are more like ideas than real proposals, so take it with a grain of salt. | Here is a list of things we consider doing in the future. Note that we don't promise to do any of these, nor when we will do them. It's just a list of what we hope to be able to do one day, and some items on the list really are more like ideas than real proposals, so take it with a grain of salt. | ||
Line 15: | Line 21: | ||
=== General === | === General === | ||
* Write a high level overview of how ScummVM and its engines work? | * Write a high level overview of how ScummVM and its engines work? | ||
== Web sites == | == Web sites == | ||
=== [[Buildbot]] === | === [[Buildbot]] === | ||
=== [[Doxygen]] === | === [[Doxygen]] === | ||
* | * Make it run again, upgrade | ||
== Common code, infrastructure == | == Common code, infrastructure == | ||
=== Audio === | === Audio === | ||
==== Mixer ==== | ==== Mixer ==== | ||
* the "isReady" code is irritating. Most engines ignore it anyway. It's primary purpose is to allow ScummVM to run even if not digitial audio out is available. A better solution would likely be to enforce that all backends always return a valid mixer. In the worst case, if a backend cannot produce audio output, it should still instantiate an Audio::MixerImpl, with some arbitrary sample rate (I recommend 22050 Hz), and a fake playback thread, which acts like an audio output callback but simply discards the generated audio data. (Note: It doesn't suffice to just throw away input data in Mixer::playInputStream, as this breaks with QueuingAudioStream). | * the "isReady" code is irritating. Most engines ignore it anyway. It's primary purpose is to allow ScummVM to run even if not digitial audio out is available. A better solution would likely be to enforce that all backends always return a valid mixer. In the worst case, if a backend cannot produce audio output, it should still instantiate an Audio::MixerImpl, with some arbitrary sample rate (I recommend 22050 Hz), and a fake playback thread, which acts like an audio output callback but simply discards the generated audio data. (Note: It doesn't suffice to just throw away input data in Mixer::playInputStream, as this breaks with QueuingAudioStream). | ||
==== CD ==== | ==== CD ==== | ||
Line 135: | Line 60: | ||
** ... produce a warning if an older ScummVM version tries to load a config file written by a newer version with potentially incompatible changes (such as the switch from language code "hb" to "he" for Hebrew) | ** ... produce a warning if an older ScummVM version tries to load a config file written by a newer version with potentially incompatible changes (such as the switch from language code "hb" to "he" for Hebrew) | ||
** ... detect when we an old config file is loaded which needs to be updated (e.g. by changing language "hb" to "he"; by adding "guioptions" to targets; by fixing trailing slashes in "path"; maybe even updating old style; and maybe in the future by adding "engineid" fields to all targets) | ** ... detect when we an old config file is loaded which needs to be updated (e.g. by changing language "hb" to "he"; by adding "guioptions" to targets; by fixing trailing slashes in "path"; maybe even updating old style; and maybe in the future by adding "engineid" fields to all targets) | ||
=== GUI === | === GUI === | ||
Line 149: | Line 70: | ||
=== Launcher === | === Launcher === | ||
* Enhance the Mass detector to show a list with the results (and optionally, allow the user to edit/cull that list before adding it). | * Enhance the Mass detector to show a list with the results (and optionally, allow the user to edit/cull that list before adding it). | ||
* Make the gameid editable via an "advanced" tab entry? | * Make the gameid editable via an "advanced" tab entry? | ||
* The global options dialog may show a button for configuring the savepath even on systems where it is fixed -> not good. This button should be hidden/removed for these systems | * The global options dialog may show a button for configuring the savepath even on systems where it is fixed -> not good. This button should be hidden/removed for these systems | ||
* separate launcher code even more from rest of ScummVM, to make custom launchers easier? | * separate launcher code even more from rest of ScummVM, to make custom launchers easier? | ||
Line 165: | Line 84: | ||
** Add/unify "confirm exit" dialog, globally (see [https://sourceforge.net/tracker/index.php?func=detail&aid=1731025&group_id=37116&atid=418823 FR #1731025]) | ** Add/unify "confirm exit" dialog, globally (see [https://sourceforge.net/tracker/index.php?func=detail&aid=1731025&group_id=37116&atid=418823 FR #1731025]) | ||
* Options Dialog: Implement engine flags to define which features in the Options dialog are supported by the current running game. Use these flags to hide/show the appropriate sliders and buttons in the Options Dialog | * Options Dialog: Implement engine flags to define which features in the Options dialog are supported by the current running game. Use these flags to hide/show the appropriate sliders and buttons in the Options Dialog | ||
* Improve the look of the GMM: This could include displaying the engine name and the game name on the top of the GMM. | |||
* Improve the look of the GMM: This could include displaying the engine name and the | |||
* Config Dialog code: Resolve the FIXME in engines/dialogs.cpp which pertains to having to use the empty string as the domain name. This is a bigger task, but will enable many other changes (thus as finally changing ConfigManager to use ConfigFile). Essentially, the current game config dialog tries to abuse the system by editing the *active* settings via the config manager, in order to fully reduce the options dialog code from the launcher. But there is a big difference between editing the config settings of a specific target, and the active settings. So, one probably needs to rewrite the code for the config dialog shown from the GMM | * Config Dialog code: Resolve the FIXME in engines/dialogs.cpp which pertains to having to use the empty string as the domain name. This is a bigger task, but will enable many other changes (thus as finally changing ConfigManager to use ConfigFile). Essentially, the current game config dialog tries to abuse the system by editing the *active* settings via the config manager, in order to fully reduce the options dialog code from the launcher. But there is a big difference between editing the config settings of a specific target, and the active settings. So, one probably needs to rewrite the code for the config dialog shown from the GMM | ||
=== Error handling === | |||
Sometimes, bugs are reported that are not easily reproducible, e.g. [https://sourceforge.net/p/scummvm/bugs/6751/ Bug #6751]. In such cases, it would be useful to have the error handler in ScummVM generate (and, optionally, automatically send) minidumps that can be used by us to successfully examine crashed ScummVM processes. Integration of something like [https://chromium.googlesource.com/breakpad/breakpad/ Google Breakpad] is one reasonable option. While it is not likely to be able to get such crash handling into all ports, just supporting the most popular platforms would be enough to make this feature very useful. | |||
== Engines / frontends == | == Engines / frontends == | ||
Line 185: | Line 105: | ||
=== [[Cine]] === | === [[Cine]] === | ||
* see [[Cine/TODO|Cine TODO]] list | * see [[Cine/TODO|Cine TODO]] list | ||
=== [[CruisE]] === | |||
* see [[Cruise/TODO|CruisE TODO]] list | |||
=== [[Drascula]] === | === [[Drascula]] === | ||
Line 191: | Line 114: | ||
=== [[Gob]] === | === [[Gob]] === | ||
* see [[Gob/TODO|Gob TODO]] list | * see [[Gob/TODO|Gob TODO]] list | ||
=== [[Groovie]] === | |||
* see [[Groovie/TODO|Groovie TODO]] list | |||
=== [[Hopkins]] === | |||
* see [[Hopkins/TODO|Hopkins TODO]] list | |||
=== [[Hugo]] === | |||
* see [[Hugo/TODO|Hugo TODO]] list | |||
=== [[Kyra]] === | === [[Kyra]] === | ||
* see [[Kyra/TODO|Kyra TODO]] list | * see [[Kyra/TODO|Kyra TODO]] list | ||
=== [[Lastexpress]] === | |||
* see [[Lastexpress/TODO|Lastexpress TODO]] list | |||
=== [[MADE]] === | === [[MADE]] === | ||
Line 216: | Line 151: | ||
=== [[Sword2|Broken Sword 2]] === | === [[Sword2|Broken Sword 2]] === | ||
* Fix the credits so they look more like the original. (Did we ever get the source code for that?) | * Fix the credits so they look more like the original. (Did we ever get the source code for that?) | ||
* Maybe work around script bug which causes the mop to disappear briefly when trying to pick it up from the top of the boat at the London docks. (The event to hide the mop is sent too early.) {{ | * Maybe work around script bug which causes the mop to disappear briefly when trying to pick it up from the top of the boat at the London docks. (The event to hide the mop is sent too early.) {{Tracker|id=2058}}. | ||
* Maybe (but probably not) work around a graphics glitch where George can be drawn partially in front of a metal beam he's walking behind. (He's obscured properly by the beam sprite, but part of the beam is only background.) {{ | * Maybe (but probably not) work around a graphics glitch where George can be drawn partially in front of a metal beam he's walking behind. (He's obscured properly by the beam sprite, but part of the beam is only background.) {{Tracker|id=4483}}. | ||
* Unify some of the code with Broken Sword 1 (e.g. in router.cpp). | * Unify some of the code with Broken Sword 1 (e.g. in router.cpp). | ||
*Lower the music volume when a character is speaking, like the original did. | |||
=== [[Sword25]] === | |||
* see [[Sword25/TODO|Sword25 TODO]] list | |||
=== [[Tinsel]] === | |||
* see [[Tinsel/TODO|Tinsel TODO]] list | |||
=== [[Tony]] === | |||
* see [[Tony/TODO|Tony TODO]] list | |||
=== [[Toon]] === | |||
* see [[Toon/TODO|Tooon TODO]] list | |||
=== [[Touche]] === | === [[Touche]] === | ||
* see [[Touche/TODO|Touche TODO]] list | * see [[Touche/TODO|Touche TODO]] list | ||
=== [[TsAGE]] === | |||
* see [[TsAGE/TODO|TsAGE TODO]] list | |||
=== [[Tucker]] === | |||
* see [[Tucker/TODO|Tucker TODO]] list | |||
=== [[Wintermute]] === | |||
* see [[Wintermute/TODO|Wintermute TODO]] list | |||
== Backends and ports == | == Backends and ports == | ||
Line 228: | Line 185: | ||
* Add API to query backend for a list of available music engines. Useful for Options dialog. See [[Music drivers redesign]]. | * Add API to query backend for a list of available music engines. Useful for Options dialog. See [[Music drivers redesign]]. | ||
* Right now gBitFormat is part of common/scaler.cpp; we might want to move it to common/system.cpp, or replace it with something better. No hasty changes here, please, make sure you understand how it is used right now before messing with it ;-) | * Right now gBitFormat is part of common/scaler.cpp; we might want to move it to common/system.cpp, or replace it with something better. No hasty changes here, please, make sure you understand how it is used right now before messing with it ;-) | ||
== Tools == | == Tools == | ||
Line 249: | Line 190: | ||
=== General === | === General === | ||
* Use doxygen (or something else) to turn the short descs from the README into short man pages AND a single text file (replacing README) and a HTML file... | * Use doxygen (or something else) to turn the short descs from the README into short man pages AND a single text file (replacing README) and a HTML file... | ||
* | |||
* | === GUI === | ||
* One of the GUI assistants pages shows the following text to the user: "Note: Some tools display file picker here, this should perhaps be changed to always be directory output, since often don't want to name the output file." Clearly this should *not* be shown to the user, but rather is something we devs need to address. | |||
* The last page of the assistant is weird. E.g. after successful run, it shows a "Finish" button in the lower right, and two checkboxes: "Open output folder" and "Process another file". This seems unintuitive and artificial to me. An IMHO better alternative would be to remove the "Finish" button, and instead show some big buttons with captions like "Process another file" (which does just that), "Open output folder", and "Quit". One can probably still do better, somebody should think about this. | |||
=== Compression tools === | === Compression tools === |
edits