This issue summarises the UI plan for the campaign progression UI that we developed over the years, mainly through discussions in IRC and other places. I had originally planned to implement this for the playtest-20190825 cycle, but had to be dropped to focus on the activity rework. It remains one of my main priorities for the next release cycle.
On mission end pop up the menu progression UI. This has the same border decorations as the normal ingame menu, but is modal (no buttons to return to map, exit/restart, settings, etc), and the central dialog shows the progression UI. The dialog size is set by the pixel doubled / aspect corrected FMVs, with space above for a title and space below for buttons.
The first dialog shows the win/loss FMV with a "Mission Accomplished"/"Mission Failed" title and a skip button. This dialog is automatically skipped if FMVs are not installed.
The second dialog, if the mission was failed, shows the objectives list with buttons to restart, load savegame, or exit. The end-game loss music starts playing when the dialog opens.
The second dialog, if the mission was accomplished, shows the animated score screen. @AlexanderRavenheart鈥檚 sudden appearance and enthusiasm over the score screen first seemed to throw a wrench in the plan, but we should be able to drop #17057 in here with only minor layout changes. The end-game win music starts playing automatically when the dialog opens, and the bottom row has a continue button. Pressing the button before the animation completes will skip the animation, pressing it again (or for the first time after the animation finishes) proceeds to the next dialog. Missions replayed from the mission browser return to that dialog instead of proceeding.
The third dialog shows the campaign map selection as in the original game. The mission.yaml metadata will be overhauled to define mission groups that map to each screen, with the metadata for which map to use, clickmap regions, country description text, etc. Missions that have not yet been ported will show a greyed out arrow on the map, and the map will have a label saying that some missions are not yet available. If all the missions are missing we present a continue button that proceeds to the next campaign map without breaking flow. Campaigns that don鈥檛 provide choices (or which offer fixed choices based on mission events) can skip the map and proceed directly to the next dialog.
The fourth dialog shows the mission briefing video, or, if the FMVs are not installed, animates the briefing text above a suitable background. The FMV transitions directly to the briefing text without animating its display. The bottom row has the difficulty and game speed selectors, a skip button that changes to start after the briefing completes, and a Briefing button to restart the FMV if available.
The load screen and start videos behave as normal, except that the full screen start video now shows in a window to match everything else.
A list of the unlocked mission groups are stored for each mod in settings.yaml. The group list is used to enable missions for replay in the mission browser, and a "Continue" button in the main menu opens a menu to continue each campaign at the highest unlocked campaign map. A "New Campaign" button on the main menu presents a dialog showing the options (either animated, as in TD, or with standard buttons) and prompts the player to install the FMVs for the best experience. The mission group to enable on completion is defined on the MissionData trait, and a Lua API is exposed to allow missions to override it.
Related issues: #4492, #6781, #7213, #14238, #15441
Related PRs: #15020, #17057
Looks like a plan. I've got a few niggles however:
The first point should be handled by #10382 - the UI display scale will apply to the progression UI too, scaling the videos up by an extra (probably) 1.5x by default at 1440p. The issue isn't just the scaling, but also the aspect ratio.
The second point is covered by plans to rework #15020, which I see as a related but mostly distinct task to the UI here. I touched on diverging paths (which is also an issue for the TD GDI campaign) in the last paragraph.
I agree with the third point, but expect they (plus the dino/ant campaigns and expansion missions) should be presented through the mission browser UI.
RE campaign saves, which several people have been commenting on outside of github: I agree that this would make life easier for us (giving a nice place to save state within a campaign) and provide an intuitive UI for players provided we can find a solution for accessing previous missions at any time (e.g. with dropdown in the corner of the map) instead of having the mission browser UI.
The major issue with this approach is that we need to either strongly future-proof the save file format or have per-version directories for the campaign saves, the same we do for maps/saves/replays. Wiping people's campaign progress each time they install a new version is IMO a major blocker. Storing a minimum amount of info in the game settings would avoid this.
The more I think about it, I can probably come up with a save file format that will work provided missions are written with fallbacks to cover expected variables being undefined. This does seem like the better approach overall.
The issue isn't just the scaling, but also the aspect ratio.
The aspect ratio is a non-issue. Just scale to the vertical resolution and leave the sides black. Pillarboxing is by far the least intrusive method to adapt the videos. There is really no excuse for windowboxing and if you really must do so, at least make the borders black instead of cluttering the screen with extraneous UI elements.
Also interesting to note is that the videos in the first two games where 16:9 and appeared letterboxed. So they would actually fit better on modern monitors. (Tiberian Sun videos where 16:10 I think).
As for skipping the video: Only show a skip video prompt when the player has pressed any key or mouse button. Then allow to skip the video by pressing space again or clicking the button. That way, a player can quickly skip through all cut-scenes by double tapping space while hiding the UI by default and not sacrificing discoverability (ramming random keys is the first thing people will try).
The remaster provides a concrete implementation demonstrating my initial suggestion above. I hope everyone can agree that this strikes a good balance between OpenRA's mission menu and the original game's linear flow.
Can we have something similar for coop missions?
unlocking coop missions could be done the same way RA2 does it, by storing the name of the players and their progress.
So when all the players have joined the lobby, their progress (last unlocked map) is restored.
Most helpful comment
Looks like a plan. I've got a few niggles however: