Skip to content

Unify objectives language in public facing places#7391

Closed
MjnMixael wants to merge 3 commits into
scp-fs2open:masterfrom
MjnMixael:unify-objectives-language
Closed

Unify objectives language in public facing places#7391
MjnMixael wants to merge 3 commits into
scp-fs2open:masterfrom
MjnMixael:unify-objectives-language

Conversation

@MjnMixael
Copy link
Copy Markdown
Contributor

@MjnMixael MjnMixael commented Apr 20, 2026

In FRED and QtFRED I noticed that the Mission Goals dialogs use the terms "goals" and "objectives" interchangeably. It's not clear why and it can cause confusion because "goals" can also refer to AI Goals. The goal objective of this PR is to unify around a single term to minimize confusion, which aligns with one of my core goals objectives for QtFRED; making mission design more accessible.

With this PR in place we have

  • Directives: mini tasks given to the player during missions and shown on the HUD
  • Objectives: major tasks given to the player during the mission briefing, shown in the Objectives screen during missions
  • Goals: tasks given to AI ships to cause certain behaviors

This is almost exclusively a public facing change only; that is in editors, the Lua API, and the sexp names. Internal code such as enum & variable names, and file names should probably be changed at some point so that coder language matches user language, but that can come later and in smaller chunks. Doing that here would be an unnecessarily large PR.

This PR does add two API changes. First, there is a new ADE_INDEXER_DEPRECATED to match the existing versions of Func and Virtvar. I copied the methods from those directly. Second, there is a new path in missionsave.cpp that will use the old sexp string names in place of the new if we're saving in retail format. I was surprised this didn't exist before, so there may be other sexps that were renamed over the years that may benefit from this as well.

@MjnMixael MjnMixael added qtfred A feature or issue related to qtFred. fred A feature or issue related to the FReespace EDitor (FRED) labels Apr 20, 2026
@github-project-automation github-project-automation Bot moved this to Work In Progress (PRs) in qtFRED2 Apr 20, 2026
@MjnMixael
Copy link
Copy Markdown
Contributor Author

MjnMixael commented May 3, 2026

This will need help dialog updates to unify language

Done

@MjnMixael MjnMixael force-pushed the unify-objectives-language branch from 01a12eb to 31bdced Compare May 4, 2026 13:58
@MjnMixael MjnMixael added this to the Release 26.0 milestone May 7, 2026
@MjnMixael MjnMixael force-pushed the unify-objectives-language branch from 31bdced to 33f4f72 Compare May 12, 2026 13:22
Comment thread code/parse/sexp.cpp
"\tReturns true N seconds after the specified objective in the this mission is true (or succeeded). It returns false otherwise.\r\n\r\n"
"\tThis operator works by checking the mission log. Since objective status is evaluated after event status, a delay of 0 will cause an event to become true on the frame after the objective becomes true.\r\n\r\n"
"Returns a boolean value. Takes 2 required arguments and 1 optional argument...\r\n"
"\t1:\tName of the event in the mission.\r\n"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shudders

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure what was intended by this comment but I found some other things with the help text that needed addressing as well as a sexp I missed (reset-goal -> reset-objective).

Comment thread code/scripting/api/libs/mission.cpp Outdated
//****SUBLIBRARY: Mission/Mission_Objectives
ADE_LIB_DERIV(l_Mission_Objectives, "Mission_Objectives", "Objectives", "Mission objectives", l_Mission);

ADE_INDEXER(l_Mission_Objectives, "number/string IndexOrName", "Indexes mission objectives list", "mission_goal", "Objective handle, or invalid objective handle if index was invalid")
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still "mission_goal" here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yup. Done

Comment thread fred2/fred.rc
Copy link
Copy Markdown
Member

@BMagnu BMagnu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your patience on this. Internally, the SCP team has debated this for a bit now.
It's definitely useful to discuss possible QoL updates, though to be frank, we're a rather hesitant on the implementation of this PR.
Given the cost benefit considerations, we think this messes a bit too much with established FREDing.
Unfortunately, this would cause major issues with trying to follow the established and commonly referenced FREDing tutorials, especially with QtFRED changing parts of the UI, and the language being different.
It renames some very, very old (including retail!) and crucial SEXPs, causing people who are used to these to have to search and guess what they want. As an final note, scripting deprecation are always to be avoided unless there's a fundamental underlying technical reason for it that makes it unavoidable.

Personally, I think the idea is not wrong, but the implementation is way too invasive.
It'd be fine to leave the API's and SEXPs as is, and enhance the labels and help texts to strictly say "AI Goals" or "Mission Goals / Objectives" instead of just "Goals"

@github-project-automation github-project-automation Bot moved this from Work In Progress (PRs) to In Review (PRs) in qtFRED2 May 20, 2026
@MjnMixael
Copy link
Copy Markdown
Contributor Author

Thanks for your patience on this. Internally, the SCP team has debated this for a bit now. It's definitely useful to discuss possible QoL updates, though to be frank, we're a rather hesitant on the implementation of this PR. Given the cost benefit considerations, we think this messes a bit too much with established FREDing. Unfortunately, this would cause major issues with trying to follow the established and commonly referenced FREDing tutorials, especially with QtFRED changing parts of the UI, and the language being different. It renames some very, very old (including retail!) and crucial SEXPs, causing people who are used to these to have to search and guess what they want. As an final note, scripting deprecation are always to be avoided unless there's a fundamental underlying technical reason for it that makes it unavoidable.

Personally, I think the idea is not wrong, but the implementation is way too invasive. It'd be fine to leave the API's and SEXPs as is, and enhance the labels and help texts to strictly say "AI Goals" or "Mission Goals / Objectives" instead of just "Goals"

I think that's a fairly shortsighted take and likely led by a particular SCP member who has a hard time with change. As one of the most active contributors to SCP it would be nice to be a part of these sort of discussions but I get that there are members who don't particularly want my opinions for whatever reason.

QtFRED is designed to have a whole new set of tutorials linked directly into it's help documentation and if we were ever going to unify around a common set of terms for the community going forward, now would be the time. This community lives and dies by making it easier for new members to get into making missions. This kind of thing lowers that barrier significantly.

However, I'm working hard to finish one of the biggest SCP projects yet and will choose to just let this go instead trying to argue the point with a group that doesn't want to hear my position.

@MjnMixael MjnMixael closed this May 20, 2026
@github-project-automation github-project-automation Bot moved this from In Review (PRs) to Done in qtFRED2 May 20, 2026
@MjnMixael MjnMixael deleted the unify-objectives-language branch May 20, 2026 01:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fred A feature or issue related to the FReespace EDitor (FRED) qtfred A feature or issue related to qtFred.

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants