Videos: 1440p, 4K, node options and the wait to record
- Start recording lists 1440p and 4K, and Sound, Convert and Import after conversion, all on as in "Start recording...". - Every resolution is at most 3840x2160. A camera wider than 16:9 is scaled down at 4K. - Sound off leaves the picture alone. Convert and Import stop the upload short as for the editor recording. A released game ignores them. - The game waits for the recording to start, so the first frame of the run is recorded. - Development: 2062 editor checks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent
75c9b0f035
commit
b4262e3198
2 files changed
+16
-6
No files matched your search
+1
-1
@@ -21,7 +21,7 @@ php tests/php/releases.test.php # the release stor
|
||||
php tests/php/files.test.php # uploaded files in a folder per account (#344), the same way
|
||||
php tests/php/videos.test.php # the video store, its queue and the worker (#402), with the
|
||||
# real ffmpeg: the CI image and game-maker-video have it
|
||||
node tools/seed-e2e.mjs && node tools/e2e.mjs # 2061 editor checks, screenshots in /tmp/gm-e2e-*.png
|
||||
node tools/seed-e2e.mjs && node tools/e2e.mjs # 2062 editor checks, screenshots in /tmp/gm-e2e-*.png
|
||||
GM_STEPS=20 node tools/e2e.mjs # or 1-12, or 6,20 — a subset while working on one step
|
||||
./e2e.sh start [GM_STEPS] # the same run detached, see below
|
||||
./e2e.sh status # live progress, or the last run's result
|
||||
|
||||
+15
-5
@@ -171,13 +171,14 @@ Two action nodes record what the game view shows, with what the master plays (#4
|
||||
|
||||
| Node | |
|
||||
|---|---|
|
||||
| **Start recording** | **name** (empty: `Recording 2026-10-11 16:42:05`, when it started), **resolution** (*Game view*, *720p*, *1080p*), **fps** (*60*, *30*) |
|
||||
| **Start recording** | **name** (empty: `Recording 2026-10-11 16:42:05`, when it started), **resolution** (*Game view*, *720p*, *1080p*, *1440p*, *4K*), **fps** (*60*, *30*), **Sound**, **Convert**, **Import after conversion** (all three on, as in **Start recording…** below) |
|
||||
| **Stop recording** | ends it and saves it |
|
||||
|
||||
- **The picture** is the camera's, nothing of what lies over it: no notice, no fullscreen button,
|
||||
no performance overlay, no letterbox, no menu or window of the editor. *Game view* records at the
|
||||
size the picture has on screen when the first frame is taken (at most 3840x2160), *720p* and
|
||||
*1080p* at that height, the width from the camera's shape. A window smaller than that is no
|
||||
size the picture has on screen when the first frame is taken, *720p* to *4K* at that height,
|
||||
the width from the camera's shape. Either is at most 3840x2160: a camera wider than 16:9 comes
|
||||
out at *4K* scaled down to 3840 wide, a little lower. A window smaller than that is no
|
||||
loss: the frame is drawn into a picture of its own at its full size. Text and a camera shader
|
||||
are drawn at the size of the screen, though, and are scaled up with it, so they come out softer.
|
||||
The size holds for the whole recording.
|
||||
@@ -186,6 +187,7 @@ Two action nodes record what the game view shows, with what the master plays (#4
|
||||
drawn there flickered in its corner. The picture comes back from the graphics card a frame or
|
||||
two later, without the editor waiting for it.
|
||||
- **The sound** is what leaves the master behind its limiter, what you hear. Opus, 160 kbit/s.
|
||||
With **Sound** off the file has the picture alone.
|
||||
- **It goes on** through `Load scene` and `Restart game`. The editor's pause holds it and leaves the
|
||||
paused time out; a game that pauses itself is still seen, so that is recorded. Another tab in
|
||||
front of the Game tab does not stop it. Ending the run (Esc, `Stop game`) saves it.
|
||||
@@ -194,14 +196,22 @@ Two action nodes record what the game view shows, with what the master plays (#4
|
||||
time is left out too, for at most 3 s at a time. A `Start recording` right after
|
||||
`Play composition` therefore begins with the composition's first picture, not with the empty
|
||||
frames while its video loads.
|
||||
- **The game waits for the recording to start.** Setting up the encoders takes a moment, in a
|
||||
test about 0.17 s, and no frame can be taken meanwhile. So the run holds until they are ready,
|
||||
for at most 3 s, as it holds for its videos at Play. A `Start recording` in `On start` therefore
|
||||
has the first frame of the run, and one later on starts at the frame it ran in. The game stands
|
||||
still on screen for that moment; a sound already playing goes on.
|
||||
- **One at a time:** a second `Start recording` while one records is ignored and says so in the
|
||||
log, and so does a `Stop recording` with none. In the editor run (*Run in editor*) the nodes only
|
||||
write to the log.
|
||||
- **In the editor** the recording goes up to the server like any upload and is converted to MP4.
|
||||
Once that is done, and the run is over, it is a video asset of the project with its name, ready
|
||||
for a sprite or for **Download** in its tab. The notice line says how far it is.
|
||||
for a sprite or for **Download** in its tab. The notice line says how far it is. **Convert** and
|
||||
**Import after conversion** stop it short of either step, as for the editor recording: it is
|
||||
always uploaded, and the video picker has it.
|
||||
- **In a released game** there is no project to put it in: the browser downloads it as an `.mkv`
|
||||
when it ends. That file is the one the browser made (H.264 and Opus), not converted.
|
||||
when it ends. That file is the one the browser made (H.264 and Opus), not converted; **Convert**
|
||||
and **Import after conversion** do nothing there.
|
||||
- **A file of 2 GB**, the most an upload may be, ends the recording and saves it, with a line in
|
||||
the log. At 1080p60 that is roughly half an hour.
|
||||
- **When the encoder cannot keep up**, a frame is left out rather than everything falling behind;
|
||||
|
||||
Reference in new issue
Block a user