Scaling the Minecraft Game for studying Human Behavior

I’ve created a game in Minecraft for testing human exploration in indoor environments. It’s available for playing at . Please go ahead and give it a try if you have a minecraft account and want to play Minecraft for Science . Or if you’re the competitive sort, try to get on the leaderboard.


It’s been more than a year since my last post on how I created the game. Since then, I’ve got some very basic results from it with students in NTU playing. However, it was surprisingly hard to get people and I had to host it online to get enough data. It took a while to get funding approved and stuff but finally I’ve managed to host my experiment on Amazon. In this post, I’ll try to describe the things I had to do since my last post to get this to work.

What I’d already done:

A short version of what I explained in my last post: I’d created an adventure of sorts in Minecraft where players get spawned at one location, follow instructions to explore a three storey building and then complete a few tasks. On disconnecting from the server (manually), all the data of the actions of the player is written to a MySQL server. I analyse this data in the hope of finding a cure for cancer. And this is what I had to do for that:

Step 1 : Shutting down the server automatically

I can’t believe how long it took me to do this, but it ended up being quite simple with my modified statistician plugin simply sending a shutdown command to the server once the player completed the last task.

Step 2: Starting on request

Next, I used Python’s brilliant twisted framework to write a simple server program that would listen for connections and start a tekkit server when such a request was received. To test things out I created a simple client side script also that simply sent the username. The database would be queried for existing attempts and the unique id consisting of the username and attempt number was created to store it in the database.

TO start and stop the server I used this handy little script: .

Step 3: Hosting the server and scripts on AWS

Now that I had this simple set up working I got an amazon EC2 machine and a MySQL database and copied all my server files and scripts there. Instructions on how to do this are easily available on googling and quite straightforward to follow.

If anyone’s trying to copy a Tekkit server from a Windows to a linux machine, remember that you have to download the Tekkit server on the machine separately and just copy the world files (as opposed to trying to copy the whole folder there).

Step 4: Final Touches

Now that I had most of this working, I added a new page and with some simple python and javascript and a bit of effort in beautifying things, I was able to send requests to play from my website to the EC2 server and play.

I also made the server a white listed server with the white list being created on a person signing up. Finally, I put a time out on the server that would shut down the spawned tekkit server after an hour so that the experiment didn’t stop simply because someone started the server and didn’t play.

The end results of all this are there for all to see at .


Final Comments

I didn’t go to as much detail as I wanted simply because I don’t have the time to write in detail. I’ll try to share all the scripts and stuff I wrote on my GitHub page once I get time to clean it up a bit. In the mean time, if anyone’e curious to know more about any part of the process, do ask.

Also, if you play minecraft and have a minecraft account or know anyone who does, please go to and play minecraft for science 🙂

Each Tekkit server with all the plugins I have require about 3G of memory, so it’s expensive to get more than the one EC2 instance that I have now and making a proper queueing system that emails people when the server is available will take a lot of effort so as of now, only one player can play at a time and someone else who requests while the one player is playing will simply have to wait and check back later.

I’m working on a paper summarizing the results from my analysis. Shall share that also once I’m done with it.


Making a game to study how humans explore

 I made a first person exploration game in minecraft which I’m using to study how human beings gain and store spatial knowledge. This post outlines the processes involved in making and getting data for analysis from a minecraft server.

A little bit of background first: my PhD thesis is on modeling human behavior in simulations of crowds. More specifically it’s about modeling crowds that are evacuating buildings during fires, terrorist attacks or something similar. As a part of my thesis, I’ve been planning to develop a model of spatial knowledge and exploratory behavior of humans; this could be invaluable in structuring buildings in a way so that evacuation is quick, efficient and relatively painless. In order to get some data on how humans explore, we came up with the idea of making a game which could subsequently be analysed to determine something about human behavior (It’s not us who came up with the idea to use games to analyse stuff. There has been an interesting Ted talk on it). It’s been a really interesting process.

Making a game from scratch

