In the games current state with no NIS, these are the the different situations I ran into:
ONE the NIS substitute scene - Player has no control at all, has to see exactly what the programmer intends them to see.
Universe_AllowPlayerOrders( 0 )
And hears exactly what the programmer wants them to hear. (I start every event with one of these options)
Note for the 4th option below: I used this If I wanted to set music while I am also delivering the objective messages. Since I control the music and control the audio messages I can set this specific music to a volume(in audio’s lua) that adds background ambiance and does not interference with the audio message. (example is at the end of my intro while in Sensor Manager while giving player objective information).
Sound_EnterIntelEvent() --If you want “chirp” of IntelEvent & music & ship chatter muted.
Sound_EnableAllSpeech( 0 ) --If you only want music & ship chatter muted.
Sound_EnterIntelEvent() --If you want the “chirp”
Sound_EnableAllSpeech( 1 ) – with music & ship chatter
Sound_EnterIntelEvent() --If you want the “chirp”.
Sound_EnableAllSpeech( 1 ) --You want music
Sound_SetMuteActor(‘Fleet’) --But do not want ship chatter.
And just in case the player got a quick space bar in when you did not expect it
Sensors_EnableToggle(0) --Lock them out of being able to adjust
Sensors_Toggle( 0 ) --Then set them where they need to be (0/1)
TWO - Objective with semi-forced attention to camera (in or out of sensor manager)
I want to make sure the player sees what I am talking about but want to let them still be in tune with what is going on elsewhere since the game is actively playing.
In the below image, see green text for explanation. In this scene I chose to be IN sensor manager so the player would better see the PINGs associated with delivering the Objective to the player. However, the player is not locked out of controlling the camera or units so they can still pay attention to the ongoing game at the same time.
The gist, lock player in Sensor Manager so they have a better view of the Objective I am about to show them but still allow them to control some things at the same time.
NOTE: I try hard to not take control away from the user at times when it would adversely affect them. Related to the event supportfriend above I launch the event based on some critera to smooth out the player experience, read green text.
The gist is, if the player rescued 7 groups, which satisfied the previous objective, then let us think about starting the “supportfriend” objective. However before we do lets make sure the player is where they are suppose to be (in a dust cloud) and lets make sure they are not actively in battle with a patrolling group. How annoyed would you be if you were micro-ing, even a small battle, and the programmer just yanked you away? It would not adversely affect the outcome of the game if the player was given some time to wrap up a small battle before we set the next objective in motion… it does inject a little randomness to the bottom line but not enough to offset the annoyance factor.
THREE - Objective with NO attention to camera.
And there are those times were you just want to give the player a quick message, reminder, or helping hand but do not want to take away camera at all. <not inserting code here, can be derived easy enough>
Some Important notes to add:
EventPlaying is an important part of mission maps. Since a RULE will keep trying until the programmer terminates it the EventPlaying is a way to track if the player is IN an event or not. You do not want more then one event playing at a time!
EventPointer and Pings can get very confusing since they are used all over the mission code. Early on to set variables and local text, middle of the LUA to set objective states, and at the end in the EVENT table to show the player. It really does pay to develop some standard and keep track of them in some notes to keep your sanity! If you just start making up names on the way you will get into a mess! Not to mention there are several different kinds that use Volumes or SOBgroups and in event tables you often want to overlap the appearance and disappearance of them for affect.
EVENT Table The event table is the preferred method to set up a sequence of events for the player but it can also be done outside of the Event table. In the example below I am walking through the intro scene of a mission executing code (and sometimes EVENTS) at specific time intervals (see highlighted text). The reason I do this is because the opening scene of my mission has a VERY large battle happening and I can move things(like ships flying by or Capitals exploding, carrier launches, camera interpolates, specific sound bites or music, etc) by simply adjusting the variable “g_now_time” to what ever I want.
The downside is I can not let the player skip it!
Camera_Interpolate - is not only handy to move the camera but it also locks the player out and removes cursor during the interpolate time.
And lastly an off topic note in case I forget on a future post, just wanted to add that this function is awesome for hyperspacing unit(s) in exactly the direction you want them to be pointing! This is super important for Scenes as well as timing since a capital class unit takes so long to turn around it can affect the timing of events that follow like dominoes… I am not sure who made this unless the Owner “Mostly_Harmless” is the creator? Someone can probably comment on that.
The one downside is sometimes the ship flickers in position before it hyperspaces in. I do not know what (cpu usage, graphics usage, ram, or other) factor sometimes causes this issue?