Jump to content
Saltoperator

Have I understood JIP correctly?

Recommended Posts

I haven't really understood JIP quite well yet – when I should, must and shouldn't use it, despite reading on the wiki

 

My understanding of JIP is

  • that any remotely executed code where JIP is true will be executed for the player joining a game in progress immediately upon joining.
  • that code that hasn't been remotely executed yet doesn't need JIP to be true for JIP players to have that code executed once the conditions for executing said code are met.
  • that Bohemia's own modules are JIP friendly (Create Task etc. (I read some Steam posts where players had experienced tasks not being completed for JIP players when they used "BIS_fnc_setTaskState" with no regards to JIP parameter))

 

Am I getting it right? If my understanding of JIP is wrong, I have a lot of backtracking to do in all missions I am building... My biggest concern of course is that vital functions such as "BIS_fnc_endMission" won't work for JIP players.

 

I appreciate any input from mission makers who are experienced JIPpers 😁

 

 

Share this post


Link to post
Share on other sites

I also would like to understand JIP functionality better. Unfortunately I don't have answers for you, but I would like to note one thing. I have read on some posts from years ago people talking about how the modules in the editor are not friendly for JIP on dedicated servers. I may or may not be experiencing this presently as well. In my mission if a player JIP then the tasks that have already been completed will rapidly cycle through the notifications at the top of the screen for every client connected to the server. I'd like to research this more but I can't find a definitive answer. I've read some posts saying that if you use the BIS functions for tasks inside your SQFs you will have more stability. I have no idea if this is true or not but it may be what I try next for my mission.

Share this post


Link to post
Share on other sites
40 minutes ago, FoxClubNiner said:

I have read on some posts from years ago people talking about how the modules in the editor are not friendly for JIP on dedicated servers.

It wouldn't surprise me to be honest. I know Arma is an old game by now, and as much as I enjoy fiddling around in the editor, I often find myself having to perform tasks that in my opinion should be handled by the game engine by default...

Share this post


Link to post
Share on other sites

The game Crysis was out in 2007 and its' game editor was light years ahead of Arma's.

  • Like 1

Share this post


Link to post
Share on other sites
3 hours ago, Saltoperator said:

that any remotely executed code where JIP is true will be executed for the player joining a game in progress immediately upon joining.

 

Yes, assuming you mean using remoteExec with the JIP parameter set to true.

 

3 hours ago, Saltoperator said:

that code that hasn't been remotely executed yet doesn't need JIP to be true for JIP players to have that code executed once the conditions for executing said code are met.

 

Not sure what you mean here tbh but remoteExec with JIP-param set to false will only ever execute on clients that are connected to the server at the time of execution.

 

 

3 hours ago, Saltoperator said:

that Bohemia's own modules are JIP friendly (Create Task etc. (I read some Steam posts where players had experienced tasks not being completed for JIP players when they used "BIS_fnc_setTaskState" with no regards to JIP parameter))

The task framework (which BIS_fnc_setTaskState is a part of) is built by BIS to be fully MP compatible. So as long as you set it up right it should sync automatically for you.

 

Not sure if the task modules use that framework but would make sense that they do.

 

3 hours ago, Saltoperator said:

when I should, must and shouldn't use it, despite reading on the wiki

 

Again assuming we're talking about the remoteExec command:

JIP = false - use when something only needs to happen for everyone that are present right now. Probably the most common usage (hence it being default).

 

JIP = true - avoid if possible but use when something needs to happen for everyone present and also for any late arrivals. Remember to save the JIP ID and remove from the JIP queue when no longer needed. See wiki for how.

 

JIP = Object, Group or netId - use when something needs to happen for everyone present and any late arrivals but only as long as the given object, group or netId exists/is valid. This is perfect for clientside things like adding interactions to spawned objects; deleting the object will automatically remove the entry from the JIP queue.

 

Quote

My biggest concern of course is that vital functions such as "BIS_fnc_endMission" won't work for JIP players.

 

JIP just means join in progress. As such there is very little difference between a JIP client and a "regular" MP client. Once the JIP-client is fully initiated you rarely treat them any different, if at all.

 

So something like BIS_fnc_endMission which has local and immediate effect you just remoteExec with JIP false. 

 

I recommend you check out the wiki on MP locality if you haven't already.

  • Like 2

Share this post


Link to post
Share on other sites
19 hours ago, mrcurry said:

 

Yes, assuming you mean using remoteExec with the JIP parameter set to true.

 

 

Not sure what you mean here tbh but remoteExec with JIP-param set to false will only ever execute on clients that are connected to the server at the time of execution.

 

 

The task framework (which BIS_fnc_setTaskState is a part of) is built by BIS to be fully MP compatible. So as long as you set it up right it should sync automatically for you.

 

Not sure if the task modules use that framework but would make sense that they do.

 

 

Again assuming we're talking about the remoteExec command:

JIP = false - use when something only needs to happen for everyone that are present right now. Probably the most common usage (hence it being default).

 

JIP = true - avoid if possible but use when something needs to happen for everyone present and also for any late arrivals. Remember to save the JIP ID and remove from the JIP queue when no longer needed. See wiki for how.

 

JIP = Object, Group or netId - use when something needs to happen for everyone present and any late arrivals but only as long as the given object, group or netId exists/is valid. This is perfect for clientside things like adding interactions to spawned objects; deleting the object will automatically remove the entry from the JIP queue.

 

 

JIP just means join in progress. As such there is very little difference between a JIP client and a "regular" MP client. Once the JIP-client is fully initiated you rarely treat them any different, if at all.

 

So something like BIS_fnc_endMission which has local and immediate effect you just remoteExec with JIP false. 

 

I recommend you check out the wiki on MP locality if you haven't already.

jip is "not an interactive profiler"

it kicks people...

  • Confused 1

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×