I started off trying to make an actual game from scratch using the Unity Game Engine. Pretty soon, I realized that even though I could make a game of sorts in unity without much difficulty, I would be spending an inordinate amount of time designing the environment, the characters, the game play, etc. At the suggestion of my prof I decided to check Minecraft out as an alternative.

Resorting to Minecraft

For those who don’t know, in Minecraft, the player takes on an avatar that can destroy or create blocks, forming buildings, structures, artwork and even entire cities on multi-player servers or single player worlds across multiple game modes. It’s a simple and fun enough game. In the original version, in the day time you gather resources to make shelters and weapons and at night monsters come out to destroy you and you have to protect yourself. With the game having no specific goals and the player having the freedom to do a lot of things, despite the extremely simple graphics, it’s turned out to be insanely popular. Users range from gamers to hobbyists to teachers trying to teach computers and programming in an interesting way to kids.

Getting instructions to kick off

Getting instructions to kick off

Creating a world

Why did it make sense for me? Well, in minecraft, I could use the creative mode to get access to unlimited resources and make anything I wanted without having to bother with monsters. There were also some tools that made this part even easier. The worlds thus created could be exported and used any time. There were a lot of people who’d made some amazing stuff ranging from the Taj Mahal, to Hogwarts to scaled models of cities. Some of these amazing creations can be found at and the like. So now I could create an environment and modify it easily to structure my experiments as needed. After some research and testing I zeroed in on this amazing little palace.

I could edit it however I wanted and basically save a snapshot of the world I create by copying the “world” folder. At any point to start from that world, I could just replace the world folder in the currently running minecraft server instance and voila! I had a building/environment for my game. All I needed to do was make a game out of it.

Making a game in minecraft

The other great thing about Minecraft besides custom worlds are the mods.  Modifications of the Minecraft code, called mods, add a variety of gameplay changes, ranging from new blocks, new items, new mobs to entire arrays of mechanisms to craft. And there were hundreds, probably thousands of these online. There were also some particular flavors of minecraft like bukkit and tekkit that came preloaded with a lot of amazing mods. So I got tekkit and I had some pretty neat wireless transmitters and receivers and ready made NAND gates (You can create your own NANDgates in vanilla minecraft but this is incredibly hard and very messy). How would I use all these tools though? Again with inspiration from some podcasts and youtube videos and after discarding some ideas like making puzzle games and treasure hunts, I finally found the perfect idea for a game that would satisfy my research requirements and could be made by a beginner like me in minecraft without much difficulty. And I called it …. (drum-roll) ….

The Great Escape

Well, I do need to come up with a better name for it; but the basic idea was that a player would be made to explore the building doing some basic tasks. This would be the exploration phase. Following this, he would be given some tasks to do which would require him to use some of this knowledge he’s gained from his exploration. More specifically, the player had to find 11 prisons distributed around the palace and then fulfill a couple of tasks to escape. But how would I go about making this?

Prisons with glass windows and an iron door. Using the lever opens the door and sends a wireless signal.

Prisons with glass windows and an iron door. Using the lever opens the door and sends a wireless signal.

Making the prisons

Well, first, there was the relatively simple task of making the prisons. I manually made them using creative mode and some standard blocks, placed a villager avatar inside it and made an iron door with a lever next to it. In minecraft this meant that the iron door could only be opened with the lever. So after closing of certain parts of the huge palace and placing the prisons in such a way that finding them would require the player to explore at least 90% of the palace, I had to design the tasks to do after exploration. This was going to be much more difficult since I had to somehow hide these tasks and reveal them only when all the prisoners were freed.

Hidden tasks

This is where the NAND gates came in hand. Using a bunch of wireless transmitters connected to each lever I managed to create a simple circuit that would open secret walls only when all 11 prisons were opened or some tasks completed. My basic game was ready.

Making it a game

I had my environment and my game, there was still one big issue though: this was still minecraft. So the players could still go around destroy things I’d made and mess up the environment. This is when I turned to a different kind of mod: plugins. Minecraft is basically just java based and some people had been nice enough to create APIs of sorts and tutorials and stuff for it which could basically be used to modify the game to our liking. Plugins were basically java jar files that could would put on the server which modified the game in some way. With a bit of searching through the huge library of plugins and some help from some forums I found and modified some existing mods so that the players could now only interact with doors and levers.

