Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MP controller leaky abstraction #4330

Open
jostephd opened this issue Sep 9, 2019 · 2 comments

Comments

@jostephd
Copy link
Member

commented Sep 9, 2019

In MP games, the mp_staging screen and the give_control dialog present "Default AI" as though it weren't controlled by any (human) player. However, that's not how it's implemented. Under the hood, assigning a side to "Default AI" makes it controlled by the host and droided.

This leads to some user-visible differences:

  • Suppose you host a game, and the game has started, and you want to take control of a side. If the side is currently controlled by another human, you should use :give_control; if the side was assigned to "Default AI", however, you should use :droid. (If you try to use :give_control you'll get a patronizing error message, That's already josteph's side, silly, where josteph is the name of the host player.) The command to use is different, but there's nothing in the UI that makes players expect this difference.
  • If you assigned a side to "Default AI", the :give_control will list the human players and observers and "Default AI (RCA) 1". If you then (undroid?) and assign the side to a human, "Default AI (RCA) 1" will no longer appear in the :give_control list, so it's not obvious how to assign the side back to an AI player. (Whereas if you want to flip a side back and forth between two humans, that's easy: just :give_control and :give_control again.)

Please let's make things consistent. For example, :give_control to self on a droided side could undroid it, and :give_control of a network human side to AI could give it to the host and droid it (and there should be a "New AI side" entry in the :give_control dialog, for this purpose, like there's "Default AI" in the mp_staging screen). The UI pretends that "Default AI" and humans are both entities that can control a side, so it should pretend so everywhere.

@jostephd jostephd added Bug MP UI labels Sep 9, 2019

@jyrkive

This comment has been minimized.

Copy link
Member

commented Sep 9, 2019

The UI pretends that "Default AI" and humans are both entities that can control a side, so it should pretend so everywhere.

I'd still leave the exception of allowing individual players to droid their sides. They can temporarily give control of their side to locally running AI (e.g. if they need to take a short break) and claim it back later without having to disrupt the host.

@Pentarctagon

This comment has been minimized.

Copy link
Member

commented Sep 9, 2019

Alternatively, the distinction between the side's controller and the side's owner could be made more visible.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants
You can’t perform that action at this time.