beyond-all-reason / beyond-all-reason/RecoilEngine

Organize MoveCtrl setters

Open
#2,469 2 comments 0 reactions 0 assignees View on GitHub
area: Lua API game compat refactor
Dominant language
C++
Stars
679
Forks
290
Avg merge
3d 2h
Merged PRs (30d)
40

Description

Notice Spring.SetProjectileMoveControl, Spring.SetFeatureMoveCtrl and Spring.MoveCtrl.{Enable,Disable}.

Scoping and naming seems inconsistent between these 3 callouts.

Apart from that it seems the movectrl behavior is also inconsistent between these 3. For example:

- Features can't have their velocity/position set unless movectrl is enabled (what happens if it is?)
- Projectiles can have their velocity position set regardless of movectrl, movectrl only regulates how the engine updates the velocity/position (see also that each projectile type implements their own logic for this)
- Units (?)

I don't suggest changing anything, except the naming/scope scope of the callouts and documenting the behavior for each category a movectrl feature exists.

As mentioned perhaps makes sense to have them on the scope of `Spring.MoveCtrl` but note that all callouts in `Spring.MoveCtrl` currently are related to units, apart from the complexity and the fact many of those callouts being made generic does not make much sense given how each of {unit,projectile,feature} has special logic.

For me, with the information I have, would be satisfactory to:

- Rename SetProjectileMoveControl -> SetProjectileMoveCtrl, while keeping the original marked as deprecated
- Document better what movectrl is and how it behaves for each of {unit,feature,projectile}
- Perhaps a guide page "Manipulating world objects", detailing in prose use cases and api

Contributor guide

Open the contributing guide

Research direction

Start by locating the API definitions and documentation for Spring.SetProjectileMoveControl, Spring.SetFeatureMoveCtrl, and Spring.MoveCtrl.{Enable,Disable}. Compare the documented behavior for units, features, and projectiles, and check how the existing callout names are scoped. Done means the projectile setter has a deprecated old name, the three categories' behavior is documented, and any agreed guide content is added.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
api, documentation
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.