Funky what simple logic gates can do... That's the logic of my game.

Funky what simple logic gates can do… That’s the logic of my game.

Now all I had to do was copy my world file and the mod that controlled the interacting permissions to my server and start it. I also installed a plugin that ensured that players who joined spawned at a particular location. After that if I joined the world I would start at the same location and be forced to play the game in the way it was meant to be played. But how would this help in my research?

Getting data

Here again, I found an existing plugin for a minecraft server called Statistician made by ChaseHQ. It’s a pretty neat tool that enables the minecraft server administrator to analyse statistics about what resources where gathered by each player and how much they ran. It wasn’t too hard to add a few lines of code to track the players locations at each time step as well.

Making it more interesting

Now that I had access to some code that could track the user, it wasn’t too hard for me to make the game a little more game-like with some interactive messages. I first made a timer that tracked how long the user had been playing and gave him/her a countdown of 45 minutes with a 1 minute time step.  I then changed this to include some preparation time for people who hadn’t played first person games before.

What was more interesting was adding some more custom events to the tracker. I added an event that would be triggered when a prison was opened, storing the lever ID (based on location) and the time it was opened in the database. This gave an idea of which prison and task was completed at what time. Now that I was tracking when prisons were opened I also gave warnings to players when they closed prison doors inadvertently, which was a common mistake that players made.

The actual setup

So basically, what I have is the game server running the world I created with all the prisoners, levers, prisons and stuff. A player could join the server and be spawned at the “starting location” for the game. Here he/she would follow instructions given from the server and complete the game. Once complete, he/she would quit the game. On the player disconnecting, all the data till the point of the last task being completed needed to be written into a database. After this I needed to restart the server with the same world in it’s pristine state again so that someone else could play. I made a script that could automate most of this. The player had to disconnect and the server had to be stopped manually. After this a script could be run that prompted for a name to store the latest data under. Once stored in the database, the world was copied into the server folder and the game restarted.

Pros and Cons of using Minecraft to do this experiment


  • Can relatively painlessly create new environments.
  • Could go on to study the effects of communication in escape by allowing more players to join the server and play at the same time. (I currently allow only one at a time for reasons I’ll discuss in a bit.)
  • The awesome mod community: There are countless existing mods and more importantly for me, it’s just simple java so I could add my own mods quite painlessly.
  • The game structure on the server is quite simple: easy to add mods and change worlds. And script the whole process.

Limitations :

Well, they’re mostly limitations of how I did it either due to lack of time/ interest or in some cases a lack of knowledge and not limitations of minecraft per se:

  • Only one person can play at a time. Unless I get more servers, any interactions made by one person to the world would be seen by others since they were playing in the same world.
  • I only had the school server to run on which is behind a corporate firewall and is thus quite slow to connect to remotely. So I had to be in the University network to play reasonably smoothly.
  • I still haven’t figured out a way to kill the server when a player disconnects and restart a new instance of the server with the pristine environment so that someone else can connect.

There are other limitations as well with regard to what conclusions can be drawn from a game reliably. But since I haven’t discussed the game or the structure of the experiment itself here. I don’t think it’s relevant to discuss this at this point.

There were certain minor issues I encountered along the way, not the least of which was making the game playable by people who had never played games before and for people who had difficulty understanding english properly. I still don’t have enough data, but some of the things do look interesting. Shall post about it later when I have something definitive.

A link to the modified plugin for anyone interested : github repo.

Running simulations and analysing data

My first post in a long time. This is more as a journal entry for me to look back at when I need to.

My PhD project mostly involves running simulations of hundreds of people evacuating from a building and then analysing the simulation in various ways. While the MASON framework in Java helps a lot in the implementation of the model itself, something just as intersting and some thing that in the end feels a lot cooler is running all those simulations and getting data and analysing them.

