Record 1440p and 4K, and choose sound and conversion in the node
The Start recording node only offered the game view, 720p and 1080p, and always recorded with sound, converted and imported. The recording from the main menu could already leave those out. - Resolution has 1440p and 4K. As with 720p and 1080p the height is fixed and the width follows the camera, so 16:9 gives 2560x1440 and 3840x2160. - Every resolution is capped at 3840x2160, as the game view already was. A 21:9 camera in 4K would be 5040 px wide, which the encoder levels are not made for. It is scaled down to 3840x1646. - The node has Sound, Convert and Import after conversion, all on by default as in "Start recording...". Import only counts with Convert. An old graph without the inputs records as before. - A released game ignores Convert and Import and downloads the MKV. - Both recordings now hand their upload options the same way, from GameRecorder over PlaySession to RecordingUploads. RecordingUploadOptions moved to core/recording/recording.ts. Tests: - tsc, eslint, Prettier clean - Unit recording and node-catalog: 451 green, recording 29 with 3 new tests and 1 extended - e2e 67 on melektaus-atx: ALL PASSED, 10 checks - Not checked in the browser: a real 4K recording, and the node with its switches off. - The gate ran once on this commit and the next one together. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
65d7bf6a1f
commit
2ba41c1bd0
9 files changed
+151
-51
No files matched your search
@@ -19,6 +19,7 @@ import { onFrame, ui } from '../ui';
|
||||
import { soundLibrary } from '../viewport/SoundLibrary';
|
||||
import { GameRecorder } from '../viewport/GameRecorder';
|
||||
import type { MadeRecording } from '../viewport/RecordingTake';
|
||||
import type { RecordingUploadOptions } from '../core/recording/recording';
|
||||
import { videoLibrary } from '../viewport/VideoLibrary';
|
||||
import { FrameMeter, type FrameTimes } from './frameMeter';
|
||||
import { saveArea } from './saves';
|
||||
@@ -58,8 +59,8 @@ export interface PlayHost {
|
||||
showGame(): void;
|
||||
/** Leave the game view if it is the one on screen. */
|
||||
leaveGame(): void;
|
||||
/** A recording of the game view is made (#405): it goes into the project. */
|
||||
recordingSaved(recording: MadeRecording): void;
|
||||
/** A recording of the game view is made (#405): it goes up, and into the project as the node asked. */
|
||||
recordingSaved(recording: MadeRecording, options: RecordingUploadOptions): void;
|
||||
}
|
||||
|
||||
export class PlaySession {
|
||||
@@ -97,7 +98,7 @@ export class PlaySession {
|
||||
this.world?.log.push(line);
|
||||
console.warn('[recording]', line);
|
||||
},
|
||||
saved: (recording) => host.recordingSaved(recording),
|
||||
saved: (recording, options) => host.recordingSaved(recording, options),
|
||||
});
|
||||
// An object picked during a run is looked at now: the hierarchy has to list it to show it picked.
|
||||
state.on('selection', () => {
|
||||
|
||||
Reference in new issue
Block a user