This feature is available in Broadcast Pro and Broadcast Enterprise only.
Forio Broadcast Pro and Broadcast Enterprise allow you create a multiplayer simulation where individuals or teams compete with one another directly within the same simulation. Results of one team's or player's decision can have an effect on the results of other teams or players.
In a multiplayer simulation, each simulation run is controlled by a simulation facilitator. After each of the players or teams have entered their decisions for the next round of the simulation, the simulation facilitator advances the simulation to the next round. The facilitator can also reset the simulation and usually has the ability to alter the decisions made by the teams.

To illustrate how to create a multiplayer simulation, we will use the following multiplayer pricing sim example. In this simulation, a green, blue, and red team determine their prices and compete against each other for market share.
A team first enters the simulation by logging in:

After the team logs in, the team must create a name for their company.

In this case, the team has chosen the name "Blue Team." After submitting their name, the blue team can view performance from the previous round and make decisions for this round.

After the blue team has entered a new price for the next round, the team clicks the Submit Price button and sees the following page:

Notice that the Blue team does not advance the simulation. The simulation is advanced by the facilitator.
Broadcast allows you to create a simulation with two or more players or teams. In this example there are three teams, the blue, green, and red team. Similar log-in and decision screens appear for the green and red teams.
After the three teams have submitted their decisions. The simulation facilitator logs in.

In addition to changing some global variables for the simulation, the instructor can advance or restart the simulation.

After the facilitator clicks Advance Simulation One Year, the simulation advances for all teams to the next round.

Now the players can view results for their decisions and make decisions for their next round.
There are six steps to creating a multiplayer simulation.
Build a multiplayer model.
Set the simulation as a multiplayer simulation within Broadcast.
Identify your login page and facilitator page (but do not create a resume page).
Create a simulation group for the players to run the simulation in.
Define the players and the facilitator.
Create the web pages for the simulation.
A multiplayer model is usually created by using arrays. In the price simulation example, there are three teams. You can define these three teams by creating an array range called Team:
R Team = 1..3
In your own model, you can name the array range anything you like. You can also use enumerated arrays if you prefer.
You will then need to specify that this range is used in the simulation to indicate the different roles or teams. This will allow you assign the role when you create the user.
M MultiPlayerRolesRange = Team
Below is a complete copy of the pricing model example illustrated above. You can use this to build your own pricing simulation in order to learn how to build multiplayer simulations.
You can download a copy of this model, and the HTML pages needed to create this simulation at: www.forio.com/broadcastdocs/downloads/multiplayer.zip The name of the file that contains these model equations is price_model.txt
|
## Simple Multiplayer Simulation R Team = 1..3 M MultiplayerRolesRange = Team M StartTime = 2007 M EndTime = 2012 M InitialSteps = 0 M NumberFormat = #,##0 D Price[Team] = 10 D Price Sensitivity = 2
V Industry Sales = 30000 P Price Sensitivity.NumberFormat = "#,##0.0"
V Market Attractiveness[Team] = ( ARRAYAVG(Price) / Price ) ^ Price Sensitivity P Market Attractiveness.NumberFormat = "#,##0.000"
V Market Share[Team] = (Market Attractiveness / ARRAYSUM(Market Attractiveness)) P Market Share.NumberFormat = "#0%"
V Sales[Team] = Industry Sales * Market Share V Costs[Team] = 40000 V Revenue[Team] = Price * Sales V Profit[Team] = Revenue - Costs V Cumulative Profit[Team] = ACCUM(Profit) |
After you have loaded your multiplayer model into Broadcast you need to setup your simulation as a multiplayer simulation.
Select Account
» Simulation Settings from
the Broadcast Pro or Enterprise menubar.

Set Simulation
Access to Only accessible with
a password

The login will permit Broadcast to identify which team is currently entering decisions.
Set Multiplayer
Setting to Multiplayer simulation

If you set Control of step/reset to Facilitator only then Broadcast will only allow facilitators to advance or reset the simulation. If you set Control of step/reset to Any user, then both facilitators and end users (game players) will be able to advance the simulation.
For this demonstration simulation, either setting will work.
Click the
Change Settings button to confirm your changes.
In order to allow the simulation facilitator to view results and to advance or reset the simulation, you will need to identify your login page and facilitator page.
You can read more about how facilitator pages work in Facilitator Subscriptions and User Accounts.
To set the name of your login page and your facilitator page, follow these steps:
Select Account
»
Page Settings from the Broadcast
Pro or Enterprise menubar.