Step 1: Running multiple Simulations

MASON allows you to run simulations in two major ways : Either using the GUI in which you get to see how the simulation is going. This mode is very useful and essential when creating and debugging the model. However when it comes to actually running simulations and gathering data for analysis, this is quite obviously impractical. This is when the console mode comes in handy. In the console mode, you run several replications of the required simulation with the required seed. Initially I used the handy in built function to do this. I also needed to store the simulation specific settings in some place. Initially I did this using constants in various classes, which I changed to storing all the constants in one class which was a lot more convenient to change and finally I resorted to a much more practical xml file which can easily be read from using JaxB in java. Though I think I might change to an sql based implementation soon. Anyway, the point is, I am able to run my simulation using it’s jar file and an xml file with all the parameters that are used for the simulation.

Step 2: Storing data:

The next step in this process is collecting data from these simulations. As a way to get started I stored my initial files as simple text files in csv format which I analysed in excel. Pretty soon, this became extremely impractical because of the amount of data I had to store. So I changed to storing in binary format and created  parser which would convert generated binary files to text files. I could have used some of java’s inbuilt analysis tools like some provided by the apache framework, but I was quite lazy, and I was working with someone who wanted the text files so that he could analyse it in Matlab, so I resorted to a binary file with a parser to convert to text.

However, despite the organised file hierarchy and names, this was still very difficult to analyse and keep organised and it was still very huge. Also there were a lot of complications when I were writing from multiple runs, experiments, etc. So I switched to what I should actually have done: a relational database. I set up a mysql server instance on my lab computer and wrote all the required database to the file at the end of each run of the simulation.

Step 3: Analysing the data :

Excel being boring, I shall not go into the details of how I did it initially. So once I got the data in MySQL, I needed some tool to analyse it. That’s when my prof recommended using mathplotlib in python. I’ve used python before to create a simple script to clean up references in a text file however, I’ve hardly used it for anything else even though I liked the language a lot. So I decided to give it a try. Interestingly enough I had a lot of trouble finding a free library for mysql. Though once I finally found, mySQLdb, the process of querying and analysing the data and getting some neat graphs took hardly a few lines of code. So now once I had the data, i could simply run the python script and get all the charts I needed.

Step 4: The power of the cloud

A single run of my simulation can take up to 5 minutes. For 100 replications of  under 6 different settings (this is what I needed for the particular run at that time) this would take about 3000 minutes or 50 hours or just over 2 days. While not bad, I needed my computer and I worked at the parallel and distributed computing center so it would have been a waste to not make use of all that computing power at our disposal. So I got myself an account on the cluster and created a simple shell script that would run the simulation with the fixed settings. Eventually I extended this so that it would read parameters from a separate text file, modify the xml file appropriately, and then run the simulation the required number of times and finally, at the end of the run I would be send an email. Here is the code for this first script:

# runSimulations = runsSimulations from inputs in file 1


case $# in
  0|1) echo 'Usage runSimulations settingsFile xmlFile' 1>&2; exit 1

awk -v xmlFile=$2 '
BEGIN {totalCount=1
  model[NR] = $1
  startingPoint[NR+1] = startingPoint[NR]+NF-1
    completeValuesList[totalCount] = $i
  startingPoint[NR+1] = totalCount-1
  for (j=0; j<=NR; j++){
    indices[j] = 0


      value[j] = completeValuesList[startingPoint[j]+indices[j]]
      command = "overwrite " xmlFile " xmlParser " model[j] " " value[j] " " xmlFile
      # print command
    testCommand = "grep FilePath " xmlFile;
    testCommand |getline filePathLine
    seed = 1
    javaCommand = "java -cp dist/CrowdSimulation.jar app.RVOModel -repeat 100 -time 100 -seed " seed
    # print javaCommand
       }else {
}' $1
echo $1 $2 "run complete"|mail -s "Run Complete"

For anyone with a little experience in shell scripting, this might seem like crap, so if are bored enough to go through this and you know some shell scripting, please do give me any suggestions that you have. That was the code for my first project. In my second project, I’ve changed my approach to having a separate class for each experiment. And also initially, I manually did the work of connecting to each cluster and initializing the job. Now, I’ve automated this too. So I specify the experiment and settings to be run and the script dispatches the jobs to the specified set of clusters and as above, I get emailed at the end when the data is available.


case $# in
  0) echo 'Usage runExperiment classToBeRun' 1>&2; exit 1

