This is a tool for digital props, used for movies and television, to easily emulate different operating systems on different operating systems. This circumvents the need for the real system to be properly prepared and stripped of everything that is not wanted.
Available right now are "clones" of Windows 10, mac OS Big Sur and some Linux-like distro.
These clones are not very accurate; and the goal in the end is to differentiate them enough that no copyright problems occur when displayed on commercial productions.
This repo is just the boilerplate for everything special that needs to be done to tell a story.
Customizing needs to be done onto the workstations, the brwoser, etc, to be ready for production.
Workstations are, as the name implies, different computer setups for different scenes and/or characters. They include styling (like the OS used, the desktop image, system Colors etc) and positions of open or minimized windows or programs.
See here for everything about setting up new workstations.
Local saving and loading is possible by using the browsers localSorage. Based off the workstations, you can further adjust and set up different variations of any workstation. You load up a workstation, adjust to the scenes needs, save it.
When filming, the actress or actor can fool around. After the take, you reload the last state to start anew.
These scenes are by design local to the machine that you're using, so changes saved like this are not shared across different computers. They can be exportet, shared and imported though.
VSCode with addon "live server" is very slow. Use caddy (same as the container app), even videos work correctly. if necessary, run once:
brew install caddy
For your development:
caddy file-server --browse --listen :2015
The page is now available here: http://localhost:2015/
NOTE: No hot reloading unfortunately 😔
Did not work:
serve (hot reload, part of npm. Used global without installing for project, some local file paths are not found. images for example, but videos or scripts worked somehow, sometimes? maybe a cache thing?)
npm run dev (could not get it to work when installed npm)
XAMPP.app (cannot run it where you have your files)
python3 -m http.server --cgi 8080 (does not serve big files correctly (eg., video files could not be seeked))
php -S localhost:8080 (does not serve big files correctly (eg., video files could not be seeked))
To display this locally and without an internet connection, there is a container app in development for Windows, Mac and Linux (including raspberry pi's).
To use this app, you need to clone this repo and use your own version of it to have your own workstations loaded into the app.
In order to make the brute force attack on the local cache work (click in the action menu on "Hard reload open windows & metadata"), we need to hard reload all source files.
cd into tools/ and execute bash collectPaths.sh. This saves all the current .css, .js, .txt, .json, .fakeBash, .splash paths in a document called collectedPAths.txt, which is used to hard reload all meta data files from within javascript.
| zIndex | element | Note |
|---|---|---|
| 0 | desktop | |
| 1 | systemBar | |
| 2 | desktop shortcuts | |
| 3... | windows | Apps etc., dynamically created |
| Special system windows | ||
| 998 | osNotifications | |
| 999 | splash | |
| Special screens | ||
| 5000 | loggingOut | |
| 5000 | shuttingDown | |
| 5001 | lockScreenSystemColorOverlay | |
| 5002 | lockScreenColorOverlay | |
| 5003 | boot/startup | |
| Fullscreen elements p1 | ||
| 9997 | screensaver | |
| 9998 | GPU fail | |
| 9999 | death | |
| PPE | Post processing effects - these do affect everything above here! | |
| 100000 | ppe-vignette | |
| 100001 | ppe-bloom | |
| 100002 | ppe-pixels | |
| 100003 | ppe-scanlines | |
| 100004 | ppe-scanlines-old | |
| 100005 | ppe-jja-lensflares | |
| 100006 | ppe-filmgrain | |
| 111111 | brightnessOverlay | Does also affect the PPE themselves |
| above | ||
| 150000 | black | |
| Effects on top of all | Also affects the black screen when enabled | |
| 175000 | ppe ppe-dirty-screen | |
| 175001 | ppe ppe-crt-reflection | |
| Fullscreen elements p2 | ||
| 190000 | green | Is not affected by ANY PPEs |
| Meta | ||
| 200000 | actionMenu | |
| 200001 | dialogBoxes |
If git errors out:
remote: Enumerating objects: 574, done.
remote: Counting objects: 100% (574/574), done.
remote: Compressing objects: 100% (339/339), done.
error: RPC failed; curl 92 HTTP/2 stream 7 was not closed cleanly: CANCEL (err 8)
error: 5573 bytes of body are still expected
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output
This might be because internet connection is lacking in speed, or it could not finish beforehand. It is solved by adding more memory - sometimes:
git config --global http.postBuffer 12M
reset it after use (maybe?)
git config --global http.postBuffer 1M