Fix remaining Codacy issues and improve README readability

This commit is contained in:
Christian Kündig 2021-06-06 14:36:48 +02:00 committed by Eugene Sandulenko
parent 18b56d6aed
commit 93e1c779b6
3 changed files with 33 additions and 31 deletions

View File

@ -3,9 +3,9 @@ The [Emscripten](https://emscripten.org/) target provides a script to build Scum
> Emscripten is an LLVM/Clang-based compiler that compiles C and C++ source code to WebAssembly for execution in web browsers.
## Current State
* All engines compile (though I didn't test all of them), including ResidualVM with WebGL acceleration
* Audio works and 3rd-party libraries for sound and video decoding are integrated
* Proof of concept integration with [BrowserFS](https://github.com/jvilk/browserfs) to download game data lazily when required and to support local savegames
* All engines compile (though I didn't test all of them), including ResidualVM with WebGL acceleration and shaders.
* Audio works and 3rd-party libraries for sound and video decoding are integrated.
* Proof of concept integration with [BrowserFS](https://github.com/jvilk/browserfs) to download game data lazily when required and to support local savegames.
## How to build for Webassembly
This folder contains a script to help build scummvm with Emscripten, it automatically downloads the correct emsdk version and also takes care of bundling the data and setting up a few demo games.
@ -23,7 +23,7 @@ It accepts a single parameter with 7 valid commands:
* `data`: Download some demos and set up all data require for the demo page
* `dist`: Copy all files into a single build-emscripten folder to bring it all together
* `all`: Run all of the above commands
* `clean`: Remove all object files, built libs, bundled data etc.
* `clean`: Remove all object files, built libs, bundled data etc
Independent of the command executed, the script sets up a pre-defined emsdk environment in the subfolder `./dists/emscripten/build.sh`
@ -31,35 +31,36 @@ Independent of the command executed, the script sets up a pre-defined emsdk envi
Some ideas for possible improvements:
### Emscripten Optimizations
* Optimize asyncify behaviour (we only have SDL functions calling wait currently), e.g with https://wiki.libsdl.org/SDL_HINT_EMSCRIPTEN_ASYNCIFY
* Specify a `ASYNCIFY_ONLY` list to to make asyncify only instrument functions in the call path as described in https://emscripten.org/docs/porting/asyncify.html
* Optimize asyncify behaviour (we only have SDL functions calling wait currently), e.g with [SDL_HINT_EMSCRIPTEN_ASYNCIFY](https://wiki.libsdl.org/SDL_HINT_EMSCRIPTEN_ASYNCIFY).
* Specify a `ASYNCIFY_ONLY` list to to make asyncify only instrument functions in the call path as described in [emscripten.org: Asyncify](https://emscripten.org/docs/porting/asyncify.html)
* Don't use asyncify but rewrite main loop to improve performance
* Shrink code size or execution speed with `-Os` or `-Oz` ( https://emscripten.org/docs/tools_reference/emcc.html#emcc-compiler-optimization-options ) )
* Shrink code size or execution speed with `-Os` or `-Oz` [emcc arguments](https://emscripten.org/docs/tools_reference/emcc.html#emcc-compiler-optimization-options).
### Storage Integration
* BrowserFS seems abandoned and never did a stable 2.0.0 release. Maybe there's a better way to handle storage?
* File loading improvements
* Load assets with HTTP Range request headers
* Load assets asynchronously (not blocking) via a worker
* File loading improvements:
* Load assets with HTTP Range request headers.
* Load assets asynchronously (not blocking) via a worker.
* Add support for save games (and games data?) on personal cloud storage (Dropbox, Google Drive)
* Add support for save games (and game data?) on personal cloud storage (Dropbox, Google Drive).
### UI Integration
* Support resizing the canvas in a responsive way (currently broken)
* Responsiveness: Adjust the canvas size when resizing the browser.
* Fix scaling issues / fullscreen not working
* Bug: Fullscreen mode doesn't work.
* Build a nice webpage around the canvas
* Adapt page padding/background color to theme (black when in game)
* Build a nice webpage around the canvas.
* Allow hiding of console, replace buttons/checkboxes from default emscripten template.
* Bonus: Adapt page padding/background color to theme (black when in game)
* ScummVM shouldn't be able to "close" (there's no concept for that
* Remove "exit" buttons from all menus
* Change any programmatic "exits" to cause a restart of Scummvm (or refresh of the page)
* ScummVM shouldn't be able to "close" (there's no concept for that:
* Remove "exit" buttons from all menus.
* Change any programmatic "exits" to cause a restart of Scummvm (or refresh of the page).
* Pass CLI parameters for ScummVM via URL parameters to allow for "deep-linking" to a specific game
* Pass CLI parameters for ScummVM via URL parameters to allow for "deep-linking" to a specific game.
### Other Features + Bugs
* Bug: vorbis support is broken - parts seems to have been patched out so -lvorbisfile triggers an error during configure ( https://github.com/emscripten-core/emscripten/pull/9849 doesn't seem to fix this )
* Bug: Going back to main menu from Grim (and other Residual Games?) messes up the render context and the UI is unusable
* Todo: Check all disabled features (e.g; TiMidity++) and see if they could be enabled (some might never make sense, e.g. anything requiring MIDI Hardware, Update Checking etc. )
### Other Bugs + Tasks
* Bug: Vorbis support is broken - parts seems to have been patched out so `-lvorbisfile` triggers an error during configure (and [emscripten-core/emscripten#9849](https://github.com/emscripten-core/emscripten/pull/9849) doesn't seem to fix this).
* Bug: Going back to main menu from Grim (and other Residual Games?) messes up the render context and the UI is unusable.
* Check all disabled features (e.g. TiMidity++) and see if they could be enabled (some might never make sense, e.g. anything requiring MIDI Hardware, Update Checking etc).

View File

@ -1,2 +1,5 @@
// Workaround for https://github.com/emscripten-core/emscripten/pull/9803 which results in mouse events not working anymore after context switches
JSEvents.removeAllHandlersOnTarget = function(){}
// Workaround for https://github.com/emscripten-core/emscripten/pull/9803
// which results in mouse events not working anymore after context switches
// (i.e. when launching a game)
/*global JSEvents*/
JSEvents.removeAllHandlersOnTarget = function(){};

View File

@ -1,7 +1,5 @@
Module['arguments'] = [];
//Module['arguments'].push('--debuglevel=5');
Module['arguments'].push('--config=/data/local/scummvm.ini');
//Module['arguments'].push('--add');
//Module['arguments'].push('--recursive');
//Module['arguments'].push('--path=/data/games');
/*global Module*/
Module["arguments"] = [];
Module["arguments"].push("--debuglevel=5");
Module["arguments"].push("--config=/data/local/scummvm.ini");