for cluster in "c0-0 0" "c0-1 20" "c0-2 40" "c0-3 60" "c0-4 80" "c0-5 100"
      set -- $cluster
      ssh $1 "nohup ./ $program $2 2> 2_$2.log 1> 2_$2_1.log < /dev/null &"
      echo "assigned to $1"

SSHing to a remote client and running the command in nohup were the two most difficult parts of this. Nohup lets you run the process even after disconnecting from the machine. The & at the end makes the process run in the background so that you can disconnect and connect to the next machine or do other things. The output is redirected to log files so that I can keep a track of what is happening and finally, something that I took a long time to figure out, you should set input to be received from /dev/null, otherwise you will not be able to disconnect from that particular remote machine.


case $# in
  0|1) echo 'Usage runSimulation classFile parameter' 1>&2; exit 1
java -cp IBEVAC.jar $1 $2

echo "$1 $2 run complete"|mail -s "Run Complete"

There’s still a lot more automation I can and plan to do. But as of now, I’m in a state where I can run simulations quite easilly and I won’t be changing things much for some time. Next stop, getting a proper gitflow happening with Netbeans or eclipse.

A rough summary of what I’ve read in behavior models

Aveni1977 : “the extent of anonymity variablein crowds should be treated as a variable rather than a constant”  =>  crowd comes as both individulas and groups. but more gourps can be formed during the emergency or the event. Also behavior of groups and unassociated individuals need to be studied



Some of my thoughts :

A mechanism is needed wherein the groupng tendency among individuals in the simulation increases with time and the extent of the danger.

Also individuals in groups and isolated behave differettly

The question is how does this increase in grouping come about? Do individuals group with every other individual?

zeleny1981 : If the choices are very similar more information is sought from the environment to make decision.


Stahl1982 : One of the first papers to use a computer simulation to model fire evacuation and justified the use of simulations for fire safety studies.


Sime1983 : Introduced the concept of affiliative behavior :the identity of an individual’s primary group and the groups proximity and availability determine the reaction of a user to the primary group. degree if threat(ambiguity of cues) is also important

Paulsen1984 :

When alone, 75 percent of the subjects reported the smoke. In the presence of two nonreacting others (confederates of the experimenters} only 10 percent of the subjects reported the smoke during the experimental period. : Latane and Darley [40]       

Sime1985 :

Engineering = too much emphasis on environment too little on behavior

psychology = too much on behavior too little on environment


Tong&Canter1985: Talks about factors that influence reaction to fire:

intensity and spread of smoke, previous experience of fire, training, and direct threat perception


In early stage, there is uncertainity….”This uncertainty results from the ambiguous nature of the information available so that fire victims consistently become involved in investigative and exploratory actions to deter- mine the nature of the threat they are facing.””The cues which most commonly motivated an initial inquiry by building occupants were strange noises, unaccustomed behaviour of others, such as running, and occasionally there was a direct

encounter with smoke or flames. ”


‘feedback in action’ (p. 119), which suggests that people are continuously acting in re- sponse to new information rather than being motivated from an inert condition.


individuals display an ‘autonomous capacity to be interested in the environment‘.


There is a tendency for people to first dress, because they expect to encounter others, then to investigate, and finally, to return to their rooms.



Sandberg1997 : reiterates importance of pre movement time and inefficiency of usual fire alarms.

Much of the movement in the early stages of fires is characterised by activities such as investigation and not escape.

Individuals often move towards and with group or family members and maintain proximity as far as possible with individuals to whom they have emotional ties.

People’s ability to move towards exits may vary considerably


Observed behaviour in fires:• People’s behaviour in fire depends on the roles that they perceive to be relevant to their responsibility.