Set the name of your Login
page and your Facilitator home page. Make
sure to leave your Resume page field blank.
In this example, the log in page is named index.htm. When a facilitator logs in, the facilitator will be automatically directed to facilitator.htm.

Click the Save
Pages button at the bottom of the page

Broadcast can manage multiple multiplayer runs simultaneously. However, in order for Broadcast to know which team is associated with which run, you need to create a group within Broadcast and assign teams and a facilitator to each group.
To create a simulation group, follow these steps:
Select User
Access » Manage Multiplayer Groups
from the Broadcast Pro or Enterprise menubar.

Click the Create
New Group button.

Give the group a name.

The other fields for the group are optional.
Click the Create New
Group button to submit your group name.

Next, you need to define the players and the facilitator for the group that you created. You'll need to:
Create at least one new user for each team and at least one facilitator for each group.
Associate each user with a team.
Associate a facilitator with each group.
Select User
Access » Manage Users from
the Broadcast Pro or Enterprise menubar.

Click the Create New
User button.

Fill-in the fields to create a new user.
Set Group to
the group name you created.
Set User Type
to End User
Set Team
(or Role) to the appropriate team
number.

The Team number must be identical to the array element used for that team in the model.
Recall that in the original model we defined the array as:
R Team = 1..3
with our information defined for this group, we have assigned the blue team to array element 1, the green team to array element 2 and the red team to array element 3.
Click the Create New
User button at the bottom of the page.
Repeat this process for each of the teams in your simulation run.
One account must be defined as a facilitator. To assign a facilitator:
Select User
Access » Manage Users from
the Broadcast Pro or Enterprise menubar.

Click the Create New
User button.

Fill-in the fields to create a new user.
Set Group to
the group name you created.
Set User Type
to Facilitator
Set Team
(or Role) to none

Because the facilitator is not actually playing a competitor in this example, the facilitator is not assigned to any team.
Click the Create New
User button at the bottom of the page.
For this example multiplayer simulation, you will use four web pages:
a login page called index.htm
a team naming page called team_name.htm
a team results and decisions page called team_results.htm
a facilitator page called facilitator.htm
In this example, users submit decisions but do not advance the sim. The facilitator advances and resets the simulation, which is why you need a facilitator page.
You only need a single team page for all the teams in your simulation. You can use the $User.Team property to identify the team that is currently logged in.
As an example, you can download the HTML pages needed to create pricing simulation and a copy of the pricing model at: http://www.forio.com/broadcastdocs/downloads/multiplayer.zip
There are four HTML files included in this zip file:
|
File |
File Type |
|
index.htm |
the login page |
|
facilitator.htm |
the facilitator page |
|
team_results.htm |
the team results and decisions page |
|
team_name.htm |
the page to name the team |
Within a team page (like team_results.htm in the example), you can use special FML statements to determine which team is logged on and viewing the page in order to display data appropriate team.
|
FML Statement |
Description |
Example |
|
$User.Team |
Displays team array number |
1 |
|
$Users |
A collection of users |
|
By combining $User.Team with other FML statements, you can display values for current team. For example, assume that the blue team has logged in. We have already assigned the array range value 1 to the blue team.
So you can display the market share for the blue team by using the following on your web page:
$Values.get("Market Share[1]")
but, because you associated the value "1" with the blue team, you can also show the value for the blue team by using the following.
$Values.get("Market Share[$User.Team]")
By substituting $User.Team for the array element throughout your FML you can use the same page to display information for any team in the multiplayer simulation.
By combining the $User.Team reference with custom messages, you can let users store and retrieve their own team names.
For example, team_name.htm uses the following code to store a user-defined team name.
|
<FORM method="POST" action="team_results.htm"> <P>Please name your team <INPUT TYPE="TEXT" NAME="M_Name of Team $User.Team" VALUE="$User.FirstName $User.LastName" SIZE="20"> <INPUT TYPE="SUBMIT" VALUE="Submit"></P> </FORM> |
The name of the team is uniquely identified with the team that is currently logged in by using the name M_Name of Team $User.Team
To recall the team name on the team_results.htm page, you can use the reference:
$Messages.get("Name of Team $User.Team")
For more information on how to use messaging, see How to Let Users Save and Retrieve Text