Sorry about the length, but here are some of my most wanted documentation items. Other folks can feel free to jump in on this thread with wiki API documentation requests of their own.
1. Users, Players, and Parties, Oh My!In general, it would be helpful to have more information on how the categories of Users, Players, and Parties are organized and handled in Osiris. From what I have gathered, this is roughly how it plays out:
User: A human with a unique profile currently playing the game
Player: Any character that somehow belongs to a human controlled party, including summons. Basically, anything that is not actively controlled by AI.
Party: A grouping of all players assigned to a particular user. If there are two users playing a game together, are there two parties or one? Do summons show up in a party iteration?
Specific related APIs needing documentation:CharacterAddToParty()
CharacterAddToPlayerCharacter()
MakePlayerActive()
IterateParty
IterateParties
IterateUsers
CharacterIsControlled(): Does this mean actively selected and controlled or simply that it is a player? Could it be a player that is taunted or charmed?
Specific question related to best practices:
What does
CharacterAddToParty() do that isn't impicitly handled by
CharacterAssignToUser()? Why is it in the Origins campaign that
CharacterAddToParty() is not called in the same frame as
CharacterMakePlayer() and
CharacterAssignToUser() during the
PROC_EndLohseSaheilaMoment()? What's the significance of knowing Lohse's original faction in a DB variable before deciding to add her to the party?
The use of "AVATAR" tag:This appears to be a way of designating characters made or selected via character creation? The tag makes its way into the shared library via
SelectAndStartDialog(), presumably for sorting out issues related to dialogs with Origin recruited characters. This tag also appears to be responsible for adding the little crown in the UI portrait for the character. Is this hard-coded? Could we change the tag to something else and still get the crown in the UI?
Player Control:Is there any way to detect that a player has switched to a new active player via double clicking their portrait in the UI?
Camera IssuesIt would be nice to get official documentation on
CameraActivate() and Spectator Camera Triggers in general. I've already found that setting _Time to -1.0 makes it last indefinitely and 0.0 deactivates the camera view. There are, however, some tricky issues I have noticed with respect to camera timing and any developer notes would be great. For instance:
+ Changing an atmosphere while a spectactor camera is actived and inside the atmosphere does not exhibit the atmosphere change. It seems like the game requires some kind of camera event to take place (either camera moving or a new camera getting (re-)activated) for the atmosphere change to show.
+ The call seems to fail, get lost, or overriden in certain situations. For instance, if a user connects in a multi-player game and you try to use
CameraActivate() right away, it doesn't work. There seems to be a delay between when a user is "in game" and their camera is functional, and if you try to activate a camera too early it won't work. Are there other situations like this that are known?
Game Start EventsThe following events aren't documented yet and it would be helpful to understand more precisely when they are fired:
GameModeStarted
CharacterCreationStartedThank you for your time