• People prefer to use familiar routes for escape.

• People do not always react in their best interest.


The activities undertaken during the response time include /12/:

• investigate what has happened, i.e. seek further information (Determine the source, reality or importance of fire alarm)

• help others (seeking and gathering companions) • save material property (money, other risks) • try to fight the fire • call the fire brigade • leave the building

• ignore the danger • the time involved in other activities not fully contributing to effective evacuation


Characteristics of agents that influence their evacuation times:

1. Alertness

2. Mobility

3. Social Affiliation

4. Role

5. Position (standing or lying down.. )

6. commitment

7. Focal POint

8. Familiarity

9. Communications




Gwyne et al, 1999 : Excellent taxonomy and comparison of existing models.

According to this paper there are 5 kinds of models:

1. no behavior

2. Funcational analogy: use an equation or set of equatio0ns to the entire populations: not defined individually… and no meaning as such, just seems similar to the meaning we expect it to have. movement predicted from equations might not even be calibrated

3.Implicit  models: behavior implicitly represested tyhrough complex physical models. Problem is that they’re based on secondary data which incorporates psychological and sociological influences. The data might be wrong

4.Rule based systesm: with explicit rules.

5. AI-based.


Graham2000 : Loss aversion’s manifestation in evacuation::avoid action for small problems;drastic action as things go out of control.Early action might result in huge losses so people wait till later to do anything decisive


Fahy et al2001 : Lots of data on evacuation speeds, pre movement times, etc. etc.


Ozel2001: contains theory on decision making in fire emergency

“This also represents the basic premiseof this study , whic states that given the semae set of information, people may atttend to information differently depending on the degree of stress and the amount of time pressure they experience, “sic.


decision making is episodic and there are between and within episode decision making taking place.  Some of these decisions tend to overlap. while execution,i.e., they’re still thinking what to do about hte next episode, etc.


Acceleration, avoidance of decision and filtration help to reduce time pressure useful when threat of negative outcome > threat of incomplete info.

Bolstering : better at least in one and equal in all others.

4 different phases of decision making:

unconflicted inertia                 :credibility of initial source of information(fire alarm, etc.) is assesed.

unconflicted change                 : recognise and start getting more emionaly aroused

defensive avoidance                 : THis is the most likely stage of strategy choice and uses increased filtering, pesimism, accelerated processing of informatino bolstering, etc. Also more likely to follow others. affiliation plays a key role

hypervigilance                        : Panic is extreme case of hypervigilance, bad decision making coz of bad info processing.

cue utilization decreases with increasing pressure


The useres prefer less risky choicse as time goes by and stress increases… so they are more likely to take familar exits as time progresses and stress and time pressure increases


Exits with negative associations are generally not taken when stress increases. because these are prohibited during non emergency situations



Proulx2001: Some things taht are reiterated:

About panic :  People do get scared… but according to psychologists panic refers to irrational behavior and as such ppl alwys behave rationally depending on their beliefs at the tmie.

Besides, experience, age, mobility, leadership skill, etc. one key factor is the role of the individual in that setting… for eg. a chef in restaurant vs owner vs client.

visitors and guests expdct to be taken care of.

Steps in evacuation:

First be sure of fire..

next find children, pets or valuables

then evacuate

Also contains some stats on pre evac time



Reicher2002 : Has a good discussion about the history and older theories of crowd behavior and his proposed new (and generally well accepted) theory of crowds.


Emergent Norm theory ( Turner and Killian) : Before crowd action takes place there is characteristically an extended period of ‘milling’ during which people engage with others, proffering their own accounts of reality and listening to that of others. leader then develops and unanimity results

SCT : social categorisation theory : many selfs.. identity with a category, follow group consensus.. leaders can impose there will….


Personal identity defines how I, as an individual, am unique compared to other individuals while social identity defines how we, as members of one social category are unique compared to members of other social categories (Turner, 1991, 1999;Turner, Hogg, Oakes, Reicher & Wetherell, 1987).

