Openra: Implement campaign progression UI

Created on 8 Sep 2019  路  6Comments  路  Source: OpenRA/OpenRA

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

Feature UI

Most helpful comment

Looks like a plan. I've got a few niggles however:

  • It would be better to display all FMVs in full screen. Viewing them in a small window on top of the map breaks immersion and narrative flow. Also those low-res originals will be really, really tiny on a high-res monitor (yes, it's me again, complaining about 1440p support). I'd take a pixely video over a post stamp any day of the year.
  • The idea of unlocking mission groups is not enough for keeping track of a campaign progression. There can be variables that need to carry over from one mission to the next, such as resources or completion of certain objectives (e.g. in TS there are the optional missions that can make the next mission easier). There is also the one RA mission where you carry over an entire base IIRC. It also makes little sense to unlock all alternate paths when narratively it is an either/or situation. I think implementing campaign saves is a better direction to take.
  • We should definitely support loading custom mini-campaigns. That would open up a lot of possibilities for mappers.

All 6 comments

Looks like a plan. I've got a few niggles however:

  • It would be better to display all FMVs in full screen. Viewing them in a small window on top of the map breaks immersion and narrative flow. Also those low-res originals will be really, really tiny on a high-res monitor (yes, it's me again, complaining about 1440p support). I'd take a pixely video over a post stamp any day of the year.
  • The idea of unlocking mission groups is not enough for keeping track of a campaign progression. There can be variables that need to carry over from one mission to the next, such as resources or completion of certain objectives (e.g. in TS there are the optional missions that can make the next mission easier). There is also the one RA mission where you carry over an entire base IIRC. It also makes little sense to unlock all alternate paths when narratively it is an either/or situation. I think implementing campaign saves is a better direction to take.
  • We should definitely support loading custom mini-campaigns. That would open up a lot of possibilities for mappers.

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.

Was this page helpful?
0 / 5 - 0 ratings