On defining ourselves as category members we participate in a process of self stereotyping. That is, we seek to determine the relevance of category identity for action in context and we conform accordingly. We expect fellow group members to do likewise and therefore we also expect to agree with them on matters pertaining to our mutual social identity. Being part of a psychological crowd (as opposed to a set of people who simply happen to be co- present) does not entail a loss of identity but a shift to the relevant social identity.


ESIM: An elaborated social identity model for crowds                                                                                                                                                                                     Groups formed are highly dependent on context and other groups and in turn individuals a group formed is not static, it has a dynamic characteristics. behavior ina group reaches a common level with time and adversity. ESIM regards social identity as a model of self in social relations, along with the actions that are proper and possible given such a social position.

it can be seen how acting on identity leads to a change of identity due to the dynamics that ensue from a mismatch between how certain crowd members saw their social location and how the police (re)located them.


Isobe etal2003 : (Helbing group), Nagaietal2004 : Experiments on effect of smoke and visibility limitations in escape behavior.

This is done by blindfolding ppl and observing exit behavior. Herding was observed.

The problem i feel is that these eperiments assume visibility is always 0 … but in an actual scenario it gradually decreases… so for high level exit choice, I don’t think smoke is that important since that decision would generally already have been made… but at lower level it might be hte key


Cornwell2003 : . Aguirre, Wenger, and Vigo (1998) argue that people who belong to larger groups take longer to evacuate because it takes them longer to orga- nize

bond strengths also exist… some weaker bonds can break as the emergency progresses.

Hypothesis 1: Fatality risk will be relatively high among those with no primary ties, relatively low among those with few primary ties (where the benefits of cooperation are theoretically maximized), and increasingly high as primary group size increases.

Hypothesis 2: Individuals for whom at least one primary group member died experienced greater fatality risk.

Hypothesis 3: The effect of a primary group member (or primary group members)dying on the fatality risk of another group member is partially due to the strength of the bond(s) between (among) them.



Cocking&Drury2005 :

Individual panic does occur but rather than the panic spreading through the crowd it is the calm people who mange to impose their will on other ppl and calm the people who get worked up.



Mawson2005 :

The typical response to threat is neither flight nor fight.. its actually a search for affiliation. Greater need for affiliation than avoiding physical danger.

Talks mostly about how affiliations is generally just as important or sometime more important than escape.


Interesting point :  fligth behavior can be explained as moving from certain situation to other situations that are perceived as familiar. (not objectively safest position)



Cocking&Drury2007 : Basically establish experimentally three hypotheses:

1. Panic does not happen

2. Orderly altruistic and coooperative behavior almost always happens except when the crowd rush makes such helpful behavior impossible.

3. This helpful behavior because of a shared common identity created in response to the shared threat faced.





Proulx2007 : Mostly reiterates her old ideas :

initial inertia.. its only when ambiguos cues accumulate or are suppplemented by additional cues that ppl actually start investigating. Engage in “milling”

pre movemetn time and may include movement but not movement towards escape. Fire fighting is also part of pre movement time( role in society) :In real emergency evacuations, a wide variety of times have been reported: from 5 minutes to over 25 minutes.

Familiarity of routes, trainging and presence of fire wardens or helpers and what others are doing are what influences route choice in fires.


SchadSchneider2008 :

Panic does not occur.

Herding as a terminology is very vaguely defined hence it is better to avoid the terminology altogether

Collective effects that should be there in a model crowds:

  • jamming
  • Density waves ( at 7 persons per square meter shockwates are felt that propel ppl at least 3m)
  • lane formation
  • Oscillations : in counterflow at bottlenecks .
  • patterns at intersections : maybe roundabouts or something like that


velocity always decreases with increasing density.


reiterates social attachment theory.


A comprehensive theory of pedestrian dynamics has to take into account three different levels of behaviour (Fig. 8). At the strategic level, pedestrians decide which activities they like to perform and the order of these activities. With the choices made at the strategic level, the tactical level concerns the short-term decisions made by the pedestrians, e.g. choosing the precise route taking into account obstacles, density of pedestrians etc. Finally, the operational level describes the actual walking behaviour of pedestrians, e.g. their immediate decisions necessary to avoid collisions etc.


Cocking&Drury2008 :

UNIty and group identity in the crowd icnreases with time because of a common psychological cause.

NO MASS PANIC : individual instance of panic was there. But no mass panic.

more help to existing groups, might help others. Stick to societal roles.

Everyday norms are upheld and queues are formed.



Drury et al2008 :

” Thus, we would argue that the social identity approachto mass emergency evacuation we have tested and found support for in the studies reported here takes us be- yond previous advances in the field in certain impor- tant ways. Although the normative approach (e.g., John- son, 1987a, 1987b) clearly transcends the mass panic model by pointing to the predominance of sociality even within life-threatening mass emergency crowds, it col- lapses back into the mass panic model when it claims that competitive behavior increases at times of greatest urgency (Johnson et al., 1994; cf. Quarantelli, 1957). The normative approach follows the affiliation model in emphasizing the role of preexisting interpersonal re- lationships in limiting panic (e.g., Cornwell, 2003; Fein- berg & Johnson, 2001; Johnson et al., 1994). But the affiliation model too collapses back into the assumptions of the mass panic approach when it suggests that panic can occur when there are no familiar figures or features present (Mawson, 2005). What is missing from all these models is an explanation for the evidence of positive af- fective, motivational, and behavioral relations to a crowd of strangers in an emergency evacuation. By contrast, SCT suggests that the shift from personal collective identity leads us to define others’ interests in line with our own, instead of understanding them as counterposed. In such contexts, one might even help strangers at a risk to the personal self.”


Kobes2010 : Brilliant short compilation of existing work on fire evacuation







My First Lecture, JASON-MASON, BABS, JOOMLA and finally a copa del rey final!

So my first proper post. It’s more like a journal entry on what all I’m doing currently:

1. My courses : Bertil Schmidt’s a very interesting character and his classes are interesting. Hopefully, the mobile game developmeny course will be good too.

2. PhD Work: In terms of core PhD work, I’m supposed to be finding psychology literature on how humans react to emergencies and how long they take to react. It’s extremely interesting to read these psychology papers. Found two papers today. The first one’s kind of old but summarises work on motivation for evacuation quite well : . I haven’t been through the second paper yet. It was published in 2010 and the abstract seemed to look really promising. Will update on that soon: .

3. My first lecture : Tomorrow I’ll be taking a tutorial for Mike’s course on Intelligent Agents. I’ll basically be introducing Mason ( to the students. It’s really good for multi agent simulations and personally I prefer it to RePast, feels more customisable. If you want to try it out just download the file from the website and unzip it. In the /sim/app/ folder you’ll find quite a few tutorials which should get you started.

4. My Paper : It’s mostly done. Needs to be shortened to 4 pages somehow. Has to be done by the Feb 10 deadline. Hopefully, I’ll be done by next Monday or Tuesday

5. JASON-MASON – Mike’s idea for a recreational activity, create a more capable agent simulation toolkit. I’m still really vague about the capabilities of JASON and similar languages. Will be reading on it in the next few days and posting my thoughts.

6. BABS : The more I say it / type it the worse it sounds. But that’s what our team in PDCC working on Behavioral Agent Based Simulations are going to be called. We’ve started setting up the website on JOOMLA. We still haven’t got the contents.Will post an update as soon as that is done. We should have the basic structure in a few days. JOOMLA seems quite easy to use. Still haven’t figure out how to use one of the cooler templates properly. But to get started in a simple way. Here are two links :

a. Setting it up using a Turnkey VM :

b. A good simple tutorial for starting off with JOOMLA (No website creation knowledge needed) :

7. Real Madrid beat Sevilla at the Sanchez Pizjuan 1-0: An away goal and what from highlights looked like a solid performance. Seems like a proper cup final after years… and 3 Classicos in 3 weeks in April!

Tired of writing for now. Shall update on the rest of the stuff later…