<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://www.autismcollaborative.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Orosz</id>
		<title>TACWiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://www.autismcollaborative.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Orosz"/>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Special:Contributions/Orosz"/>
		<updated>2026-05-06T15:09:48Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.24.4</generator>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Milestones&amp;diff=551</id>
		<title>Milestones</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Milestones&amp;diff=551"/>
				<updated>2009-01-19T08:52:52Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sprint 1: &lt;br /&gt;
  * Implement basic structure of Dungeon game.&lt;br /&gt;
     [x]Loading XML data&lt;br /&gt;
     [x]converting XML data to load level&lt;br /&gt;
     [x]Basic update structure&lt;br /&gt;
     [x]Data structures of the levels&lt;br /&gt;
     [x]Input&lt;br /&gt;
     [x]Game Flow&lt;br /&gt;
     [x]Collision&lt;br /&gt;
     [X]Implement Menus&lt;br /&gt;
     []Difficulty&lt;br /&gt;
     [x]Game play programming&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Sprint 2:&lt;br /&gt;
  * Implement more complex Dungeon game functions&lt;br /&gt;
     [x]Traps/Enemies&lt;br /&gt;
     [X]Stealth bar&lt;br /&gt;
     [x]Player abilities&lt;br /&gt;
     [x]AI Logic&lt;br /&gt;
     [X]placeholder UI&lt;br /&gt;
    &lt;br /&gt;
Sprint 3:&lt;br /&gt;
  * Implement Hacking Phase, aka Embedded Figures test&lt;br /&gt;
     [x]Create hackable objects&lt;br /&gt;
     [x]Placeholder graphics for hacking phase&lt;br /&gt;
     [X]Logging&lt;br /&gt;
     [x]integrate into level&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sprint 4:&lt;br /&gt;
  * Implement Sally Anne&lt;br /&gt;
     [X]Implement first theory of mind question&lt;br /&gt;
     [X]implement 2nd theory of mind question&lt;br /&gt;
     [x]Tie into level progression&lt;br /&gt;
     [X]Logging&lt;br /&gt;
&lt;br /&gt;
Sprint 5:&lt;br /&gt;
  * Implement Rewards&lt;br /&gt;
     []Implement a system for rewarding the player&lt;br /&gt;
     []calculate total rewards based of performance in mini game&lt;br /&gt;
     []tie to colony simulator&lt;br /&gt;
  * Tutorial&lt;br /&gt;
     []yep&lt;br /&gt;
  * Implement easy access trial modifiers to mini game menu&lt;br /&gt;
&lt;br /&gt;
Sprint 6:&lt;br /&gt;
  * Implement Map Editor&lt;br /&gt;
     [X]Read/Write/edit XML data containing tileset information for world/level/room&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sprint 7:&lt;br /&gt;
  * Implement Player Profiles&lt;br /&gt;
     [X]Keep track of missions played/progression made&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sprint 8: &lt;br /&gt;
  * Create new levels and obstacles.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Star_Jack&amp;diff=458</id>
		<title>Star Jack</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Star_Jack&amp;diff=458"/>
				<updated>2008-10-07T23:58:19Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: /* Allied ship sees static */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
This minigame tests theory of mind and detection of embedded figures.&lt;br /&gt;
&lt;br /&gt;
The mini-game&amp;#039;s theory-of-mind component is an adaptation of the classic “Sally Anne” test of theory-of-mind. In the “Sally Anne” test one character, Sally, places a marble in a safe place, and then whilst Sally is out of the room another character, Anne, moves the marble to a new hiding place.  The subject is asked “Where will Sally look for her marble?” or “Where does Sally think the marble is?” Many autistic children, like normal children under four years of age, answer this question erroneously in terms of what they themselves know about where Anne moved the marble, instead of what Sally knows.  Those who correctly answer this first-order theory-of-mind question may still respond incorrectly to a second-order question: if, unbeknownst to Anne, Sally was peering through the keyhole and saw Anne move the marble, “Where does Anne think Sally will look for the marble?”&lt;br /&gt;
&lt;br /&gt;
The player is infiltrating a subspace communications satellite.  The player will have to navigate to and hack comm stations to steal Pirate communication messages.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Premise==&lt;br /&gt;
&lt;br /&gt;
You are a covert operative for the World Space Initiative. The Order of Orion is attacking merchants carrying WSI payloads, stealing their cargo, and stashing the goods on various planets or locations. Your mission is to infiltrate their communication satellites and discover the location of the stolen cargo.&lt;br /&gt;
&lt;br /&gt;
==Objective==&lt;br /&gt;
&lt;br /&gt;
Recover as many communication logs about stolen Cargo as possible and determine where the merchants and cargo are.&lt;br /&gt;
&lt;br /&gt;
==Characters==&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
Player:  An elite reconisaince operative trained in stealth and sabotage.  These agents have access to a personal cloaking device, a molecular copier, hacking tools and many other items.  They excel in non lethal force and avoid direct confrontation whenever possible.   &lt;br /&gt;
&lt;br /&gt;
Bobcat B-3 Interceptor:  A small ship outfitted with the best cloaking and stealth technology available.  This ship is used to get the operative to and from the satellite undetected.&lt;br /&gt;
&lt;br /&gt;
Satellite Security:  The satellite is garrisoned with security guards and security devices.  These guards are tasked with keeping the satelite safe and un comprimized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//These Characters will be shown in the cut scenes.&lt;br /&gt;
Merchants:  Various merchants that ferry goods throughout the solar system. Those carrying WSI goods are targets of OoO raiders. &lt;br /&gt;
&lt;br /&gt;
Raiders:  Various OoO pirates target merchants under WSI contracts.  Pirates can be found stealing from all across the galaxy and transporting any valuable cargo to different locations.  &lt;br /&gt;
&lt;br /&gt;
Cargo:  The OoO is stealing WSI payloads and hiding them on planets to be picked up by other OoO operatives at a later date. Finding these are the objectives of the game.  All cargo will have an Icon on them symbolizing the type of material inside.  &lt;br /&gt;
&lt;br /&gt;
Planets and Buildings:  Pirates and merchants will move cargo from on plater to another, or one building to another.&lt;br /&gt;
&lt;br /&gt;
==Gameplay==&lt;br /&gt;
&lt;br /&gt;
The game is divided into 3 different phases:&lt;br /&gt;
&lt;br /&gt;
Puzzle Phase&lt;br /&gt;
	Players will explore floors of the satellite to find comm stations.  They will have to avoid guards and move from room to room until they find that floors comm station.  Players will have to use their abilities to deactivate traps and guards. &lt;br /&gt;
&lt;br /&gt;
Hacking Phase&lt;br /&gt;
	Players will have to complete a embedded figures test whenever they use their hacking tool. &lt;br /&gt;
&lt;br /&gt;
Sally Anne Phase&lt;br /&gt;
	Players will be shown an animation depicting the message the player has found. Players will then be asked the theory of mind questions.  Game play will then transition back to the Puzzle Phase.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Phases==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Puzzle Phase&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Objective &lt;br /&gt;
&lt;br /&gt;
The player will explore the different floors of the satellite.  Before a player can move to the next floor the player must explore all the rooms of the floor and hack the communication panel.  To do so players will have to avoid detection by utilizing their various stealth abilities.  &lt;br /&gt;
&lt;br /&gt;
The game will be turn based.  The game state will not change until the player performs an action.  This will allow players to take as much time as needed to plan out their moves.  Guards and other interactive objects will not do anything until after the player has done an action.  Players will always complete their action before the world takes it&amp;#039;s turn.  &lt;br /&gt;
&lt;br /&gt;
When the player enters the facility, the security system is un aware of them.  When a player is caught or fails an event, such as hacking a terminal, the security system will become more aware of them.  This awareness is represented by a meter.  Once them meter is filled the Security System is fully aware of the player and will send guards to capture the infiltrator.  Once this occurs sirens will sound and the player will have to tele port to their ship and escape the station.  The awareness level will effectively act as the players lives or attempts.  After a period of turns of not being detected the players awareness level will start decreasing.  &lt;br /&gt;
&lt;br /&gt;
Actions&lt;br /&gt;
&lt;br /&gt;
Move -  The player will be able to move in 4 unique directions!  &lt;br /&gt;
Wait -  This action represent the player skipping a turn.&lt;br /&gt;
Cloak - This action will make the player invisible for a specific number of turns.&lt;br /&gt;
Hack - This action will start the Hacking Phase.  If a player is un successful in hacking the object then they will be teleported back to the beginning of the level.    &lt;br /&gt;
Set Trap - Players will be able to set traps for guards&lt;br /&gt;
Use - Players will be able to interact with their environment using this action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enemies&lt;br /&gt;
&lt;br /&gt;
Guard - Guards will patrol the halls of the facility.  A patrolling guard will be able to catch any player in their line of sight.  Guards will have predictable paths that they follow.  Guards can be avoided by using the cloak ability or deactivated by placing a trap.  A deactivated guard will either disappear or fall to the floor.  If guards do not dissappear then the player will have to move them to prevent other guards from finding the body.&lt;br /&gt;
&lt;br /&gt;
Sentry Camera - A sentry camera will detect the player if they enter in to it&amp;#039;s line of sight.  Sentry camera&amp;#039;s will not move, but will rotate in place.  To disable a sentry camera you will need to find it&amp;#039;s control panel and hack it.  Each camera and control panel will have matching colors.  Cloaking can be used to avoid the camera.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Espionage PDA&lt;br /&gt;
&lt;br /&gt;
Every infiltrator has their own personal Espionage PDA.  This PDA can communicate with your ship and provide you with useful information.  This will be where the player can see their mission objectives, current mission progress, can view or retry any tutorial sections or end the game.  &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hacking Phase&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Encrypted comms are represented by shapes that flow from the left to the right of the screen, somewhat akin to &amp;#039;&amp;#039;the Matrix.&amp;#039;&amp;#039; The bottom of the game screen houses the screen of &amp;#039;&amp;#039;the Snifftron ST3,&amp;#039;&amp;#039; a device that hackers use to decrypt data. &lt;br /&gt;
&lt;br /&gt;
In a manner very similar to the traditional Embedded Figures Test, the ST3 generates an abstract shape and displays it on its screen. As the data stream flows across the top of the game screen, random shapes pop out and appear in the center of the data stream. If this large shape contains the simpler shape displayed on the ST3, then the player should press spacebar before the trial expires. If this happens, the player successfully &amp;quot;filters&amp;quot; the data stream. The player can only fail this process (either by not pressing spacebar on a match or pressing spacebar on a non-match) 3 times before the connection is lost and the message is lost.  Some objects will be more difficult to hack and will require more sucessful matches. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the player filters the data successfully enough times, then the comm is decrypted.  Diffrent results will occur depending on the item hacked.  If a comm terminal is hacked,a small cutscene plays before returning to the navigation screen. If the player is unsuccessful, then they return to the navigation screen and their detection level will increase.&lt;br /&gt;
&lt;br /&gt;
The large shapes are generated according the figure below. Generating smaller shapes that are embedded in the large shapes can easily be done by connecting the dots along edge connections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
==Sally Anne Phase==&lt;br /&gt;
&lt;br /&gt;
Once a players successfully hacks the comm station they will be shown a brief series of animations depicting the message they stole. There will be many different messages, but each will follow the same principles. In animation #1, a friendly ship deposits a resource (e.g. fuel or materials) in a depot on one of several available planets.  (Planets are readily distinguishable by their location on the star map and by their surface appearance.)  In animation #2, an opponent ship appears and either steals the resource and deposits it on another planet (THEFT, 2/3 probability) or simply scans the resource (¬THEFT, 1/3 probability).  Animation #3 is a picture of the friendly ship&amp;#039;s control centre including its captain and its viewscreen, which shows either a sensor scan of the opponent&amp;#039;s actions (SCAN, ½ probability) or noise representing sensor jamming (¬SCAN, ½ probability).  Thus by the end of animation #3, one of three equiprobable situations exists: (1) the friend believes correctly that the resource is in its original location, and the opponent believes correctly that the friend will look for the resource in this location (¬THEFT); (2) the friend believes incorrectly that the resource is in its original location, and the opponent believes correctly that the friend will look for the resource in its original location (THEFT∧¬SCAN); (3) the friend believes correctly that the resource is in its new location, and the opponent believes incorrectly that the friend will look for the resource in its original location (THEFT∧SCAN).  Animation #4 reminds the player that the friend will always set course to retrieve the resource, and that the opponent will always set course to intercept the friend.  After this fourth animation, the player is prompted pictorially to lay in two intercept courses (by moving the mouse to the appropriate planet), one to rendez-vous with the friend and one to engage the opponent.  In order to set these courses the player must infer where the friend thinks the resource is and where the opponent thinks the friend will look for the resource, respectively.  Accuracy and response time in these tasks measure first-order and second-order theory-of-mind processing.&lt;br /&gt;
&lt;br /&gt;
These animations will be still shots depicting the cut scene.  Animations are planned for future releases.&lt;br /&gt;
&lt;br /&gt;
===Sally Anne Video Specification===&lt;br /&gt;
&lt;br /&gt;
====Artistic Considerations====&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
3 different planets or more.&lt;br /&gt;
Multiple ethnicities&lt;br /&gt;
Textures for all major actors in the animations (ships, cargo, people) it would be usefull to have these incase we want to reuse them later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Technical Considerations====&lt;br /&gt;
-------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
XNA does not support movie playback.  There are some work arounds but it will only display a picture.  Currently the sally anne animations are implmented as a series of still frames, but they end up being to large for the scope we are lookign at.  &lt;br /&gt;
&lt;br /&gt;
One option is to use a Flash swf video.  There is a content importer called fluix for XNA that can display Flash movies in XNA.  This would allow us to harness the vector based graphics processing of Flash and it&amp;#039;s action script language.  C# will be able to read and write to variables in in the flash file, possibly changing the animation as needed.  This will also allow the Flash file to send events to the C# code to be handled.  Sadly the fluix dose not support sound for flsh files.  However, we could work around it by having the flash movie send messages to C# letting it know when it needs to play a sound. Protocols for sending event would need to be determined for this.  &lt;br /&gt;
&lt;br /&gt;
One benefit of this would be that to change the sally anne animations all the animator would need to do would be to change the flash file and wouldn&amp;#039;t have to touch and C# code.  Also the swf file would drastically reduce the size needed of our videos, as we may be able to do the entire video in one file. &lt;br /&gt;
&lt;br /&gt;
The other way to do this would be to have a video file playing and create a sound cue file that plays sound at specific time intervals.  I&amp;#039;m not a big fan of this but it&amp;#039;s a decent fall back.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Scenes====&lt;br /&gt;
The sally anne phase video will be broken up into a couple different sections.  &lt;br /&gt;
This is to accomodate for varying scenarios in the video.&lt;br /&gt;
&lt;br /&gt;
The sections will be:&lt;br /&gt;
&lt;br /&gt;
Cargo drop &lt;br /&gt;
Pirate scan&lt;br /&gt;
Pirate steals cargo&lt;br /&gt;
Pirate can&amp;#039;t find cargo&lt;br /&gt;
Allied ship sees static&lt;br /&gt;
Allied ship sees pirate steal cargo&lt;br /&gt;
&lt;br /&gt;
=====Cargo Drop=====&lt;br /&gt;
-------------------------------------------&lt;br /&gt;
This section will setup the following scenes for the player.  It should give all the basic information thatthe player needs to make sense of the scenes that will follow.  The scene should identify the cargo ship and it&amp;#039;s crew as allies, and indicate a reason as to why they need to drop off their cargo.  This reason could be that they need to lighten the laod to escape from the pirates following them.  The explanation could be delivered via the ships captain, as this should make it obvious that it is humans and not a machine who are in control of the ships.  The cargo ship will then drop it&amp;#039;s cargo off at a visually distinct planet, and then leave the area.&lt;br /&gt;
&lt;br /&gt;
=====Pirate Scan=====&lt;br /&gt;
-------------------------------------------&lt;br /&gt;
After the Cargo ship drops it&amp;#039;s cargo, pirates ships will appear on the scene, possibly warping in.  The pirate ships could be a group of ships with a distinct lead ship or a just singular ship, which ever looks and feels cooler.  There will then be a view of the pirate ship bridge and the pirate captian will command to scan the planet for any signs of their prey.  The view will change to a shot of the ship scanning over the surface of the planet.&lt;br /&gt;
&lt;br /&gt;
=====Pirate Ship steals cargo=====&lt;br /&gt;
------------------------------------------&lt;br /&gt;
If the pirate ship locates cargo, the view will change to shop bridge of the pirate ship.  The captain will be notified that they&amp;#039;ve found something and the image of the cargo will come on screen.  The captain will say something along the lines of &amp;quot; Arrrr me mateys! We&amp;#039;ve found some booty&amp;quot; The view will then change to the pirate ship getting the cargo, possibly by tractor beam, and transporting it to a different planet, which needs to be visually distinct from the first planet. &lt;br /&gt;
&lt;br /&gt;
=====Pirate Ship doesn&amp;#039;t find cargo=====&lt;br /&gt;
-------------------------------------------&lt;br /&gt;
If the pirate ship fails to detect the cargo, the view will show the bridge and a crew member will inform the captain they haven&amp;#039;t found any signs of the cargo ship, the viewport could show a &amp;quot;:(&amp;quot; or a &amp;quot;?&amp;quot;.  The captain will say somethign along the lines of &amp;quot; Well they must be further on&amp;quot;.  The pirates will then leave the area.&lt;br /&gt;
&lt;br /&gt;
=====Allied Cargo ship watches the pirate steal=====&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
A shot of the bridge of the allied ship.  Maybe some text indicating that they can&amp;#039;t be seen by the pirates, or are out of their sensor range.  A crew member will let the captain know they are intercepting a signal and will display the pirate ship moving the cargo to the other planet. &lt;br /&gt;
&lt;br /&gt;
=====Allied ship sees static=====&lt;br /&gt;
&lt;br /&gt;
A shot of the bridge of the allied ship.  Maybe some text indicating that they can&amp;#039;t be seen by the pirates, or are out of their sensor range.  A crew member will let the captain know they are intercepting a signal and will display static.  Someone will complain that the comm is encrypted and they can&amp;#039;t make it out.&lt;br /&gt;
&lt;br /&gt;
==Scoring==&lt;br /&gt;
&lt;br /&gt;
Players will be given a score based on how many messages they steal and how many bonus items they find.  This score will determine how much money they get.  A players score will be reduced based on the number of times they were caught.    &lt;br /&gt;
Players will also be given resources and trade goods for each correct Sally Anne response.&lt;br /&gt;
Players will be given a ranking of sorts, based on their score and responses, that will determine the number of tokens they receive.&lt;br /&gt;
Players will always receive at least one of the tokens.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Development==&lt;br /&gt;
&lt;br /&gt;
[[Milestones]]&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Star_Jack&amp;diff=457</id>
		<title>Star Jack</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Star_Jack&amp;diff=457"/>
				<updated>2008-10-07T23:58:00Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: /* Sally Anne Phase */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
This minigame tests theory of mind and detection of embedded figures.&lt;br /&gt;
&lt;br /&gt;
The mini-game&amp;#039;s theory-of-mind component is an adaptation of the classic “Sally Anne” test of theory-of-mind. In the “Sally Anne” test one character, Sally, places a marble in a safe place, and then whilst Sally is out of the room another character, Anne, moves the marble to a new hiding place.  The subject is asked “Where will Sally look for her marble?” or “Where does Sally think the marble is?” Many autistic children, like normal children under four years of age, answer this question erroneously in terms of what they themselves know about where Anne moved the marble, instead of what Sally knows.  Those who correctly answer this first-order theory-of-mind question may still respond incorrectly to a second-order question: if, unbeknownst to Anne, Sally was peering through the keyhole and saw Anne move the marble, “Where does Anne think Sally will look for the marble?”&lt;br /&gt;
&lt;br /&gt;
The player is infiltrating a subspace communications satellite.  The player will have to navigate to and hack comm stations to steal Pirate communication messages.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Premise==&lt;br /&gt;
&lt;br /&gt;
You are a covert operative for the World Space Initiative. The Order of Orion is attacking merchants carrying WSI payloads, stealing their cargo, and stashing the goods on various planets or locations. Your mission is to infiltrate their communication satellites and discover the location of the stolen cargo.&lt;br /&gt;
&lt;br /&gt;
==Objective==&lt;br /&gt;
&lt;br /&gt;
Recover as many communication logs about stolen Cargo as possible and determine where the merchants and cargo are.&lt;br /&gt;
&lt;br /&gt;
==Characters==&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
Player:  An elite reconisaince operative trained in stealth and sabotage.  These agents have access to a personal cloaking device, a molecular copier, hacking tools and many other items.  They excel in non lethal force and avoid direct confrontation whenever possible.   &lt;br /&gt;
&lt;br /&gt;
Bobcat B-3 Interceptor:  A small ship outfitted with the best cloaking and stealth technology available.  This ship is used to get the operative to and from the satellite undetected.&lt;br /&gt;
&lt;br /&gt;
Satellite Security:  The satellite is garrisoned with security guards and security devices.  These guards are tasked with keeping the satelite safe and un comprimized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//These Characters will be shown in the cut scenes.&lt;br /&gt;
Merchants:  Various merchants that ferry goods throughout the solar system. Those carrying WSI goods are targets of OoO raiders. &lt;br /&gt;
&lt;br /&gt;
Raiders:  Various OoO pirates target merchants under WSI contracts.  Pirates can be found stealing from all across the galaxy and transporting any valuable cargo to different locations.  &lt;br /&gt;
&lt;br /&gt;
Cargo:  The OoO is stealing WSI payloads and hiding them on planets to be picked up by other OoO operatives at a later date. Finding these are the objectives of the game.  All cargo will have an Icon on them symbolizing the type of material inside.  &lt;br /&gt;
&lt;br /&gt;
Planets and Buildings:  Pirates and merchants will move cargo from on plater to another, or one building to another.&lt;br /&gt;
&lt;br /&gt;
==Gameplay==&lt;br /&gt;
&lt;br /&gt;
The game is divided into 3 different phases:&lt;br /&gt;
&lt;br /&gt;
Puzzle Phase&lt;br /&gt;
	Players will explore floors of the satellite to find comm stations.  They will have to avoid guards and move from room to room until they find that floors comm station.  Players will have to use their abilities to deactivate traps and guards. &lt;br /&gt;
&lt;br /&gt;
Hacking Phase&lt;br /&gt;
	Players will have to complete a embedded figures test whenever they use their hacking tool. &lt;br /&gt;
&lt;br /&gt;
Sally Anne Phase&lt;br /&gt;
	Players will be shown an animation depicting the message the player has found. Players will then be asked the theory of mind questions.  Game play will then transition back to the Puzzle Phase.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Phases==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Puzzle Phase&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Objective &lt;br /&gt;
&lt;br /&gt;
The player will explore the different floors of the satellite.  Before a player can move to the next floor the player must explore all the rooms of the floor and hack the communication panel.  To do so players will have to avoid detection by utilizing their various stealth abilities.  &lt;br /&gt;
&lt;br /&gt;
The game will be turn based.  The game state will not change until the player performs an action.  This will allow players to take as much time as needed to plan out their moves.  Guards and other interactive objects will not do anything until after the player has done an action.  Players will always complete their action before the world takes it&amp;#039;s turn.  &lt;br /&gt;
&lt;br /&gt;
When the player enters the facility, the security system is un aware of them.  When a player is caught or fails an event, such as hacking a terminal, the security system will become more aware of them.  This awareness is represented by a meter.  Once them meter is filled the Security System is fully aware of the player and will send guards to capture the infiltrator.  Once this occurs sirens will sound and the player will have to tele port to their ship and escape the station.  The awareness level will effectively act as the players lives or attempts.  After a period of turns of not being detected the players awareness level will start decreasing.  &lt;br /&gt;
&lt;br /&gt;
Actions&lt;br /&gt;
&lt;br /&gt;
Move -  The player will be able to move in 4 unique directions!  &lt;br /&gt;
Wait -  This action represent the player skipping a turn.&lt;br /&gt;
Cloak - This action will make the player invisible for a specific number of turns.&lt;br /&gt;
Hack - This action will start the Hacking Phase.  If a player is un successful in hacking the object then they will be teleported back to the beginning of the level.    &lt;br /&gt;
Set Trap - Players will be able to set traps for guards&lt;br /&gt;
Use - Players will be able to interact with their environment using this action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enemies&lt;br /&gt;
&lt;br /&gt;
Guard - Guards will patrol the halls of the facility.  A patrolling guard will be able to catch any player in their line of sight.  Guards will have predictable paths that they follow.  Guards can be avoided by using the cloak ability or deactivated by placing a trap.  A deactivated guard will either disappear or fall to the floor.  If guards do not dissappear then the player will have to move them to prevent other guards from finding the body.&lt;br /&gt;
&lt;br /&gt;
Sentry Camera - A sentry camera will detect the player if they enter in to it&amp;#039;s line of sight.  Sentry camera&amp;#039;s will not move, but will rotate in place.  To disable a sentry camera you will need to find it&amp;#039;s control panel and hack it.  Each camera and control panel will have matching colors.  Cloaking can be used to avoid the camera.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Espionage PDA&lt;br /&gt;
&lt;br /&gt;
Every infiltrator has their own personal Espionage PDA.  This PDA can communicate with your ship and provide you with useful information.  This will be where the player can see their mission objectives, current mission progress, can view or retry any tutorial sections or end the game.  &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hacking Phase&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Encrypted comms are represented by shapes that flow from the left to the right of the screen, somewhat akin to &amp;#039;&amp;#039;the Matrix.&amp;#039;&amp;#039; The bottom of the game screen houses the screen of &amp;#039;&amp;#039;the Snifftron ST3,&amp;#039;&amp;#039; a device that hackers use to decrypt data. &lt;br /&gt;
&lt;br /&gt;
In a manner very similar to the traditional Embedded Figures Test, the ST3 generates an abstract shape and displays it on its screen. As the data stream flows across the top of the game screen, random shapes pop out and appear in the center of the data stream. If this large shape contains the simpler shape displayed on the ST3, then the player should press spacebar before the trial expires. If this happens, the player successfully &amp;quot;filters&amp;quot; the data stream. The player can only fail this process (either by not pressing spacebar on a match or pressing spacebar on a non-match) 3 times before the connection is lost and the message is lost.  Some objects will be more difficult to hack and will require more sucessful matches. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the player filters the data successfully enough times, then the comm is decrypted.  Diffrent results will occur depending on the item hacked.  If a comm terminal is hacked,a small cutscene plays before returning to the navigation screen. If the player is unsuccessful, then they return to the navigation screen and their detection level will increase.&lt;br /&gt;
&lt;br /&gt;
The large shapes are generated according the figure below. Generating smaller shapes that are embedded in the large shapes can easily be done by connecting the dots along edge connections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
==Sally Anne Phase==&lt;br /&gt;
&lt;br /&gt;
Once a players successfully hacks the comm station they will be shown a brief series of animations depicting the message they stole. There will be many different messages, but each will follow the same principles. In animation #1, a friendly ship deposits a resource (e.g. fuel or materials) in a depot on one of several available planets.  (Planets are readily distinguishable by their location on the star map and by their surface appearance.)  In animation #2, an opponent ship appears and either steals the resource and deposits it on another planet (THEFT, 2/3 probability) or simply scans the resource (¬THEFT, 1/3 probability).  Animation #3 is a picture of the friendly ship&amp;#039;s control centre including its captain and its viewscreen, which shows either a sensor scan of the opponent&amp;#039;s actions (SCAN, ½ probability) or noise representing sensor jamming (¬SCAN, ½ probability).  Thus by the end of animation #3, one of three equiprobable situations exists: (1) the friend believes correctly that the resource is in its original location, and the opponent believes correctly that the friend will look for the resource in this location (¬THEFT); (2) the friend believes incorrectly that the resource is in its original location, and the opponent believes correctly that the friend will look for the resource in its original location (THEFT∧¬SCAN); (3) the friend believes correctly that the resource is in its new location, and the opponent believes incorrectly that the friend will look for the resource in its original location (THEFT∧SCAN).  Animation #4 reminds the player that the friend will always set course to retrieve the resource, and that the opponent will always set course to intercept the friend.  After this fourth animation, the player is prompted pictorially to lay in two intercept courses (by moving the mouse to the appropriate planet), one to rendez-vous with the friend and one to engage the opponent.  In order to set these courses the player must infer where the friend thinks the resource is and where the opponent thinks the friend will look for the resource, respectively.  Accuracy and response time in these tasks measure first-order and second-order theory-of-mind processing.&lt;br /&gt;
&lt;br /&gt;
These animations will be still shots depicting the cut scene.  Animations are planned for future releases.&lt;br /&gt;
&lt;br /&gt;
===Sally Anne Video Specification===&lt;br /&gt;
&lt;br /&gt;
====Artistic Considerations====&lt;br /&gt;
------------------------------------------------------------&lt;br /&gt;
3 different planets or more.&lt;br /&gt;
Multiple ethnicities&lt;br /&gt;
Textures for all major actors in the animations (ships, cargo, people) it would be usefull to have these incase we want to reuse them later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Technical Considerations====&lt;br /&gt;
-------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
XNA does not support movie playback.  There are some work arounds but it will only display a picture.  Currently the sally anne animations are implmented as a series of still frames, but they end up being to large for the scope we are lookign at.  &lt;br /&gt;
&lt;br /&gt;
One option is to use a Flash swf video.  There is a content importer called fluix for XNA that can display Flash movies in XNA.  This would allow us to harness the vector based graphics processing of Flash and it&amp;#039;s action script language.  C# will be able to read and write to variables in in the flash file, possibly changing the animation as needed.  This will also allow the Flash file to send events to the C# code to be handled.  Sadly the fluix dose not support sound for flsh files.  However, we could work around it by having the flash movie send messages to C# letting it know when it needs to play a sound. Protocols for sending event would need to be determined for this.  &lt;br /&gt;
&lt;br /&gt;
One benefit of this would be that to change the sally anne animations all the animator would need to do would be to change the flash file and wouldn&amp;#039;t have to touch and C# code.  Also the swf file would drastically reduce the size needed of our videos, as we may be able to do the entire video in one file. &lt;br /&gt;
&lt;br /&gt;
The other way to do this would be to have a video file playing and create a sound cue file that plays sound at specific time intervals.  I&amp;#039;m not a big fan of this but it&amp;#039;s a decent fall back.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Scenes====&lt;br /&gt;
The sally anne phase video will be broken up into a couple different sections.  &lt;br /&gt;
This is to accomodate for varying scenarios in the video.&lt;br /&gt;
&lt;br /&gt;
The sections will be:&lt;br /&gt;
&lt;br /&gt;
Cargo drop &lt;br /&gt;
Pirate scan&lt;br /&gt;
Pirate steals cargo&lt;br /&gt;
Pirate can&amp;#039;t find cargo&lt;br /&gt;
Allied ship sees static&lt;br /&gt;
Allied ship sees pirate steal cargo&lt;br /&gt;
&lt;br /&gt;
=====Cargo Drop=====&lt;br /&gt;
-------------------------------------------&lt;br /&gt;
This section will setup the following scenes for the player.  It should give all the basic information thatthe player needs to make sense of the scenes that will follow.  The scene should identify the cargo ship and it&amp;#039;s crew as allies, and indicate a reason as to why they need to drop off their cargo.  This reason could be that they need to lighten the laod to escape from the pirates following them.  The explanation could be delivered via the ships captain, as this should make it obvious that it is humans and not a machine who are in control of the ships.  The cargo ship will then drop it&amp;#039;s cargo off at a visually distinct planet, and then leave the area.&lt;br /&gt;
&lt;br /&gt;
=====Pirate Scan=====&lt;br /&gt;
-------------------------------------------&lt;br /&gt;
After the Cargo ship drops it&amp;#039;s cargo, pirates ships will appear on the scene, possibly warping in.  The pirate ships could be a group of ships with a distinct lead ship or a just singular ship, which ever looks and feels cooler.  There will then be a view of the pirate ship bridge and the pirate captian will command to scan the planet for any signs of their prey.  The view will change to a shot of the ship scanning over the surface of the planet.&lt;br /&gt;
&lt;br /&gt;
=====Pirate Ship steals cargo=====&lt;br /&gt;
------------------------------------------&lt;br /&gt;
If the pirate ship locates cargo, the view will change to shop bridge of the pirate ship.  The captain will be notified that they&amp;#039;ve found something and the image of the cargo will come on screen.  The captain will say something along the lines of &amp;quot; Arrrr me mateys! We&amp;#039;ve found some booty&amp;quot; The view will then change to the pirate ship getting the cargo, possibly by tractor beam, and transporting it to a different planet, which needs to be visually distinct from the first planet. &lt;br /&gt;
&lt;br /&gt;
=====Pirate Ship doesn&amp;#039;t find cargo=====&lt;br /&gt;
-------------------------------------------&lt;br /&gt;
If the pirate ship fails to detect the cargo, the view will show the bridge and a crew member will inform the captain they haven&amp;#039;t found any signs of the cargo ship, the viewport could show a &amp;quot;:(&amp;quot; or a &amp;quot;?&amp;quot;.  The captain will say somethign along the lines of &amp;quot; Well they must be further on&amp;quot;.  The pirates will then leave the area.&lt;br /&gt;
&lt;br /&gt;
=====Allied Cargo ship watches the pirate steal=====&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
A shot of the bridge of the allied ship.  Maybe some text indicating that they can&amp;#039;t be seen by the pirates, or are out of their sensor range.  A crew member will let the captain know they are intercepting a signal and will display the pirate ship moving the cargo to the other planet. &lt;br /&gt;
&lt;br /&gt;
=====Allied ship sees static=====&lt;br /&gt;
---------------------------------------&lt;br /&gt;
 A shot of the bridge of the allied ship.  Maybe some text indicating that they can&amp;#039;t be seen by the pirates, or are out of their sensor range.  A crew member will let the captain know they are intercepting a signal and will display static.  Someone will complain that the comm is encrypted and they can&amp;#039;t make it out.&lt;br /&gt;
&lt;br /&gt;
==Scoring==&lt;br /&gt;
&lt;br /&gt;
Players will be given a score based on how many messages they steal and how many bonus items they find.  This score will determine how much money they get.  A players score will be reduced based on the number of times they were caught.    &lt;br /&gt;
Players will also be given resources and trade goods for each correct Sally Anne response.&lt;br /&gt;
Players will be given a ranking of sorts, based on their score and responses, that will determine the number of tokens they receive.&lt;br /&gt;
Players will always receive at least one of the tokens.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Development==&lt;br /&gt;
&lt;br /&gt;
[[Milestones]]&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Star_Jack&amp;diff=456</id>
		<title>Star Jack</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Star_Jack&amp;diff=456"/>
				<updated>2008-10-07T23:55:01Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: New page: ==Summary==  This minigame tests theory of mind and detection of embedded figures.  The mini-game&amp;#039;s theory-of-mind component is an adaptation of the classic “Sally Anne” test of theory...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
This minigame tests theory of mind and detection of embedded figures.&lt;br /&gt;
&lt;br /&gt;
The mini-game&amp;#039;s theory-of-mind component is an adaptation of the classic “Sally Anne” test of theory-of-mind. In the “Sally Anne” test one character, Sally, places a marble in a safe place, and then whilst Sally is out of the room another character, Anne, moves the marble to a new hiding place.  The subject is asked “Where will Sally look for her marble?” or “Where does Sally think the marble is?” Many autistic children, like normal children under four years of age, answer this question erroneously in terms of what they themselves know about where Anne moved the marble, instead of what Sally knows.  Those who correctly answer this first-order theory-of-mind question may still respond incorrectly to a second-order question: if, unbeknownst to Anne, Sally was peering through the keyhole and saw Anne move the marble, “Where does Anne think Sally will look for the marble?”&lt;br /&gt;
&lt;br /&gt;
The player is infiltrating a subspace communications satellite.  The player will have to navigate to and hack comm stations to steal Pirate communication messages.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Premise==&lt;br /&gt;
&lt;br /&gt;
You are a covert operative for the World Space Initiative. The Order of Orion is attacking merchants carrying WSI payloads, stealing their cargo, and stashing the goods on various planets or locations. Your mission is to infiltrate their communication satellites and discover the location of the stolen cargo.&lt;br /&gt;
&lt;br /&gt;
==Objective==&lt;br /&gt;
&lt;br /&gt;
Recover as many communication logs about stolen Cargo as possible and determine where the merchants and cargo are.&lt;br /&gt;
&lt;br /&gt;
==Characters==&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
Player:  An elite reconisaince operative trained in stealth and sabotage.  These agents have access to a personal cloaking device, a molecular copier, hacking tools and many other items.  They excel in non lethal force and avoid direct confrontation whenever possible.   &lt;br /&gt;
&lt;br /&gt;
Bobcat B-3 Interceptor:  A small ship outfitted with the best cloaking and stealth technology available.  This ship is used to get the operative to and from the satellite undetected.&lt;br /&gt;
&lt;br /&gt;
Satellite Security:  The satellite is garrisoned with security guards and security devices.  These guards are tasked with keeping the satelite safe and un comprimized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//These Characters will be shown in the cut scenes.&lt;br /&gt;
Merchants:  Various merchants that ferry goods throughout the solar system. Those carrying WSI goods are targets of OoO raiders. &lt;br /&gt;
&lt;br /&gt;
Raiders:  Various OoO pirates target merchants under WSI contracts.  Pirates can be found stealing from all across the galaxy and transporting any valuable cargo to different locations.  &lt;br /&gt;
&lt;br /&gt;
Cargo:  The OoO is stealing WSI payloads and hiding them on planets to be picked up by other OoO operatives at a later date. Finding these are the objectives of the game.  All cargo will have an Icon on them symbolizing the type of material inside.  &lt;br /&gt;
&lt;br /&gt;
Planets and Buildings:  Pirates and merchants will move cargo from on plater to another, or one building to another.&lt;br /&gt;
&lt;br /&gt;
==Gameplay==&lt;br /&gt;
&lt;br /&gt;
The game is divided into 3 different phases:&lt;br /&gt;
&lt;br /&gt;
Puzzle Phase&lt;br /&gt;
	Players will explore floors of the satellite to find comm stations.  They will have to avoid guards and move from room to room until they find that floors comm station.  Players will have to use their abilities to deactivate traps and guards. &lt;br /&gt;
&lt;br /&gt;
Hacking Phase&lt;br /&gt;
	Players will have to complete a embedded figures test whenever they use their hacking tool. &lt;br /&gt;
&lt;br /&gt;
Sally Anne Phase&lt;br /&gt;
	Players will be shown an animation depicting the message the player has found. Players will then be asked the theory of mind questions.  Game play will then transition back to the Puzzle Phase.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Phases==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Puzzle Phase&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Objective &lt;br /&gt;
&lt;br /&gt;
The player will explore the different floors of the satellite.  Before a player can move to the next floor the player must explore all the rooms of the floor and hack the communication panel.  To do so players will have to avoid detection by utilizing their various stealth abilities.  &lt;br /&gt;
&lt;br /&gt;
The game will be turn based.  The game state will not change until the player performs an action.  This will allow players to take as much time as needed to plan out their moves.  Guards and other interactive objects will not do anything until after the player has done an action.  Players will always complete their action before the world takes it&amp;#039;s turn.  &lt;br /&gt;
&lt;br /&gt;
When the player enters the facility, the security system is un aware of them.  When a player is caught or fails an event, such as hacking a terminal, the security system will become more aware of them.  This awareness is represented by a meter.  Once them meter is filled the Security System is fully aware of the player and will send guards to capture the infiltrator.  Once this occurs sirens will sound and the player will have to tele port to their ship and escape the station.  The awareness level will effectively act as the players lives or attempts.  After a period of turns of not being detected the players awareness level will start decreasing.  &lt;br /&gt;
&lt;br /&gt;
Actions&lt;br /&gt;
&lt;br /&gt;
Move -  The player will be able to move in 4 unique directions!  &lt;br /&gt;
Wait -  This action represent the player skipping a turn.&lt;br /&gt;
Cloak - This action will make the player invisible for a specific number of turns.&lt;br /&gt;
Hack - This action will start the Hacking Phase.  If a player is un successful in hacking the object then they will be teleported back to the beginning of the level.    &lt;br /&gt;
Set Trap - Players will be able to set traps for guards&lt;br /&gt;
Use - Players will be able to interact with their environment using this action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enemies&lt;br /&gt;
&lt;br /&gt;
Guard - Guards will patrol the halls of the facility.  A patrolling guard will be able to catch any player in their line of sight.  Guards will have predictable paths that they follow.  Guards can be avoided by using the cloak ability or deactivated by placing a trap.  A deactivated guard will either disappear or fall to the floor.  If guards do not dissappear then the player will have to move them to prevent other guards from finding the body.&lt;br /&gt;
&lt;br /&gt;
Sentry Camera - A sentry camera will detect the player if they enter in to it&amp;#039;s line of sight.  Sentry camera&amp;#039;s will not move, but will rotate in place.  To disable a sentry camera you will need to find it&amp;#039;s control panel and hack it.  Each camera and control panel will have matching colors.  Cloaking can be used to avoid the camera.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Espionage PDA&lt;br /&gt;
&lt;br /&gt;
Every infiltrator has their own personal Espionage PDA.  This PDA can communicate with your ship and provide you with useful information.  This will be where the player can see their mission objectives, current mission progress, can view or retry any tutorial sections or end the game.  &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hacking Phase&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Encrypted comms are represented by shapes that flow from the left to the right of the screen, somewhat akin to &amp;#039;&amp;#039;the Matrix.&amp;#039;&amp;#039; The bottom of the game screen houses the screen of &amp;#039;&amp;#039;the Snifftron ST3,&amp;#039;&amp;#039; a device that hackers use to decrypt data. &lt;br /&gt;
&lt;br /&gt;
In a manner very similar to the traditional Embedded Figures Test, the ST3 generates an abstract shape and displays it on its screen. As the data stream flows across the top of the game screen, random shapes pop out and appear in the center of the data stream. If this large shape contains the simpler shape displayed on the ST3, then the player should press spacebar before the trial expires. If this happens, the player successfully &amp;quot;filters&amp;quot; the data stream. The player can only fail this process (either by not pressing spacebar on a match or pressing spacebar on a non-match) 3 times before the connection is lost and the message is lost.  Some objects will be more difficult to hack and will require more sucessful matches. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the player filters the data successfully enough times, then the comm is decrypted.  Diffrent results will occur depending on the item hacked.  If a comm terminal is hacked,a small cutscene plays before returning to the navigation screen. If the player is unsuccessful, then they return to the navigation screen and their detection level will increase.&lt;br /&gt;
&lt;br /&gt;
The large shapes are generated according the figure below. Generating smaller shapes that are embedded in the large shapes can easily be done by connecting the dots along edge connections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
==Sally Anne Phase==&lt;br /&gt;
&lt;br /&gt;
Once a players successfully hacks the comm station they will be shown a brief series of animations depicting the message they stole. There will be many different messages, but each will follow the same principles. In animation #1, a friendly ship deposits a resource (e.g. fuel or materials) in a depot on one of several available planets.  (Planets are readily distinguishable by their location on the star map and by their surface appearance.)  In animation #2, an opponent ship appears and either steals the resource and deposits it on another planet (THEFT, 2/3 probability) or simply scans the resource (¬THEFT, 1/3 probability).  Animation #3 is a picture of the friendly ship&amp;#039;s control centre including its captain and its viewscreen, which shows either a sensor scan of the opponent&amp;#039;s actions (SCAN, ½ probability) or noise representing sensor jamming (¬SCAN, ½ probability).  Thus by the end of animation #3, one of three equiprobable situations exists: (1) the friend believes correctly that the resource is in its original location, and the opponent believes correctly that the friend will look for the resource in this location (¬THEFT); (2) the friend believes incorrectly that the resource is in its original location, and the opponent believes correctly that the friend will look for the resource in its original location (THEFT∧¬SCAN); (3) the friend believes correctly that the resource is in its new location, and the opponent believes incorrectly that the friend will look for the resource in its original location (THEFT∧SCAN).  Animation #4 reminds the player that the friend will always set course to retrieve the resource, and that the opponent will always set course to intercept the friend.  After this fourth animation, the player is prompted pictorially to lay in two intercept courses (by moving the mouse to the appropriate planet), one to rendez-vous with the friend and one to engage the opponent.  In order to set these courses the player must infer where the friend thinks the resource is and where the opponent thinks the friend will look for the resource, respectively.  Accuracy and response time in these tasks measure first-order and second-order theory-of-mind processing.&lt;br /&gt;
&lt;br /&gt;
These animations will be still shots depicting the cut scene.  Animations are planned for future releases.&lt;br /&gt;
&lt;br /&gt;
==Scoring==&lt;br /&gt;
&lt;br /&gt;
Players will be given a score based on how many messages they steal and how many bonus items they find.  This score will determine how much money they get.  A players score will be reduced based on the number of times they were caught.    &lt;br /&gt;
Players will also be given resources and trade goods for each correct Sally Anne response.&lt;br /&gt;
Players will be given a ranking of sorts, based on their score and responses, that will determine the number of tokens they receive.&lt;br /&gt;
Players will always receive at least one of the tokens.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Development==&lt;br /&gt;
&lt;br /&gt;
[[Milestones]]&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Functional_specifications&amp;diff=455</id>
		<title>Functional specifications</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Functional_specifications&amp;diff=455"/>
				<updated>2008-10-07T23:54:29Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to this game&amp;#039;s functional spec table of contents.  There are two major parts: the colony simulator and the minigames.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Important Neuroscientific Considerations in Game Design for Autism]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Colony Simulator&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Colony Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Factions]]&lt;br /&gt;
&lt;br /&gt;
[[Structures]]&lt;br /&gt;
&lt;br /&gt;
[[Consumables]]&lt;br /&gt;
&lt;br /&gt;
[[Tasks]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Minigames&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Meteor Madness]]&lt;br /&gt;
&lt;br /&gt;
[[Factory Frenzy]]&lt;br /&gt;
&lt;br /&gt;
[[Star Jack]]&lt;br /&gt;
&lt;br /&gt;
[[Stellar Prospector]]&lt;br /&gt;
&lt;br /&gt;
[[Mini Game Rewards]]&lt;br /&gt;
&lt;br /&gt;
[[Mini Game Scenarios]]&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Main_Page&amp;diff=417</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Main_Page&amp;diff=417"/>
				<updated>2008-08-26T23:43:47Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: /* Major Sections */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;&amp;#039;&amp;#039;&amp;#039;Welcome to the Autism Game wiki&amp;#039;&amp;#039;&amp;#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page is used by the developers working on Astropolis, a video game that collects scientific research. Here at the Autism Collaborative, we want to share both our findings and our processes with the public because we believe that is the most beneficial for everyone. As such, this wiki is a tool used by the Astropolis developers, but we encourage anyone interested in the project to explore and gain insight into our process for making the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The Motivation==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Integrative studies of perception, attention, and social cognition in autism&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Although much progress has been made identifying structural and functional profiles in autism, this work has resulted in a multiplicity of hypotheses targeted at particular brain or cognitive subsystems or levels of analysis; our most vexing problem often is not identifying the observational details, but assembling these details into a coherent theory.  The division between social and non-social studies of autism is a case in point.  Competing theories have construed autism variously as an exclusively social deficit in &amp;quot;theory of mind,&amp;quot; an abnormality of attention and executive function with social and non-social consequences, an atypical weakness in &amp;quot;central coherence,&amp;quot; or an enhancement of perceptual function.  Although each of these views seems to capture a piece of the truth, a synthesis of all of them will not be possible as long as they continue to be approached as competing rather than synergistic views, as long as their psychological descriptions remain incompletely connected to neurobiological explanations and to clinical impairments, and as long as individual experiments continue to collect data germane to only one theory in isolation.&lt;br /&gt;
&lt;br /&gt;
==The Strategy==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Embed a suite of psychological experiments within a video game that&amp;#039;s fun to play&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Perhaps the single most important obstacle to integrative studies of autism is the practical limit on the amount of time that a single experimental subject can reasonably be expected to perform before becoming fatigued.  Unfortunately, often the more controlled a stimulus is from the scientist&amp;#039;s point of view, the more repetitive and tedious the experiment can seem from the subject&amp;#039;s point of view.  Behavioural research on autism in recent years has highlighted the importance of motivation, behavioural set, and task instruction in establishing cognitive strategy and determining performance (e.g. Plaisted et al. 1999; Dalton et al. 2005).  In light of these considerations, we propose to embed experimental stimuli in the context of a video game that captures and maintains subjects&amp;#039; interest, transparently collecting behavioural data and synchronising with physiological recording as the subject plays the game.  The practical advantages of such an engaging and ecologically valid format over the usual repetitive blocks of trials are legion.  Indeed, varying levels and demands of attentional shifting and multimodal integration are natural in the context of video game play, and psychophysical measures such as dot motion coherence and embedded figures are easily implemented as, for example, the movement of a star field on a view screen and the detection of an adversary in a cluttered environment.  In addition, the strategic and adversarial nature of a video game carries natural opportunities to explore higher-level cognitive measures such as comprehension of game-related narratives and social attribution to a computer-generated adversary.  The video game format is increasingly being used to acquire simultaneous behavioural and EEG observations in ecologically valid contexts, for example in visuomotor tracking (Smith et al. 1999), air traffic control (Brookings et al. 1996), and military command and control simulations (St John et al. 2002, 2004; Berka et al. 2004).  Recent results in human-computer interaction (von Ahn 2006) also point to the power of the game context to establish and to maintain motivation in tasks that otherwise might not seem engaging, and to teach persons with developmental disorders (Golan &amp;amp; Baron-Cohen 2006).  Also along these lines, the video game format affords subjects more of a chance to become comfortable with the task before entering the laboratory, minimising the potential confound of state anxiety associated with performance of an unfamiliar task in a testing situation.&lt;br /&gt;
&lt;br /&gt;
==Major Sections==&lt;br /&gt;
&lt;br /&gt;
[[Plot]]&lt;br /&gt;
&lt;br /&gt;
[[Functional specifications]]&lt;br /&gt;
&lt;br /&gt;
[[Meetings]]&lt;br /&gt;
&lt;br /&gt;
[[Dev Setup]]&lt;br /&gt;
&lt;br /&gt;
[[End-user Setup]]&lt;br /&gt;
&lt;br /&gt;
[[Code How To&amp;#039;s]]&lt;br /&gt;
&lt;br /&gt;
[[TODO List]]&lt;br /&gt;
&lt;br /&gt;
[[Concept Art]]&lt;br /&gt;
&lt;br /&gt;
[[Art Assets and Tracking]]&lt;br /&gt;
&lt;br /&gt;
[[System Specifications and Testing]]&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Lab_Technician_How_To%27s&amp;diff=414</id>
		<title>Lab Technician How To&#039;s</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Lab_Technician_How_To%27s&amp;diff=414"/>
				<updated>2008-08-25T23:29:42Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Templates for now.  Will add more soon!&lt;br /&gt;
&lt;br /&gt;
=General=&lt;br /&gt;
== Change Key Bindings ==&lt;br /&gt;
&lt;br /&gt;
=Maritime Defender=&lt;br /&gt;
== Adjust DOT Coherence Test Variables ==&lt;br /&gt;
&lt;br /&gt;
=Stellar Prospector=&lt;br /&gt;
&lt;br /&gt;
=Starjack=&lt;br /&gt;
&lt;br /&gt;
=Colony Sim=&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Lab_Technician_How_To%27s&amp;diff=413</id>
		<title>Lab Technician How To&#039;s</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Lab_Technician_How_To%27s&amp;diff=413"/>
				<updated>2008-08-25T23:29:26Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lab Technician How To&amp;#039;s&lt;br /&gt;
&lt;br /&gt;
Templates for now.  Will add more soon!&lt;br /&gt;
&lt;br /&gt;
=General=&lt;br /&gt;
== Change Key Bindings ==&lt;br /&gt;
&lt;br /&gt;
=Maritime Defender=&lt;br /&gt;
== Adjust DOT Coherence Test Variables ==&lt;br /&gt;
&lt;br /&gt;
=Stellar Prospector=&lt;br /&gt;
&lt;br /&gt;
=Starjack=&lt;br /&gt;
&lt;br /&gt;
=Colony Sim=&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Lab_Technician_How_To%27s&amp;diff=412</id>
		<title>Lab Technician How To&#039;s</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Lab_Technician_How_To%27s&amp;diff=412"/>
				<updated>2008-08-25T23:29:16Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lab Technician How To&amp;#039;s&lt;br /&gt;
&lt;br /&gt;
Templates for now.  Will add more soon!&lt;br /&gt;
&lt;br /&gt;
=General=&lt;br /&gt;
== Change Key Bindings ==&lt;br /&gt;
&lt;br /&gt;
=Maritime Defender-&lt;br /&gt;
== Adjust DOT Coherence Test Variables ==&lt;br /&gt;
&lt;br /&gt;
=Stellar Prospector=&lt;br /&gt;
&lt;br /&gt;
=Starjack=&lt;br /&gt;
&lt;br /&gt;
=Colony Sim=&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Lab_Technician_How_To%27s&amp;diff=411</id>
		<title>Lab Technician How To&#039;s</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Lab_Technician_How_To%27s&amp;diff=411"/>
				<updated>2008-08-25T23:28:30Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: New page: Lab Technician How To&amp;#039;s  Templates for now.  Will add more soon!  -General- -- Change Key Bindings --  -Maritime Defender- -- Adjust DOT Coherence Test Variables --  -Stellar Prospector-  ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lab Technician How To&amp;#039;s&lt;br /&gt;
&lt;br /&gt;
Templates for now.  Will add more soon!&lt;br /&gt;
&lt;br /&gt;
-General-&lt;br /&gt;
-- Change Key Bindings --&lt;br /&gt;
&lt;br /&gt;
-Maritime Defender-&lt;br /&gt;
-- Adjust DOT Coherence Test Variables --&lt;br /&gt;
&lt;br /&gt;
-Stellar Prospector-&lt;br /&gt;
&lt;br /&gt;
-Starjack-&lt;br /&gt;
&lt;br /&gt;
-Colony Sim-&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Main_Page&amp;diff=410</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Main_Page&amp;diff=410"/>
				<updated>2008-08-25T23:25:36Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: /* Major Sections */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;&amp;#039;&amp;#039;&amp;#039;Welcome to the Autism Game wiki&amp;#039;&amp;#039;&amp;#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page is used by the developers working on Astropolis, a video game that collects scientific research. Here at the Autism Collaborative, we want to share both our findings and our processes with the public because we believe that is the most beneficial for everyone. As such, this wiki is a tool used by the Astropolis developers, but we encourage anyone interested in the project to explore and gain insight into our process for making the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The Motivation==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Integrative studies of perception, attention, and social cognition in autism&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Although much progress has been made identifying structural and functional profiles in autism, this work has resulted in a multiplicity of hypotheses targeted at particular brain or cognitive subsystems or levels of analysis; our most vexing problem often is not identifying the observational details, but assembling these details into a coherent theory.  The division between social and non-social studies of autism is a case in point.  Competing theories have construed autism variously as an exclusively social deficit in &amp;quot;theory of mind,&amp;quot; an abnormality of attention and executive function with social and non-social consequences, an atypical weakness in &amp;quot;central coherence,&amp;quot; or an enhancement of perceptual function.  Although each of these views seems to capture a piece of the truth, a synthesis of all of them will not be possible as long as they continue to be approached as competing rather than synergistic views, as long as their psychological descriptions remain incompletely connected to neurobiological explanations and to clinical impairments, and as long as individual experiments continue to collect data germane to only one theory in isolation.&lt;br /&gt;
&lt;br /&gt;
==The Strategy==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Embed a suite of psychological experiments within a video game that&amp;#039;s fun to play&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Perhaps the single most important obstacle to integrative studies of autism is the practical limit on the amount of time that a single experimental subject can reasonably be expected to perform before becoming fatigued.  Unfortunately, often the more controlled a stimulus is from the scientist&amp;#039;s point of view, the more repetitive and tedious the experiment can seem from the subject&amp;#039;s point of view.  Behavioural research on autism in recent years has highlighted the importance of motivation, behavioural set, and task instruction in establishing cognitive strategy and determining performance (e.g. Plaisted et al. 1999; Dalton et al. 2005).  In light of these considerations, we propose to embed experimental stimuli in the context of a video game that captures and maintains subjects&amp;#039; interest, transparently collecting behavioural data and synchronising with physiological recording as the subject plays the game.  The practical advantages of such an engaging and ecologically valid format over the usual repetitive blocks of trials are legion.  Indeed, varying levels and demands of attentional shifting and multimodal integration are natural in the context of video game play, and psychophysical measures such as dot motion coherence and embedded figures are easily implemented as, for example, the movement of a star field on a view screen and the detection of an adversary in a cluttered environment.  In addition, the strategic and adversarial nature of a video game carries natural opportunities to explore higher-level cognitive measures such as comprehension of game-related narratives and social attribution to a computer-generated adversary.  The video game format is increasingly being used to acquire simultaneous behavioural and EEG observations in ecologically valid contexts, for example in visuomotor tracking (Smith et al. 1999), air traffic control (Brookings et al. 1996), and military command and control simulations (St John et al. 2002, 2004; Berka et al. 2004).  Recent results in human-computer interaction (von Ahn 2006) also point to the power of the game context to establish and to maintain motivation in tasks that otherwise might not seem engaging, and to teach persons with developmental disorders (Golan &amp;amp; Baron-Cohen 2006).  Also along these lines, the video game format affords subjects more of a chance to become comfortable with the task before entering the laboratory, minimising the potential confound of state anxiety associated with performance of an unfamiliar task in a testing situation.&lt;br /&gt;
&lt;br /&gt;
==Major Sections==&lt;br /&gt;
&lt;br /&gt;
[[Plot]]&lt;br /&gt;
&lt;br /&gt;
[[Functional specifications]]&lt;br /&gt;
&lt;br /&gt;
[[Meetings]]&lt;br /&gt;
&lt;br /&gt;
[[Dev Setup]]&lt;br /&gt;
&lt;br /&gt;
[[Code How To&amp;#039;s]]&lt;br /&gt;
&lt;br /&gt;
[[TODO List]]&lt;br /&gt;
&lt;br /&gt;
[[Concept Art]]&lt;br /&gt;
&lt;br /&gt;
[[Art Assets and Tracking]]&lt;br /&gt;
&lt;br /&gt;
[[System Specifications and Testing]]&lt;br /&gt;
&lt;br /&gt;
[[Lab Technician How To&amp;#039;s]]&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Art_Assets_and_Tracking&amp;diff=382</id>
		<title>Art Assets and Tracking</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Art_Assets_and_Tracking&amp;diff=382"/>
				<updated>2008-08-05T15:51:12Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: /* Models */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Look and Feel ==&lt;br /&gt;
&lt;br /&gt;
We&amp;#039;re going for a Sci-Fi look that&amp;#039;s somewhere between World of Warcraft and Starcraft, a bright upbeat mood.&lt;br /&gt;
For the color pallet something like Age of Empires, bright base colors with taste full splashes of color that highlight buildings and units.&lt;br /&gt;
Our buildings should represent free floating entities in space that are connected via a transportation system.  This is similar to how Bio Shock represents Rapture, underwater buildings connected via tubes, but ours will be in space and not in the 1920&amp;#039;s.   &lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
== Requirements==&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
Models should follow the look and feel specifications.  Models should be able to be placed or combined as in a tile based system.&lt;br /&gt;
&lt;br /&gt;
===Complexity===&lt;br /&gt;
Models should be complex, but still keep a low polygon count.  Model complexity and polygon limits will be further defined as we do more extensive testing of our 3D Engine.  &lt;br /&gt;
&lt;br /&gt;
===Textures===&lt;br /&gt;
All textures should be included in the model file.  If they can&amp;#039;t be extracted form the SketchUp file then they will also need to be included as *.png files.  Textures file dimension should in power of twos( 2x2,4x4,16x16,32x32,64x64, etc) and should be kept as small as reasonably possible. &lt;br /&gt;
&lt;br /&gt;
===Submission===&lt;br /&gt;
Models will be uploaded to the Google Warehouse.  Depending on our needs we may also need to have the models uploaded to a folder on our SVN repository.&lt;br /&gt;
&lt;br /&gt;
== Colony Simulation ==&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellpadding=&amp;quot;6&amp;quot; cellspacing=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;th&amp;gt;Asset Name&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;th&amp;gt;Artist Assigned&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;th&amp;gt;Status&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Priority&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Residential Structure&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Ecodome like, Futuristic Apartment Complex, Spinning Space station (The kind that makes artificial gravity)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Medium&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Life Support Production&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Large Building, Pumps, Solar Panels, Water works, Greenhouse like&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Medium&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Asteroid Gatherer&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Asteroid Drilling/Mining structure&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;High&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Gas Gatherer&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Gas Collection Vacum/Pump structure&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Medium&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Advanced Resource Gatherer Gatherer&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Worm hole gatherer, Element Zero producer&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Low&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Asteroid Node&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Raw asteroid floating in space, multiple colours &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;High&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Gas Node&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Raw gas cloud in space, couple different colours and size&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;High&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Advanced Node&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Something advanced and space looking&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Low&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Consumer Buildings&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Refineries, Industrial Plants, Farm Structure&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;High&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Resource Tubes&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Cylindrical, Translucent,Connect(corners, T, Cross +) &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;High&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;LifeSupport Tubes&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Transport people and life support resources,Connect(corners, T, Cross +) &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Medium&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Resource Crates/Pods&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Different Crates, barrels, canisters for resources as they travel through tubes (Iron,Carbon,Helium,Oxygen,Hydrogen)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Medium&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Icons&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Icons for buildings and resources&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Low&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
&lt;br /&gt;
=== Sounds ===&lt;br /&gt;
&lt;br /&gt;
== Meteor Madness ==&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
&lt;br /&gt;
=== Sounds ===&lt;br /&gt;
&lt;br /&gt;
== Hacker Havoc ==&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
&lt;br /&gt;
=== Sounds ===&lt;br /&gt;
&lt;br /&gt;
== Stellar Prospector ==&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
&lt;br /&gt;
=== Sounds ===&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Art_Assets_and_Tracking&amp;diff=381</id>
		<title>Art Assets and Tracking</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Art_Assets_and_Tracking&amp;diff=381"/>
				<updated>2008-08-05T15:49:55Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: /* Models */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Look and Feel ==&lt;br /&gt;
&lt;br /&gt;
We&amp;#039;re going for a Sci-Fi look that&amp;#039;s somewhere between World of Warcraft and Starcraft, a bright upbeat mood.&lt;br /&gt;
For the color pallet something like Age of Empires, bright base colors with taste full splashes of color that highlight buildings and units.&lt;br /&gt;
Our buildings should represent free floating entities in space that are connected via a transportation system.  This is similar to how Bio Shock represents Rapture, underwater buildings connected via tubes, but ours will be in space and not in the 1920&amp;#039;s.   &lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
== Requirements==&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
Models should follow the look and feel specifications.&lt;br /&gt;
&lt;br /&gt;
===Complexity===&lt;br /&gt;
Models should be complex, but still keep a low polygon count.  Model complexity and polygon limits will be further defined as we do more extensive testing of our 3D Engine.  &lt;br /&gt;
&lt;br /&gt;
===Textures===&lt;br /&gt;
All textures should be included in the model file.  If they can&amp;#039;t be extracted form the SketchUp file then they will also need to be included as *.png files.  Textures file dimension should in power of twos( 2x2,4x4,16x16,32x32,64x64, etc) and should be kept as small as reasonably possible. &lt;br /&gt;
&lt;br /&gt;
===Submission===&lt;br /&gt;
Models will be uploaded to the Google Warehouse.  Depending on our needs we may also need to have the models uploaded to a folder on our SVN repository.&lt;br /&gt;
&lt;br /&gt;
== Colony Simulation ==&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellpadding=&amp;quot;6&amp;quot; cellspacing=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;th&amp;gt;Asset Name&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;th&amp;gt;Artist Assigned&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;th&amp;gt;Status&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Priority&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Residential Structure&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Ecodome like, Futuristic Apartment Complex, Spinning Space station (The kind that makes artificial gravity)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Medium&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Life Support Production&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Large Building, Pumps, Solar Panels, Water works, Greenhouse like&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Medium&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Asteroid Gatherer&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Asteroid Drilling/Mining structure&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;High&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Gas Gatherer&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Gas Collection Vacum/Pump structure&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Medium&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Advanced Resource Gatherer Gatherer&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Worm hole gatherer, Element Zero producer&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Low&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Asteroid Node&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Raw asteroid floating in space, multiple colours &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;High&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Gas Node&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Raw gas cloud in space, couple different colours and size&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;High&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Advanced Node&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Something advanced and space looking&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Low&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Consumer Buildings&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Refineries, Industrial Plants, Farm Structure&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;High&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Resource Tubes&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Cylindrical, Translucent,Connect(corners, T, Cross +) &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;High&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;LifeSupport Tubes&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Transport people and life support resources,Connect(corners, T, Cross +) &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Medium&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Resource Crates/Pods&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Different Crates, barrels, canisters for resources as they travel through tubes (Iron,Carbon,Helium,Oxygen,Hydrogen)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Medium&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Icons&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Icons for buildings and resources&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Low&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
&lt;br /&gt;
=== Sounds ===&lt;br /&gt;
&lt;br /&gt;
== Meteor Madness ==&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
&lt;br /&gt;
=== Sounds ===&lt;br /&gt;
&lt;br /&gt;
== Hacker Havoc ==&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
&lt;br /&gt;
=== Sounds ===&lt;br /&gt;
&lt;br /&gt;
== Stellar Prospector ==&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
&lt;br /&gt;
=== Sounds ===&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Art_Assets_and_Tracking&amp;diff=380</id>
		<title>Art Assets and Tracking</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Art_Assets_and_Tracking&amp;diff=380"/>
				<updated>2008-08-05T15:44:23Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: /* Models */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Look and Feel ==&lt;br /&gt;
&lt;br /&gt;
We&amp;#039;re going for a Sci-Fi look that&amp;#039;s somewhere between World of Warcraft and Starcraft, a bright upbeat mood.&lt;br /&gt;
For the color pallet something like Age of Empires, bright base colors with taste full splashes of color that highlight buildings and units.&lt;br /&gt;
Our buildings should represent free floating entities in space that are connected via a transportation system.  This is similar to how Bio Shock represents Rapture, underwater buildings connected via tubes, but ours will be in space and not in the 1920&amp;#039;s.   &lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
== Requirements==&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
Models should follow the look and feel specifications.&lt;br /&gt;
&lt;br /&gt;
===Complexity===&lt;br /&gt;
Models should be complex, but still keep a low polygon count.  Model complexity and polygon limits will be further defined as we do more extensive testing of our 3D Engine.  &lt;br /&gt;
&lt;br /&gt;
===Textures===&lt;br /&gt;
All textures should be included in the model file.  If they can&amp;#039;t be extracted form the SketchUp file then they will also need to be included as *.png files.  Textures file dimension should in power of twos( 2x2,4x4,16x16,32x32,64x64, etc) and should be kept as small as reasonably possible. &lt;br /&gt;
&lt;br /&gt;
===Submission===&lt;br /&gt;
Models will be uploaded to the Google Warehouse.  Depending on our needs we may also need to have the models uploaded to a folder on our SVN repository.&lt;br /&gt;
&lt;br /&gt;
== Colony Simulation ==&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellpadding=&amp;quot;6&amp;quot; cellspacing=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;th&amp;gt;Asset Name&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;th&amp;gt;Artist Assigned&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;th&amp;gt;Status&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Priority&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Residential Structure&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Ecodome like, Futuristic Apartment Complex, Spinning Space station (The kind that makes artificial gravity)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Medium&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Life Support Production&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Large Building, Pumps, Solar Panels, Water works, Greenhouse like&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Medium&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Asteroid Gatherer&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Asteroid Drilling/Mining structure&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;High&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Gas Gatherer&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Gas Collection Vacum/Pump structure&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Medium&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Advanced Resource Gatherer Gatherer&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Worm hole gatherer, Element Zero producer&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Low&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Asteroid Node&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Raw asteroid floating in space, multiple colours &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;High&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Gas Node&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Raw gas cloud in space, couple different colours and size&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;High&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Advanced Node&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Something advanced and space looking&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Low&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Consumer Buildings&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Refineries, Industrial Plants, Farm Structure&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;High&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Resource Tubes&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Cylindrical, Translucent,Connect(corners, T, Cross +) &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;High&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;LifeSupport Tubes&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Transport people and life support resources,Connect(corners, T, Cross +) &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Medium&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Resource Crates/Pods&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Different Crates for resources as they travel through tubes&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Medium&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Icons&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Icons for buildings and resources&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Low&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
&lt;br /&gt;
=== Sounds ===&lt;br /&gt;
&lt;br /&gt;
== Meteor Madness ==&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
&lt;br /&gt;
=== Sounds ===&lt;br /&gt;
&lt;br /&gt;
== Hacker Havoc ==&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
&lt;br /&gt;
=== Sounds ===&lt;br /&gt;
&lt;br /&gt;
== Stellar Prospector ==&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
&lt;br /&gt;
=== Sounds ===&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Art_Assets_and_Tracking&amp;diff=379</id>
		<title>Art Assets and Tracking</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Art_Assets_and_Tracking&amp;diff=379"/>
				<updated>2008-08-05T15:23:50Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: /* Models */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Look and Feel ==&lt;br /&gt;
&lt;br /&gt;
We&amp;#039;re going for a Sci-Fi look that&amp;#039;s somewhere between World of Warcraft and Starcraft, a bright upbeat mood.&lt;br /&gt;
For the color pallet something like Age of Empires, bright base colors with taste full splashes of color that highlight buildings and units.&lt;br /&gt;
Our buildings should represent free floating entities in space that are connected via a transportation system.  This is similar to how Bio Shock represents Rapture, underwater buildings connected via tubes, but ours will be in space and not in the 1920&amp;#039;s.   &lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
== Requirements==&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
Models should follow the look and feel specifications.&lt;br /&gt;
&lt;br /&gt;
===Complexity===&lt;br /&gt;
Models should be complex, but still keep a low polygon count.  Model complexity and polygon limits will be further defined as we do more extensive testing of our 3D Engine.  &lt;br /&gt;
&lt;br /&gt;
===Textures===&lt;br /&gt;
All textures should be included in the model file.  If they can&amp;#039;t be extracted form the SketchUp file then they will also need to be included as *.png files.  Textures file dimension should in power of twos( 2x2,4x4,16x16,32x32,64x64, etc) and should be kept as small as reasonably possible. &lt;br /&gt;
&lt;br /&gt;
===Submission===&lt;br /&gt;
Models will be uploaded to the Google Warehouse.  Depending on our needs we may also need to have the models uploaded to a folder on our SVN repository.&lt;br /&gt;
&lt;br /&gt;
== Colony Simulation ==&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellpadding=&amp;quot;6&amp;quot; cellspacing=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;th&amp;gt;Asset Name&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;th&amp;gt;Artist Assigned&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;th&amp;gt;Status&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Residential Structure&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Ecodome like, Futuristic Apartment Complex, Spinning Space station (The kind that makes artificial gravity)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
&lt;br /&gt;
=== Sounds ===&lt;br /&gt;
&lt;br /&gt;
== Meteor Madness ==&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
&lt;br /&gt;
=== Sounds ===&lt;br /&gt;
&lt;br /&gt;
== Hacker Havoc ==&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
&lt;br /&gt;
=== Sounds ===&lt;br /&gt;
&lt;br /&gt;
== Stellar Prospector ==&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
&lt;br /&gt;
=== Sounds ===&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Art_Assets_and_Tracking&amp;diff=378</id>
		<title>Art Assets and Tracking</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Art_Assets_and_Tracking&amp;diff=378"/>
				<updated>2008-08-05T14:12:50Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: /* Look and Feel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Look and Feel ==&lt;br /&gt;
&lt;br /&gt;
We&amp;#039;re going for a Sci-Fi look that&amp;#039;s somewhere between World of Warcraft and Starcraft, a bright upbeat mood.&lt;br /&gt;
For the color pallet something like Age of Empires, bright base colors with taste full splashes of color that highlight buildings and units.&lt;br /&gt;
Our buildings should represent free floating entities in space that are connected via a transportation system.  This is similar to how Bio Shock represents Rapture, underwater buildings connected via tubes, but ours will be in space and not in the 1920&amp;#039;s.   &lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
== Requirements==&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
Models should follow the look and feel specifications.&lt;br /&gt;
&lt;br /&gt;
===Complexity===&lt;br /&gt;
Models should be complex, but still keep a low polygon count.  Model complexity and polygon limits will be further defined as we do more extensive testing of our 3D Engine.  &lt;br /&gt;
&lt;br /&gt;
===Textures===&lt;br /&gt;
All textures should be included in the model file.  If they can&amp;#039;t be extracted form the SketchUp file then they will also need to be included as *.png files.  Textures file dimension should in power of twos( 2x2,4x4,16x16,32x32,64x64, etc) and should be kept as small as reasonably possible. &lt;br /&gt;
&lt;br /&gt;
===Submission===&lt;br /&gt;
Models will be uploaded to the Google Warehouse.  Depending on our needs we may also need to have the models uploaded to a folder on our SVN repository.&lt;br /&gt;
&lt;br /&gt;
== Colony Simulation ==&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellpadding=&amp;quot;6&amp;quot; cellspacing=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;th&amp;gt;Asset Name&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;th&amp;gt;Artist Assigned&amp;lt;/th&amp;gt;&lt;br /&gt;
 &amp;lt;th&amp;gt;Status&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Asset 1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;This is a demo asset, just used to show that the table can be made this way. I can technically type as much text in here as I want and the browser should hopefully resize this. I guess we&amp;#039;ll see :P&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;John Doe&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td&amp;gt;Assigned&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
&lt;br /&gt;
=== Sounds ===&lt;br /&gt;
&lt;br /&gt;
== Meteor Madness ==&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
&lt;br /&gt;
=== Sounds ===&lt;br /&gt;
&lt;br /&gt;
== Hacker Havoc ==&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
&lt;br /&gt;
=== Sounds ===&lt;br /&gt;
&lt;br /&gt;
== Stellar Prospector ==&lt;br /&gt;
&lt;br /&gt;
=== Models ===&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
&lt;br /&gt;
=== Sounds ===&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Milestones&amp;diff=365</id>
		<title>Milestones</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Milestones&amp;diff=365"/>
				<updated>2008-07-28T15:40:26Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sprint 1: &lt;br /&gt;
  * Implement basic structure of Dungeon game.&lt;br /&gt;
     [x]Loading XML data&lt;br /&gt;
     [x]converting XML data to load level&lt;br /&gt;
     [x]Basic update structure&lt;br /&gt;
     [x]Data structures of the levels&lt;br /&gt;
     [x]Input&lt;br /&gt;
     [x]Game Flow&lt;br /&gt;
     [x]Collision&lt;br /&gt;
     []Implement Menus&lt;br /&gt;
     []Difficulty&lt;br /&gt;
     [x]Game play programming&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Sprint 2:&lt;br /&gt;
  * Implement more complex Dungeon game functions&lt;br /&gt;
     [x]Traps/Enemies&lt;br /&gt;
     []Stealth bar&lt;br /&gt;
     [x]Player abilities&lt;br /&gt;
     [x]AI Logic&lt;br /&gt;
     []placeholder UI&lt;br /&gt;
     []Integrate the player &amp;#039;PDA&amp;#039; (multitool) &lt;br /&gt;
          []Use player abilities through tool&lt;br /&gt;
          []placeholder UI&lt;br /&gt;
&lt;br /&gt;
Sprint 3:&lt;br /&gt;
  * Implement Hacking Phase, aka Embedded Figures test&lt;br /&gt;
     [x]Create hackable objects&lt;br /&gt;
     [x]Placeholder graphics for hacking phase&lt;br /&gt;
     []Logging&lt;br /&gt;
     [x]integrate into level&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sprint 4:&lt;br /&gt;
  * Implement Sally Anne&lt;br /&gt;
     []Implement first theory of mind question&lt;br /&gt;
     []implement 2nd theory of mind question&lt;br /&gt;
     [x]Tie into level progression&lt;br /&gt;
     []Logging&lt;br /&gt;
&lt;br /&gt;
Sprint 5:&lt;br /&gt;
  * Implement Rewards&lt;br /&gt;
     []Implement a system for rewarding the player&lt;br /&gt;
     []calculate total rewards based of performance in mini game&lt;br /&gt;
     []tie to colony simulator&lt;br /&gt;
  * Tutorial&lt;br /&gt;
     []yep&lt;br /&gt;
  * Implement easy access trial modifiers to mini game menu&lt;br /&gt;
&lt;br /&gt;
Sprint 6:&lt;br /&gt;
  * Implement Map Editor&lt;br /&gt;
     []Read/Write/edit XML data containing tileset information for world/level/room&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sprint 7:&lt;br /&gt;
  * Implement Player Profiles&lt;br /&gt;
     []Keep track of missions played/progression made&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sprint 8: &lt;br /&gt;
  * Create new levels and obstacles.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Code_How_To%27s&amp;diff=308</id>
		<title>Code How To&#039;s</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Code_How_To%27s&amp;diff=308"/>
				<updated>2008-07-03T23:41:27Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: /* Import a new Audio File */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides tutorials for some of the most common actions a programmer may wish to implement. It may helpful to read the [[Code Overview]] first.&lt;br /&gt;
&lt;br /&gt;
==Submit a Bug or Other Issue==&lt;br /&gt;
&lt;br /&gt;
* Go to http://www.AutismCollaborative.org/bugs/&lt;br /&gt;
* Fill out the fields that apply to this issue&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type of Bug:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Functional Problem&lt;br /&gt;
** Any actual &amp;quot;Bug&amp;quot;&lt;br /&gt;
* Suggestion&lt;br /&gt;
** A possible change to the game that may improve it&lt;br /&gt;
* New Feature&lt;br /&gt;
** Something that &amp;#039;&amp;#039;&amp;#039;absolutely must&amp;#039;&amp;#039;&amp;#039; be implemented&lt;br /&gt;
** Use sparingly; make sure it&amp;#039;s not actually a Suggestion&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Severity:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* How much this issue affects the game/application&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Priority:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* How soon the issue should be resolved (relative to other issues)&lt;br /&gt;
* The majority of issues should be Low priority&lt;br /&gt;
* Use High sparingly&lt;br /&gt;
&lt;br /&gt;
==Coding Conventions==&lt;br /&gt;
&lt;br /&gt;
* Place the name of the file, authors, and copyright info at the top of each file&lt;br /&gt;
** Any person who makes significant changes to a file should add their name to the list of authors in a file&lt;br /&gt;
*** This helps anyone reading the code because they know who to ask if they have a question about something&lt;br /&gt;
* All private and protected class member variables are lowerCamelCase&lt;br /&gt;
* Private/protected class member variables are preceded with &amp;quot;m&amp;quot; (ie mLocalVariable)&lt;br /&gt;
* All functions, properties (sometimes called &amp;quot;smart fields&amp;quot;), and public class variables are UpperCamelCase&lt;br /&gt;
* Public variables should only be used with small classes that are only used by one or two other classes&lt;br /&gt;
* This code is intended to be viewed by many people who do not have strong programming backgrounds, therefore documentation is &amp;#039;&amp;#039;&amp;#039;very&amp;#039;&amp;#039;&amp;#039; important&lt;br /&gt;
** Document the purpose of each class&amp;#039;s member variables, either next to their declaration or as a summary for their property accessor&lt;br /&gt;
** Create a summary documentation block for every function unless it is extremely obvious&lt;br /&gt;
*** This can be done by placing the cursor above a function definition and typing &amp;quot;///&amp;quot;&lt;br /&gt;
*** This block shows up in Intellisense when writing that function in code&lt;br /&gt;
** Add a summary to any properties that are possibly confusing or not straightforward &lt;br /&gt;
** Document every step of each algorithm (except for very obvious function calls like ResetSettings();)&lt;br /&gt;
*** Someone should be able to read only the comments in a function and still understand what it does&lt;br /&gt;
** See MeteorMadness.cs for an example of the appropriate level of documentation&lt;br /&gt;
* See the Load a Texture section for naming conventions of texture assets&lt;br /&gt;
&lt;br /&gt;
==Create a New Minigame==&lt;br /&gt;
&lt;br /&gt;
* Declare the class&lt;br /&gt;
** Create a new folder under ColonySimulator&lt;br /&gt;
** Create a new file in that folder named NewMinigame.cs where NewGame is the name of the new minigame&lt;br /&gt;
** Place all new minigame-specific classes in that folder&lt;br /&gt;
** Have the class derive from GameScreen&lt;br /&gt;
 class NewGame : Gamescreen {...}&lt;br /&gt;
* Implement the Constructor&lt;br /&gt;
** Initialize game variables&lt;br /&gt;
** Declare a ScoreCard (see Scoring tutorial)&lt;br /&gt;
** Log the GameBegin code (see the Logging tutorial)&lt;br /&gt;
* Implement Update()&lt;br /&gt;
 public override void Update(GameTime gameTime){...}&lt;br /&gt;
** Do not assume a constant call rate&lt;br /&gt;
*** This function will almost always be called 60 times per second, but that rate may vary depending on CPU load&lt;br /&gt;
*** At the beginning of each cycle, get the time since the last cycle like this:&lt;br /&gt;
**** float dt = gameTime.ElapsedGameTime;&lt;br /&gt;
*** Build the time into all movement and timers, for example:&lt;br /&gt;
 myEntity.LifeSpan -= dt;&lt;br /&gt;
 myEntity.Position += myEntity.Velocity * dt;&lt;br /&gt;
* Implement Draw()&lt;br /&gt;
 public override void Draw(SpriteBatch spriteBatch){...}&lt;br /&gt;
** Be sure to call each entities Draw and Update methods. Optional: Register all entities with the XNA game object.&lt;br /&gt;
This will have XNA automatically call their Draw and Update functions at appropriate times.&lt;br /&gt;
** Consider using a generalized render-queue such as GenericWorldSpace &amp;#039;&amp;#039;&amp;#039;(not-yet-implemented as of Oct 2007)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Use the Raise function to place the minigame gamescreen on the stack based game system.&lt;br /&gt;
* End the game using Done function. This will pop it off the game stack, returning the state of the game to the previous state.&lt;br /&gt;
** Flush the particle system (see the particles tutorial) if any emitters were created&lt;br /&gt;
** Log the GameEndSuccess/GameEndFailure code&lt;br /&gt;
** Show the score&lt;br /&gt;
&lt;br /&gt;
==Use Images==&lt;br /&gt;
&lt;br /&gt;
XNA supports most common types of images, including JPEG, GIF, DDS, etc.&lt;br /&gt;
&lt;br /&gt;
===Load a Texture===&lt;br /&gt;
&lt;br /&gt;
But before you can load a texture in code you must add it to the content pipeline:&lt;br /&gt;
&lt;br /&gt;
* Import the content into the project&lt;br /&gt;
** Browse to the appropriate folder in Visual Studio&amp;#039;s Solution Explorer&lt;br /&gt;
*** For example, Content\MiniGames\MyImage.png&lt;br /&gt;
** Right click on that folder and select Add-&amp;gt;Existing Item&lt;br /&gt;
** Select the image to import&lt;br /&gt;
&lt;br /&gt;
Once that&amp;#039;s done, you can load it memory with the XNA content manager:&lt;br /&gt;
&lt;br /&gt;
 Texture2D myTexture = Content.Load(@&amp;quot;General\myTexture&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
The XNA content manager defaults to the content folder of the project, so all addresses can be relative from there. Also, the name of the image should be the same as the asset name. This can be set in the properties window. &lt;br /&gt;
&lt;br /&gt;
===Display a Static Image===&lt;br /&gt;
&lt;br /&gt;
Before manually drawing something to screen consider using some type of game object, be it an Entity, HUD element, or even a Ticker (see the tutorials below). Game objects all know how to draw themselves, so it is unlikely that a minigame will need to draw something directly to the screen. Should the need arise, however, here&amp;#039;s how it&amp;#039;s done:&lt;br /&gt;
&lt;br /&gt;
* Load it in code:&lt;br /&gt;
 GraphicsDeviceManager gdm = ...;    // This is declared in GenericGameManager.cs&lt;br /&gt;
 ConentManager cm = ...;             // Usually a parameter, as in Update(ContentManager content)&lt;br /&gt;
 SpriteBatch sb = new SpriteBatch(gdm.GraphicsDevice);                     // Basically a wrapper for a DirectX render target&lt;br /&gt;
 Texture2D texture = TextureManager.Load(@&amp;quot;Content\General\myTexture&amp;quot;);&lt;br /&gt;
 Rectangle destination = ...;        // Display destination&lt;br /&gt;
 Color tint = Color.White;           // Tint the image with this color&lt;br /&gt;
 float rotation = 0f;                // Rotation (in radians)&lt;br /&gt;
 Vector2 center = new Vector2(texture.Width / 2f, texture.Height / 2f);         // Origin of rotation&lt;br /&gt;
 float zDepth = 1f;                  // Order to draw sprites within this spritebatch&lt;br /&gt;
 &lt;br /&gt;
 sb.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.BackToFront, SaveStateMode.SaveState);&lt;br /&gt;
 &lt;br /&gt;
 sb.Draw(&lt;br /&gt;
   texture,&lt;br /&gt;
   destination ,&lt;br /&gt;
   null,               // What part of the source image to sample from--null tells it to use the whole image&lt;br /&gt;
   tint ,&lt;br /&gt;
   rotation,&lt;br /&gt;
   center,&lt;br /&gt;
   SpriteEffects.None, // How to mirror the image&lt;br /&gt;
   zDepth &lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 sb.End();&lt;br /&gt;
&lt;br /&gt;
===Display an Animation===&lt;br /&gt;
&lt;br /&gt;
Animations are created using the AnimatedSprite class. Here&amp;#039;s an example:&lt;br /&gt;
&lt;br /&gt;
 //Declare Animated Sprite&lt;br /&gt;
 //Parameters: Game object, SpriteSheet as a Texture2D object, Position as Vector2, FrameSize as Vector2, Number of Frames&lt;br /&gt;
 AnimatedSprite testAnimation = new AnimatedSprite(this, Content.Load&amp;lt;Texture2D&amp;gt;(&amp;quot;TestSpriteSheet&amp;quot;), new Vector2(200, 300), new Vector2(64, 64), 16);&lt;br /&gt;
 //Pass a reference to the SpriteBatch that the AnimatedSprite will use&lt;br /&gt;
 testAnimation.SpriteBatch = spriteBatch;&lt;br /&gt;
 //Turn on the Animation&lt;br /&gt;
 testAnimation.Animate(true);&lt;br /&gt;
 //Turn off the Animation&lt;br /&gt;
 testAnimation.Animate(false);&lt;br /&gt;
&lt;br /&gt;
*Do not forget to call the draw and update methods of the AnimatedSprite explicitly, or to add them to the XNA game.components array so to allow XNA to call them.&lt;br /&gt;
&lt;br /&gt;
==Create a New Type of Game Object==&lt;br /&gt;
&lt;br /&gt;
All specific game objects (players, enemies, collectibles, projectiles, etc.) should derive from Entity. This gives them easy ways to draw themselves, move, collide with other entities, and be passed to many tAC_Engine functions.&lt;br /&gt;
&lt;br /&gt;
==Get User Input==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DO NOT&amp;#039;&amp;#039;&amp;#039; use the standard XNA keyboard accessors (Xna.Framework.Input.KeyboardState or Xna.Framework.Input.Keyboard) or mouse accessors (Xna.Framework.Input.MouseState) because tAC_Engine does a lot of caching and logging behind the scenes. Use tAC_Engine.InputState instead.&lt;br /&gt;
&lt;br /&gt;
===Keyboard===&lt;br /&gt;
&lt;br /&gt;
 if (InputState.IsKeyDown(Keys.A))&lt;br /&gt;
 {&lt;br /&gt;
   // The A key was pressed&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Mouse===&lt;br /&gt;
&lt;br /&gt;
 if (InputState.IsMouseLeftUp &amp;amp;&amp;amp; InputState.WasMouseLeftDown)&lt;br /&gt;
 {&lt;br /&gt;
  // The mouse was just clicked (clicks are typically registered on the release, not the initial press)&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Vector2 location = InputState.MouseLocation;&lt;br /&gt;
&lt;br /&gt;
==Manage a Heads Up Display==&lt;br /&gt;
&lt;br /&gt;
Use the HUD class for any HUD element (like health bars, menu buttons, etc.). Typically, you&amp;#039;ll want to create a class that inherits from Widget2D. See MeteorWidgets.cs for examples.&lt;br /&gt;
&lt;br /&gt;
==Display Text or Icons with the Ticker==&lt;br /&gt;
&lt;br /&gt;
 string text = &amp;quot;w00t.&amp;quot;;                      // Text to display (can be &amp;quot;&amp;quot;)&lt;br /&gt;
 Texture2D image = null;                     // Can also be set to an image&lt;br /&gt;
 Vector2 imageSize = new Vector2(25f, 25f);  // Size of the (optional) icon&lt;br /&gt;
 Vector2 offset = new Vector2(700f, 50f);    // This will display the ticker 700 pixels to the right of the screen&amp;#039;s &lt;br /&gt;
                                             //   center and 50 pixels below the screen&amp;#039;s center&lt;br /&gt;
 Vector2 velocity = new Vector2 (-10f, 0f);  // Move left 10 pixels per second&lt;br /&gt;
 Ticker.Font font = Ticker.Font.Standard;    // Regular text&lt;br /&gt;
 Color color = Color.DeepPink;               // The manliest of colors&lt;br /&gt;
 float opacity = .5f;                        // 50% transparent&lt;br /&gt;
 float seconds = 5f;                         // Disappear after 5 seconds&lt;br /&gt;
 bool fade = true;                           // Fade in and fade out&lt;br /&gt;
 &lt;br /&gt;
 Ticker.Display(text, image, imageSize, offset, velocity, font, color, opacity, seconds, fade);&lt;br /&gt;
&lt;br /&gt;
==Display Text Manually==&lt;br /&gt;
&lt;br /&gt;
Most text displayed should be done using the Ticker, but if you really want to display text manually use the Nuclex font library (XNA now supports text, so the Nuclex library may eventually be removed). First you must import the desired font:&lt;br /&gt;
&lt;br /&gt;
* Create an xml file for the new font called FontName.tffimport that looks like this:&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;TrueTypeImport&amp;gt;&lt;br /&gt;
   &amp;lt;Path&amp;gt;Content\Fonts\MercuryII.ttf&amp;lt;/Path&amp;gt;&lt;br /&gt;
   &amp;lt;Size&amp;gt;32&amp;lt;/Size&amp;gt;&lt;br /&gt;
 &amp;lt;/TrueTypeImport&amp;gt;&lt;br /&gt;
* Put the font (FontName.ttf) and FontName.tffimport in the Content\Fonts directory&lt;br /&gt;
* Set the following properties for FontName.ttf&lt;br /&gt;
** Build Action: None&lt;br /&gt;
** Copy to Output Directory: Copy if newer&lt;br /&gt;
** File Name: MercuryII.ttf&lt;br /&gt;
* Set the following properties for FontName.tffimport&lt;br /&gt;
** Build Action: Content&lt;br /&gt;
** Content Importer: TrueTypeFont - XNA Framework&lt;br /&gt;
** Content Processor: Bitmap Font - XNA Framework&lt;br /&gt;
** Copy to Output Directory: Do not copy&lt;br /&gt;
** XNA Framework Content: True&lt;br /&gt;
&lt;br /&gt;
Now for the code:&lt;br /&gt;
&lt;br /&gt;
 ContentManager cm = ...;&lt;br /&gt;
 SpriteBatch sb = ...;&lt;br /&gt;
 BitmapFont bmf = cm.Load&amp;lt;BitmapFont&amp;gt;(@&amp;quot;Content\Fonts\Arial&amp;quot;);&lt;br /&gt;
 sb.Begin(SpriteBlendMode.AlphaBlend);&lt;br /&gt;
 bmf.DrawString(new Vector2(10.0F, 10.0F), &amp;quot;Manual Text!&amp;quot;, Color.Azure);&lt;br /&gt;
 sb.End();&lt;br /&gt;
&lt;br /&gt;
==Use Sound==&lt;br /&gt;
&lt;br /&gt;
===Import a new Audio File===&lt;br /&gt;
&lt;br /&gt;
** Run the XACT tool from Microsoft DirectX SDK&lt;br /&gt;
** If--after following the steps in this tutorial--playing a file in code throws an exception about using the wrong version of XACT, try using Xact.exe from a different SDK build&lt;br /&gt;
* Open AudioProject.xap file for the Minigame you wish to add a sound to.&lt;br /&gt;
* Expand Wave Banks and double click Wave Bank in the panel on the left&lt;br /&gt;
* Expand Sound Banks and double click Sound Bank in the panel on the left&lt;br /&gt;
* Go to Wave Banks-&amp;gt;Insert Wave File(s)...&lt;br /&gt;
* Select the file to import i.e.&amp;quot;@/MiniGame/Content/Audio/MySound.wav&amp;quot; and click OK.&lt;br /&gt;
* Drag the newly-added file to the Cue Name section in the Sound Bank:Sound Bank window&lt;br /&gt;
* Assign the audio file to be either a Music or Effect sound &lt;br /&gt;
* Go to File-&amp;gt;Build&lt;br /&gt;
* Save and close XACT&lt;br /&gt;
* Open game.sln with Visual Studio&lt;br /&gt;
* Browse to the Content\Sounds folder in the Solution Explorer&lt;br /&gt;
* Right click the Sounds folder and select Add-&amp;gt;Existing Item...&lt;br /&gt;
* Select &amp;quot;MySound.wav&amp;quot; and click OK&lt;br /&gt;
&lt;br /&gt;
=== Load an Audio Project ===&lt;br /&gt;
This needs to be done before you play any sound or effect.&lt;br /&gt;
SoundManager.LoadAudioProject(&amp;quot;AudioProject.xgs&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
===Play an Effect===&lt;br /&gt;
&lt;br /&gt;
SoundManager.PlayEffect(&amp;quot;Pew&amp;quot;); // No file extension&lt;br /&gt;
&lt;br /&gt;
===Play Music ===&lt;br /&gt;
&lt;br /&gt;
SoundManager.PlayMusic(&amp;quot;MyMusic&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==Use the Particle Engine==&lt;br /&gt;
&lt;br /&gt;
Particles are handled by the TACParticleEngine, a separate library that uses the AC_GraphicsEngine that has been modified to better fit the needs of the Autism Game. Features are added to it on an as-needed basis so if a new feature needs to be added and any problems arise in its integration into the current particle engine contact Brian Murphy.&lt;br /&gt;
&lt;br /&gt;
Quick layout of TACParticleEngine:&lt;br /&gt;
&lt;br /&gt;
 The ParticleManager contains references to all loaded ParticleEngines.&lt;br /&gt;
 ParticleEngines contain a series of Emitters.&lt;br /&gt;
 Emitters contain a heap of Particles, which are the objects that actually get drawn.&lt;br /&gt;
&lt;br /&gt;
Particle Effects are imported via its own unique pipeline using the existing XNA framework, so they can be called in a similar manner:&lt;br /&gt;
&lt;br /&gt;
Make sure to include these packages so that we can create and access our particle engine objects:&lt;br /&gt;
&lt;br /&gt;
 using TACParticleEngine;&lt;br /&gt;
 using TACParticleEngine.Particles;&lt;br /&gt;
 &lt;br /&gt;
Inside of the class declaration make these global variables:&lt;br /&gt;
 &lt;br /&gt;
 ParticleManager mParticleManager;&lt;br /&gt;
 ParticleEngine mTestEffect;&lt;br /&gt;
&lt;br /&gt;
Make sure to initialize in the classes initialize method:&lt;br /&gt;
&lt;br /&gt;
 mParticleManager = new ParticleManager(Game); // Initialize the particle manager object with a reference to the current game&lt;br /&gt;
 mTestEffect = mParticleManager.Load(&amp;quot;ParticleEffects/Explosion&amp;quot;); // Load in the given particle effect file by giving the&lt;br /&gt;
                                                                   // location at which it is compiled to&lt;br /&gt;
&lt;br /&gt;
After these three things have been done, you&amp;#039;ll now have an effect loaded into a Particle Engine object via the Particle Manager. However the Particle Engine doesn&amp;#039;t mean anything if it doesn&amp;#039;t do anything so let&amp;#039;s set up the rest of the code we need for updating and drawing:&lt;br /&gt;
&lt;br /&gt;
To get the engine to update, just call&lt;br /&gt;
&lt;br /&gt;
 mParticleManager.Update((float)gameTime.ElapsedGameTime.TotalSeconds);&lt;br /&gt;
&lt;br /&gt;
in the Update(GameTime gameTime) method.&lt;br /&gt;
&lt;br /&gt;
As for drawing, a little more effort is required. First of, since the TACPArticleEngine makes use of the Camera class from the AC_GraphicsEngine, we will need to create and initialize one if we are to render our particles, so let&amp;#039;s get our camera set if it hasn&amp;#039;t been done so before for other drawing.&lt;br /&gt;
&lt;br /&gt;
Add the following line to the list of global variables at the beginning of the class:&lt;br /&gt;
&lt;br /&gt;
 Camera mActiveCamera;&lt;br /&gt;
&lt;br /&gt;
This will be whatever kind of camera we are currently using for drawing in case we may want other cameras for whatever reason.&lt;br /&gt;
&lt;br /&gt;
Next we need to initialize the camera to any specific type of camera that derive from camera. As of now this is limited to FollowCamera, OrthographicCamera, PerspectiveCamera2D, and PerspectiveCamera3D. For now well us a PerspectiveCamera3D as our active camera.&lt;br /&gt;
&lt;br /&gt;
 mActiveCamera = new Perspective3DCamera(new Vector3(0, 0, -5), Vector3.Zero, Vector3.Up, MathHelper.Pi/5, 1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
Now that we have our active camera set, we can now draw by including the following line in the Draw(GameTime gameTime) method:&lt;br /&gt;
&lt;br /&gt;
 mParticleManager.Render(gameTime, mActiveCamera);&lt;br /&gt;
&lt;br /&gt;
*Note that this assumes that the GraphicsDevice.Clear(Color.Black) and base.Draw(gameTime) method calls are also in the method as they are by default.&lt;br /&gt;
&lt;br /&gt;
This will now draw any particles that have been loaded by the Particle Manager and have been set active, however the current particle engine we created has been set active yet so do that now.&lt;br /&gt;
&lt;br /&gt;
This is done by calling the following line whenever you would want drawing of that Particle Engine to occur.&lt;br /&gt;
&lt;br /&gt;
 mTestEffect.SetActive(true);&lt;br /&gt;
&lt;br /&gt;
This particle engine is now active, and if it had been previously active, it&amp;#039;s lifetime would have been reset to 0. Using this call, we can also turn off the particle engine from creating anymore particles by giving it false as its parameter instead.&lt;br /&gt;
&lt;br /&gt;
Besides this method, there are a series of methods that allow us to modify the drawing of the ParticleEngine itself. These are as followed:&lt;br /&gt;
&lt;br /&gt;
 SetEnginePosition(Vector3 Position) // Given a 3D vector, we can move the whole particle engine to the desired position&lt;br /&gt;
&lt;br /&gt;
 SetEngineColor(Vector4 Color) // Given a 4D vector of float values 0-1 in the form of RGBA, we can change the coloring of the whole particle engine&lt;br /&gt;
                               // Keep in mind that this applies that much of the emitters&amp;#039; texture for each value, so a black picture with 1,0,0,1 as&lt;br /&gt;
                               // its value will not be red but still black&lt;br /&gt;
&lt;br /&gt;
 SetEngineSize(Vector2 Size) // Given a 2D vector, we can modify the dimensions of the particle image, this is always 2D since particles in 3D are &lt;br /&gt;
                             // simply billboard sprites&lt;br /&gt;
&lt;br /&gt;
===Create a New Particle Effect===&lt;br /&gt;
&lt;br /&gt;
To make a new effect you will need two things, a new particle file, placed into the appropriate directory, as well as whatever textures are needed in their appropriate directory. Make sure that after the particle file has been created and included into the project that it is set to compile using the particle importer and processor. If these options don&amp;#039;t come up, you probably just need to include a reference to the TACParticleEngine within the projects content folder.&lt;br /&gt;
&lt;br /&gt;
Here is the format of a particle file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;particle&amp;gt; // This declares that we are making a particle effect&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;emitter&amp;gt; // This declares that we are adding a new emitter to our particle effect&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;!--type: point|spline|directional|spray--&amp;gt;&lt;br /&gt;
            &amp;lt;textureName&amp;gt;Textures/SmokeParticle&amp;lt;/textureName&amp;gt; // Directory of the texture the emitter will use&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;blendEffect&amp;gt;AlphaBlend&amp;lt;/blendEffect&amp;gt; // Blend options, typically uses Additive (for fiery effects) &lt;br /&gt;
                                                  // and AlphaBlend (for smokey or piece effects&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;positions&amp;gt;(0,0,50)&amp;lt;/positions&amp;gt; // Default position th emitter appears at. Multiple Positions can be given in the form of&lt;br /&gt;
                                            // (x,y,z)(x,y,z)(x,y,z)..., this will create a spline emitter, which will form a smooth curve&lt;br /&gt;
                                            // using all the given points&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minVel&amp;gt;(0,0,0)&amp;lt;/minVel&amp;gt; // Minimum velocity for particles. If this value is a zero vector and so is the maximum velocity, then&lt;br /&gt;
                                     // this will create either a point or spline emitter, depending on the number of positions given. If this&lt;br /&gt;
                                     // has any values of x, y, or z are &amp;lt; -1 or &amp;gt; 1, then a spray emitter is created, otherwise a directional&lt;br /&gt;
                                     // emitter is created. In either case, the number of positions should be 1.&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxVel&amp;gt;(0,0,0)&amp;lt;/maxVel&amp;gt; // This is the maximum velocity. Used only for spray and directional emitters. For spray emitters, this is&lt;br /&gt;
                                     // the direction in which all particles will move. In the directional emitter, this determines the end range&lt;br /&gt;
                                     // in which particles can move in&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;emitLifetime&amp;gt;0.3&amp;lt;/emitLifetime&amp;gt; // This is how long the emitter exists for in seconds&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;particlesPerSec&amp;gt;50&amp;lt;/particlesPerSec&amp;gt; // This is how many particles will be created every second the emitter is alive&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;particleAmount&amp;gt;20&amp;lt;/particleAmount&amp;gt; // This is the total amount of particles that can exist at any time. In most cases, this number &lt;br /&gt;
                                                // should be slightly over the emitLifetime * particlesPerSec, otherwise effect inconsistencies &lt;br /&gt;
                                                // could result.&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;particleLifetime&amp;gt;3&amp;lt;/particleLifetime&amp;gt; // How long an individual particle is alive for in seconds&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;lifeLengthRandomizer&amp;gt;1&amp;lt;/lifeLengthRandomizer&amp;gt; // This use to randomize the time a particle was alive for, however this has been taken  &lt;br /&gt;
                                                           // out. This will be removed in the future but until then, as with all the other tags, &lt;br /&gt;
                                                           // this tag needs to exist otherwise the particle file won&amp;#039;t compile&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minStartSpeed&amp;gt;0.7&amp;lt;/minStartSpeed&amp;gt; // This is the minimum speed a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxStartSpeed&amp;gt;1&amp;lt;/maxStartSpeed&amp;gt; // This is the maximum speed a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minEndSpeed&amp;gt;0&amp;lt;/minEndSpeed&amp;gt; // This is the minimum speed a particle can end at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxEndSpeed&amp;gt;0&amp;lt;/maxEndSpeed&amp;gt; // This is the maximum speed a particle can end at&lt;br /&gt;
&lt;br /&gt;
            // *Note* currently rotation is not used due to the need to use pixel shader 2.0, which would limit the range of machine this could run &lt;br /&gt;
            // on, or at the least, would result in varied graphics between machines. This can either be fully used if the use of pixel shader 2.0 is &lt;br /&gt;
            // fine, or just scrapped if the use of pixel shader 2.0 seems like at will never happen.&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;startRotationRange&amp;gt;6.28&amp;lt;/startRotationRange&amp;gt; // Range at which a particle can start rotated&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minStartRotSpeed&amp;gt;-1&amp;lt;/minStartRotSpeed&amp;gt; // The minimum speed at which a particle can rotate at start&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxStartRotSpeed&amp;gt;1&amp;lt;/maxStartRotSpeed&amp;gt; // The maximum speed at which a particle can rotate at start&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minEndRotSpeed&amp;gt;0&amp;lt;/minEndRotSpeed&amp;gt; // The minimum speed at which a particle can rotate at end&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxEndRotSpeed&amp;gt;0&amp;lt;/maxEndRotSpeed&amp;gt; // The maximum speed at which a particle can rotate at end&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;!-- (r,g,b,a) range 0.0-1.0 --&amp;gt;&lt;br /&gt;
            &amp;lt;minStartColor&amp;gt;(1,1,1,0.3)&amp;lt;/minStartColor&amp;gt; // The minimum values of RGBA that a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxStartColor&amp;gt;(1,1,1,0.3)&amp;lt;/maxStartColor&amp;gt; // The maximum values of RGBA that a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minEndColor&amp;gt;(1,1,1,0)&amp;lt;/minEndColor&amp;gt; // The minimum values of RGBA that a particle can end at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxEndColor&amp;gt;(1,1,1,0)&amp;lt;/maxEndColor&amp;gt; // The maximum values of RGBA that a particle can end at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;!-- (x,y) --&amp;gt;&lt;br /&gt;
           &amp;lt;minStartSize&amp;gt;(200,200)&amp;lt;/minStartSize&amp;gt; // The minimum size that a particle can start at&lt;br /&gt;
&lt;br /&gt;
           &amp;lt;maxStartSize&amp;gt;(200,200)&amp;lt;/maxStartSize&amp;gt; // The maximum size that a particle can start at&lt;br /&gt;
&lt;br /&gt;
           &amp;lt;minEndSize&amp;gt;(300,300)&amp;lt;/minEndSize&amp;gt; // The minimum size that a particle can end at&lt;br /&gt;
&lt;br /&gt;
           &amp;lt;maxEndSize&amp;gt;(300,300)&amp;lt;/maxEndSize&amp;gt; // The minimum size that a particle can end at&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;/emitter&amp;gt; // Declares that the emitter has been set and is now finished being made&lt;br /&gt;
&lt;br /&gt;
Here&amp;#039;s some additional emitters to just show how multiple emitters in a single effect can be done&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;emitter&amp;gt;&lt;br /&gt;
        &amp;lt;!--type: point|spline|directional|spray--&amp;gt;&lt;br /&gt;
        &amp;lt;textureName&amp;gt;Textures/BasicParticleImage&amp;lt;/textureName&amp;gt;&lt;br /&gt;
        &amp;lt;blendEffect&amp;gt;Additive&amp;lt;/blendEffect&amp;gt;&lt;br /&gt;
        &amp;lt;positions&amp;gt;(0,0,120)&amp;lt;/positions&amp;gt;&lt;br /&gt;
        &amp;lt;minVel&amp;gt;(1.001,1.001,1)&amp;lt;/minVel&amp;gt;&lt;br /&gt;
        &amp;lt;maxVel&amp;gt;(0,0,0)&amp;lt;/maxVel&amp;gt;&lt;br /&gt;
        &amp;lt;emitLifetime&amp;gt;0.3&amp;lt;/emitLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;particlesPerSec&amp;gt;1000&amp;lt;/particlesPerSec&amp;gt;&lt;br /&gt;
        &amp;lt;particleAmount&amp;gt;400&amp;lt;/particleAmount&amp;gt;&lt;br /&gt;
        &amp;lt;particleLifetime&amp;gt;2&amp;lt;/particleLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;lifeLengthRandomizer&amp;gt;1&amp;lt;/lifeLengthRandomizer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;minStartSpeed&amp;gt;2&amp;lt;/minStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSpeed&amp;gt;2&amp;lt;/maxStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSpeed&amp;gt;0&amp;lt;/minEndSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSpeed&amp;gt;0&amp;lt;/maxEndSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;startRotationRange&amp;gt;6.28&amp;lt;/startRotationRange&amp;gt;&lt;br /&gt;
        &amp;lt;minStartRotSpeed&amp;gt;-1&amp;lt;/minStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartRotSpeed&amp;gt;1&amp;lt;/maxStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndRotSpeed&amp;gt;0&amp;lt;/minEndRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndRotSpeed&amp;gt;0&amp;lt;/maxEndRotSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (r,g,b,a) range 0.0-1.0 --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartColor&amp;gt;(1,0,0,0.3)&amp;lt;/minStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartColor&amp;gt;(1,0,0,0.3)&amp;lt;/maxStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;minEndColor&amp;gt;(0,0,0,0)&amp;lt;/minEndColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndColor&amp;gt;(0,0,0,0)&amp;lt;/maxEndColor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (x,y) --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartSize&amp;gt;(1,1)&amp;lt;/minStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSize&amp;gt;(1,1)&amp;lt;/maxStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSize&amp;gt;(0.1,0.1)&amp;lt;/minEndSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSize&amp;gt;(0.1,0.1)&amp;lt;/maxEndSize&amp;gt;&lt;br /&gt;
    &amp;lt;/emitter&amp;gt;&lt;br /&gt;
    &amp;lt;emitter&amp;gt;&lt;br /&gt;
        &amp;lt;!--type: point|spline|directional|spray--&amp;gt;&lt;br /&gt;
        &amp;lt;textureName&amp;gt;Textures/ExplosionParticle&amp;lt;/textureName&amp;gt;&lt;br /&gt;
        &amp;lt;blendEffect&amp;gt;Additive&amp;lt;/blendEffect&amp;gt;&lt;br /&gt;
        &amp;lt;positions&amp;gt;(0,0,60)&amp;lt;/positions&amp;gt;&lt;br /&gt;
        &amp;lt;minVel&amp;gt;(0,0,0)&amp;lt;/minVel&amp;gt;&lt;br /&gt;
        &amp;lt;maxVel&amp;gt;(0,0,0)&amp;lt;/maxVel&amp;gt;&lt;br /&gt;
        &amp;lt;emitLifetime&amp;gt;0.3&amp;lt;/emitLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;particlesPerSec&amp;gt;100&amp;lt;/particlesPerSec&amp;gt;&lt;br /&gt;
        &amp;lt;particleAmount&amp;gt;40&amp;lt;/particleAmount&amp;gt;&lt;br /&gt;
        &amp;lt;particleLifetime&amp;gt;0.3&amp;lt;/particleLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;lifeLengthRandomizer&amp;gt;0.1&amp;lt;/lifeLengthRandomizer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;minStartSpeed&amp;gt;2&amp;lt;/minStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSpeed&amp;gt;2&amp;lt;/maxStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSpeed&amp;gt;0&amp;lt;/minEndSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSpeed&amp;gt;0&amp;lt;/maxEndSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;startRotationRange&amp;gt;6.28&amp;lt;/startRotationRange&amp;gt;&lt;br /&gt;
        &amp;lt;minStartRotSpeed&amp;gt;-1&amp;lt;/minStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartRotSpeed&amp;gt;1&amp;lt;/maxStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndRotSpeed&amp;gt;0&amp;lt;/minEndRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndRotSpeed&amp;gt;0&amp;lt;/maxEndRotSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (r,g,b,a) range 0.0-1.0 --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartColor&amp;gt;(1,1,1,0.7)&amp;lt;/minStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartColor&amp;gt;(1,1,1,0.7)&amp;lt;/maxStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;minEndColor&amp;gt;(1,1,1,0)&amp;lt;/minEndColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndColor&amp;gt;(1,1,1,0)&amp;lt;/maxEndColor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (x,y) --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartSize&amp;gt;(10,10)&amp;lt;/minStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSize&amp;gt;(50,50)&amp;lt;/maxStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSize&amp;gt;(10,10)&amp;lt;/minEndSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSize&amp;gt;(50,50)&amp;lt;/maxEndSize&amp;gt;&lt;br /&gt;
    &amp;lt;/emitter&amp;gt;&lt;br /&gt;
 &amp;lt;/particle&amp;gt; // Declares the end of the particle file&lt;br /&gt;
&lt;br /&gt;
==Keep Score and Give Resources to the Simulator Mode==&lt;br /&gt;
&lt;br /&gt;
Use the ScoreCard class to keep track of the score from a minigame. It provides easy ways to add and subtract resources, as well as an easy way to display them and pass them along to the Colony Simulator.&lt;br /&gt;
&lt;br /&gt;
MiniGame has a ColonyScoreCard built into it, accessible by the Score property. Here are some examples of how to use it:&lt;br /&gt;
&lt;br /&gt;
 class MyGame : MiniGame&lt;br /&gt;
 {&lt;br /&gt;
   public override void Update(ContentManager content)&lt;br /&gt;
   {&lt;br /&gt;
     Score.Gather(ColonyResources.Money, 500);    // Get 500 Monies&lt;br /&gt;
     &lt;br /&gt;
     MyGameObject mgo = new MyGameObject();&lt;br /&gt;
     mgo.GiveMyGameCarbon();                      // Get 1 Carbon&lt;br /&gt;
 &lt;br /&gt;
     Score.IncurDamageCost(100);                  // On CashOut, Money = Max (Money - DamageCosts, 0)&lt;br /&gt;
 &lt;br /&gt;
     int HowMuchMoneyIHave = Score.QueryResource(ColonyResources.Money);&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   public void DisplayTheScore()&lt;br /&gt;
   {&lt;br /&gt;
     bool playerWonTheMinigame = true;            // Can be set to false if the player lost&lt;br /&gt;
     Score.Display(playerWonTheMinigame );        // Displays a copy of the current score and a message for succses/failure&lt;br /&gt;
     Score.CashOut();                             // Transfers resources from MyGame to the Colony Simulator&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   // ...&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 class MyGameObject : Entity&lt;br /&gt;
 {&lt;br /&gt;
   public void GiveMyGameCarbon()&lt;br /&gt;
   {&lt;br /&gt;
     ColonyBaseApplication.MiniGame.Score.Gather(ColonyResources.Carbon, 1);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Write to the Experimental Log==&lt;br /&gt;
&lt;br /&gt;
As the game runs, certain actions are recorded and written to a file (Autism Collaborative\Game\Game\bin\x86\Debug\ExperimentalLog.txt or the corresponding Release folder). In the lab, these codes are also sent through the parallel port to sync the EEG data. Every action that pertains to an experiment must be logged in order to be analyzed (that&amp;#039;s kind of the whole point of this game!).&lt;br /&gt;
&lt;br /&gt;
First define the necessary game codes.&lt;br /&gt;
&lt;br /&gt;
* Open Logger.cs&lt;br /&gt;
* Add up to 253 codes to public enum ExperimentalCode&lt;br /&gt;
** All codes must start with a unique &amp;quot;code identifier&amp;quot;, an underscore, and then a descriptor in UpperCamelCase&lt;br /&gt;
*** For minigames, the code identifier is 2 letters&lt;br /&gt;
** 3 codes are reserved for special parallel port functions with the software that runs the EEG machines used in lab tests&lt;br /&gt;
&lt;br /&gt;
Now those codes are available for logging. Like so:&lt;br /&gt;
&lt;br /&gt;
 Logger.LogCode(Logger.ExperimentalCode.XX_Descriptor);&lt;br /&gt;
&lt;br /&gt;
It is also possible to tell the logger to log a code every time a specific key is pressed:&lt;br /&gt;
&lt;br /&gt;
 InputState.Encode(Keys.A, InputState.KeyState.Down, Logger.ExperimentalCode.DEBUG_DudeJustPushedA);&lt;br /&gt;
&lt;br /&gt;
Each minigame should remove the encodings when it is done, but it is also a good idea to decode the keys at the start of each minigame just in case. &lt;br /&gt;
&lt;br /&gt;
 InputState.Encode(Keys.A, InputState.KeyState.Down);&lt;br /&gt;
 InputState.DecodeAll();&lt;br /&gt;
&lt;br /&gt;
Every minigame should also start with its GameBegin and end with its GameEnd[Success/Failure] codes.&lt;br /&gt;
&lt;br /&gt;
It may be helpful to log events for debugging purposes. These codes have the identifier &amp;quot;DEBUG&amp;quot; and will not be logged unless the game is running in Debug mode. All new DEBUG tags must be explicitly assigned a value less than 0.&lt;br /&gt;
&lt;br /&gt;
==Use the Game Script==&lt;br /&gt;
&lt;br /&gt;
The tAC_Engine houses a [[http://www.lua.org/ Lua]] Virtual Machine. This can be used to tweak global parameters at runtime, load them from config files, drive cutscenes, or even save and load levels.&lt;br /&gt;
&lt;br /&gt;
Function callbacks are defined in C# and then invoked from a Lua file or the in-game Debug console. In other words, C# tells Lua &amp;quot;you may use these functions: X,Y,...&amp;quot; and then Lua says &amp;quot;do X, do Y, etc.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Here are a couple of ways to leverage this system:&lt;br /&gt;
&lt;br /&gt;
===Make a Cutscene===&lt;br /&gt;
&lt;br /&gt;
* Create a new lua file in the Scripts directory&lt;br /&gt;
** That file can call any registered function callbacks&lt;br /&gt;
* In the Properties window, set Copy to Output Directory to Copy if Newer&lt;br /&gt;
* Call that cutscene with:&lt;br /&gt;
 GenericBaseApplication.GameManager.PlayCutscene(@&amp;quot;Scripts\MyCutscene.lua&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
===To Register a Function Callback===&lt;br /&gt;
&lt;br /&gt;
* Create the function in C# (if the function does not already exist)&lt;br /&gt;
** It must be declared public and non-static&lt;br /&gt;
** If the need arises to register a static function, declare an instanced function in GenericLuaHelper or ColonyLuaHelper that simply calls the static function.&lt;br /&gt;
* Register the function with the Lua Virtual Machine&lt;br /&gt;
** Add the special LuaCallback annotation to the function&lt;br /&gt;
* Call the RegisterLuaCallbacks function in the class&amp;#039;s constructor that contains the function.&lt;br /&gt;
* Example:&lt;br /&gt;
 public MyClass()&lt;br /&gt;
 {  // Constructor&lt;br /&gt;
   LuaHelper.RegisterLuaCallbacks(this);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 [LuaCallback(&amp;quot;SetMyVariable&amp;quot;)]&lt;br /&gt;
 public int SetMyVariable(int value)&lt;br /&gt;
 {&lt;br /&gt;
   mMyVariable = value;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Tweak Game Parameters===&lt;br /&gt;
&lt;br /&gt;
Exposing a variable to the Lua Virtual Machine allows it to be accessed by a any script (including config files) or changed at runtime in the drop down console (accessible in Debug mode by hitting &amp;quot;~&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
* Expose a variable with a global setter/getter with a LuaCallback annotation&lt;br /&gt;
** Make sure to call the RegisterLuaCallbacks function in that class&amp;#039;s constructor if the getter/setter is not in the Game Manager&lt;br /&gt;
* Set the default value for the variable in the config file (optional)&lt;br /&gt;
** There are 3 config files for the 3 configurations of the game builds&lt;br /&gt;
*** Debug.conf, for development&lt;br /&gt;
*** StandardRelease.conf, for public releases of the game&lt;br /&gt;
*** LabRelease.conf, for use in the lab&lt;br /&gt;
&lt;br /&gt;
===Create Local Settings===&lt;br /&gt;
&lt;br /&gt;
Programmers may want to change certain properties on their machines without affecting the source-controlled code. They could change the resolution, sound settings, or even have the game bypass the regular startup sequence and launch right into the middle of a MiniGame all with no effect on other developers.&lt;br /&gt;
&lt;br /&gt;
* Create a new file: Autism Collaborative\Game\Game\Scripts\LocalSettings.lua&lt;br /&gt;
** The Visual Studio project already has this file included, but VS won&amp;#039;t be able to edit it until the file is created manually&lt;br /&gt;
* Add Lua commands and save the file&lt;br /&gt;
** Visual Studio can now be used to edit the file&lt;br /&gt;
* The file is run at the end of the Debug.conf script (if it exists)&lt;br /&gt;
** That means that this script is only run in Debug mode&lt;br /&gt;
* do &amp;#039;&amp;#039;&amp;#039;NOT&amp;#039;&amp;#039;&amp;#039; add LocalSettings.lua to source control!&lt;br /&gt;
&lt;br /&gt;
===Creating Scripts in C# Code===&lt;br /&gt;
&lt;br /&gt;
Alternatively, scripts can created using C# code rather than Lua. A C# script either be object oriented or imperative. They are able to both take in objects and return values. The CSharpHelper class can be called to run these scripts using it&amp;#039;s DoSimpleFile method. This will simply run all the code in the script. The value of this is that commonly edited code, such as configuration files, can be saved in a convenient separate location. The methods for CSharpHelper are well documented within the file itself. An example of a basic call to a C# sharp script is as follows:&lt;br /&gt;
&lt;br /&gt;
 CSharpHelper.doSimpleFile(Environment.CurrentDirectory + @&amp;quot;\Configs\Debug.confcss&amp;quot;, this, &amp;quot;game&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
This starts a C# file called &amp;quot;Debug.confcss&amp;quot; which is located in the Configs directory. The second parameter is a Game object. The object passed in can be of any type. The third parameter is the identifier of the object within the script. In this case the identifier is &amp;quot;game&amp;quot;. This means that inside the script, lines such as:&lt;br /&gt;
&lt;br /&gt;
 game.Update();&lt;br /&gt;
&lt;br /&gt;
while execute the passed in object&amp;#039;s update function.&lt;br /&gt;
&lt;br /&gt;
==Run the Game in the Lab==&lt;br /&gt;
&lt;br /&gt;
To enable the features necessary to run the game in the lab, the file conlab.tac must exist next to the game&amp;#039;s executable.&lt;br /&gt;
&lt;br /&gt;
From visual studio:&lt;br /&gt;
* Change the configuration to &amp;quot;ReleaseLab&amp;quot;&lt;br /&gt;
* Build the solution&lt;br /&gt;
From a public release of the game:&lt;br /&gt;
* Find &amp;quot;constd.tac,&amp;quot; the standard encrypted config file&lt;br /&gt;
* Copy &amp;quot;conlab.tac&amp;quot; to the same directory&lt;br /&gt;
** Autism Collaborative\Game\Game\bin\x86\Laboratory\conlab.tac is generated when the game is compiled&lt;br /&gt;
** If the game finds conlab, it assumes it is in the lab and uses that config file&lt;br /&gt;
** If conlab is not present, it assumes it is not in the lab and uses constd.tac as the config file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Publish the Installer==&lt;br /&gt;
&lt;br /&gt;
===Create the Installer===&lt;br /&gt;
&lt;br /&gt;
We use InnoSetup to create the installer. Checkout their website (http://www.jrsoftware.org/isinfo.php) if you need to change the script, but simply publishing the game does not require any adjustment to the installer script.&lt;br /&gt;
&lt;br /&gt;
* Install InnoSetup if necessary&lt;br /&gt;
** Run Autism Collaborative\Utilities\Installer Installer\isetup-5.2.2.exe&lt;br /&gt;
* Compile the game&lt;br /&gt;
** In the second menu bar (immediately below the top menu bar) within Visual Studio, change &amp;quot;Debug&amp;quot; to &amp;quot;ReleasePub&amp;quot; or &amp;quot;ReleaseLab&amp;quot;.  (In the box to the right, leave the default &amp;quot;Mixed Platforms&amp;quot;.)  &lt;br /&gt;
*** ReleasePub is for our releases to the general public. This will usually be the correct configuration.&lt;br /&gt;
*** ReleaseLab is for builds to be used in the lab. This will create the config file to run the game in &amp;quot;lab mode.&amp;quot; The resulting exe file will actually be the same as ReleasePub, but constd.tac will be replaced with conlab.tac.&lt;br /&gt;
*** Debug mode is used while developing, so do not build the game in debug mode when creating the installer.&lt;br /&gt;
*** For the exact effects of the different build configurations on the game flow, unit stats, etc. see the config files in Autism Collaborative\Game\Game\Configs&lt;br /&gt;
** Goto Build-&amp;gt;Build Solution&lt;br /&gt;
* Compile the installer script&lt;br /&gt;
** Open Autism Collaborative\Game\Game\Installer.iss with InnoSetup&lt;br /&gt;
** Goto Build-&amp;gt;Compile&lt;br /&gt;
** Goto Run-&amp;gt;Run&lt;br /&gt;
*** This creates the file Autism Collaborative\Game\Game\Output\tAC_Installer.exe&lt;br /&gt;
&lt;br /&gt;
===Upload the Installer to the Web===&lt;br /&gt;
&lt;br /&gt;
* Get a username/password for autismcollaborative.org from Matthew.&lt;br /&gt;
* Use a secure FTP client to login, such as WinSCP&lt;br /&gt;
** Either download it or run Autism Collaborative\Utilities\WinSCP.exe&lt;br /&gt;
* Login to autismcollaborative.org (port 22)&lt;br /&gt;
* Upload tAC_Installer.exe to your home directory (for example /home/zinsser)&lt;br /&gt;
** Do not overwrite the existing installer (/home/belmonte/autismcollaborative.org/downloads/AstropolisSetup.exe) since that would delete the installer from the website until the new installer finishes uploading (usually over an hour!)&lt;br /&gt;
* Once the upload is complete, enter the command &amp;quot;mv /home/zinsser/tAC_Installer.exe /home/belmonte/autismcollaborative.org/downloads/AstropolisSetup.exe&amp;quot; (you may have to open a terminal first, depending on your SFTP client)&lt;br /&gt;
** In the above command, substitute your username for &amp;quot;zinsser&amp;quot;, but keep &amp;quot;belmonte&amp;quot; as the destination user directory&lt;br /&gt;
** If there is a permissions problem, contact Matthew to make sure your user has permission to the autismcollaborative.org directory!&lt;br /&gt;
&lt;br /&gt;
==Use the ErrorLog==&lt;br /&gt;
&lt;br /&gt;
When the game encounters an Unhandled Exception (like when an end user runs into a bug in our code), useful information is dumped to ErrorLog.txt. The user is encouraged to email that file to us so we can locate the problem they ran into. Although the ErrorLog will tell us what function the program died in, it cannot tell us specifically which line was the culprit (although ErrorLogs created when the game is running in Visual Studio will tell us exactly which line!).&lt;br /&gt;
&lt;br /&gt;
We do, however, have the ability to log any custom information from a MiniGame. This may prove invaluable in debugging based on end-user error reports. All you (the programmer) must do is override the string MiniGame.DebugInfo() function. When ErrorLog.txt is created, it calls that function on the current MiniGame and appends the returned text to the bottom of the file.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Code_How_To%27s&amp;diff=307</id>
		<title>Code How To&#039;s</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Code_How_To%27s&amp;diff=307"/>
				<updated>2008-07-03T23:41:09Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: /* Use Sound */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides tutorials for some of the most common actions a programmer may wish to implement. It may helpful to read the [[Code Overview]] first.&lt;br /&gt;
&lt;br /&gt;
==Submit a Bug or Other Issue==&lt;br /&gt;
&lt;br /&gt;
* Go to http://www.AutismCollaborative.org/bugs/&lt;br /&gt;
* Fill out the fields that apply to this issue&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type of Bug:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Functional Problem&lt;br /&gt;
** Any actual &amp;quot;Bug&amp;quot;&lt;br /&gt;
* Suggestion&lt;br /&gt;
** A possible change to the game that may improve it&lt;br /&gt;
* New Feature&lt;br /&gt;
** Something that &amp;#039;&amp;#039;&amp;#039;absolutely must&amp;#039;&amp;#039;&amp;#039; be implemented&lt;br /&gt;
** Use sparingly; make sure it&amp;#039;s not actually a Suggestion&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Severity:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* How much this issue affects the game/application&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Priority:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* How soon the issue should be resolved (relative to other issues)&lt;br /&gt;
* The majority of issues should be Low priority&lt;br /&gt;
* Use High sparingly&lt;br /&gt;
&lt;br /&gt;
==Coding Conventions==&lt;br /&gt;
&lt;br /&gt;
* Place the name of the file, authors, and copyright info at the top of each file&lt;br /&gt;
** Any person who makes significant changes to a file should add their name to the list of authors in a file&lt;br /&gt;
*** This helps anyone reading the code because they know who to ask if they have a question about something&lt;br /&gt;
* All private and protected class member variables are lowerCamelCase&lt;br /&gt;
* Private/protected class member variables are preceded with &amp;quot;m&amp;quot; (ie mLocalVariable)&lt;br /&gt;
* All functions, properties (sometimes called &amp;quot;smart fields&amp;quot;), and public class variables are UpperCamelCase&lt;br /&gt;
* Public variables should only be used with small classes that are only used by one or two other classes&lt;br /&gt;
* This code is intended to be viewed by many people who do not have strong programming backgrounds, therefore documentation is &amp;#039;&amp;#039;&amp;#039;very&amp;#039;&amp;#039;&amp;#039; important&lt;br /&gt;
** Document the purpose of each class&amp;#039;s member variables, either next to their declaration or as a summary for their property accessor&lt;br /&gt;
** Create a summary documentation block for every function unless it is extremely obvious&lt;br /&gt;
*** This can be done by placing the cursor above a function definition and typing &amp;quot;///&amp;quot;&lt;br /&gt;
*** This block shows up in Intellisense when writing that function in code&lt;br /&gt;
** Add a summary to any properties that are possibly confusing or not straightforward &lt;br /&gt;
** Document every step of each algorithm (except for very obvious function calls like ResetSettings();)&lt;br /&gt;
*** Someone should be able to read only the comments in a function and still understand what it does&lt;br /&gt;
** See MeteorMadness.cs for an example of the appropriate level of documentation&lt;br /&gt;
* See the Load a Texture section for naming conventions of texture assets&lt;br /&gt;
&lt;br /&gt;
==Create a New Minigame==&lt;br /&gt;
&lt;br /&gt;
* Declare the class&lt;br /&gt;
** Create a new folder under ColonySimulator&lt;br /&gt;
** Create a new file in that folder named NewMinigame.cs where NewGame is the name of the new minigame&lt;br /&gt;
** Place all new minigame-specific classes in that folder&lt;br /&gt;
** Have the class derive from GameScreen&lt;br /&gt;
 class NewGame : Gamescreen {...}&lt;br /&gt;
* Implement the Constructor&lt;br /&gt;
** Initialize game variables&lt;br /&gt;
** Declare a ScoreCard (see Scoring tutorial)&lt;br /&gt;
** Log the GameBegin code (see the Logging tutorial)&lt;br /&gt;
* Implement Update()&lt;br /&gt;
 public override void Update(GameTime gameTime){...}&lt;br /&gt;
** Do not assume a constant call rate&lt;br /&gt;
*** This function will almost always be called 60 times per second, but that rate may vary depending on CPU load&lt;br /&gt;
*** At the beginning of each cycle, get the time since the last cycle like this:&lt;br /&gt;
**** float dt = gameTime.ElapsedGameTime;&lt;br /&gt;
*** Build the time into all movement and timers, for example:&lt;br /&gt;
 myEntity.LifeSpan -= dt;&lt;br /&gt;
 myEntity.Position += myEntity.Velocity * dt;&lt;br /&gt;
* Implement Draw()&lt;br /&gt;
 public override void Draw(SpriteBatch spriteBatch){...}&lt;br /&gt;
** Be sure to call each entities Draw and Update methods. Optional: Register all entities with the XNA game object.&lt;br /&gt;
This will have XNA automatically call their Draw and Update functions at appropriate times.&lt;br /&gt;
** Consider using a generalized render-queue such as GenericWorldSpace &amp;#039;&amp;#039;&amp;#039;(not-yet-implemented as of Oct 2007)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Use the Raise function to place the minigame gamescreen on the stack based game system.&lt;br /&gt;
* End the game using Done function. This will pop it off the game stack, returning the state of the game to the previous state.&lt;br /&gt;
** Flush the particle system (see the particles tutorial) if any emitters were created&lt;br /&gt;
** Log the GameEndSuccess/GameEndFailure code&lt;br /&gt;
** Show the score&lt;br /&gt;
&lt;br /&gt;
==Use Images==&lt;br /&gt;
&lt;br /&gt;
XNA supports most common types of images, including JPEG, GIF, DDS, etc.&lt;br /&gt;
&lt;br /&gt;
===Load a Texture===&lt;br /&gt;
&lt;br /&gt;
But before you can load a texture in code you must add it to the content pipeline:&lt;br /&gt;
&lt;br /&gt;
* Import the content into the project&lt;br /&gt;
** Browse to the appropriate folder in Visual Studio&amp;#039;s Solution Explorer&lt;br /&gt;
*** For example, Content\MiniGames\MyImage.png&lt;br /&gt;
** Right click on that folder and select Add-&amp;gt;Existing Item&lt;br /&gt;
** Select the image to import&lt;br /&gt;
&lt;br /&gt;
Once that&amp;#039;s done, you can load it memory with the XNA content manager:&lt;br /&gt;
&lt;br /&gt;
 Texture2D myTexture = Content.Load(@&amp;quot;General\myTexture&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
The XNA content manager defaults to the content folder of the project, so all addresses can be relative from there. Also, the name of the image should be the same as the asset name. This can be set in the properties window. &lt;br /&gt;
&lt;br /&gt;
===Display a Static Image===&lt;br /&gt;
&lt;br /&gt;
Before manually drawing something to screen consider using some type of game object, be it an Entity, HUD element, or even a Ticker (see the tutorials below). Game objects all know how to draw themselves, so it is unlikely that a minigame will need to draw something directly to the screen. Should the need arise, however, here&amp;#039;s how it&amp;#039;s done:&lt;br /&gt;
&lt;br /&gt;
* Load it in code:&lt;br /&gt;
 GraphicsDeviceManager gdm = ...;    // This is declared in GenericGameManager.cs&lt;br /&gt;
 ConentManager cm = ...;             // Usually a parameter, as in Update(ContentManager content)&lt;br /&gt;
 SpriteBatch sb = new SpriteBatch(gdm.GraphicsDevice);                     // Basically a wrapper for a DirectX render target&lt;br /&gt;
 Texture2D texture = TextureManager.Load(@&amp;quot;Content\General\myTexture&amp;quot;);&lt;br /&gt;
 Rectangle destination = ...;        // Display destination&lt;br /&gt;
 Color tint = Color.White;           // Tint the image with this color&lt;br /&gt;
 float rotation = 0f;                // Rotation (in radians)&lt;br /&gt;
 Vector2 center = new Vector2(texture.Width / 2f, texture.Height / 2f);         // Origin of rotation&lt;br /&gt;
 float zDepth = 1f;                  // Order to draw sprites within this spritebatch&lt;br /&gt;
 &lt;br /&gt;
 sb.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.BackToFront, SaveStateMode.SaveState);&lt;br /&gt;
 &lt;br /&gt;
 sb.Draw(&lt;br /&gt;
   texture,&lt;br /&gt;
   destination ,&lt;br /&gt;
   null,               // What part of the source image to sample from--null tells it to use the whole image&lt;br /&gt;
   tint ,&lt;br /&gt;
   rotation,&lt;br /&gt;
   center,&lt;br /&gt;
   SpriteEffects.None, // How to mirror the image&lt;br /&gt;
   zDepth &lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 sb.End();&lt;br /&gt;
&lt;br /&gt;
===Display an Animation===&lt;br /&gt;
&lt;br /&gt;
Animations are created using the AnimatedSprite class. Here&amp;#039;s an example:&lt;br /&gt;
&lt;br /&gt;
 //Declare Animated Sprite&lt;br /&gt;
 //Parameters: Game object, SpriteSheet as a Texture2D object, Position as Vector2, FrameSize as Vector2, Number of Frames&lt;br /&gt;
 AnimatedSprite testAnimation = new AnimatedSprite(this, Content.Load&amp;lt;Texture2D&amp;gt;(&amp;quot;TestSpriteSheet&amp;quot;), new Vector2(200, 300), new Vector2(64, 64), 16);&lt;br /&gt;
 //Pass a reference to the SpriteBatch that the AnimatedSprite will use&lt;br /&gt;
 testAnimation.SpriteBatch = spriteBatch;&lt;br /&gt;
 //Turn on the Animation&lt;br /&gt;
 testAnimation.Animate(true);&lt;br /&gt;
 //Turn off the Animation&lt;br /&gt;
 testAnimation.Animate(false);&lt;br /&gt;
&lt;br /&gt;
*Do not forget to call the draw and update methods of the AnimatedSprite explicitly, or to add them to the XNA game.components array so to allow XNA to call them.&lt;br /&gt;
&lt;br /&gt;
==Create a New Type of Game Object==&lt;br /&gt;
&lt;br /&gt;
All specific game objects (players, enemies, collectibles, projectiles, etc.) should derive from Entity. This gives them easy ways to draw themselves, move, collide with other entities, and be passed to many tAC_Engine functions.&lt;br /&gt;
&lt;br /&gt;
==Get User Input==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DO NOT&amp;#039;&amp;#039;&amp;#039; use the standard XNA keyboard accessors (Xna.Framework.Input.KeyboardState or Xna.Framework.Input.Keyboard) or mouse accessors (Xna.Framework.Input.MouseState) because tAC_Engine does a lot of caching and logging behind the scenes. Use tAC_Engine.InputState instead.&lt;br /&gt;
&lt;br /&gt;
===Keyboard===&lt;br /&gt;
&lt;br /&gt;
 if (InputState.IsKeyDown(Keys.A))&lt;br /&gt;
 {&lt;br /&gt;
   // The A key was pressed&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Mouse===&lt;br /&gt;
&lt;br /&gt;
 if (InputState.IsMouseLeftUp &amp;amp;&amp;amp; InputState.WasMouseLeftDown)&lt;br /&gt;
 {&lt;br /&gt;
  // The mouse was just clicked (clicks are typically registered on the release, not the initial press)&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Vector2 location = InputState.MouseLocation;&lt;br /&gt;
&lt;br /&gt;
==Manage a Heads Up Display==&lt;br /&gt;
&lt;br /&gt;
Use the HUD class for any HUD element (like health bars, menu buttons, etc.). Typically, you&amp;#039;ll want to create a class that inherits from Widget2D. See MeteorWidgets.cs for examples.&lt;br /&gt;
&lt;br /&gt;
==Display Text or Icons with the Ticker==&lt;br /&gt;
&lt;br /&gt;
 string text = &amp;quot;w00t.&amp;quot;;                      // Text to display (can be &amp;quot;&amp;quot;)&lt;br /&gt;
 Texture2D image = null;                     // Can also be set to an image&lt;br /&gt;
 Vector2 imageSize = new Vector2(25f, 25f);  // Size of the (optional) icon&lt;br /&gt;
 Vector2 offset = new Vector2(700f, 50f);    // This will display the ticker 700 pixels to the right of the screen&amp;#039;s &lt;br /&gt;
                                             //   center and 50 pixels below the screen&amp;#039;s center&lt;br /&gt;
 Vector2 velocity = new Vector2 (-10f, 0f);  // Move left 10 pixels per second&lt;br /&gt;
 Ticker.Font font = Ticker.Font.Standard;    // Regular text&lt;br /&gt;
 Color color = Color.DeepPink;               // The manliest of colors&lt;br /&gt;
 float opacity = .5f;                        // 50% transparent&lt;br /&gt;
 float seconds = 5f;                         // Disappear after 5 seconds&lt;br /&gt;
 bool fade = true;                           // Fade in and fade out&lt;br /&gt;
 &lt;br /&gt;
 Ticker.Display(text, image, imageSize, offset, velocity, font, color, opacity, seconds, fade);&lt;br /&gt;
&lt;br /&gt;
==Display Text Manually==&lt;br /&gt;
&lt;br /&gt;
Most text displayed should be done using the Ticker, but if you really want to display text manually use the Nuclex font library (XNA now supports text, so the Nuclex library may eventually be removed). First you must import the desired font:&lt;br /&gt;
&lt;br /&gt;
* Create an xml file for the new font called FontName.tffimport that looks like this:&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;TrueTypeImport&amp;gt;&lt;br /&gt;
   &amp;lt;Path&amp;gt;Content\Fonts\MercuryII.ttf&amp;lt;/Path&amp;gt;&lt;br /&gt;
   &amp;lt;Size&amp;gt;32&amp;lt;/Size&amp;gt;&lt;br /&gt;
 &amp;lt;/TrueTypeImport&amp;gt;&lt;br /&gt;
* Put the font (FontName.ttf) and FontName.tffimport in the Content\Fonts directory&lt;br /&gt;
* Set the following properties for FontName.ttf&lt;br /&gt;
** Build Action: None&lt;br /&gt;
** Copy to Output Directory: Copy if newer&lt;br /&gt;
** File Name: MercuryII.ttf&lt;br /&gt;
* Set the following properties for FontName.tffimport&lt;br /&gt;
** Build Action: Content&lt;br /&gt;
** Content Importer: TrueTypeFont - XNA Framework&lt;br /&gt;
** Content Processor: Bitmap Font - XNA Framework&lt;br /&gt;
** Copy to Output Directory: Do not copy&lt;br /&gt;
** XNA Framework Content: True&lt;br /&gt;
&lt;br /&gt;
Now for the code:&lt;br /&gt;
&lt;br /&gt;
 ContentManager cm = ...;&lt;br /&gt;
 SpriteBatch sb = ...;&lt;br /&gt;
 BitmapFont bmf = cm.Load&amp;lt;BitmapFont&amp;gt;(@&amp;quot;Content\Fonts\Arial&amp;quot;);&lt;br /&gt;
 sb.Begin(SpriteBlendMode.AlphaBlend);&lt;br /&gt;
 bmf.DrawString(new Vector2(10.0F, 10.0F), &amp;quot;Manual Text!&amp;quot;, Color.Azure);&lt;br /&gt;
 sb.End();&lt;br /&gt;
&lt;br /&gt;
==Use Sound==&lt;br /&gt;
&lt;br /&gt;
===Import a new Audio File===&lt;br /&gt;
&lt;br /&gt;
** Run the XACT tool from Microsoft DirectX SDK&lt;br /&gt;
** If--after following the steps in this tutorial--playing a file in code throws an exception about using the wrong version of XACT, try using Xact.exe from a different SDK build&lt;br /&gt;
* Open AudioProject.xap file for the Minigame you wish to add a sound to.&lt;br /&gt;
* Expand Wave Banks and double click Wave Bank in the panel on the left&lt;br /&gt;
* Expand Sound Banks and double click Sound Bank in the panel on the left&lt;br /&gt;
* Go to Wave Banks-&amp;gt;Insert Wave File(s)...&lt;br /&gt;
* Select the file to import i.e.&amp;quot;@/MiniGame/Content/Audio/MySound.wav&amp;quot; and click OK.&lt;br /&gt;
* Drag the newly-added file to the Cue Name section in the Sound Bank:Sound Bank window&lt;br /&gt;
* Assign the audio file to be either a Music or Effect sound &lt;br /&gt;
* Go to File-&amp;gt;Build&lt;br /&gt;
* Save and close XACThttp://www.autismcollaborative.org/wiki/index.php?title=Code_How_To%27s&amp;amp;action=edit&amp;amp;section=15&lt;br /&gt;
* Open game.sln with Visual Studio&lt;br /&gt;
* Browse to the Content\Sounds folder in the Solution Explorer&lt;br /&gt;
* Right click the Sounds folder and select Add-&amp;gt;Existing Item...&lt;br /&gt;
* Select &amp;quot;MySound.wav&amp;quot; and click OK&lt;br /&gt;
&lt;br /&gt;
=== Load an Audio Project ===&lt;br /&gt;
This needs to be done before you play any sound or effect.&lt;br /&gt;
SoundManager.LoadAudioProject(&amp;quot;AudioProject.xgs&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
===Play an Effect===&lt;br /&gt;
&lt;br /&gt;
SoundManager.PlayEffect(&amp;quot;Pew&amp;quot;); // No file extension&lt;br /&gt;
&lt;br /&gt;
===Play Music ===&lt;br /&gt;
&lt;br /&gt;
SoundManager.PlayMusic(&amp;quot;MyMusic&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==Use the Particle Engine==&lt;br /&gt;
&lt;br /&gt;
Particles are handled by the TACParticleEngine, a separate library that uses the AC_GraphicsEngine that has been modified to better fit the needs of the Autism Game. Features are added to it on an as-needed basis so if a new feature needs to be added and any problems arise in its integration into the current particle engine contact Brian Murphy.&lt;br /&gt;
&lt;br /&gt;
Quick layout of TACParticleEngine:&lt;br /&gt;
&lt;br /&gt;
 The ParticleManager contains references to all loaded ParticleEngines.&lt;br /&gt;
 ParticleEngines contain a series of Emitters.&lt;br /&gt;
 Emitters contain a heap of Particles, which are the objects that actually get drawn.&lt;br /&gt;
&lt;br /&gt;
Particle Effects are imported via its own unique pipeline using the existing XNA framework, so they can be called in a similar manner:&lt;br /&gt;
&lt;br /&gt;
Make sure to include these packages so that we can create and access our particle engine objects:&lt;br /&gt;
&lt;br /&gt;
 using TACParticleEngine;&lt;br /&gt;
 using TACParticleEngine.Particles;&lt;br /&gt;
 &lt;br /&gt;
Inside of the class declaration make these global variables:&lt;br /&gt;
 &lt;br /&gt;
 ParticleManager mParticleManager;&lt;br /&gt;
 ParticleEngine mTestEffect;&lt;br /&gt;
&lt;br /&gt;
Make sure to initialize in the classes initialize method:&lt;br /&gt;
&lt;br /&gt;
 mParticleManager = new ParticleManager(Game); // Initialize the particle manager object with a reference to the current game&lt;br /&gt;
 mTestEffect = mParticleManager.Load(&amp;quot;ParticleEffects/Explosion&amp;quot;); // Load in the given particle effect file by giving the&lt;br /&gt;
                                                                   // location at which it is compiled to&lt;br /&gt;
&lt;br /&gt;
After these three things have been done, you&amp;#039;ll now have an effect loaded into a Particle Engine object via the Particle Manager. However the Particle Engine doesn&amp;#039;t mean anything if it doesn&amp;#039;t do anything so let&amp;#039;s set up the rest of the code we need for updating and drawing:&lt;br /&gt;
&lt;br /&gt;
To get the engine to update, just call&lt;br /&gt;
&lt;br /&gt;
 mParticleManager.Update((float)gameTime.ElapsedGameTime.TotalSeconds);&lt;br /&gt;
&lt;br /&gt;
in the Update(GameTime gameTime) method.&lt;br /&gt;
&lt;br /&gt;
As for drawing, a little more effort is required. First of, since the TACPArticleEngine makes use of the Camera class from the AC_GraphicsEngine, we will need to create and initialize one if we are to render our particles, so let&amp;#039;s get our camera set if it hasn&amp;#039;t been done so before for other drawing.&lt;br /&gt;
&lt;br /&gt;
Add the following line to the list of global variables at the beginning of the class:&lt;br /&gt;
&lt;br /&gt;
 Camera mActiveCamera;&lt;br /&gt;
&lt;br /&gt;
This will be whatever kind of camera we are currently using for drawing in case we may want other cameras for whatever reason.&lt;br /&gt;
&lt;br /&gt;
Next we need to initialize the camera to any specific type of camera that derive from camera. As of now this is limited to FollowCamera, OrthographicCamera, PerspectiveCamera2D, and PerspectiveCamera3D. For now well us a PerspectiveCamera3D as our active camera.&lt;br /&gt;
&lt;br /&gt;
 mActiveCamera = new Perspective3DCamera(new Vector3(0, 0, -5), Vector3.Zero, Vector3.Up, MathHelper.Pi/5, 1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
Now that we have our active camera set, we can now draw by including the following line in the Draw(GameTime gameTime) method:&lt;br /&gt;
&lt;br /&gt;
 mParticleManager.Render(gameTime, mActiveCamera);&lt;br /&gt;
&lt;br /&gt;
*Note that this assumes that the GraphicsDevice.Clear(Color.Black) and base.Draw(gameTime) method calls are also in the method as they are by default.&lt;br /&gt;
&lt;br /&gt;
This will now draw any particles that have been loaded by the Particle Manager and have been set active, however the current particle engine we created has been set active yet so do that now.&lt;br /&gt;
&lt;br /&gt;
This is done by calling the following line whenever you would want drawing of that Particle Engine to occur.&lt;br /&gt;
&lt;br /&gt;
 mTestEffect.SetActive(true);&lt;br /&gt;
&lt;br /&gt;
This particle engine is now active, and if it had been previously active, it&amp;#039;s lifetime would have been reset to 0. Using this call, we can also turn off the particle engine from creating anymore particles by giving it false as its parameter instead.&lt;br /&gt;
&lt;br /&gt;
Besides this method, there are a series of methods that allow us to modify the drawing of the ParticleEngine itself. These are as followed:&lt;br /&gt;
&lt;br /&gt;
 SetEnginePosition(Vector3 Position) // Given a 3D vector, we can move the whole particle engine to the desired position&lt;br /&gt;
&lt;br /&gt;
 SetEngineColor(Vector4 Color) // Given a 4D vector of float values 0-1 in the form of RGBA, we can change the coloring of the whole particle engine&lt;br /&gt;
                               // Keep in mind that this applies that much of the emitters&amp;#039; texture for each value, so a black picture with 1,0,0,1 as&lt;br /&gt;
                               // its value will not be red but still black&lt;br /&gt;
&lt;br /&gt;
 SetEngineSize(Vector2 Size) // Given a 2D vector, we can modify the dimensions of the particle image, this is always 2D since particles in 3D are &lt;br /&gt;
                             // simply billboard sprites&lt;br /&gt;
&lt;br /&gt;
===Create a New Particle Effect===&lt;br /&gt;
&lt;br /&gt;
To make a new effect you will need two things, a new particle file, placed into the appropriate directory, as well as whatever textures are needed in their appropriate directory. Make sure that after the particle file has been created and included into the project that it is set to compile using the particle importer and processor. If these options don&amp;#039;t come up, you probably just need to include a reference to the TACParticleEngine within the projects content folder.&lt;br /&gt;
&lt;br /&gt;
Here is the format of a particle file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;particle&amp;gt; // This declares that we are making a particle effect&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;emitter&amp;gt; // This declares that we are adding a new emitter to our particle effect&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;!--type: point|spline|directional|spray--&amp;gt;&lt;br /&gt;
            &amp;lt;textureName&amp;gt;Textures/SmokeParticle&amp;lt;/textureName&amp;gt; // Directory of the texture the emitter will use&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;blendEffect&amp;gt;AlphaBlend&amp;lt;/blendEffect&amp;gt; // Blend options, typically uses Additive (for fiery effects) &lt;br /&gt;
                                                  // and AlphaBlend (for smokey or piece effects&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;positions&amp;gt;(0,0,50)&amp;lt;/positions&amp;gt; // Default position th emitter appears at. Multiple Positions can be given in the form of&lt;br /&gt;
                                            // (x,y,z)(x,y,z)(x,y,z)..., this will create a spline emitter, which will form a smooth curve&lt;br /&gt;
                                            // using all the given points&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minVel&amp;gt;(0,0,0)&amp;lt;/minVel&amp;gt; // Minimum velocity for particles. If this value is a zero vector and so is the maximum velocity, then&lt;br /&gt;
                                     // this will create either a point or spline emitter, depending on the number of positions given. If this&lt;br /&gt;
                                     // has any values of x, y, or z are &amp;lt; -1 or &amp;gt; 1, then a spray emitter is created, otherwise a directional&lt;br /&gt;
                                     // emitter is created. In either case, the number of positions should be 1.&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxVel&amp;gt;(0,0,0)&amp;lt;/maxVel&amp;gt; // This is the maximum velocity. Used only for spray and directional emitters. For spray emitters, this is&lt;br /&gt;
                                     // the direction in which all particles will move. In the directional emitter, this determines the end range&lt;br /&gt;
                                     // in which particles can move in&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;emitLifetime&amp;gt;0.3&amp;lt;/emitLifetime&amp;gt; // This is how long the emitter exists for in seconds&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;particlesPerSec&amp;gt;50&amp;lt;/particlesPerSec&amp;gt; // This is how many particles will be created every second the emitter is alive&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;particleAmount&amp;gt;20&amp;lt;/particleAmount&amp;gt; // This is the total amount of particles that can exist at any time. In most cases, this number &lt;br /&gt;
                                                // should be slightly over the emitLifetime * particlesPerSec, otherwise effect inconsistencies &lt;br /&gt;
                                                // could result.&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;particleLifetime&amp;gt;3&amp;lt;/particleLifetime&amp;gt; // How long an individual particle is alive for in seconds&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;lifeLengthRandomizer&amp;gt;1&amp;lt;/lifeLengthRandomizer&amp;gt; // This use to randomize the time a particle was alive for, however this has been taken  &lt;br /&gt;
                                                           // out. This will be removed in the future but until then, as with all the other tags, &lt;br /&gt;
                                                           // this tag needs to exist otherwise the particle file won&amp;#039;t compile&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minStartSpeed&amp;gt;0.7&amp;lt;/minStartSpeed&amp;gt; // This is the minimum speed a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxStartSpeed&amp;gt;1&amp;lt;/maxStartSpeed&amp;gt; // This is the maximum speed a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minEndSpeed&amp;gt;0&amp;lt;/minEndSpeed&amp;gt; // This is the minimum speed a particle can end at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxEndSpeed&amp;gt;0&amp;lt;/maxEndSpeed&amp;gt; // This is the maximum speed a particle can end at&lt;br /&gt;
&lt;br /&gt;
            // *Note* currently rotation is not used due to the need to use pixel shader 2.0, which would limit the range of machine this could run &lt;br /&gt;
            // on, or at the least, would result in varied graphics between machines. This can either be fully used if the use of pixel shader 2.0 is &lt;br /&gt;
            // fine, or just scrapped if the use of pixel shader 2.0 seems like at will never happen.&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;startRotationRange&amp;gt;6.28&amp;lt;/startRotationRange&amp;gt; // Range at which a particle can start rotated&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minStartRotSpeed&amp;gt;-1&amp;lt;/minStartRotSpeed&amp;gt; // The minimum speed at which a particle can rotate at start&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxStartRotSpeed&amp;gt;1&amp;lt;/maxStartRotSpeed&amp;gt; // The maximum speed at which a particle can rotate at start&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minEndRotSpeed&amp;gt;0&amp;lt;/minEndRotSpeed&amp;gt; // The minimum speed at which a particle can rotate at end&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxEndRotSpeed&amp;gt;0&amp;lt;/maxEndRotSpeed&amp;gt; // The maximum speed at which a particle can rotate at end&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;!-- (r,g,b,a) range 0.0-1.0 --&amp;gt;&lt;br /&gt;
            &amp;lt;minStartColor&amp;gt;(1,1,1,0.3)&amp;lt;/minStartColor&amp;gt; // The minimum values of RGBA that a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxStartColor&amp;gt;(1,1,1,0.3)&amp;lt;/maxStartColor&amp;gt; // The maximum values of RGBA that a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minEndColor&amp;gt;(1,1,1,0)&amp;lt;/minEndColor&amp;gt; // The minimum values of RGBA that a particle can end at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxEndColor&amp;gt;(1,1,1,0)&amp;lt;/maxEndColor&amp;gt; // The maximum values of RGBA that a particle can end at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;!-- (x,y) --&amp;gt;&lt;br /&gt;
           &amp;lt;minStartSize&amp;gt;(200,200)&amp;lt;/minStartSize&amp;gt; // The minimum size that a particle can start at&lt;br /&gt;
&lt;br /&gt;
           &amp;lt;maxStartSize&amp;gt;(200,200)&amp;lt;/maxStartSize&amp;gt; // The maximum size that a particle can start at&lt;br /&gt;
&lt;br /&gt;
           &amp;lt;minEndSize&amp;gt;(300,300)&amp;lt;/minEndSize&amp;gt; // The minimum size that a particle can end at&lt;br /&gt;
&lt;br /&gt;
           &amp;lt;maxEndSize&amp;gt;(300,300)&amp;lt;/maxEndSize&amp;gt; // The minimum size that a particle can end at&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;/emitter&amp;gt; // Declares that the emitter has been set and is now finished being made&lt;br /&gt;
&lt;br /&gt;
Here&amp;#039;s some additional emitters to just show how multiple emitters in a single effect can be done&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;emitter&amp;gt;&lt;br /&gt;
        &amp;lt;!--type: point|spline|directional|spray--&amp;gt;&lt;br /&gt;
        &amp;lt;textureName&amp;gt;Textures/BasicParticleImage&amp;lt;/textureName&amp;gt;&lt;br /&gt;
        &amp;lt;blendEffect&amp;gt;Additive&amp;lt;/blendEffect&amp;gt;&lt;br /&gt;
        &amp;lt;positions&amp;gt;(0,0,120)&amp;lt;/positions&amp;gt;&lt;br /&gt;
        &amp;lt;minVel&amp;gt;(1.001,1.001,1)&amp;lt;/minVel&amp;gt;&lt;br /&gt;
        &amp;lt;maxVel&amp;gt;(0,0,0)&amp;lt;/maxVel&amp;gt;&lt;br /&gt;
        &amp;lt;emitLifetime&amp;gt;0.3&amp;lt;/emitLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;particlesPerSec&amp;gt;1000&amp;lt;/particlesPerSec&amp;gt;&lt;br /&gt;
        &amp;lt;particleAmount&amp;gt;400&amp;lt;/particleAmount&amp;gt;&lt;br /&gt;
        &amp;lt;particleLifetime&amp;gt;2&amp;lt;/particleLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;lifeLengthRandomizer&amp;gt;1&amp;lt;/lifeLengthRandomizer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;minStartSpeed&amp;gt;2&amp;lt;/minStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSpeed&amp;gt;2&amp;lt;/maxStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSpeed&amp;gt;0&amp;lt;/minEndSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSpeed&amp;gt;0&amp;lt;/maxEndSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;startRotationRange&amp;gt;6.28&amp;lt;/startRotationRange&amp;gt;&lt;br /&gt;
        &amp;lt;minStartRotSpeed&amp;gt;-1&amp;lt;/minStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartRotSpeed&amp;gt;1&amp;lt;/maxStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndRotSpeed&amp;gt;0&amp;lt;/minEndRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndRotSpeed&amp;gt;0&amp;lt;/maxEndRotSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (r,g,b,a) range 0.0-1.0 --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartColor&amp;gt;(1,0,0,0.3)&amp;lt;/minStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartColor&amp;gt;(1,0,0,0.3)&amp;lt;/maxStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;minEndColor&amp;gt;(0,0,0,0)&amp;lt;/minEndColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndColor&amp;gt;(0,0,0,0)&amp;lt;/maxEndColor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (x,y) --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartSize&amp;gt;(1,1)&amp;lt;/minStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSize&amp;gt;(1,1)&amp;lt;/maxStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSize&amp;gt;(0.1,0.1)&amp;lt;/minEndSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSize&amp;gt;(0.1,0.1)&amp;lt;/maxEndSize&amp;gt;&lt;br /&gt;
    &amp;lt;/emitter&amp;gt;&lt;br /&gt;
    &amp;lt;emitter&amp;gt;&lt;br /&gt;
        &amp;lt;!--type: point|spline|directional|spray--&amp;gt;&lt;br /&gt;
        &amp;lt;textureName&amp;gt;Textures/ExplosionParticle&amp;lt;/textureName&amp;gt;&lt;br /&gt;
        &amp;lt;blendEffect&amp;gt;Additive&amp;lt;/blendEffect&amp;gt;&lt;br /&gt;
        &amp;lt;positions&amp;gt;(0,0,60)&amp;lt;/positions&amp;gt;&lt;br /&gt;
        &amp;lt;minVel&amp;gt;(0,0,0)&amp;lt;/minVel&amp;gt;&lt;br /&gt;
        &amp;lt;maxVel&amp;gt;(0,0,0)&amp;lt;/maxVel&amp;gt;&lt;br /&gt;
        &amp;lt;emitLifetime&amp;gt;0.3&amp;lt;/emitLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;particlesPerSec&amp;gt;100&amp;lt;/particlesPerSec&amp;gt;&lt;br /&gt;
        &amp;lt;particleAmount&amp;gt;40&amp;lt;/particleAmount&amp;gt;&lt;br /&gt;
        &amp;lt;particleLifetime&amp;gt;0.3&amp;lt;/particleLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;lifeLengthRandomizer&amp;gt;0.1&amp;lt;/lifeLengthRandomizer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;minStartSpeed&amp;gt;2&amp;lt;/minStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSpeed&amp;gt;2&amp;lt;/maxStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSpeed&amp;gt;0&amp;lt;/minEndSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSpeed&amp;gt;0&amp;lt;/maxEndSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;startRotationRange&amp;gt;6.28&amp;lt;/startRotationRange&amp;gt;&lt;br /&gt;
        &amp;lt;minStartRotSpeed&amp;gt;-1&amp;lt;/minStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartRotSpeed&amp;gt;1&amp;lt;/maxStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndRotSpeed&amp;gt;0&amp;lt;/minEndRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndRotSpeed&amp;gt;0&amp;lt;/maxEndRotSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (r,g,b,a) range 0.0-1.0 --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartColor&amp;gt;(1,1,1,0.7)&amp;lt;/minStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartColor&amp;gt;(1,1,1,0.7)&amp;lt;/maxStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;minEndColor&amp;gt;(1,1,1,0)&amp;lt;/minEndColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndColor&amp;gt;(1,1,1,0)&amp;lt;/maxEndColor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (x,y) --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartSize&amp;gt;(10,10)&amp;lt;/minStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSize&amp;gt;(50,50)&amp;lt;/maxStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSize&amp;gt;(10,10)&amp;lt;/minEndSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSize&amp;gt;(50,50)&amp;lt;/maxEndSize&amp;gt;&lt;br /&gt;
    &amp;lt;/emitter&amp;gt;&lt;br /&gt;
 &amp;lt;/particle&amp;gt; // Declares the end of the particle file&lt;br /&gt;
&lt;br /&gt;
==Keep Score and Give Resources to the Simulator Mode==&lt;br /&gt;
&lt;br /&gt;
Use the ScoreCard class to keep track of the score from a minigame. It provides easy ways to add and subtract resources, as well as an easy way to display them and pass them along to the Colony Simulator.&lt;br /&gt;
&lt;br /&gt;
MiniGame has a ColonyScoreCard built into it, accessible by the Score property. Here are some examples of how to use it:&lt;br /&gt;
&lt;br /&gt;
 class MyGame : MiniGame&lt;br /&gt;
 {&lt;br /&gt;
   public override void Update(ContentManager content)&lt;br /&gt;
   {&lt;br /&gt;
     Score.Gather(ColonyResources.Money, 500);    // Get 500 Monies&lt;br /&gt;
     &lt;br /&gt;
     MyGameObject mgo = new MyGameObject();&lt;br /&gt;
     mgo.GiveMyGameCarbon();                      // Get 1 Carbon&lt;br /&gt;
 &lt;br /&gt;
     Score.IncurDamageCost(100);                  // On CashOut, Money = Max (Money - DamageCosts, 0)&lt;br /&gt;
 &lt;br /&gt;
     int HowMuchMoneyIHave = Score.QueryResource(ColonyResources.Money);&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   public void DisplayTheScore()&lt;br /&gt;
   {&lt;br /&gt;
     bool playerWonTheMinigame = true;            // Can be set to false if the player lost&lt;br /&gt;
     Score.Display(playerWonTheMinigame );        // Displays a copy of the current score and a message for succses/failure&lt;br /&gt;
     Score.CashOut();                             // Transfers resources from MyGame to the Colony Simulator&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   // ...&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 class MyGameObject : Entity&lt;br /&gt;
 {&lt;br /&gt;
   public void GiveMyGameCarbon()&lt;br /&gt;
   {&lt;br /&gt;
     ColonyBaseApplication.MiniGame.Score.Gather(ColonyResources.Carbon, 1);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Write to the Experimental Log==&lt;br /&gt;
&lt;br /&gt;
As the game runs, certain actions are recorded and written to a file (Autism Collaborative\Game\Game\bin\x86\Debug\ExperimentalLog.txt or the corresponding Release folder). In the lab, these codes are also sent through the parallel port to sync the EEG data. Every action that pertains to an experiment must be logged in order to be analyzed (that&amp;#039;s kind of the whole point of this game!).&lt;br /&gt;
&lt;br /&gt;
First define the necessary game codes.&lt;br /&gt;
&lt;br /&gt;
* Open Logger.cs&lt;br /&gt;
* Add up to 253 codes to public enum ExperimentalCode&lt;br /&gt;
** All codes must start with a unique &amp;quot;code identifier&amp;quot;, an underscore, and then a descriptor in UpperCamelCase&lt;br /&gt;
*** For minigames, the code identifier is 2 letters&lt;br /&gt;
** 3 codes are reserved for special parallel port functions with the software that runs the EEG machines used in lab tests&lt;br /&gt;
&lt;br /&gt;
Now those codes are available for logging. Like so:&lt;br /&gt;
&lt;br /&gt;
 Logger.LogCode(Logger.ExperimentalCode.XX_Descriptor);&lt;br /&gt;
&lt;br /&gt;
It is also possible to tell the logger to log a code every time a specific key is pressed:&lt;br /&gt;
&lt;br /&gt;
 InputState.Encode(Keys.A, InputState.KeyState.Down, Logger.ExperimentalCode.DEBUG_DudeJustPushedA);&lt;br /&gt;
&lt;br /&gt;
Each minigame should remove the encodings when it is done, but it is also a good idea to decode the keys at the start of each minigame just in case. &lt;br /&gt;
&lt;br /&gt;
 InputState.Encode(Keys.A, InputState.KeyState.Down);&lt;br /&gt;
 InputState.DecodeAll();&lt;br /&gt;
&lt;br /&gt;
Every minigame should also start with its GameBegin and end with its GameEnd[Success/Failure] codes.&lt;br /&gt;
&lt;br /&gt;
It may be helpful to log events for debugging purposes. These codes have the identifier &amp;quot;DEBUG&amp;quot; and will not be logged unless the game is running in Debug mode. All new DEBUG tags must be explicitly assigned a value less than 0.&lt;br /&gt;
&lt;br /&gt;
==Use the Game Script==&lt;br /&gt;
&lt;br /&gt;
The tAC_Engine houses a [[http://www.lua.org/ Lua]] Virtual Machine. This can be used to tweak global parameters at runtime, load them from config files, drive cutscenes, or even save and load levels.&lt;br /&gt;
&lt;br /&gt;
Function callbacks are defined in C# and then invoked from a Lua file or the in-game Debug console. In other words, C# tells Lua &amp;quot;you may use these functions: X,Y,...&amp;quot; and then Lua says &amp;quot;do X, do Y, etc.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Here are a couple of ways to leverage this system:&lt;br /&gt;
&lt;br /&gt;
===Make a Cutscene===&lt;br /&gt;
&lt;br /&gt;
* Create a new lua file in the Scripts directory&lt;br /&gt;
** That file can call any registered function callbacks&lt;br /&gt;
* In the Properties window, set Copy to Output Directory to Copy if Newer&lt;br /&gt;
* Call that cutscene with:&lt;br /&gt;
 GenericBaseApplication.GameManager.PlayCutscene(@&amp;quot;Scripts\MyCutscene.lua&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
===To Register a Function Callback===&lt;br /&gt;
&lt;br /&gt;
* Create the function in C# (if the function does not already exist)&lt;br /&gt;
** It must be declared public and non-static&lt;br /&gt;
** If the need arises to register a static function, declare an instanced function in GenericLuaHelper or ColonyLuaHelper that simply calls the static function.&lt;br /&gt;
* Register the function with the Lua Virtual Machine&lt;br /&gt;
** Add the special LuaCallback annotation to the function&lt;br /&gt;
* Call the RegisterLuaCallbacks function in the class&amp;#039;s constructor that contains the function.&lt;br /&gt;
* Example:&lt;br /&gt;
 public MyClass()&lt;br /&gt;
 {  // Constructor&lt;br /&gt;
   LuaHelper.RegisterLuaCallbacks(this);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 [LuaCallback(&amp;quot;SetMyVariable&amp;quot;)]&lt;br /&gt;
 public int SetMyVariable(int value)&lt;br /&gt;
 {&lt;br /&gt;
   mMyVariable = value;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Tweak Game Parameters===&lt;br /&gt;
&lt;br /&gt;
Exposing a variable to the Lua Virtual Machine allows it to be accessed by a any script (including config files) or changed at runtime in the drop down console (accessible in Debug mode by hitting &amp;quot;~&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
* Expose a variable with a global setter/getter with a LuaCallback annotation&lt;br /&gt;
** Make sure to call the RegisterLuaCallbacks function in that class&amp;#039;s constructor if the getter/setter is not in the Game Manager&lt;br /&gt;
* Set the default value for the variable in the config file (optional)&lt;br /&gt;
** There are 3 config files for the 3 configurations of the game builds&lt;br /&gt;
*** Debug.conf, for development&lt;br /&gt;
*** StandardRelease.conf, for public releases of the game&lt;br /&gt;
*** LabRelease.conf, for use in the lab&lt;br /&gt;
&lt;br /&gt;
===Create Local Settings===&lt;br /&gt;
&lt;br /&gt;
Programmers may want to change certain properties on their machines without affecting the source-controlled code. They could change the resolution, sound settings, or even have the game bypass the regular startup sequence and launch right into the middle of a MiniGame all with no effect on other developers.&lt;br /&gt;
&lt;br /&gt;
* Create a new file: Autism Collaborative\Game\Game\Scripts\LocalSettings.lua&lt;br /&gt;
** The Visual Studio project already has this file included, but VS won&amp;#039;t be able to edit it until the file is created manually&lt;br /&gt;
* Add Lua commands and save the file&lt;br /&gt;
** Visual Studio can now be used to edit the file&lt;br /&gt;
* The file is run at the end of the Debug.conf script (if it exists)&lt;br /&gt;
** That means that this script is only run in Debug mode&lt;br /&gt;
* do &amp;#039;&amp;#039;&amp;#039;NOT&amp;#039;&amp;#039;&amp;#039; add LocalSettings.lua to source control!&lt;br /&gt;
&lt;br /&gt;
===Creating Scripts in C# Code===&lt;br /&gt;
&lt;br /&gt;
Alternatively, scripts can created using C# code rather than Lua. A C# script either be object oriented or imperative. They are able to both take in objects and return values. The CSharpHelper class can be called to run these scripts using it&amp;#039;s DoSimpleFile method. This will simply run all the code in the script. The value of this is that commonly edited code, such as configuration files, can be saved in a convenient separate location. The methods for CSharpHelper are well documented within the file itself. An example of a basic call to a C# sharp script is as follows:&lt;br /&gt;
&lt;br /&gt;
 CSharpHelper.doSimpleFile(Environment.CurrentDirectory + @&amp;quot;\Configs\Debug.confcss&amp;quot;, this, &amp;quot;game&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
This starts a C# file called &amp;quot;Debug.confcss&amp;quot; which is located in the Configs directory. The second parameter is a Game object. The object passed in can be of any type. The third parameter is the identifier of the object within the script. In this case the identifier is &amp;quot;game&amp;quot;. This means that inside the script, lines such as:&lt;br /&gt;
&lt;br /&gt;
 game.Update();&lt;br /&gt;
&lt;br /&gt;
while execute the passed in object&amp;#039;s update function.&lt;br /&gt;
&lt;br /&gt;
==Run the Game in the Lab==&lt;br /&gt;
&lt;br /&gt;
To enable the features necessary to run the game in the lab, the file conlab.tac must exist next to the game&amp;#039;s executable.&lt;br /&gt;
&lt;br /&gt;
From visual studio:&lt;br /&gt;
* Change the configuration to &amp;quot;ReleaseLab&amp;quot;&lt;br /&gt;
* Build the solution&lt;br /&gt;
From a public release of the game:&lt;br /&gt;
* Find &amp;quot;constd.tac,&amp;quot; the standard encrypted config file&lt;br /&gt;
* Copy &amp;quot;conlab.tac&amp;quot; to the same directory&lt;br /&gt;
** Autism Collaborative\Game\Game\bin\x86\Laboratory\conlab.tac is generated when the game is compiled&lt;br /&gt;
** If the game finds conlab, it assumes it is in the lab and uses that config file&lt;br /&gt;
** If conlab is not present, it assumes it is not in the lab and uses constd.tac as the config file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Publish the Installer==&lt;br /&gt;
&lt;br /&gt;
===Create the Installer===&lt;br /&gt;
&lt;br /&gt;
We use InnoSetup to create the installer. Checkout their website (http://www.jrsoftware.org/isinfo.php) if you need to change the script, but simply publishing the game does not require any adjustment to the installer script.&lt;br /&gt;
&lt;br /&gt;
* Install InnoSetup if necessary&lt;br /&gt;
** Run Autism Collaborative\Utilities\Installer Installer\isetup-5.2.2.exe&lt;br /&gt;
* Compile the game&lt;br /&gt;
** In the second menu bar (immediately below the top menu bar) within Visual Studio, change &amp;quot;Debug&amp;quot; to &amp;quot;ReleasePub&amp;quot; or &amp;quot;ReleaseLab&amp;quot;.  (In the box to the right, leave the default &amp;quot;Mixed Platforms&amp;quot;.)  &lt;br /&gt;
*** ReleasePub is for our releases to the general public. This will usually be the correct configuration.&lt;br /&gt;
*** ReleaseLab is for builds to be used in the lab. This will create the config file to run the game in &amp;quot;lab mode.&amp;quot; The resulting exe file will actually be the same as ReleasePub, but constd.tac will be replaced with conlab.tac.&lt;br /&gt;
*** Debug mode is used while developing, so do not build the game in debug mode when creating the installer.&lt;br /&gt;
*** For the exact effects of the different build configurations on the game flow, unit stats, etc. see the config files in Autism Collaborative\Game\Game\Configs&lt;br /&gt;
** Goto Build-&amp;gt;Build Solution&lt;br /&gt;
* Compile the installer script&lt;br /&gt;
** Open Autism Collaborative\Game\Game\Installer.iss with InnoSetup&lt;br /&gt;
** Goto Build-&amp;gt;Compile&lt;br /&gt;
** Goto Run-&amp;gt;Run&lt;br /&gt;
*** This creates the file Autism Collaborative\Game\Game\Output\tAC_Installer.exe&lt;br /&gt;
&lt;br /&gt;
===Upload the Installer to the Web===&lt;br /&gt;
&lt;br /&gt;
* Get a username/password for autismcollaborative.org from Matthew.&lt;br /&gt;
* Use a secure FTP client to login, such as WinSCP&lt;br /&gt;
** Either download it or run Autism Collaborative\Utilities\WinSCP.exe&lt;br /&gt;
* Login to autismcollaborative.org (port 22)&lt;br /&gt;
* Upload tAC_Installer.exe to your home directory (for example /home/zinsser)&lt;br /&gt;
** Do not overwrite the existing installer (/home/belmonte/autismcollaborative.org/downloads/AstropolisSetup.exe) since that would delete the installer from the website until the new installer finishes uploading (usually over an hour!)&lt;br /&gt;
* Once the upload is complete, enter the command &amp;quot;mv /home/zinsser/tAC_Installer.exe /home/belmonte/autismcollaborative.org/downloads/AstropolisSetup.exe&amp;quot; (you may have to open a terminal first, depending on your SFTP client)&lt;br /&gt;
** In the above command, substitute your username for &amp;quot;zinsser&amp;quot;, but keep &amp;quot;belmonte&amp;quot; as the destination user directory&lt;br /&gt;
** If there is a permissions problem, contact Matthew to make sure your user has permission to the autismcollaborative.org directory!&lt;br /&gt;
&lt;br /&gt;
==Use the ErrorLog==&lt;br /&gt;
&lt;br /&gt;
When the game encounters an Unhandled Exception (like when an end user runs into a bug in our code), useful information is dumped to ErrorLog.txt. The user is encouraged to email that file to us so we can locate the problem they ran into. Although the ErrorLog will tell us what function the program died in, it cannot tell us specifically which line was the culprit (although ErrorLogs created when the game is running in Visual Studio will tell us exactly which line!).&lt;br /&gt;
&lt;br /&gt;
We do, however, have the ability to log any custom information from a MiniGame. This may prove invaluable in debugging based on end-user error reports. All you (the programmer) must do is override the string MiniGame.DebugInfo() function. When ErrorLog.txt is created, it calls that function on the current MiniGame and appends the returned text to the bottom of the file.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Code_How_To%27s&amp;diff=306</id>
		<title>Code How To&#039;s</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Code_How_To%27s&amp;diff=306"/>
				<updated>2008-07-03T23:32:33Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: /* Import a new Audio File */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides tutorials for some of the most common actions a programmer may wish to implement. It may helpful to read the [[Code Overview]] first.&lt;br /&gt;
&lt;br /&gt;
==Submit a Bug or Other Issue==&lt;br /&gt;
&lt;br /&gt;
* Go to http://www.AutismCollaborative.org/bugs/&lt;br /&gt;
* Fill out the fields that apply to this issue&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type of Bug:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Functional Problem&lt;br /&gt;
** Any actual &amp;quot;Bug&amp;quot;&lt;br /&gt;
* Suggestion&lt;br /&gt;
** A possible change to the game that may improve it&lt;br /&gt;
* New Feature&lt;br /&gt;
** Something that &amp;#039;&amp;#039;&amp;#039;absolutely must&amp;#039;&amp;#039;&amp;#039; be implemented&lt;br /&gt;
** Use sparingly; make sure it&amp;#039;s not actually a Suggestion&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Severity:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* How much this issue affects the game/application&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Priority:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* How soon the issue should be resolved (relative to other issues)&lt;br /&gt;
* The majority of issues should be Low priority&lt;br /&gt;
* Use High sparingly&lt;br /&gt;
&lt;br /&gt;
==Coding Conventions==&lt;br /&gt;
&lt;br /&gt;
* Place the name of the file, authors, and copyright info at the top of each file&lt;br /&gt;
** Any person who makes significant changes to a file should add their name to the list of authors in a file&lt;br /&gt;
*** This helps anyone reading the code because they know who to ask if they have a question about something&lt;br /&gt;
* All private and protected class member variables are lowerCamelCase&lt;br /&gt;
* Private/protected class member variables are preceded with &amp;quot;m&amp;quot; (ie mLocalVariable)&lt;br /&gt;
* All functions, properties (sometimes called &amp;quot;smart fields&amp;quot;), and public class variables are UpperCamelCase&lt;br /&gt;
* Public variables should only be used with small classes that are only used by one or two other classes&lt;br /&gt;
* This code is intended to be viewed by many people who do not have strong programming backgrounds, therefore documentation is &amp;#039;&amp;#039;&amp;#039;very&amp;#039;&amp;#039;&amp;#039; important&lt;br /&gt;
** Document the purpose of each class&amp;#039;s member variables, either next to their declaration or as a summary for their property accessor&lt;br /&gt;
** Create a summary documentation block for every function unless it is extremely obvious&lt;br /&gt;
*** This can be done by placing the cursor above a function definition and typing &amp;quot;///&amp;quot;&lt;br /&gt;
*** This block shows up in Intellisense when writing that function in code&lt;br /&gt;
** Add a summary to any properties that are possibly confusing or not straightforward &lt;br /&gt;
** Document every step of each algorithm (except for very obvious function calls like ResetSettings();)&lt;br /&gt;
*** Someone should be able to read only the comments in a function and still understand what it does&lt;br /&gt;
** See MeteorMadness.cs for an example of the appropriate level of documentation&lt;br /&gt;
* See the Load a Texture section for naming conventions of texture assets&lt;br /&gt;
&lt;br /&gt;
==Create a New Minigame==&lt;br /&gt;
&lt;br /&gt;
* Declare the class&lt;br /&gt;
** Create a new folder under ColonySimulator&lt;br /&gt;
** Create a new file in that folder named NewMinigame.cs where NewGame is the name of the new minigame&lt;br /&gt;
** Place all new minigame-specific classes in that folder&lt;br /&gt;
** Have the class derive from GameScreen&lt;br /&gt;
 class NewGame : Gamescreen {...}&lt;br /&gt;
* Implement the Constructor&lt;br /&gt;
** Initialize game variables&lt;br /&gt;
** Declare a ScoreCard (see Scoring tutorial)&lt;br /&gt;
** Log the GameBegin code (see the Logging tutorial)&lt;br /&gt;
* Implement Update()&lt;br /&gt;
 public override void Update(GameTime gameTime){...}&lt;br /&gt;
** Do not assume a constant call rate&lt;br /&gt;
*** This function will almost always be called 60 times per second, but that rate may vary depending on CPU load&lt;br /&gt;
*** At the beginning of each cycle, get the time since the last cycle like this:&lt;br /&gt;
**** float dt = gameTime.ElapsedGameTime;&lt;br /&gt;
*** Build the time into all movement and timers, for example:&lt;br /&gt;
 myEntity.LifeSpan -= dt;&lt;br /&gt;
 myEntity.Position += myEntity.Velocity * dt;&lt;br /&gt;
* Implement Draw()&lt;br /&gt;
 public override void Draw(SpriteBatch spriteBatch){...}&lt;br /&gt;
** Be sure to call each entities Draw and Update methods. Optional: Register all entities with the XNA game object.&lt;br /&gt;
This will have XNA automatically call their Draw and Update functions at appropriate times.&lt;br /&gt;
** Consider using a generalized render-queue such as GenericWorldSpace &amp;#039;&amp;#039;&amp;#039;(not-yet-implemented as of Oct 2007)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Use the Raise function to place the minigame gamescreen on the stack based game system.&lt;br /&gt;
* End the game using Done function. This will pop it off the game stack, returning the state of the game to the previous state.&lt;br /&gt;
** Flush the particle system (see the particles tutorial) if any emitters were created&lt;br /&gt;
** Log the GameEndSuccess/GameEndFailure code&lt;br /&gt;
** Show the score&lt;br /&gt;
&lt;br /&gt;
==Use Images==&lt;br /&gt;
&lt;br /&gt;
XNA supports most common types of images, including JPEG, GIF, DDS, etc.&lt;br /&gt;
&lt;br /&gt;
===Load a Texture===&lt;br /&gt;
&lt;br /&gt;
But before you can load a texture in code you must add it to the content pipeline:&lt;br /&gt;
&lt;br /&gt;
* Import the content into the project&lt;br /&gt;
** Browse to the appropriate folder in Visual Studio&amp;#039;s Solution Explorer&lt;br /&gt;
*** For example, Content\MiniGames\MyImage.png&lt;br /&gt;
** Right click on that folder and select Add-&amp;gt;Existing Item&lt;br /&gt;
** Select the image to import&lt;br /&gt;
&lt;br /&gt;
Once that&amp;#039;s done, you can load it memory with the XNA content manager:&lt;br /&gt;
&lt;br /&gt;
 Texture2D myTexture = Content.Load(@&amp;quot;General\myTexture&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
The XNA content manager defaults to the content folder of the project, so all addresses can be relative from there. Also, the name of the image should be the same as the asset name. This can be set in the properties window. &lt;br /&gt;
&lt;br /&gt;
===Display a Static Image===&lt;br /&gt;
&lt;br /&gt;
Before manually drawing something to screen consider using some type of game object, be it an Entity, HUD element, or even a Ticker (see the tutorials below). Game objects all know how to draw themselves, so it is unlikely that a minigame will need to draw something directly to the screen. Should the need arise, however, here&amp;#039;s how it&amp;#039;s done:&lt;br /&gt;
&lt;br /&gt;
* Load it in code:&lt;br /&gt;
 GraphicsDeviceManager gdm = ...;    // This is declared in GenericGameManager.cs&lt;br /&gt;
 ConentManager cm = ...;             // Usually a parameter, as in Update(ContentManager content)&lt;br /&gt;
 SpriteBatch sb = new SpriteBatch(gdm.GraphicsDevice);                     // Basically a wrapper for a DirectX render target&lt;br /&gt;
 Texture2D texture = TextureManager.Load(@&amp;quot;Content\General\myTexture&amp;quot;);&lt;br /&gt;
 Rectangle destination = ...;        // Display destination&lt;br /&gt;
 Color tint = Color.White;           // Tint the image with this color&lt;br /&gt;
 float rotation = 0f;                // Rotation (in radians)&lt;br /&gt;
 Vector2 center = new Vector2(texture.Width / 2f, texture.Height / 2f);         // Origin of rotation&lt;br /&gt;
 float zDepth = 1f;                  // Order to draw sprites within this spritebatch&lt;br /&gt;
 &lt;br /&gt;
 sb.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.BackToFront, SaveStateMode.SaveState);&lt;br /&gt;
 &lt;br /&gt;
 sb.Draw(&lt;br /&gt;
   texture,&lt;br /&gt;
   destination ,&lt;br /&gt;
   null,               // What part of the source image to sample from--null tells it to use the whole image&lt;br /&gt;
   tint ,&lt;br /&gt;
   rotation,&lt;br /&gt;
   center,&lt;br /&gt;
   SpriteEffects.None, // How to mirror the image&lt;br /&gt;
   zDepth &lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 sb.End();&lt;br /&gt;
&lt;br /&gt;
===Display an Animation===&lt;br /&gt;
&lt;br /&gt;
Animations are created using the AnimatedSprite class. Here&amp;#039;s an example:&lt;br /&gt;
&lt;br /&gt;
 //Declare Animated Sprite&lt;br /&gt;
 //Parameters: Game object, SpriteSheet as a Texture2D object, Position as Vector2, FrameSize as Vector2, Number of Frames&lt;br /&gt;
 AnimatedSprite testAnimation = new AnimatedSprite(this, Content.Load&amp;lt;Texture2D&amp;gt;(&amp;quot;TestSpriteSheet&amp;quot;), new Vector2(200, 300), new Vector2(64, 64), 16);&lt;br /&gt;
 //Pass a reference to the SpriteBatch that the AnimatedSprite will use&lt;br /&gt;
 testAnimation.SpriteBatch = spriteBatch;&lt;br /&gt;
 //Turn on the Animation&lt;br /&gt;
 testAnimation.Animate(true);&lt;br /&gt;
 //Turn off the Animation&lt;br /&gt;
 testAnimation.Animate(false);&lt;br /&gt;
&lt;br /&gt;
*Do not forget to call the draw and update methods of the AnimatedSprite explicitly, or to add them to the XNA game.components array so to allow XNA to call them.&lt;br /&gt;
&lt;br /&gt;
==Create a New Type of Game Object==&lt;br /&gt;
&lt;br /&gt;
All specific game objects (players, enemies, collectibles, projectiles, etc.) should derive from Entity. This gives them easy ways to draw themselves, move, collide with other entities, and be passed to many tAC_Engine functions.&lt;br /&gt;
&lt;br /&gt;
==Get User Input==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DO NOT&amp;#039;&amp;#039;&amp;#039; use the standard XNA keyboard accessors (Xna.Framework.Input.KeyboardState or Xna.Framework.Input.Keyboard) or mouse accessors (Xna.Framework.Input.MouseState) because tAC_Engine does a lot of caching and logging behind the scenes. Use tAC_Engine.InputState instead.&lt;br /&gt;
&lt;br /&gt;
===Keyboard===&lt;br /&gt;
&lt;br /&gt;
 if (InputState.IsKeyDown(Keys.A))&lt;br /&gt;
 {&lt;br /&gt;
   // The A key was pressed&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Mouse===&lt;br /&gt;
&lt;br /&gt;
 if (InputState.IsMouseLeftUp &amp;amp;&amp;amp; InputState.WasMouseLeftDown)&lt;br /&gt;
 {&lt;br /&gt;
  // The mouse was just clicked (clicks are typically registered on the release, not the initial press)&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Vector2 location = InputState.MouseLocation;&lt;br /&gt;
&lt;br /&gt;
==Manage a Heads Up Display==&lt;br /&gt;
&lt;br /&gt;
Use the HUD class for any HUD element (like health bars, menu buttons, etc.). Typically, you&amp;#039;ll want to create a class that inherits from Widget2D. See MeteorWidgets.cs for examples.&lt;br /&gt;
&lt;br /&gt;
==Display Text or Icons with the Ticker==&lt;br /&gt;
&lt;br /&gt;
 string text = &amp;quot;w00t.&amp;quot;;                      // Text to display (can be &amp;quot;&amp;quot;)&lt;br /&gt;
 Texture2D image = null;                     // Can also be set to an image&lt;br /&gt;
 Vector2 imageSize = new Vector2(25f, 25f);  // Size of the (optional) icon&lt;br /&gt;
 Vector2 offset = new Vector2(700f, 50f);    // This will display the ticker 700 pixels to the right of the screen&amp;#039;s &lt;br /&gt;
                                             //   center and 50 pixels below the screen&amp;#039;s center&lt;br /&gt;
 Vector2 velocity = new Vector2 (-10f, 0f);  // Move left 10 pixels per second&lt;br /&gt;
 Ticker.Font font = Ticker.Font.Standard;    // Regular text&lt;br /&gt;
 Color color = Color.DeepPink;               // The manliest of colors&lt;br /&gt;
 float opacity = .5f;                        // 50% transparent&lt;br /&gt;
 float seconds = 5f;                         // Disappear after 5 seconds&lt;br /&gt;
 bool fade = true;                           // Fade in and fade out&lt;br /&gt;
 &lt;br /&gt;
 Ticker.Display(text, image, imageSize, offset, velocity, font, color, opacity, seconds, fade);&lt;br /&gt;
&lt;br /&gt;
==Display Text Manually==&lt;br /&gt;
&lt;br /&gt;
Most text displayed should be done using the Ticker, but if you really want to display text manually use the Nuclex font library (XNA now supports text, so the Nuclex library may eventually be removed). First you must import the desired font:&lt;br /&gt;
&lt;br /&gt;
* Create an xml file for the new font called FontName.tffimport that looks like this:&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;TrueTypeImport&amp;gt;&lt;br /&gt;
   &amp;lt;Path&amp;gt;Content\Fonts\MercuryII.ttf&amp;lt;/Path&amp;gt;&lt;br /&gt;
   &amp;lt;Size&amp;gt;32&amp;lt;/Size&amp;gt;&lt;br /&gt;
 &amp;lt;/TrueTypeImport&amp;gt;&lt;br /&gt;
* Put the font (FontName.ttf) and FontName.tffimport in the Content\Fonts directory&lt;br /&gt;
* Set the following properties for FontName.ttf&lt;br /&gt;
** Build Action: None&lt;br /&gt;
** Copy to Output Directory: Copy if newer&lt;br /&gt;
** File Name: MercuryII.ttf&lt;br /&gt;
* Set the following properties for FontName.tffimport&lt;br /&gt;
** Build Action: Content&lt;br /&gt;
** Content Importer: TrueTypeFont - XNA Framework&lt;br /&gt;
** Content Processor: Bitmap Font - XNA Framework&lt;br /&gt;
** Copy to Output Directory: Do not copy&lt;br /&gt;
** XNA Framework Content: True&lt;br /&gt;
&lt;br /&gt;
Now for the code:&lt;br /&gt;
&lt;br /&gt;
 ContentManager cm = ...;&lt;br /&gt;
 SpriteBatch sb = ...;&lt;br /&gt;
 BitmapFont bmf = cm.Load&amp;lt;BitmapFont&amp;gt;(@&amp;quot;Content\Fonts\Arial&amp;quot;);&lt;br /&gt;
 sb.Begin(SpriteBlendMode.AlphaBlend);&lt;br /&gt;
 bmf.DrawString(new Vector2(10.0F, 10.0F), &amp;quot;Manual Text!&amp;quot;, Color.Azure);&lt;br /&gt;
 sb.End();&lt;br /&gt;
&lt;br /&gt;
==Use Sound==&lt;br /&gt;
&lt;br /&gt;
===Import a new Audio File===&lt;br /&gt;
&lt;br /&gt;
** Run the XACT tool from Microsoft DirectX SDK&lt;br /&gt;
** If--after following the steps in this tutorial--playing a file in code throws an exception about using the wrong version of XACT, try using Xact.exe from a different SDK build&lt;br /&gt;
* Open AudioProject.xap file for the Minigame you wish to add a sound to.&lt;br /&gt;
* Expand Wave Banks and double click Wave Bank in the panel on the left&lt;br /&gt;
* Expand Sound Banks and double click Sound Bank in the panel on the left&lt;br /&gt;
* Go to Wave Banks-&amp;gt;Insert Wave File(s)...&lt;br /&gt;
* Select the file to import i.e.&amp;quot;@/MiniGame/Content/Audio/MySound.wav&amp;quot; and click OK.&lt;br /&gt;
* Drag the newly-added file to the Cue Name section in the Sound Bank:Sound Bank window&lt;br /&gt;
* Go to File-&amp;gt;Build&lt;br /&gt;
* Save and close XACT&lt;br /&gt;
* Open game.sln with Visual Studio&lt;br /&gt;
* Browse to the Content\Sounds folder in the Solution Explorer&lt;br /&gt;
* Right click the Sounds folder and select Add-&amp;gt;Existing Item...&lt;br /&gt;
* Select &amp;quot;MySound.wav&amp;quot; and click OK&lt;br /&gt;
&lt;br /&gt;
===Play a Sound===&lt;br /&gt;
&lt;br /&gt;
 Sound.Play(&amp;quot;MySound&amp;quot;); // No file extension&lt;br /&gt;
&lt;br /&gt;
===Play Music ===&lt;br /&gt;
&lt;br /&gt;
Sound.SetMusic(&amp;quot;MyMusic&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==Use the Particle Engine==&lt;br /&gt;
&lt;br /&gt;
Particles are handled by the TACParticleEngine, a separate library that uses the AC_GraphicsEngine that has been modified to better fit the needs of the Autism Game. Features are added to it on an as-needed basis so if a new feature needs to be added and any problems arise in its integration into the current particle engine contact Brian Murphy.&lt;br /&gt;
&lt;br /&gt;
Quick layout of TACParticleEngine:&lt;br /&gt;
&lt;br /&gt;
 The ParticleManager contains references to all loaded ParticleEngines.&lt;br /&gt;
 ParticleEngines contain a series of Emitters.&lt;br /&gt;
 Emitters contain a heap of Particles, which are the objects that actually get drawn.&lt;br /&gt;
&lt;br /&gt;
Particle Effects are imported via its own unique pipeline using the existing XNA framework, so they can be called in a similar manner:&lt;br /&gt;
&lt;br /&gt;
Make sure to include these packages so that we can create and access our particle engine objects:&lt;br /&gt;
&lt;br /&gt;
 using TACParticleEngine;&lt;br /&gt;
 using TACParticleEngine.Particles;&lt;br /&gt;
 &lt;br /&gt;
Inside of the class declaration make these global variables:&lt;br /&gt;
 &lt;br /&gt;
 ParticleManager mParticleManager;&lt;br /&gt;
 ParticleEngine mTestEffect;&lt;br /&gt;
&lt;br /&gt;
Make sure to initialize in the classes initialize method:&lt;br /&gt;
&lt;br /&gt;
 mParticleManager = new ParticleManager(Game); // Initialize the particle manager object with a reference to the current game&lt;br /&gt;
 mTestEffect = mParticleManager.Load(&amp;quot;ParticleEffects/Explosion&amp;quot;); // Load in the given particle effect file by giving the&lt;br /&gt;
                                                                   // location at which it is compiled to&lt;br /&gt;
&lt;br /&gt;
After these three things have been done, you&amp;#039;ll now have an effect loaded into a Particle Engine object via the Particle Manager. However the Particle Engine doesn&amp;#039;t mean anything if it doesn&amp;#039;t do anything so let&amp;#039;s set up the rest of the code we need for updating and drawing:&lt;br /&gt;
&lt;br /&gt;
To get the engine to update, just call&lt;br /&gt;
&lt;br /&gt;
 mParticleManager.Update((float)gameTime.ElapsedGameTime.TotalSeconds);&lt;br /&gt;
&lt;br /&gt;
in the Update(GameTime gameTime) method.&lt;br /&gt;
&lt;br /&gt;
As for drawing, a little more effort is required. First of, since the TACPArticleEngine makes use of the Camera class from the AC_GraphicsEngine, we will need to create and initialize one if we are to render our particles, so let&amp;#039;s get our camera set if it hasn&amp;#039;t been done so before for other drawing.&lt;br /&gt;
&lt;br /&gt;
Add the following line to the list of global variables at the beginning of the class:&lt;br /&gt;
&lt;br /&gt;
 Camera mActiveCamera;&lt;br /&gt;
&lt;br /&gt;
This will be whatever kind of camera we are currently using for drawing in case we may want other cameras for whatever reason.&lt;br /&gt;
&lt;br /&gt;
Next we need to initialize the camera to any specific type of camera that derive from camera. As of now this is limited to FollowCamera, OrthographicCamera, PerspectiveCamera2D, and PerspectiveCamera3D. For now well us a PerspectiveCamera3D as our active camera.&lt;br /&gt;
&lt;br /&gt;
 mActiveCamera = new Perspective3DCamera(new Vector3(0, 0, -5), Vector3.Zero, Vector3.Up, MathHelper.Pi/5, 1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
Now that we have our active camera set, we can now draw by including the following line in the Draw(GameTime gameTime) method:&lt;br /&gt;
&lt;br /&gt;
 mParticleManager.Render(gameTime, mActiveCamera);&lt;br /&gt;
&lt;br /&gt;
*Note that this assumes that the GraphicsDevice.Clear(Color.Black) and base.Draw(gameTime) method calls are also in the method as they are by default.&lt;br /&gt;
&lt;br /&gt;
This will now draw any particles that have been loaded by the Particle Manager and have been set active, however the current particle engine we created has been set active yet so do that now.&lt;br /&gt;
&lt;br /&gt;
This is done by calling the following line whenever you would want drawing of that Particle Engine to occur.&lt;br /&gt;
&lt;br /&gt;
 mTestEffect.SetActive(true);&lt;br /&gt;
&lt;br /&gt;
This particle engine is now active, and if it had been previously active, it&amp;#039;s lifetime would have been reset to 0. Using this call, we can also turn off the particle engine from creating anymore particles by giving it false as its parameter instead.&lt;br /&gt;
&lt;br /&gt;
Besides this method, there are a series of methods that allow us to modify the drawing of the ParticleEngine itself. These are as followed:&lt;br /&gt;
&lt;br /&gt;
 SetEnginePosition(Vector3 Position) // Given a 3D vector, we can move the whole particle engine to the desired position&lt;br /&gt;
&lt;br /&gt;
 SetEngineColor(Vector4 Color) // Given a 4D vector of float values 0-1 in the form of RGBA, we can change the coloring of the whole particle engine&lt;br /&gt;
                               // Keep in mind that this applies that much of the emitters&amp;#039; texture for each value, so a black picture with 1,0,0,1 as&lt;br /&gt;
                               // its value will not be red but still black&lt;br /&gt;
&lt;br /&gt;
 SetEngineSize(Vector2 Size) // Given a 2D vector, we can modify the dimensions of the particle image, this is always 2D since particles in 3D are &lt;br /&gt;
                             // simply billboard sprites&lt;br /&gt;
&lt;br /&gt;
===Create a New Particle Effect===&lt;br /&gt;
&lt;br /&gt;
To make a new effect you will need two things, a new particle file, placed into the appropriate directory, as well as whatever textures are needed in their appropriate directory. Make sure that after the particle file has been created and included into the project that it is set to compile using the particle importer and processor. If these options don&amp;#039;t come up, you probably just need to include a reference to the TACParticleEngine within the projects content folder.&lt;br /&gt;
&lt;br /&gt;
Here is the format of a particle file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;particle&amp;gt; // This declares that we are making a particle effect&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;emitter&amp;gt; // This declares that we are adding a new emitter to our particle effect&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;!--type: point|spline|directional|spray--&amp;gt;&lt;br /&gt;
            &amp;lt;textureName&amp;gt;Textures/SmokeParticle&amp;lt;/textureName&amp;gt; // Directory of the texture the emitter will use&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;blendEffect&amp;gt;AlphaBlend&amp;lt;/blendEffect&amp;gt; // Blend options, typically uses Additive (for fiery effects) &lt;br /&gt;
                                                  // and AlphaBlend (for smokey or piece effects&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;positions&amp;gt;(0,0,50)&amp;lt;/positions&amp;gt; // Default position th emitter appears at. Multiple Positions can be given in the form of&lt;br /&gt;
                                            // (x,y,z)(x,y,z)(x,y,z)..., this will create a spline emitter, which will form a smooth curve&lt;br /&gt;
                                            // using all the given points&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minVel&amp;gt;(0,0,0)&amp;lt;/minVel&amp;gt; // Minimum velocity for particles. If this value is a zero vector and so is the maximum velocity, then&lt;br /&gt;
                                     // this will create either a point or spline emitter, depending on the number of positions given. If this&lt;br /&gt;
                                     // has any values of x, y, or z are &amp;lt; -1 or &amp;gt; 1, then a spray emitter is created, otherwise a directional&lt;br /&gt;
                                     // emitter is created. In either case, the number of positions should be 1.&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxVel&amp;gt;(0,0,0)&amp;lt;/maxVel&amp;gt; // This is the maximum velocity. Used only for spray and directional emitters. For spray emitters, this is&lt;br /&gt;
                                     // the direction in which all particles will move. In the directional emitter, this determines the end range&lt;br /&gt;
                                     // in which particles can move in&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;emitLifetime&amp;gt;0.3&amp;lt;/emitLifetime&amp;gt; // This is how long the emitter exists for in seconds&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;particlesPerSec&amp;gt;50&amp;lt;/particlesPerSec&amp;gt; // This is how many particles will be created every second the emitter is alive&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;particleAmount&amp;gt;20&amp;lt;/particleAmount&amp;gt; // This is the total amount of particles that can exist at any time. In most cases, this number &lt;br /&gt;
                                                // should be slightly over the emitLifetime * particlesPerSec, otherwise effect inconsistencies &lt;br /&gt;
                                                // could result.&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;particleLifetime&amp;gt;3&amp;lt;/particleLifetime&amp;gt; // How long an individual particle is alive for in seconds&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;lifeLengthRandomizer&amp;gt;1&amp;lt;/lifeLengthRandomizer&amp;gt; // This use to randomize the time a particle was alive for, however this has been taken  &lt;br /&gt;
                                                           // out. This will be removed in the future but until then, as with all the other tags, &lt;br /&gt;
                                                           // this tag needs to exist otherwise the particle file won&amp;#039;t compile&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minStartSpeed&amp;gt;0.7&amp;lt;/minStartSpeed&amp;gt; // This is the minimum speed a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxStartSpeed&amp;gt;1&amp;lt;/maxStartSpeed&amp;gt; // This is the maximum speed a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minEndSpeed&amp;gt;0&amp;lt;/minEndSpeed&amp;gt; // This is the minimum speed a particle can end at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxEndSpeed&amp;gt;0&amp;lt;/maxEndSpeed&amp;gt; // This is the maximum speed a particle can end at&lt;br /&gt;
&lt;br /&gt;
            // *Note* currently rotation is not used due to the need to use pixel shader 2.0, which would limit the range of machine this could run &lt;br /&gt;
            // on, or at the least, would result in varied graphics between machines. This can either be fully used if the use of pixel shader 2.0 is &lt;br /&gt;
            // fine, or just scrapped if the use of pixel shader 2.0 seems like at will never happen.&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;startRotationRange&amp;gt;6.28&amp;lt;/startRotationRange&amp;gt; // Range at which a particle can start rotated&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minStartRotSpeed&amp;gt;-1&amp;lt;/minStartRotSpeed&amp;gt; // The minimum speed at which a particle can rotate at start&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxStartRotSpeed&amp;gt;1&amp;lt;/maxStartRotSpeed&amp;gt; // The maximum speed at which a particle can rotate at start&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minEndRotSpeed&amp;gt;0&amp;lt;/minEndRotSpeed&amp;gt; // The minimum speed at which a particle can rotate at end&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxEndRotSpeed&amp;gt;0&amp;lt;/maxEndRotSpeed&amp;gt; // The maximum speed at which a particle can rotate at end&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;!-- (r,g,b,a) range 0.0-1.0 --&amp;gt;&lt;br /&gt;
            &amp;lt;minStartColor&amp;gt;(1,1,1,0.3)&amp;lt;/minStartColor&amp;gt; // The minimum values of RGBA that a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxStartColor&amp;gt;(1,1,1,0.3)&amp;lt;/maxStartColor&amp;gt; // The maximum values of RGBA that a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minEndColor&amp;gt;(1,1,1,0)&amp;lt;/minEndColor&amp;gt; // The minimum values of RGBA that a particle can end at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxEndColor&amp;gt;(1,1,1,0)&amp;lt;/maxEndColor&amp;gt; // The maximum values of RGBA that a particle can end at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;!-- (x,y) --&amp;gt;&lt;br /&gt;
           &amp;lt;minStartSize&amp;gt;(200,200)&amp;lt;/minStartSize&amp;gt; // The minimum size that a particle can start at&lt;br /&gt;
&lt;br /&gt;
           &amp;lt;maxStartSize&amp;gt;(200,200)&amp;lt;/maxStartSize&amp;gt; // The maximum size that a particle can start at&lt;br /&gt;
&lt;br /&gt;
           &amp;lt;minEndSize&amp;gt;(300,300)&amp;lt;/minEndSize&amp;gt; // The minimum size that a particle can end at&lt;br /&gt;
&lt;br /&gt;
           &amp;lt;maxEndSize&amp;gt;(300,300)&amp;lt;/maxEndSize&amp;gt; // The minimum size that a particle can end at&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;/emitter&amp;gt; // Declares that the emitter has been set and is now finished being made&lt;br /&gt;
&lt;br /&gt;
Here&amp;#039;s some additional emitters to just show how multiple emitters in a single effect can be done&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;emitter&amp;gt;&lt;br /&gt;
        &amp;lt;!--type: point|spline|directional|spray--&amp;gt;&lt;br /&gt;
        &amp;lt;textureName&amp;gt;Textures/BasicParticleImage&amp;lt;/textureName&amp;gt;&lt;br /&gt;
        &amp;lt;blendEffect&amp;gt;Additive&amp;lt;/blendEffect&amp;gt;&lt;br /&gt;
        &amp;lt;positions&amp;gt;(0,0,120)&amp;lt;/positions&amp;gt;&lt;br /&gt;
        &amp;lt;minVel&amp;gt;(1.001,1.001,1)&amp;lt;/minVel&amp;gt;&lt;br /&gt;
        &amp;lt;maxVel&amp;gt;(0,0,0)&amp;lt;/maxVel&amp;gt;&lt;br /&gt;
        &amp;lt;emitLifetime&amp;gt;0.3&amp;lt;/emitLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;particlesPerSec&amp;gt;1000&amp;lt;/particlesPerSec&amp;gt;&lt;br /&gt;
        &amp;lt;particleAmount&amp;gt;400&amp;lt;/particleAmount&amp;gt;&lt;br /&gt;
        &amp;lt;particleLifetime&amp;gt;2&amp;lt;/particleLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;lifeLengthRandomizer&amp;gt;1&amp;lt;/lifeLengthRandomizer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;minStartSpeed&amp;gt;2&amp;lt;/minStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSpeed&amp;gt;2&amp;lt;/maxStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSpeed&amp;gt;0&amp;lt;/minEndSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSpeed&amp;gt;0&amp;lt;/maxEndSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;startRotationRange&amp;gt;6.28&amp;lt;/startRotationRange&amp;gt;&lt;br /&gt;
        &amp;lt;minStartRotSpeed&amp;gt;-1&amp;lt;/minStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartRotSpeed&amp;gt;1&amp;lt;/maxStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndRotSpeed&amp;gt;0&amp;lt;/minEndRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndRotSpeed&amp;gt;0&amp;lt;/maxEndRotSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (r,g,b,a) range 0.0-1.0 --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartColor&amp;gt;(1,0,0,0.3)&amp;lt;/minStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartColor&amp;gt;(1,0,0,0.3)&amp;lt;/maxStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;minEndColor&amp;gt;(0,0,0,0)&amp;lt;/minEndColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndColor&amp;gt;(0,0,0,0)&amp;lt;/maxEndColor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (x,y) --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartSize&amp;gt;(1,1)&amp;lt;/minStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSize&amp;gt;(1,1)&amp;lt;/maxStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSize&amp;gt;(0.1,0.1)&amp;lt;/minEndSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSize&amp;gt;(0.1,0.1)&amp;lt;/maxEndSize&amp;gt;&lt;br /&gt;
    &amp;lt;/emitter&amp;gt;&lt;br /&gt;
    &amp;lt;emitter&amp;gt;&lt;br /&gt;
        &amp;lt;!--type: point|spline|directional|spray--&amp;gt;&lt;br /&gt;
        &amp;lt;textureName&amp;gt;Textures/ExplosionParticle&amp;lt;/textureName&amp;gt;&lt;br /&gt;
        &amp;lt;blendEffect&amp;gt;Additive&amp;lt;/blendEffect&amp;gt;&lt;br /&gt;
        &amp;lt;positions&amp;gt;(0,0,60)&amp;lt;/positions&amp;gt;&lt;br /&gt;
        &amp;lt;minVel&amp;gt;(0,0,0)&amp;lt;/minVel&amp;gt;&lt;br /&gt;
        &amp;lt;maxVel&amp;gt;(0,0,0)&amp;lt;/maxVel&amp;gt;&lt;br /&gt;
        &amp;lt;emitLifetime&amp;gt;0.3&amp;lt;/emitLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;particlesPerSec&amp;gt;100&amp;lt;/particlesPerSec&amp;gt;&lt;br /&gt;
        &amp;lt;particleAmount&amp;gt;40&amp;lt;/particleAmount&amp;gt;&lt;br /&gt;
        &amp;lt;particleLifetime&amp;gt;0.3&amp;lt;/particleLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;lifeLengthRandomizer&amp;gt;0.1&amp;lt;/lifeLengthRandomizer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;minStartSpeed&amp;gt;2&amp;lt;/minStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSpeed&amp;gt;2&amp;lt;/maxStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSpeed&amp;gt;0&amp;lt;/minEndSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSpeed&amp;gt;0&amp;lt;/maxEndSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;startRotationRange&amp;gt;6.28&amp;lt;/startRotationRange&amp;gt;&lt;br /&gt;
        &amp;lt;minStartRotSpeed&amp;gt;-1&amp;lt;/minStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartRotSpeed&amp;gt;1&amp;lt;/maxStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndRotSpeed&amp;gt;0&amp;lt;/minEndRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndRotSpeed&amp;gt;0&amp;lt;/maxEndRotSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (r,g,b,a) range 0.0-1.0 --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartColor&amp;gt;(1,1,1,0.7)&amp;lt;/minStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartColor&amp;gt;(1,1,1,0.7)&amp;lt;/maxStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;minEndColor&amp;gt;(1,1,1,0)&amp;lt;/minEndColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndColor&amp;gt;(1,1,1,0)&amp;lt;/maxEndColor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (x,y) --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartSize&amp;gt;(10,10)&amp;lt;/minStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSize&amp;gt;(50,50)&amp;lt;/maxStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSize&amp;gt;(10,10)&amp;lt;/minEndSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSize&amp;gt;(50,50)&amp;lt;/maxEndSize&amp;gt;&lt;br /&gt;
    &amp;lt;/emitter&amp;gt;&lt;br /&gt;
 &amp;lt;/particle&amp;gt; // Declares the end of the particle file&lt;br /&gt;
&lt;br /&gt;
==Keep Score and Give Resources to the Simulator Mode==&lt;br /&gt;
&lt;br /&gt;
Use the ScoreCard class to keep track of the score from a minigame. It provides easy ways to add and subtract resources, as well as an easy way to display them and pass them along to the Colony Simulator.&lt;br /&gt;
&lt;br /&gt;
MiniGame has a ColonyScoreCard built into it, accessible by the Score property. Here are some examples of how to use it:&lt;br /&gt;
&lt;br /&gt;
 class MyGame : MiniGame&lt;br /&gt;
 {&lt;br /&gt;
   public override void Update(ContentManager content)&lt;br /&gt;
   {&lt;br /&gt;
     Score.Gather(ColonyResources.Money, 500);    // Get 500 Monies&lt;br /&gt;
     &lt;br /&gt;
     MyGameObject mgo = new MyGameObject();&lt;br /&gt;
     mgo.GiveMyGameCarbon();                      // Get 1 Carbon&lt;br /&gt;
 &lt;br /&gt;
     Score.IncurDamageCost(100);                  // On CashOut, Money = Max (Money - DamageCosts, 0)&lt;br /&gt;
 &lt;br /&gt;
     int HowMuchMoneyIHave = Score.QueryResource(ColonyResources.Money);&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   public void DisplayTheScore()&lt;br /&gt;
   {&lt;br /&gt;
     bool playerWonTheMinigame = true;            // Can be set to false if the player lost&lt;br /&gt;
     Score.Display(playerWonTheMinigame );        // Displays a copy of the current score and a message for succses/failure&lt;br /&gt;
     Score.CashOut();                             // Transfers resources from MyGame to the Colony Simulator&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   // ...&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 class MyGameObject : Entity&lt;br /&gt;
 {&lt;br /&gt;
   public void GiveMyGameCarbon()&lt;br /&gt;
   {&lt;br /&gt;
     ColonyBaseApplication.MiniGame.Score.Gather(ColonyResources.Carbon, 1);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Write to the Experimental Log==&lt;br /&gt;
&lt;br /&gt;
As the game runs, certain actions are recorded and written to a file (Autism Collaborative\Game\Game\bin\x86\Debug\ExperimentalLog.txt or the corresponding Release folder). In the lab, these codes are also sent through the parallel port to sync the EEG data. Every action that pertains to an experiment must be logged in order to be analyzed (that&amp;#039;s kind of the whole point of this game!).&lt;br /&gt;
&lt;br /&gt;
First define the necessary game codes.&lt;br /&gt;
&lt;br /&gt;
* Open Logger.cs&lt;br /&gt;
* Add up to 253 codes to public enum ExperimentalCode&lt;br /&gt;
** All codes must start with a unique &amp;quot;code identifier&amp;quot;, an underscore, and then a descriptor in UpperCamelCase&lt;br /&gt;
*** For minigames, the code identifier is 2 letters&lt;br /&gt;
** 3 codes are reserved for special parallel port functions with the software that runs the EEG machines used in lab tests&lt;br /&gt;
&lt;br /&gt;
Now those codes are available for logging. Like so:&lt;br /&gt;
&lt;br /&gt;
 Logger.LogCode(Logger.ExperimentalCode.XX_Descriptor);&lt;br /&gt;
&lt;br /&gt;
It is also possible to tell the logger to log a code every time a specific key is pressed:&lt;br /&gt;
&lt;br /&gt;
 InputState.Encode(Keys.A, InputState.KeyState.Down, Logger.ExperimentalCode.DEBUG_DudeJustPushedA);&lt;br /&gt;
&lt;br /&gt;
Each minigame should remove the encodings when it is done, but it is also a good idea to decode the keys at the start of each minigame just in case. &lt;br /&gt;
&lt;br /&gt;
 InputState.Encode(Keys.A, InputState.KeyState.Down);&lt;br /&gt;
 InputState.DecodeAll();&lt;br /&gt;
&lt;br /&gt;
Every minigame should also start with its GameBegin and end with its GameEnd[Success/Failure] codes.&lt;br /&gt;
&lt;br /&gt;
It may be helpful to log events for debugging purposes. These codes have the identifier &amp;quot;DEBUG&amp;quot; and will not be logged unless the game is running in Debug mode. All new DEBUG tags must be explicitly assigned a value less than 0.&lt;br /&gt;
&lt;br /&gt;
==Use the Game Script==&lt;br /&gt;
&lt;br /&gt;
The tAC_Engine houses a [[http://www.lua.org/ Lua]] Virtual Machine. This can be used to tweak global parameters at runtime, load them from config files, drive cutscenes, or even save and load levels.&lt;br /&gt;
&lt;br /&gt;
Function callbacks are defined in C# and then invoked from a Lua file or the in-game Debug console. In other words, C# tells Lua &amp;quot;you may use these functions: X,Y,...&amp;quot; and then Lua says &amp;quot;do X, do Y, etc.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Here are a couple of ways to leverage this system:&lt;br /&gt;
&lt;br /&gt;
===Make a Cutscene===&lt;br /&gt;
&lt;br /&gt;
* Create a new lua file in the Scripts directory&lt;br /&gt;
** That file can call any registered function callbacks&lt;br /&gt;
* In the Properties window, set Copy to Output Directory to Copy if Newer&lt;br /&gt;
* Call that cutscene with:&lt;br /&gt;
 GenericBaseApplication.GameManager.PlayCutscene(@&amp;quot;Scripts\MyCutscene.lua&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
===To Register a Function Callback===&lt;br /&gt;
&lt;br /&gt;
* Create the function in C# (if the function does not already exist)&lt;br /&gt;
** It must be declared public and non-static&lt;br /&gt;
** If the need arises to register a static function, declare an instanced function in GenericLuaHelper or ColonyLuaHelper that simply calls the static function.&lt;br /&gt;
* Register the function with the Lua Virtual Machine&lt;br /&gt;
** Add the special LuaCallback annotation to the function&lt;br /&gt;
* Call the RegisterLuaCallbacks function in the class&amp;#039;s constructor that contains the function.&lt;br /&gt;
* Example:&lt;br /&gt;
 public MyClass()&lt;br /&gt;
 {  // Constructor&lt;br /&gt;
   LuaHelper.RegisterLuaCallbacks(this);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 [LuaCallback(&amp;quot;SetMyVariable&amp;quot;)]&lt;br /&gt;
 public int SetMyVariable(int value)&lt;br /&gt;
 {&lt;br /&gt;
   mMyVariable = value;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Tweak Game Parameters===&lt;br /&gt;
&lt;br /&gt;
Exposing a variable to the Lua Virtual Machine allows it to be accessed by a any script (including config files) or changed at runtime in the drop down console (accessible in Debug mode by hitting &amp;quot;~&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
* Expose a variable with a global setter/getter with a LuaCallback annotation&lt;br /&gt;
** Make sure to call the RegisterLuaCallbacks function in that class&amp;#039;s constructor if the getter/setter is not in the Game Manager&lt;br /&gt;
* Set the default value for the variable in the config file (optional)&lt;br /&gt;
** There are 3 config files for the 3 configurations of the game builds&lt;br /&gt;
*** Debug.conf, for development&lt;br /&gt;
*** StandardRelease.conf, for public releases of the game&lt;br /&gt;
*** LabRelease.conf, for use in the lab&lt;br /&gt;
&lt;br /&gt;
===Create Local Settings===&lt;br /&gt;
&lt;br /&gt;
Programmers may want to change certain properties on their machines without affecting the source-controlled code. They could change the resolution, sound settings, or even have the game bypass the regular startup sequence and launch right into the middle of a MiniGame all with no effect on other developers.&lt;br /&gt;
&lt;br /&gt;
* Create a new file: Autism Collaborative\Game\Game\Scripts\LocalSettings.lua&lt;br /&gt;
** The Visual Studio project already has this file included, but VS won&amp;#039;t be able to edit it until the file is created manually&lt;br /&gt;
* Add Lua commands and save the file&lt;br /&gt;
** Visual Studio can now be used to edit the file&lt;br /&gt;
* The file is run at the end of the Debug.conf script (if it exists)&lt;br /&gt;
** That means that this script is only run in Debug mode&lt;br /&gt;
* do &amp;#039;&amp;#039;&amp;#039;NOT&amp;#039;&amp;#039;&amp;#039; add LocalSettings.lua to source control!&lt;br /&gt;
&lt;br /&gt;
===Creating Scripts in C# Code===&lt;br /&gt;
&lt;br /&gt;
Alternatively, scripts can created using C# code rather than Lua. A C# script either be object oriented or imperative. They are able to both take in objects and return values. The CSharpHelper class can be called to run these scripts using it&amp;#039;s DoSimpleFile method. This will simply run all the code in the script. The value of this is that commonly edited code, such as configuration files, can be saved in a convenient separate location. The methods for CSharpHelper are well documented within the file itself. An example of a basic call to a C# sharp script is as follows:&lt;br /&gt;
&lt;br /&gt;
 CSharpHelper.doSimpleFile(Environment.CurrentDirectory + @&amp;quot;\Configs\Debug.confcss&amp;quot;, this, &amp;quot;game&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
This starts a C# file called &amp;quot;Debug.confcss&amp;quot; which is located in the Configs directory. The second parameter is a Game object. The object passed in can be of any type. The third parameter is the identifier of the object within the script. In this case the identifier is &amp;quot;game&amp;quot;. This means that inside the script, lines such as:&lt;br /&gt;
&lt;br /&gt;
 game.Update();&lt;br /&gt;
&lt;br /&gt;
while execute the passed in object&amp;#039;s update function.&lt;br /&gt;
&lt;br /&gt;
==Run the Game in the Lab==&lt;br /&gt;
&lt;br /&gt;
To enable the features necessary to run the game in the lab, the file conlab.tac must exist next to the game&amp;#039;s executable.&lt;br /&gt;
&lt;br /&gt;
From visual studio:&lt;br /&gt;
* Change the configuration to &amp;quot;ReleaseLab&amp;quot;&lt;br /&gt;
* Build the solution&lt;br /&gt;
From a public release of the game:&lt;br /&gt;
* Find &amp;quot;constd.tac,&amp;quot; the standard encrypted config file&lt;br /&gt;
* Copy &amp;quot;conlab.tac&amp;quot; to the same directory&lt;br /&gt;
** Autism Collaborative\Game\Game\bin\x86\Laboratory\conlab.tac is generated when the game is compiled&lt;br /&gt;
** If the game finds conlab, it assumes it is in the lab and uses that config file&lt;br /&gt;
** If conlab is not present, it assumes it is not in the lab and uses constd.tac as the config file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Publish the Installer==&lt;br /&gt;
&lt;br /&gt;
===Create the Installer===&lt;br /&gt;
&lt;br /&gt;
We use InnoSetup to create the installer. Checkout their website (http://www.jrsoftware.org/isinfo.php) if you need to change the script, but simply publishing the game does not require any adjustment to the installer script.&lt;br /&gt;
&lt;br /&gt;
* Install InnoSetup if necessary&lt;br /&gt;
** Run Autism Collaborative\Utilities\Installer Installer\isetup-5.2.2.exe&lt;br /&gt;
* Compile the game&lt;br /&gt;
** In the second menu bar (immediately below the top menu bar) within Visual Studio, change &amp;quot;Debug&amp;quot; to &amp;quot;ReleasePub&amp;quot; or &amp;quot;ReleaseLab&amp;quot;.  (In the box to the right, leave the default &amp;quot;Mixed Platforms&amp;quot;.)  &lt;br /&gt;
*** ReleasePub is for our releases to the general public. This will usually be the correct configuration.&lt;br /&gt;
*** ReleaseLab is for builds to be used in the lab. This will create the config file to run the game in &amp;quot;lab mode.&amp;quot; The resulting exe file will actually be the same as ReleasePub, but constd.tac will be replaced with conlab.tac.&lt;br /&gt;
*** Debug mode is used while developing, so do not build the game in debug mode when creating the installer.&lt;br /&gt;
*** For the exact effects of the different build configurations on the game flow, unit stats, etc. see the config files in Autism Collaborative\Game\Game\Configs&lt;br /&gt;
** Goto Build-&amp;gt;Build Solution&lt;br /&gt;
* Compile the installer script&lt;br /&gt;
** Open Autism Collaborative\Game\Game\Installer.iss with InnoSetup&lt;br /&gt;
** Goto Build-&amp;gt;Compile&lt;br /&gt;
** Goto Run-&amp;gt;Run&lt;br /&gt;
*** This creates the file Autism Collaborative\Game\Game\Output\tAC_Installer.exe&lt;br /&gt;
&lt;br /&gt;
===Upload the Installer to the Web===&lt;br /&gt;
&lt;br /&gt;
* Get a username/password for autismcollaborative.org from Matthew.&lt;br /&gt;
* Use a secure FTP client to login, such as WinSCP&lt;br /&gt;
** Either download it or run Autism Collaborative\Utilities\WinSCP.exe&lt;br /&gt;
* Login to autismcollaborative.org (port 22)&lt;br /&gt;
* Upload tAC_Installer.exe to your home directory (for example /home/zinsser)&lt;br /&gt;
** Do not overwrite the existing installer (/home/belmonte/autismcollaborative.org/downloads/AstropolisSetup.exe) since that would delete the installer from the website until the new installer finishes uploading (usually over an hour!)&lt;br /&gt;
* Once the upload is complete, enter the command &amp;quot;mv /home/zinsser/tAC_Installer.exe /home/belmonte/autismcollaborative.org/downloads/AstropolisSetup.exe&amp;quot; (you may have to open a terminal first, depending on your SFTP client)&lt;br /&gt;
** In the above command, substitute your username for &amp;quot;zinsser&amp;quot;, but keep &amp;quot;belmonte&amp;quot; as the destination user directory&lt;br /&gt;
** If there is a permissions problem, contact Matthew to make sure your user has permission to the autismcollaborative.org directory!&lt;br /&gt;
&lt;br /&gt;
==Use the ErrorLog==&lt;br /&gt;
&lt;br /&gt;
When the game encounters an Unhandled Exception (like when an end user runs into a bug in our code), useful information is dumped to ErrorLog.txt. The user is encouraged to email that file to us so we can locate the problem they ran into. Although the ErrorLog will tell us what function the program died in, it cannot tell us specifically which line was the culprit (although ErrorLogs created when the game is running in Visual Studio will tell us exactly which line!).&lt;br /&gt;
&lt;br /&gt;
We do, however, have the ability to log any custom information from a MiniGame. This may prove invaluable in debugging based on end-user error reports. All you (the programmer) must do is override the string MiniGame.DebugInfo() function. When ErrorLog.txt is created, it calls that function on the current MiniGame and appends the returned text to the bottom of the file.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Code_How_To%27s&amp;diff=305</id>
		<title>Code How To&#039;s</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Code_How_To%27s&amp;diff=305"/>
				<updated>2008-07-03T23:27:51Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides tutorials for some of the most common actions a programmer may wish to implement. It may helpful to read the [[Code Overview]] first.&lt;br /&gt;
&lt;br /&gt;
==Submit a Bug or Other Issue==&lt;br /&gt;
&lt;br /&gt;
* Go to http://www.AutismCollaborative.org/bugs/&lt;br /&gt;
* Fill out the fields that apply to this issue&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type of Bug:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Functional Problem&lt;br /&gt;
** Any actual &amp;quot;Bug&amp;quot;&lt;br /&gt;
* Suggestion&lt;br /&gt;
** A possible change to the game that may improve it&lt;br /&gt;
* New Feature&lt;br /&gt;
** Something that &amp;#039;&amp;#039;&amp;#039;absolutely must&amp;#039;&amp;#039;&amp;#039; be implemented&lt;br /&gt;
** Use sparingly; make sure it&amp;#039;s not actually a Suggestion&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Severity:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* How much this issue affects the game/application&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Priority:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* How soon the issue should be resolved (relative to other issues)&lt;br /&gt;
* The majority of issues should be Low priority&lt;br /&gt;
* Use High sparingly&lt;br /&gt;
&lt;br /&gt;
==Coding Conventions==&lt;br /&gt;
&lt;br /&gt;
* Place the name of the file, authors, and copyright info at the top of each file&lt;br /&gt;
** Any person who makes significant changes to a file should add their name to the list of authors in a file&lt;br /&gt;
*** This helps anyone reading the code because they know who to ask if they have a question about something&lt;br /&gt;
* All private and protected class member variables are lowerCamelCase&lt;br /&gt;
* Private/protected class member variables are preceded with &amp;quot;m&amp;quot; (ie mLocalVariable)&lt;br /&gt;
* All functions, properties (sometimes called &amp;quot;smart fields&amp;quot;), and public class variables are UpperCamelCase&lt;br /&gt;
* Public variables should only be used with small classes that are only used by one or two other classes&lt;br /&gt;
* This code is intended to be viewed by many people who do not have strong programming backgrounds, therefore documentation is &amp;#039;&amp;#039;&amp;#039;very&amp;#039;&amp;#039;&amp;#039; important&lt;br /&gt;
** Document the purpose of each class&amp;#039;s member variables, either next to their declaration or as a summary for their property accessor&lt;br /&gt;
** Create a summary documentation block for every function unless it is extremely obvious&lt;br /&gt;
*** This can be done by placing the cursor above a function definition and typing &amp;quot;///&amp;quot;&lt;br /&gt;
*** This block shows up in Intellisense when writing that function in code&lt;br /&gt;
** Add a summary to any properties that are possibly confusing or not straightforward &lt;br /&gt;
** Document every step of each algorithm (except for very obvious function calls like ResetSettings();)&lt;br /&gt;
*** Someone should be able to read only the comments in a function and still understand what it does&lt;br /&gt;
** See MeteorMadness.cs for an example of the appropriate level of documentation&lt;br /&gt;
* See the Load a Texture section for naming conventions of texture assets&lt;br /&gt;
&lt;br /&gt;
==Create a New Minigame==&lt;br /&gt;
&lt;br /&gt;
* Declare the class&lt;br /&gt;
** Create a new folder under ColonySimulator&lt;br /&gt;
** Create a new file in that folder named NewMinigame.cs where NewGame is the name of the new minigame&lt;br /&gt;
** Place all new minigame-specific classes in that folder&lt;br /&gt;
** Have the class derive from GameScreen&lt;br /&gt;
 class NewGame : Gamescreen {...}&lt;br /&gt;
* Implement the Constructor&lt;br /&gt;
** Initialize game variables&lt;br /&gt;
** Declare a ScoreCard (see Scoring tutorial)&lt;br /&gt;
** Log the GameBegin code (see the Logging tutorial)&lt;br /&gt;
* Implement Update()&lt;br /&gt;
 public override void Update(GameTime gameTime){...}&lt;br /&gt;
** Do not assume a constant call rate&lt;br /&gt;
*** This function will almost always be called 60 times per second, but that rate may vary depending on CPU load&lt;br /&gt;
*** At the beginning of each cycle, get the time since the last cycle like this:&lt;br /&gt;
**** float dt = gameTime.ElapsedGameTime;&lt;br /&gt;
*** Build the time into all movement and timers, for example:&lt;br /&gt;
 myEntity.LifeSpan -= dt;&lt;br /&gt;
 myEntity.Position += myEntity.Velocity * dt;&lt;br /&gt;
* Implement Draw()&lt;br /&gt;
 public override void Draw(SpriteBatch spriteBatch){...}&lt;br /&gt;
** Be sure to call each entities Draw and Update methods. Optional: Register all entities with the XNA game object.&lt;br /&gt;
This will have XNA automatically call their Draw and Update functions at appropriate times.&lt;br /&gt;
** Consider using a generalized render-queue such as GenericWorldSpace &amp;#039;&amp;#039;&amp;#039;(not-yet-implemented as of Oct 2007)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Use the Raise function to place the minigame gamescreen on the stack based game system.&lt;br /&gt;
* End the game using Done function. This will pop it off the game stack, returning the state of the game to the previous state.&lt;br /&gt;
** Flush the particle system (see the particles tutorial) if any emitters were created&lt;br /&gt;
** Log the GameEndSuccess/GameEndFailure code&lt;br /&gt;
** Show the score&lt;br /&gt;
&lt;br /&gt;
==Use Images==&lt;br /&gt;
&lt;br /&gt;
XNA supports most common types of images, including JPEG, GIF, DDS, etc.&lt;br /&gt;
&lt;br /&gt;
===Load a Texture===&lt;br /&gt;
&lt;br /&gt;
But before you can load a texture in code you must add it to the content pipeline:&lt;br /&gt;
&lt;br /&gt;
* Import the content into the project&lt;br /&gt;
** Browse to the appropriate folder in Visual Studio&amp;#039;s Solution Explorer&lt;br /&gt;
*** For example, Content\MiniGames\MyImage.png&lt;br /&gt;
** Right click on that folder and select Add-&amp;gt;Existing Item&lt;br /&gt;
** Select the image to import&lt;br /&gt;
&lt;br /&gt;
Once that&amp;#039;s done, you can load it memory with the XNA content manager:&lt;br /&gt;
&lt;br /&gt;
 Texture2D myTexture = Content.Load(@&amp;quot;General\myTexture&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
The XNA content manager defaults to the content folder of the project, so all addresses can be relative from there. Also, the name of the image should be the same as the asset name. This can be set in the properties window. &lt;br /&gt;
&lt;br /&gt;
===Display a Static Image===&lt;br /&gt;
&lt;br /&gt;
Before manually drawing something to screen consider using some type of game object, be it an Entity, HUD element, or even a Ticker (see the tutorials below). Game objects all know how to draw themselves, so it is unlikely that a minigame will need to draw something directly to the screen. Should the need arise, however, here&amp;#039;s how it&amp;#039;s done:&lt;br /&gt;
&lt;br /&gt;
* Load it in code:&lt;br /&gt;
 GraphicsDeviceManager gdm = ...;    // This is declared in GenericGameManager.cs&lt;br /&gt;
 ConentManager cm = ...;             // Usually a parameter, as in Update(ContentManager content)&lt;br /&gt;
 SpriteBatch sb = new SpriteBatch(gdm.GraphicsDevice);                     // Basically a wrapper for a DirectX render target&lt;br /&gt;
 Texture2D texture = TextureManager.Load(@&amp;quot;Content\General\myTexture&amp;quot;);&lt;br /&gt;
 Rectangle destination = ...;        // Display destination&lt;br /&gt;
 Color tint = Color.White;           // Tint the image with this color&lt;br /&gt;
 float rotation = 0f;                // Rotation (in radians)&lt;br /&gt;
 Vector2 center = new Vector2(texture.Width / 2f, texture.Height / 2f);         // Origin of rotation&lt;br /&gt;
 float zDepth = 1f;                  // Order to draw sprites within this spritebatch&lt;br /&gt;
 &lt;br /&gt;
 sb.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.BackToFront, SaveStateMode.SaveState);&lt;br /&gt;
 &lt;br /&gt;
 sb.Draw(&lt;br /&gt;
   texture,&lt;br /&gt;
   destination ,&lt;br /&gt;
   null,               // What part of the source image to sample from--null tells it to use the whole image&lt;br /&gt;
   tint ,&lt;br /&gt;
   rotation,&lt;br /&gt;
   center,&lt;br /&gt;
   SpriteEffects.None, // How to mirror the image&lt;br /&gt;
   zDepth &lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 sb.End();&lt;br /&gt;
&lt;br /&gt;
===Display an Animation===&lt;br /&gt;
&lt;br /&gt;
Animations are created using the AnimatedSprite class. Here&amp;#039;s an example:&lt;br /&gt;
&lt;br /&gt;
 //Declare Animated Sprite&lt;br /&gt;
 //Parameters: Game object, SpriteSheet as a Texture2D object, Position as Vector2, FrameSize as Vector2, Number of Frames&lt;br /&gt;
 AnimatedSprite testAnimation = new AnimatedSprite(this, Content.Load&amp;lt;Texture2D&amp;gt;(&amp;quot;TestSpriteSheet&amp;quot;), new Vector2(200, 300), new Vector2(64, 64), 16);&lt;br /&gt;
 //Pass a reference to the SpriteBatch that the AnimatedSprite will use&lt;br /&gt;
 testAnimation.SpriteBatch = spriteBatch;&lt;br /&gt;
 //Turn on the Animation&lt;br /&gt;
 testAnimation.Animate(true);&lt;br /&gt;
 //Turn off the Animation&lt;br /&gt;
 testAnimation.Animate(false);&lt;br /&gt;
&lt;br /&gt;
*Do not forget to call the draw and update methods of the AnimatedSprite explicitly, or to add them to the XNA game.components array so to allow XNA to call them.&lt;br /&gt;
&lt;br /&gt;
==Create a New Type of Game Object==&lt;br /&gt;
&lt;br /&gt;
All specific game objects (players, enemies, collectibles, projectiles, etc.) should derive from Entity. This gives them easy ways to draw themselves, move, collide with other entities, and be passed to many tAC_Engine functions.&lt;br /&gt;
&lt;br /&gt;
==Get User Input==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DO NOT&amp;#039;&amp;#039;&amp;#039; use the standard XNA keyboard accessors (Xna.Framework.Input.KeyboardState or Xna.Framework.Input.Keyboard) or mouse accessors (Xna.Framework.Input.MouseState) because tAC_Engine does a lot of caching and logging behind the scenes. Use tAC_Engine.InputState instead.&lt;br /&gt;
&lt;br /&gt;
===Keyboard===&lt;br /&gt;
&lt;br /&gt;
 if (InputState.IsKeyDown(Keys.A))&lt;br /&gt;
 {&lt;br /&gt;
   // The A key was pressed&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Mouse===&lt;br /&gt;
&lt;br /&gt;
 if (InputState.IsMouseLeftUp &amp;amp;&amp;amp; InputState.WasMouseLeftDown)&lt;br /&gt;
 {&lt;br /&gt;
  // The mouse was just clicked (clicks are typically registered on the release, not the initial press)&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Vector2 location = InputState.MouseLocation;&lt;br /&gt;
&lt;br /&gt;
==Manage a Heads Up Display==&lt;br /&gt;
&lt;br /&gt;
Use the HUD class for any HUD element (like health bars, menu buttons, etc.). Typically, you&amp;#039;ll want to create a class that inherits from Widget2D. See MeteorWidgets.cs for examples.&lt;br /&gt;
&lt;br /&gt;
==Display Text or Icons with the Ticker==&lt;br /&gt;
&lt;br /&gt;
 string text = &amp;quot;w00t.&amp;quot;;                      // Text to display (can be &amp;quot;&amp;quot;)&lt;br /&gt;
 Texture2D image = null;                     // Can also be set to an image&lt;br /&gt;
 Vector2 imageSize = new Vector2(25f, 25f);  // Size of the (optional) icon&lt;br /&gt;
 Vector2 offset = new Vector2(700f, 50f);    // This will display the ticker 700 pixels to the right of the screen&amp;#039;s &lt;br /&gt;
                                             //   center and 50 pixels below the screen&amp;#039;s center&lt;br /&gt;
 Vector2 velocity = new Vector2 (-10f, 0f);  // Move left 10 pixels per second&lt;br /&gt;
 Ticker.Font font = Ticker.Font.Standard;    // Regular text&lt;br /&gt;
 Color color = Color.DeepPink;               // The manliest of colors&lt;br /&gt;
 float opacity = .5f;                        // 50% transparent&lt;br /&gt;
 float seconds = 5f;                         // Disappear after 5 seconds&lt;br /&gt;
 bool fade = true;                           // Fade in and fade out&lt;br /&gt;
 &lt;br /&gt;
 Ticker.Display(text, image, imageSize, offset, velocity, font, color, opacity, seconds, fade);&lt;br /&gt;
&lt;br /&gt;
==Display Text Manually==&lt;br /&gt;
&lt;br /&gt;
Most text displayed should be done using the Ticker, but if you really want to display text manually use the Nuclex font library (XNA now supports text, so the Nuclex library may eventually be removed). First you must import the desired font:&lt;br /&gt;
&lt;br /&gt;
* Create an xml file for the new font called FontName.tffimport that looks like this:&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;TrueTypeImport&amp;gt;&lt;br /&gt;
   &amp;lt;Path&amp;gt;Content\Fonts\MercuryII.ttf&amp;lt;/Path&amp;gt;&lt;br /&gt;
   &amp;lt;Size&amp;gt;32&amp;lt;/Size&amp;gt;&lt;br /&gt;
 &amp;lt;/TrueTypeImport&amp;gt;&lt;br /&gt;
* Put the font (FontName.ttf) and FontName.tffimport in the Content\Fonts directory&lt;br /&gt;
* Set the following properties for FontName.ttf&lt;br /&gt;
** Build Action: None&lt;br /&gt;
** Copy to Output Directory: Copy if newer&lt;br /&gt;
** File Name: MercuryII.ttf&lt;br /&gt;
* Set the following properties for FontName.tffimport&lt;br /&gt;
** Build Action: Content&lt;br /&gt;
** Content Importer: TrueTypeFont - XNA Framework&lt;br /&gt;
** Content Processor: Bitmap Font - XNA Framework&lt;br /&gt;
** Copy to Output Directory: Do not copy&lt;br /&gt;
** XNA Framework Content: True&lt;br /&gt;
&lt;br /&gt;
Now for the code:&lt;br /&gt;
&lt;br /&gt;
 ContentManager cm = ...;&lt;br /&gt;
 SpriteBatch sb = ...;&lt;br /&gt;
 BitmapFont bmf = cm.Load&amp;lt;BitmapFont&amp;gt;(@&amp;quot;Content\Fonts\Arial&amp;quot;);&lt;br /&gt;
 sb.Begin(SpriteBlendMode.AlphaBlend);&lt;br /&gt;
 bmf.DrawString(new Vector2(10.0F, 10.0F), &amp;quot;Manual Text!&amp;quot;, Color.Azure);&lt;br /&gt;
 sb.End();&lt;br /&gt;
&lt;br /&gt;
==Use Sound==&lt;br /&gt;
&lt;br /&gt;
===Import a new Audio File===&lt;br /&gt;
&lt;br /&gt;
* Run Autism Collaborative\Utilities\XACT\Xact.exe&lt;br /&gt;
** This is the XACT tool from Microsoft DirectX SDK August 2006&lt;br /&gt;
** If--after following the steps in this tutorial--playing a file in code throws an exception about using the wrong version of XACT, try using Xact.exe from a different SDK build&lt;br /&gt;
* Open AudioProject.xap file for the Minigame you wish to add a sound to.&lt;br /&gt;
* Expand Wave Banks and double click Wave Bank in the panel on the left&lt;br /&gt;
* Expand Sound Banks and double click Sound Bank in the panel on the left&lt;br /&gt;
* Go to Wave Banks-&amp;gt;Insert Wave File(s)...&lt;br /&gt;
* Select the file to import i.e.&amp;quot;@/MiniGame/Content/Sounds/MySound.wav&amp;quot; and click OK.&lt;br /&gt;
* Drag the newly-added file to the Cue Name section in the Sound Bank:Sound Bank window&lt;br /&gt;
* Go to File-&amp;gt;Build&lt;br /&gt;
* Save and close XACT&lt;br /&gt;
* Open game.sln with Visual Studio&lt;br /&gt;
* Browse to the Content\Sounds folder in the Solution Explorer&lt;br /&gt;
* Right click the Sounds folder and select Add-&amp;gt;Existing Item...&lt;br /&gt;
* Select &amp;quot;MySound.wav&amp;quot; and click OK&lt;br /&gt;
&lt;br /&gt;
===Play a Sound===&lt;br /&gt;
&lt;br /&gt;
 Sound.Play(&amp;quot;MySound&amp;quot;); // No file extension&lt;br /&gt;
&lt;br /&gt;
===Play Music ===&lt;br /&gt;
&lt;br /&gt;
Sound.SetMusic(&amp;quot;MyMusic&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==Use the Particle Engine==&lt;br /&gt;
&lt;br /&gt;
Particles are handled by the TACParticleEngine, a separate library that uses the AC_GraphicsEngine that has been modified to better fit the needs of the Autism Game. Features are added to it on an as-needed basis so if a new feature needs to be added and any problems arise in its integration into the current particle engine contact Brian Murphy.&lt;br /&gt;
&lt;br /&gt;
Quick layout of TACParticleEngine:&lt;br /&gt;
&lt;br /&gt;
 The ParticleManager contains references to all loaded ParticleEngines.&lt;br /&gt;
 ParticleEngines contain a series of Emitters.&lt;br /&gt;
 Emitters contain a heap of Particles, which are the objects that actually get drawn.&lt;br /&gt;
&lt;br /&gt;
Particle Effects are imported via its own unique pipeline using the existing XNA framework, so they can be called in a similar manner:&lt;br /&gt;
&lt;br /&gt;
Make sure to include these packages so that we can create and access our particle engine objects:&lt;br /&gt;
&lt;br /&gt;
 using TACParticleEngine;&lt;br /&gt;
 using TACParticleEngine.Particles;&lt;br /&gt;
 &lt;br /&gt;
Inside of the class declaration make these global variables:&lt;br /&gt;
 &lt;br /&gt;
 ParticleManager mParticleManager;&lt;br /&gt;
 ParticleEngine mTestEffect;&lt;br /&gt;
&lt;br /&gt;
Make sure to initialize in the classes initialize method:&lt;br /&gt;
&lt;br /&gt;
 mParticleManager = new ParticleManager(Game); // Initialize the particle manager object with a reference to the current game&lt;br /&gt;
 mTestEffect = mParticleManager.Load(&amp;quot;ParticleEffects/Explosion&amp;quot;); // Load in the given particle effect file by giving the&lt;br /&gt;
                                                                   // location at which it is compiled to&lt;br /&gt;
&lt;br /&gt;
After these three things have been done, you&amp;#039;ll now have an effect loaded into a Particle Engine object via the Particle Manager. However the Particle Engine doesn&amp;#039;t mean anything if it doesn&amp;#039;t do anything so let&amp;#039;s set up the rest of the code we need for updating and drawing:&lt;br /&gt;
&lt;br /&gt;
To get the engine to update, just call&lt;br /&gt;
&lt;br /&gt;
 mParticleManager.Update((float)gameTime.ElapsedGameTime.TotalSeconds);&lt;br /&gt;
&lt;br /&gt;
in the Update(GameTime gameTime) method.&lt;br /&gt;
&lt;br /&gt;
As for drawing, a little more effort is required. First of, since the TACPArticleEngine makes use of the Camera class from the AC_GraphicsEngine, we will need to create and initialize one if we are to render our particles, so let&amp;#039;s get our camera set if it hasn&amp;#039;t been done so before for other drawing.&lt;br /&gt;
&lt;br /&gt;
Add the following line to the list of global variables at the beginning of the class:&lt;br /&gt;
&lt;br /&gt;
 Camera mActiveCamera;&lt;br /&gt;
&lt;br /&gt;
This will be whatever kind of camera we are currently using for drawing in case we may want other cameras for whatever reason.&lt;br /&gt;
&lt;br /&gt;
Next we need to initialize the camera to any specific type of camera that derive from camera. As of now this is limited to FollowCamera, OrthographicCamera, PerspectiveCamera2D, and PerspectiveCamera3D. For now well us a PerspectiveCamera3D as our active camera.&lt;br /&gt;
&lt;br /&gt;
 mActiveCamera = new Perspective3DCamera(new Vector3(0, 0, -5), Vector3.Zero, Vector3.Up, MathHelper.Pi/5, 1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
Now that we have our active camera set, we can now draw by including the following line in the Draw(GameTime gameTime) method:&lt;br /&gt;
&lt;br /&gt;
 mParticleManager.Render(gameTime, mActiveCamera);&lt;br /&gt;
&lt;br /&gt;
*Note that this assumes that the GraphicsDevice.Clear(Color.Black) and base.Draw(gameTime) method calls are also in the method as they are by default.&lt;br /&gt;
&lt;br /&gt;
This will now draw any particles that have been loaded by the Particle Manager and have been set active, however the current particle engine we created has been set active yet so do that now.&lt;br /&gt;
&lt;br /&gt;
This is done by calling the following line whenever you would want drawing of that Particle Engine to occur.&lt;br /&gt;
&lt;br /&gt;
 mTestEffect.SetActive(true);&lt;br /&gt;
&lt;br /&gt;
This particle engine is now active, and if it had been previously active, it&amp;#039;s lifetime would have been reset to 0. Using this call, we can also turn off the particle engine from creating anymore particles by giving it false as its parameter instead.&lt;br /&gt;
&lt;br /&gt;
Besides this method, there are a series of methods that allow us to modify the drawing of the ParticleEngine itself. These are as followed:&lt;br /&gt;
&lt;br /&gt;
 SetEnginePosition(Vector3 Position) // Given a 3D vector, we can move the whole particle engine to the desired position&lt;br /&gt;
&lt;br /&gt;
 SetEngineColor(Vector4 Color) // Given a 4D vector of float values 0-1 in the form of RGBA, we can change the coloring of the whole particle engine&lt;br /&gt;
                               // Keep in mind that this applies that much of the emitters&amp;#039; texture for each value, so a black picture with 1,0,0,1 as&lt;br /&gt;
                               // its value will not be red but still black&lt;br /&gt;
&lt;br /&gt;
 SetEngineSize(Vector2 Size) // Given a 2D vector, we can modify the dimensions of the particle image, this is always 2D since particles in 3D are &lt;br /&gt;
                             // simply billboard sprites&lt;br /&gt;
&lt;br /&gt;
===Create a New Particle Effect===&lt;br /&gt;
&lt;br /&gt;
To make a new effect you will need two things, a new particle file, placed into the appropriate directory, as well as whatever textures are needed in their appropriate directory. Make sure that after the particle file has been created and included into the project that it is set to compile using the particle importer and processor. If these options don&amp;#039;t come up, you probably just need to include a reference to the TACParticleEngine within the projects content folder.&lt;br /&gt;
&lt;br /&gt;
Here is the format of a particle file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;particle&amp;gt; // This declares that we are making a particle effect&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;emitter&amp;gt; // This declares that we are adding a new emitter to our particle effect&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;!--type: point|spline|directional|spray--&amp;gt;&lt;br /&gt;
            &amp;lt;textureName&amp;gt;Textures/SmokeParticle&amp;lt;/textureName&amp;gt; // Directory of the texture the emitter will use&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;blendEffect&amp;gt;AlphaBlend&amp;lt;/blendEffect&amp;gt; // Blend options, typically uses Additive (for fiery effects) &lt;br /&gt;
                                                  // and AlphaBlend (for smokey or piece effects&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;positions&amp;gt;(0,0,50)&amp;lt;/positions&amp;gt; // Default position th emitter appears at. Multiple Positions can be given in the form of&lt;br /&gt;
                                            // (x,y,z)(x,y,z)(x,y,z)..., this will create a spline emitter, which will form a smooth curve&lt;br /&gt;
                                            // using all the given points&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minVel&amp;gt;(0,0,0)&amp;lt;/minVel&amp;gt; // Minimum velocity for particles. If this value is a zero vector and so is the maximum velocity, then&lt;br /&gt;
                                     // this will create either a point or spline emitter, depending on the number of positions given. If this&lt;br /&gt;
                                     // has any values of x, y, or z are &amp;lt; -1 or &amp;gt; 1, then a spray emitter is created, otherwise a directional&lt;br /&gt;
                                     // emitter is created. In either case, the number of positions should be 1.&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxVel&amp;gt;(0,0,0)&amp;lt;/maxVel&amp;gt; // This is the maximum velocity. Used only for spray and directional emitters. For spray emitters, this is&lt;br /&gt;
                                     // the direction in which all particles will move. In the directional emitter, this determines the end range&lt;br /&gt;
                                     // in which particles can move in&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;emitLifetime&amp;gt;0.3&amp;lt;/emitLifetime&amp;gt; // This is how long the emitter exists for in seconds&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;particlesPerSec&amp;gt;50&amp;lt;/particlesPerSec&amp;gt; // This is how many particles will be created every second the emitter is alive&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;particleAmount&amp;gt;20&amp;lt;/particleAmount&amp;gt; // This is the total amount of particles that can exist at any time. In most cases, this number &lt;br /&gt;
                                                // should be slightly over the emitLifetime * particlesPerSec, otherwise effect inconsistencies &lt;br /&gt;
                                                // could result.&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;particleLifetime&amp;gt;3&amp;lt;/particleLifetime&amp;gt; // How long an individual particle is alive for in seconds&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;lifeLengthRandomizer&amp;gt;1&amp;lt;/lifeLengthRandomizer&amp;gt; // This use to randomize the time a particle was alive for, however this has been taken  &lt;br /&gt;
                                                           // out. This will be removed in the future but until then, as with all the other tags, &lt;br /&gt;
                                                           // this tag needs to exist otherwise the particle file won&amp;#039;t compile&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minStartSpeed&amp;gt;0.7&amp;lt;/minStartSpeed&amp;gt; // This is the minimum speed a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxStartSpeed&amp;gt;1&amp;lt;/maxStartSpeed&amp;gt; // This is the maximum speed a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minEndSpeed&amp;gt;0&amp;lt;/minEndSpeed&amp;gt; // This is the minimum speed a particle can end at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxEndSpeed&amp;gt;0&amp;lt;/maxEndSpeed&amp;gt; // This is the maximum speed a particle can end at&lt;br /&gt;
&lt;br /&gt;
            // *Note* currently rotation is not used due to the need to use pixel shader 2.0, which would limit the range of machine this could run &lt;br /&gt;
            // on, or at the least, would result in varied graphics between machines. This can either be fully used if the use of pixel shader 2.0 is &lt;br /&gt;
            // fine, or just scrapped if the use of pixel shader 2.0 seems like at will never happen.&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;startRotationRange&amp;gt;6.28&amp;lt;/startRotationRange&amp;gt; // Range at which a particle can start rotated&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minStartRotSpeed&amp;gt;-1&amp;lt;/minStartRotSpeed&amp;gt; // The minimum speed at which a particle can rotate at start&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxStartRotSpeed&amp;gt;1&amp;lt;/maxStartRotSpeed&amp;gt; // The maximum speed at which a particle can rotate at start&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minEndRotSpeed&amp;gt;0&amp;lt;/minEndRotSpeed&amp;gt; // The minimum speed at which a particle can rotate at end&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxEndRotSpeed&amp;gt;0&amp;lt;/maxEndRotSpeed&amp;gt; // The maximum speed at which a particle can rotate at end&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;!-- (r,g,b,a) range 0.0-1.0 --&amp;gt;&lt;br /&gt;
            &amp;lt;minStartColor&amp;gt;(1,1,1,0.3)&amp;lt;/minStartColor&amp;gt; // The minimum values of RGBA that a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxStartColor&amp;gt;(1,1,1,0.3)&amp;lt;/maxStartColor&amp;gt; // The maximum values of RGBA that a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minEndColor&amp;gt;(1,1,1,0)&amp;lt;/minEndColor&amp;gt; // The minimum values of RGBA that a particle can end at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxEndColor&amp;gt;(1,1,1,0)&amp;lt;/maxEndColor&amp;gt; // The maximum values of RGBA that a particle can end at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;!-- (x,y) --&amp;gt;&lt;br /&gt;
           &amp;lt;minStartSize&amp;gt;(200,200)&amp;lt;/minStartSize&amp;gt; // The minimum size that a particle can start at&lt;br /&gt;
&lt;br /&gt;
           &amp;lt;maxStartSize&amp;gt;(200,200)&amp;lt;/maxStartSize&amp;gt; // The maximum size that a particle can start at&lt;br /&gt;
&lt;br /&gt;
           &amp;lt;minEndSize&amp;gt;(300,300)&amp;lt;/minEndSize&amp;gt; // The minimum size that a particle can end at&lt;br /&gt;
&lt;br /&gt;
           &amp;lt;maxEndSize&amp;gt;(300,300)&amp;lt;/maxEndSize&amp;gt; // The minimum size that a particle can end at&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;/emitter&amp;gt; // Declares that the emitter has been set and is now finished being made&lt;br /&gt;
&lt;br /&gt;
Here&amp;#039;s some additional emitters to just show how multiple emitters in a single effect can be done&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;emitter&amp;gt;&lt;br /&gt;
        &amp;lt;!--type: point|spline|directional|spray--&amp;gt;&lt;br /&gt;
        &amp;lt;textureName&amp;gt;Textures/BasicParticleImage&amp;lt;/textureName&amp;gt;&lt;br /&gt;
        &amp;lt;blendEffect&amp;gt;Additive&amp;lt;/blendEffect&amp;gt;&lt;br /&gt;
        &amp;lt;positions&amp;gt;(0,0,120)&amp;lt;/positions&amp;gt;&lt;br /&gt;
        &amp;lt;minVel&amp;gt;(1.001,1.001,1)&amp;lt;/minVel&amp;gt;&lt;br /&gt;
        &amp;lt;maxVel&amp;gt;(0,0,0)&amp;lt;/maxVel&amp;gt;&lt;br /&gt;
        &amp;lt;emitLifetime&amp;gt;0.3&amp;lt;/emitLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;particlesPerSec&amp;gt;1000&amp;lt;/particlesPerSec&amp;gt;&lt;br /&gt;
        &amp;lt;particleAmount&amp;gt;400&amp;lt;/particleAmount&amp;gt;&lt;br /&gt;
        &amp;lt;particleLifetime&amp;gt;2&amp;lt;/particleLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;lifeLengthRandomizer&amp;gt;1&amp;lt;/lifeLengthRandomizer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;minStartSpeed&amp;gt;2&amp;lt;/minStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSpeed&amp;gt;2&amp;lt;/maxStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSpeed&amp;gt;0&amp;lt;/minEndSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSpeed&amp;gt;0&amp;lt;/maxEndSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;startRotationRange&amp;gt;6.28&amp;lt;/startRotationRange&amp;gt;&lt;br /&gt;
        &amp;lt;minStartRotSpeed&amp;gt;-1&amp;lt;/minStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartRotSpeed&amp;gt;1&amp;lt;/maxStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndRotSpeed&amp;gt;0&amp;lt;/minEndRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndRotSpeed&amp;gt;0&amp;lt;/maxEndRotSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (r,g,b,a) range 0.0-1.0 --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartColor&amp;gt;(1,0,0,0.3)&amp;lt;/minStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartColor&amp;gt;(1,0,0,0.3)&amp;lt;/maxStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;minEndColor&amp;gt;(0,0,0,0)&amp;lt;/minEndColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndColor&amp;gt;(0,0,0,0)&amp;lt;/maxEndColor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (x,y) --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartSize&amp;gt;(1,1)&amp;lt;/minStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSize&amp;gt;(1,1)&amp;lt;/maxStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSize&amp;gt;(0.1,0.1)&amp;lt;/minEndSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSize&amp;gt;(0.1,0.1)&amp;lt;/maxEndSize&amp;gt;&lt;br /&gt;
    &amp;lt;/emitter&amp;gt;&lt;br /&gt;
    &amp;lt;emitter&amp;gt;&lt;br /&gt;
        &amp;lt;!--type: point|spline|directional|spray--&amp;gt;&lt;br /&gt;
        &amp;lt;textureName&amp;gt;Textures/ExplosionParticle&amp;lt;/textureName&amp;gt;&lt;br /&gt;
        &amp;lt;blendEffect&amp;gt;Additive&amp;lt;/blendEffect&amp;gt;&lt;br /&gt;
        &amp;lt;positions&amp;gt;(0,0,60)&amp;lt;/positions&amp;gt;&lt;br /&gt;
        &amp;lt;minVel&amp;gt;(0,0,0)&amp;lt;/minVel&amp;gt;&lt;br /&gt;
        &amp;lt;maxVel&amp;gt;(0,0,0)&amp;lt;/maxVel&amp;gt;&lt;br /&gt;
        &amp;lt;emitLifetime&amp;gt;0.3&amp;lt;/emitLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;particlesPerSec&amp;gt;100&amp;lt;/particlesPerSec&amp;gt;&lt;br /&gt;
        &amp;lt;particleAmount&amp;gt;40&amp;lt;/particleAmount&amp;gt;&lt;br /&gt;
        &amp;lt;particleLifetime&amp;gt;0.3&amp;lt;/particleLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;lifeLengthRandomizer&amp;gt;0.1&amp;lt;/lifeLengthRandomizer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;minStartSpeed&amp;gt;2&amp;lt;/minStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSpeed&amp;gt;2&amp;lt;/maxStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSpeed&amp;gt;0&amp;lt;/minEndSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSpeed&amp;gt;0&amp;lt;/maxEndSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;startRotationRange&amp;gt;6.28&amp;lt;/startRotationRange&amp;gt;&lt;br /&gt;
        &amp;lt;minStartRotSpeed&amp;gt;-1&amp;lt;/minStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartRotSpeed&amp;gt;1&amp;lt;/maxStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndRotSpeed&amp;gt;0&amp;lt;/minEndRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndRotSpeed&amp;gt;0&amp;lt;/maxEndRotSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (r,g,b,a) range 0.0-1.0 --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartColor&amp;gt;(1,1,1,0.7)&amp;lt;/minStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartColor&amp;gt;(1,1,1,0.7)&amp;lt;/maxStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;minEndColor&amp;gt;(1,1,1,0)&amp;lt;/minEndColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndColor&amp;gt;(1,1,1,0)&amp;lt;/maxEndColor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (x,y) --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartSize&amp;gt;(10,10)&amp;lt;/minStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSize&amp;gt;(50,50)&amp;lt;/maxStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSize&amp;gt;(10,10)&amp;lt;/minEndSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSize&amp;gt;(50,50)&amp;lt;/maxEndSize&amp;gt;&lt;br /&gt;
    &amp;lt;/emitter&amp;gt;&lt;br /&gt;
 &amp;lt;/particle&amp;gt; // Declares the end of the particle file&lt;br /&gt;
&lt;br /&gt;
==Keep Score and Give Resources to the Simulator Mode==&lt;br /&gt;
&lt;br /&gt;
Use the ScoreCard class to keep track of the score from a minigame. It provides easy ways to add and subtract resources, as well as an easy way to display them and pass them along to the Colony Simulator.&lt;br /&gt;
&lt;br /&gt;
MiniGame has a ColonyScoreCard built into it, accessible by the Score property. Here are some examples of how to use it:&lt;br /&gt;
&lt;br /&gt;
 class MyGame : MiniGame&lt;br /&gt;
 {&lt;br /&gt;
   public override void Update(ContentManager content)&lt;br /&gt;
   {&lt;br /&gt;
     Score.Gather(ColonyResources.Money, 500);    // Get 500 Monies&lt;br /&gt;
     &lt;br /&gt;
     MyGameObject mgo = new MyGameObject();&lt;br /&gt;
     mgo.GiveMyGameCarbon();                      // Get 1 Carbon&lt;br /&gt;
 &lt;br /&gt;
     Score.IncurDamageCost(100);                  // On CashOut, Money = Max (Money - DamageCosts, 0)&lt;br /&gt;
 &lt;br /&gt;
     int HowMuchMoneyIHave = Score.QueryResource(ColonyResources.Money);&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   public void DisplayTheScore()&lt;br /&gt;
   {&lt;br /&gt;
     bool playerWonTheMinigame = true;            // Can be set to false if the player lost&lt;br /&gt;
     Score.Display(playerWonTheMinigame );        // Displays a copy of the current score and a message for succses/failure&lt;br /&gt;
     Score.CashOut();                             // Transfers resources from MyGame to the Colony Simulator&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   // ...&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 class MyGameObject : Entity&lt;br /&gt;
 {&lt;br /&gt;
   public void GiveMyGameCarbon()&lt;br /&gt;
   {&lt;br /&gt;
     ColonyBaseApplication.MiniGame.Score.Gather(ColonyResources.Carbon, 1);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Write to the Experimental Log==&lt;br /&gt;
&lt;br /&gt;
As the game runs, certain actions are recorded and written to a file (Autism Collaborative\Game\Game\bin\x86\Debug\ExperimentalLog.txt or the corresponding Release folder). In the lab, these codes are also sent through the parallel port to sync the EEG data. Every action that pertains to an experiment must be logged in order to be analyzed (that&amp;#039;s kind of the whole point of this game!).&lt;br /&gt;
&lt;br /&gt;
First define the necessary game codes.&lt;br /&gt;
&lt;br /&gt;
* Open Logger.cs&lt;br /&gt;
* Add up to 253 codes to public enum ExperimentalCode&lt;br /&gt;
** All codes must start with a unique &amp;quot;code identifier&amp;quot;, an underscore, and then a descriptor in UpperCamelCase&lt;br /&gt;
*** For minigames, the code identifier is 2 letters&lt;br /&gt;
** 3 codes are reserved for special parallel port functions with the software that runs the EEG machines used in lab tests&lt;br /&gt;
&lt;br /&gt;
Now those codes are available for logging. Like so:&lt;br /&gt;
&lt;br /&gt;
 Logger.LogCode(Logger.ExperimentalCode.XX_Descriptor);&lt;br /&gt;
&lt;br /&gt;
It is also possible to tell the logger to log a code every time a specific key is pressed:&lt;br /&gt;
&lt;br /&gt;
 InputState.Encode(Keys.A, InputState.KeyState.Down, Logger.ExperimentalCode.DEBUG_DudeJustPushedA);&lt;br /&gt;
&lt;br /&gt;
Each minigame should remove the encodings when it is done, but it is also a good idea to decode the keys at the start of each minigame just in case. &lt;br /&gt;
&lt;br /&gt;
 InputState.Encode(Keys.A, InputState.KeyState.Down);&lt;br /&gt;
 InputState.DecodeAll();&lt;br /&gt;
&lt;br /&gt;
Every minigame should also start with its GameBegin and end with its GameEnd[Success/Failure] codes.&lt;br /&gt;
&lt;br /&gt;
It may be helpful to log events for debugging purposes. These codes have the identifier &amp;quot;DEBUG&amp;quot; and will not be logged unless the game is running in Debug mode. All new DEBUG tags must be explicitly assigned a value less than 0.&lt;br /&gt;
&lt;br /&gt;
==Use the Game Script==&lt;br /&gt;
&lt;br /&gt;
The tAC_Engine houses a [[http://www.lua.org/ Lua]] Virtual Machine. This can be used to tweak global parameters at runtime, load them from config files, drive cutscenes, or even save and load levels.&lt;br /&gt;
&lt;br /&gt;
Function callbacks are defined in C# and then invoked from a Lua file or the in-game Debug console. In other words, C# tells Lua &amp;quot;you may use these functions: X,Y,...&amp;quot; and then Lua says &amp;quot;do X, do Y, etc.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Here are a couple of ways to leverage this system:&lt;br /&gt;
&lt;br /&gt;
===Make a Cutscene===&lt;br /&gt;
&lt;br /&gt;
* Create a new lua file in the Scripts directory&lt;br /&gt;
** That file can call any registered function callbacks&lt;br /&gt;
* In the Properties window, set Copy to Output Directory to Copy if Newer&lt;br /&gt;
* Call that cutscene with:&lt;br /&gt;
 GenericBaseApplication.GameManager.PlayCutscene(@&amp;quot;Scripts\MyCutscene.lua&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
===To Register a Function Callback===&lt;br /&gt;
&lt;br /&gt;
* Create the function in C# (if the function does not already exist)&lt;br /&gt;
** It must be declared public and non-static&lt;br /&gt;
** If the need arises to register a static function, declare an instanced function in GenericLuaHelper or ColonyLuaHelper that simply calls the static function.&lt;br /&gt;
* Register the function with the Lua Virtual Machine&lt;br /&gt;
** Add the special LuaCallback annotation to the function&lt;br /&gt;
* Call the RegisterLuaCallbacks function in the class&amp;#039;s constructor that contains the function.&lt;br /&gt;
* Example:&lt;br /&gt;
 public MyClass()&lt;br /&gt;
 {  // Constructor&lt;br /&gt;
   LuaHelper.RegisterLuaCallbacks(this);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 [LuaCallback(&amp;quot;SetMyVariable&amp;quot;)]&lt;br /&gt;
 public int SetMyVariable(int value)&lt;br /&gt;
 {&lt;br /&gt;
   mMyVariable = value;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Tweak Game Parameters===&lt;br /&gt;
&lt;br /&gt;
Exposing a variable to the Lua Virtual Machine allows it to be accessed by a any script (including config files) or changed at runtime in the drop down console (accessible in Debug mode by hitting &amp;quot;~&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
* Expose a variable with a global setter/getter with a LuaCallback annotation&lt;br /&gt;
** Make sure to call the RegisterLuaCallbacks function in that class&amp;#039;s constructor if the getter/setter is not in the Game Manager&lt;br /&gt;
* Set the default value for the variable in the config file (optional)&lt;br /&gt;
** There are 3 config files for the 3 configurations of the game builds&lt;br /&gt;
*** Debug.conf, for development&lt;br /&gt;
*** StandardRelease.conf, for public releases of the game&lt;br /&gt;
*** LabRelease.conf, for use in the lab&lt;br /&gt;
&lt;br /&gt;
===Create Local Settings===&lt;br /&gt;
&lt;br /&gt;
Programmers may want to change certain properties on their machines without affecting the source-controlled code. They could change the resolution, sound settings, or even have the game bypass the regular startup sequence and launch right into the middle of a MiniGame all with no effect on other developers.&lt;br /&gt;
&lt;br /&gt;
* Create a new file: Autism Collaborative\Game\Game\Scripts\LocalSettings.lua&lt;br /&gt;
** The Visual Studio project already has this file included, but VS won&amp;#039;t be able to edit it until the file is created manually&lt;br /&gt;
* Add Lua commands and save the file&lt;br /&gt;
** Visual Studio can now be used to edit the file&lt;br /&gt;
* The file is run at the end of the Debug.conf script (if it exists)&lt;br /&gt;
** That means that this script is only run in Debug mode&lt;br /&gt;
* do &amp;#039;&amp;#039;&amp;#039;NOT&amp;#039;&amp;#039;&amp;#039; add LocalSettings.lua to source control!&lt;br /&gt;
&lt;br /&gt;
===Creating Scripts in C# Code===&lt;br /&gt;
&lt;br /&gt;
Alternatively, scripts can created using C# code rather than Lua. A C# script either be object oriented or imperative. They are able to both take in objects and return values. The CSharpHelper class can be called to run these scripts using it&amp;#039;s DoSimpleFile method. This will simply run all the code in the script. The value of this is that commonly edited code, such as configuration files, can be saved in a convenient separate location. The methods for CSharpHelper are well documented within the file itself. An example of a basic call to a C# sharp script is as follows:&lt;br /&gt;
&lt;br /&gt;
 CSharpHelper.doSimpleFile(Environment.CurrentDirectory + @&amp;quot;\Configs\Debug.confcss&amp;quot;, this, &amp;quot;game&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
This starts a C# file called &amp;quot;Debug.confcss&amp;quot; which is located in the Configs directory. The second parameter is a Game object. The object passed in can be of any type. The third parameter is the identifier of the object within the script. In this case the identifier is &amp;quot;game&amp;quot;. This means that inside the script, lines such as:&lt;br /&gt;
&lt;br /&gt;
 game.Update();&lt;br /&gt;
&lt;br /&gt;
while execute the passed in object&amp;#039;s update function.&lt;br /&gt;
&lt;br /&gt;
==Run the Game in the Lab==&lt;br /&gt;
&lt;br /&gt;
To enable the features necessary to run the game in the lab, the file conlab.tac must exist next to the game&amp;#039;s executable.&lt;br /&gt;
&lt;br /&gt;
From visual studio:&lt;br /&gt;
* Change the configuration to &amp;quot;ReleaseLab&amp;quot;&lt;br /&gt;
* Build the solution&lt;br /&gt;
From a public release of the game:&lt;br /&gt;
* Find &amp;quot;constd.tac,&amp;quot; the standard encrypted config file&lt;br /&gt;
* Copy &amp;quot;conlab.tac&amp;quot; to the same directory&lt;br /&gt;
** Autism Collaborative\Game\Game\bin\x86\Laboratory\conlab.tac is generated when the game is compiled&lt;br /&gt;
** If the game finds conlab, it assumes it is in the lab and uses that config file&lt;br /&gt;
** If conlab is not present, it assumes it is not in the lab and uses constd.tac as the config file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Publish the Installer==&lt;br /&gt;
&lt;br /&gt;
===Create the Installer===&lt;br /&gt;
&lt;br /&gt;
We use InnoSetup to create the installer. Checkout their website (http://www.jrsoftware.org/isinfo.php) if you need to change the script, but simply publishing the game does not require any adjustment to the installer script.&lt;br /&gt;
&lt;br /&gt;
* Install InnoSetup if necessary&lt;br /&gt;
** Run Autism Collaborative\Utilities\Installer Installer\isetup-5.2.2.exe&lt;br /&gt;
* Compile the game&lt;br /&gt;
** In the second menu bar (immediately below the top menu bar) within Visual Studio, change &amp;quot;Debug&amp;quot; to &amp;quot;ReleasePub&amp;quot; or &amp;quot;ReleaseLab&amp;quot;.  (In the box to the right, leave the default &amp;quot;Mixed Platforms&amp;quot;.)  &lt;br /&gt;
*** ReleasePub is for our releases to the general public. This will usually be the correct configuration.&lt;br /&gt;
*** ReleaseLab is for builds to be used in the lab. This will create the config file to run the game in &amp;quot;lab mode.&amp;quot; The resulting exe file will actually be the same as ReleasePub, but constd.tac will be replaced with conlab.tac.&lt;br /&gt;
*** Debug mode is used while developing, so do not build the game in debug mode when creating the installer.&lt;br /&gt;
*** For the exact effects of the different build configurations on the game flow, unit stats, etc. see the config files in Autism Collaborative\Game\Game\Configs&lt;br /&gt;
** Goto Build-&amp;gt;Build Solution&lt;br /&gt;
* Compile the installer script&lt;br /&gt;
** Open Autism Collaborative\Game\Game\Installer.iss with InnoSetup&lt;br /&gt;
** Goto Build-&amp;gt;Compile&lt;br /&gt;
** Goto Run-&amp;gt;Run&lt;br /&gt;
*** This creates the file Autism Collaborative\Game\Game\Output\tAC_Installer.exe&lt;br /&gt;
&lt;br /&gt;
===Upload the Installer to the Web===&lt;br /&gt;
&lt;br /&gt;
* Get a username/password for autismcollaborative.org from Matthew.&lt;br /&gt;
* Use a secure FTP client to login, such as WinSCP&lt;br /&gt;
** Either download it or run Autism Collaborative\Utilities\WinSCP.exe&lt;br /&gt;
* Login to autismcollaborative.org (port 22)&lt;br /&gt;
* Upload tAC_Installer.exe to your home directory (for example /home/zinsser)&lt;br /&gt;
** Do not overwrite the existing installer (/home/belmonte/autismcollaborative.org/downloads/AstropolisSetup.exe) since that would delete the installer from the website until the new installer finishes uploading (usually over an hour!)&lt;br /&gt;
* Once the upload is complete, enter the command &amp;quot;mv /home/zinsser/tAC_Installer.exe /home/belmonte/autismcollaborative.org/downloads/AstropolisSetup.exe&amp;quot; (you may have to open a terminal first, depending on your SFTP client)&lt;br /&gt;
** In the above command, substitute your username for &amp;quot;zinsser&amp;quot;, but keep &amp;quot;belmonte&amp;quot; as the destination user directory&lt;br /&gt;
** If there is a permissions problem, contact Matthew to make sure your user has permission to the autismcollaborative.org directory!&lt;br /&gt;
&lt;br /&gt;
==Use the ErrorLog==&lt;br /&gt;
&lt;br /&gt;
When the game encounters an Unhandled Exception (like when an end user runs into a bug in our code), useful information is dumped to ErrorLog.txt. The user is encouraged to email that file to us so we can locate the problem they ran into. Although the ErrorLog will tell us what function the program died in, it cannot tell us specifically which line was the culprit (although ErrorLogs created when the game is running in Visual Studio will tell us exactly which line!).&lt;br /&gt;
&lt;br /&gt;
We do, however, have the ability to log any custom information from a MiniGame. This may prove invaluable in debugging based on end-user error reports. All you (the programmer) must do is override the string MiniGame.DebugInfo() function. When ErrorLog.txt is created, it calls that function on the current MiniGame and appends the returned text to the bottom of the file.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Code_How_To%27s&amp;diff=304</id>
		<title>Code How To&#039;s</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Code_How_To%27s&amp;diff=304"/>
				<updated>2008-07-03T23:26:35Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: /* Import a new Sound */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides tutorials for some of the most common actions a programmer may wish to implement. It may helpful to read the [[Code Overview]] first.&lt;br /&gt;
&lt;br /&gt;
==Submit a Bug or Other Issue==&lt;br /&gt;
&lt;br /&gt;
* Go to http://www.AutismCollaborative.org/bugs/&lt;br /&gt;
* Fill out the fields that apply to this issue&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type of Bug:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Functional Problem&lt;br /&gt;
** Any actual &amp;quot;Bug&amp;quot;&lt;br /&gt;
* Suggestion&lt;br /&gt;
** A possible change to the game that may improve it&lt;br /&gt;
* New Feature&lt;br /&gt;
** Something that &amp;#039;&amp;#039;&amp;#039;absolutely must&amp;#039;&amp;#039;&amp;#039; be implemented&lt;br /&gt;
** Use sparingly; make sure it&amp;#039;s not actually a Suggestion&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Severity:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* How much this issue affects the game/application&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Priority:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* How soon the issue should be resolved (relative to other issues)&lt;br /&gt;
* The majority of issues should be Low priority&lt;br /&gt;
* Use High sparingly&lt;br /&gt;
&lt;br /&gt;
==Coding Conventions==&lt;br /&gt;
&lt;br /&gt;
* Place the name of the file, authors, and copyright info at the top of each file&lt;br /&gt;
** Any person who makes significant changes to a file should add their name to the list of authors in a file&lt;br /&gt;
*** This helps anyone reading the code because they know who to ask if they have a question about something&lt;br /&gt;
* All private and protected class member variables are lowerCamelCase&lt;br /&gt;
* Private/protected class member variables are preceded with &amp;quot;m&amp;quot; (ie mLocalVariable)&lt;br /&gt;
* All functions, properties (sometimes called &amp;quot;smart fields&amp;quot;), and public class variables are UpperCamelCase&lt;br /&gt;
* Public variables should only be used with small classes that are only used by one or two other classes&lt;br /&gt;
* This code is intended to be viewed by many people who do not have strong programming backgrounds, therefore documentation is &amp;#039;&amp;#039;&amp;#039;very&amp;#039;&amp;#039;&amp;#039; important&lt;br /&gt;
** Document the purpose of each class&amp;#039;s member variables, either next to their declaration or as a summary for their property accessor&lt;br /&gt;
** Create a summary documentation block for every function unless it is extremely obvious&lt;br /&gt;
*** This can be done by placing the cursor above a function definition and typing &amp;quot;///&amp;quot;&lt;br /&gt;
*** This block shows up in Intellisense when writing that function in code&lt;br /&gt;
** Add a summary to any properties that are possibly confusing or not straightforward &lt;br /&gt;
** Document every step of each algorithm (except for very obvious function calls like ResetSettings();)&lt;br /&gt;
*** Someone should be able to read only the comments in a function and still understand what it does&lt;br /&gt;
** See MeteorMadness.cs for an example of the appropriate level of documentation&lt;br /&gt;
* See the Load a Texture section for naming conventions of texture assets&lt;br /&gt;
&lt;br /&gt;
==Create a New Minigame==&lt;br /&gt;
&lt;br /&gt;
* Declare the class&lt;br /&gt;
** Create a new folder under ColonySimulator&lt;br /&gt;
** Create a new file in that folder named NewMinigame.cs where NewGame is the name of the new minigame&lt;br /&gt;
** Place all new minigame-specific classes in that folder&lt;br /&gt;
** Have the class derive from GameScreen&lt;br /&gt;
 class NewGame : Gamescreen {...}&lt;br /&gt;
* Implement the Constructor&lt;br /&gt;
** Initialize game variables&lt;br /&gt;
** Declare a ScoreCard (see Scoring tutorial)&lt;br /&gt;
** Log the GameBegin code (see the Logging tutorial)&lt;br /&gt;
* Implement Update()&lt;br /&gt;
 public override void Update(GameTime gameTime){...}&lt;br /&gt;
** Do not assume a constant call rate&lt;br /&gt;
*** This function will almost always be called 60 times per second, but that rate may vary depending on CPU load&lt;br /&gt;
*** At the beginning of each cycle, get the time since the last cycle like this:&lt;br /&gt;
**** float dt = gameTime.ElapsedGameTime;&lt;br /&gt;
*** Build the time into all movement and timers, for example:&lt;br /&gt;
 myEntity.LifeSpan -= dt;&lt;br /&gt;
 myEntity.Position += myEntity.Velocity * dt;&lt;br /&gt;
* Implement Draw()&lt;br /&gt;
 public override void Draw(SpriteBatch spriteBatch){...}&lt;br /&gt;
** Be sure to call each entities Draw and Update methods. Optional: Register all entities with the XNA game object.&lt;br /&gt;
This will have XNA automatically call their Draw and Update functions at appropriate times.&lt;br /&gt;
** Consider using a generalized render-queue such as GenericWorldSpace &amp;#039;&amp;#039;&amp;#039;(not-yet-implemented as of Oct 2007)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Use the Raise function to place the minigame gamescreen on the stack based game system.&lt;br /&gt;
* End the game using Done function. This will pop it off the game stack, returning the state of the game to the previous state.&lt;br /&gt;
** Flush the particle system (see the particles tutorial) if any emitters were created&lt;br /&gt;
** Log the GameEndSuccess/GameEndFailure code&lt;br /&gt;
** Show the score&lt;br /&gt;
&lt;br /&gt;
==Use Images==&lt;br /&gt;
&lt;br /&gt;
XNA supports most common types of images, including JPEG, GIF, DDS, etc.&lt;br /&gt;
&lt;br /&gt;
===Load a Texture===&lt;br /&gt;
&lt;br /&gt;
But before you can load a texture in code you must add it to the content pipeline:&lt;br /&gt;
&lt;br /&gt;
* Import the content into the project&lt;br /&gt;
** Browse to the appropriate folder in Visual Studio&amp;#039;s Solution Explorer&lt;br /&gt;
*** For example, Content\MiniGames\MyImage.png&lt;br /&gt;
** Right click on that folder and select Add-&amp;gt;Existing Item&lt;br /&gt;
** Select the image to import&lt;br /&gt;
&lt;br /&gt;
Once that&amp;#039;s done, you can load it memory with the XNA content manager:&lt;br /&gt;
&lt;br /&gt;
 Texture2D myTexture = Content.Load(@&amp;quot;General\myTexture&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
The XNA content manager defaults to the content folder of the project, so all addresses can be relative from there. Also, the name of the image should be the same as the asset name. This can be set in the properties window. &lt;br /&gt;
&lt;br /&gt;
===Display a Static Image===&lt;br /&gt;
&lt;br /&gt;
Before manually drawing something to screen consider using some type of game object, be it an Entity, HUD element, or even a Ticker (see the tutorials below). Game objects all know how to draw themselves, so it is unlikely that a minigame will need to draw something directly to the screen. Should the need arise, however, here&amp;#039;s how it&amp;#039;s done:&lt;br /&gt;
&lt;br /&gt;
* Load it in code:&lt;br /&gt;
 GraphicsDeviceManager gdm = ...;    // This is declared in GenericGameManager.cs&lt;br /&gt;
 ConentManager cm = ...;             // Usually a parameter, as in Update(ContentManager content)&lt;br /&gt;
 SpriteBatch sb = new SpriteBatch(gdm.GraphicsDevice);                     // Basically a wrapper for a DirectX render target&lt;br /&gt;
 Texture2D texture = TextureManager.Load(@&amp;quot;Content\General\myTexture&amp;quot;);&lt;br /&gt;
 Rectangle destination = ...;        // Display destination&lt;br /&gt;
 Color tint = Color.White;           // Tint the image with this color&lt;br /&gt;
 float rotation = 0f;                // Rotation (in radians)&lt;br /&gt;
 Vector2 center = new Vector2(texture.Width / 2f, texture.Height / 2f);         // Origin of rotation&lt;br /&gt;
 float zDepth = 1f;                  // Order to draw sprites within this spritebatch&lt;br /&gt;
 &lt;br /&gt;
 sb.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.BackToFront, SaveStateMode.SaveState);&lt;br /&gt;
 &lt;br /&gt;
 sb.Draw(&lt;br /&gt;
   texture,&lt;br /&gt;
   destination ,&lt;br /&gt;
   null,               // What part of the source image to sample from--null tells it to use the whole image&lt;br /&gt;
   tint ,&lt;br /&gt;
   rotation,&lt;br /&gt;
   center,&lt;br /&gt;
   SpriteEffects.None, // How to mirror the image&lt;br /&gt;
   zDepth &lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 sb.End();&lt;br /&gt;
&lt;br /&gt;
===Display an Animation===&lt;br /&gt;
&lt;br /&gt;
Animations are created using the AnimatedSprite class. Here&amp;#039;s an example:&lt;br /&gt;
&lt;br /&gt;
 //Declare Animated Sprite&lt;br /&gt;
 //Parameters: Game object, SpriteSheet as a Texture2D object, Position as Vector2, FrameSize as Vector2, Number of Frames&lt;br /&gt;
 AnimatedSprite testAnimation = new AnimatedSprite(this, Content.Load&amp;lt;Texture2D&amp;gt;(&amp;quot;TestSpriteSheet&amp;quot;), new Vector2(200, 300), new Vector2(64, 64), 16);&lt;br /&gt;
 //Pass a reference to the SpriteBatch that the AnimatedSprite will use&lt;br /&gt;
 testAnimation.SpriteBatch = spriteBatch;&lt;br /&gt;
 //Turn on the Animation&lt;br /&gt;
 testAnimation.Animate(true);&lt;br /&gt;
 //Turn off the Animation&lt;br /&gt;
 testAnimation.Animate(false);&lt;br /&gt;
&lt;br /&gt;
*Do not forget to call the draw and update methods of the AnimatedSprite explicitly, or to add them to the XNA game.components array so to allow XNA to call them.&lt;br /&gt;
&lt;br /&gt;
==Create a New Type of Game Object==&lt;br /&gt;
&lt;br /&gt;
All specific game objects (players, enemies, collectibles, projectiles, etc.) should derive from Entity. This gives them easy ways to draw themselves, move, collide with other entities, and be passed to many tAC_Engine functions.&lt;br /&gt;
&lt;br /&gt;
==Get User Input==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DO NOT&amp;#039;&amp;#039;&amp;#039; use the standard XNA keyboard accessors (Xna.Framework.Input.KeyboardState or Xna.Framework.Input.Keyboard) or mouse accessors (Xna.Framework.Input.MouseState) because tAC_Engine does a lot of caching and logging behind the scenes. Use tAC_Engine.InputState instead.&lt;br /&gt;
&lt;br /&gt;
===Keyboard===&lt;br /&gt;
&lt;br /&gt;
 if (InputState.IsKeyDown(Keys.A))&lt;br /&gt;
 {&lt;br /&gt;
   // The A key was pressed&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Mouse===&lt;br /&gt;
&lt;br /&gt;
 if (InputState.IsMouseLeftUp &amp;amp;&amp;amp; InputState.WasMouseLeftDown)&lt;br /&gt;
 {&lt;br /&gt;
  // The mouse was just clicked (clicks are typically registered on the release, not the initial press)&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Vector2 location = InputState.MouseLocation;&lt;br /&gt;
&lt;br /&gt;
==Manage a Heads Up Display==&lt;br /&gt;
&lt;br /&gt;
Use the HUD class for any HUD element (like health bars, menu buttons, etc.). Typically, you&amp;#039;ll want to create a class that inherits from Widget2D. See MeteorWidgets.cs for examples.&lt;br /&gt;
&lt;br /&gt;
==Display Text or Icons with the Ticker==&lt;br /&gt;
&lt;br /&gt;
 string text = &amp;quot;w00t.&amp;quot;;                      // Text to display (can be &amp;quot;&amp;quot;)&lt;br /&gt;
 Texture2D image = null;                     // Can also be set to an image&lt;br /&gt;
 Vector2 imageSize = new Vector2(25f, 25f);  // Size of the (optional) icon&lt;br /&gt;
 Vector2 offset = new Vector2(700f, 50f);    // This will display the ticker 700 pixels to the right of the screen&amp;#039;s &lt;br /&gt;
                                             //   center and 50 pixels below the screen&amp;#039;s center&lt;br /&gt;
 Vector2 velocity = new Vector2 (-10f, 0f);  // Move left 10 pixels per second&lt;br /&gt;
 Ticker.Font font = Ticker.Font.Standard;    // Regular text&lt;br /&gt;
 Color color = Color.DeepPink;               // The manliest of colors&lt;br /&gt;
 float opacity = .5f;                        // 50% transparent&lt;br /&gt;
 float seconds = 5f;                         // Disappear after 5 seconds&lt;br /&gt;
 bool fade = true;                           // Fade in and fade out&lt;br /&gt;
 &lt;br /&gt;
 Ticker.Display(text, image, imageSize, offset, velocity, font, color, opacity, seconds, fade);&lt;br /&gt;
&lt;br /&gt;
==Display Text Manually==&lt;br /&gt;
&lt;br /&gt;
Most text displayed should be done using the Ticker, but if you really want to display text manually use the Nuclex font library (XNA now supports text, so the Nuclex library may eventually be removed). First you must import the desired font:&lt;br /&gt;
&lt;br /&gt;
* Create an xml file for the new font called FontName.tffimport that looks like this:&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;TrueTypeImport&amp;gt;&lt;br /&gt;
   &amp;lt;Path&amp;gt;Content\Fonts\MercuryII.ttf&amp;lt;/Path&amp;gt;&lt;br /&gt;
   &amp;lt;Size&amp;gt;32&amp;lt;/Size&amp;gt;&lt;br /&gt;
 &amp;lt;/TrueTypeImport&amp;gt;&lt;br /&gt;
* Put the font (FontName.ttf) and FontName.tffimport in the Content\Fonts directory&lt;br /&gt;
* Set the following properties for FontName.ttf&lt;br /&gt;
** Build Action: None&lt;br /&gt;
** Copy to Output Directory: Copy if newer&lt;br /&gt;
** File Name: MercuryII.ttf&lt;br /&gt;
* Set the following properties for FontName.tffimport&lt;br /&gt;
** Build Action: Content&lt;br /&gt;
** Content Importer: TrueTypeFont - XNA Framework&lt;br /&gt;
** Content Processor: Bitmap Font - XNA Framework&lt;br /&gt;
** Copy to Output Directory: Do not copy&lt;br /&gt;
** XNA Framework Content: True&lt;br /&gt;
&lt;br /&gt;
Now for the code:&lt;br /&gt;
&lt;br /&gt;
 ContentManager cm = ...;&lt;br /&gt;
 SpriteBatch sb = ...;&lt;br /&gt;
 BitmapFont bmf = cm.Load&amp;lt;BitmapFont&amp;gt;(@&amp;quot;Content\Fonts\Arial&amp;quot;);&lt;br /&gt;
 sb.Begin(SpriteBlendMode.AlphaBlend);&lt;br /&gt;
 bmf.DrawString(new Vector2(10.0F, 10.0F), &amp;quot;Manual Text!&amp;quot;, Color.Azure);&lt;br /&gt;
 sb.End();&lt;br /&gt;
&lt;br /&gt;
==Use Sound==&lt;br /&gt;
&lt;br /&gt;
===Import a new Sound===&lt;br /&gt;
&lt;br /&gt;
* Run Autism Collaborative\Utilities\XACT\Xact.exe&lt;br /&gt;
** This is the XACT tool from Microsoft DirectX SDK August 2006&lt;br /&gt;
** If--after following the steps in this tutorial--playing a file in code throws an exception about using the wrong version of XACT, try using Xact.exe from a different SDK build&lt;br /&gt;
* Open AudioProject.xap file for the Minigame you wish to add a sound to.&lt;br /&gt;
* Expand Wave Banks and double click Wave Bank in the panel on the left&lt;br /&gt;
* Expand Sound Banks and double click Sound Bank in the panel on the left&lt;br /&gt;
* Go to Wave Banks-&amp;gt;Insert Wave File(s)...&lt;br /&gt;
* Select the file to import i.e.&amp;quot;@/MiniGame/Content/Sounds/MySound.wav&amp;quot; and click OK.&lt;br /&gt;
* Drag the newly-added file to the Cue Name section in the Sound Bank:Sound Bank window&lt;br /&gt;
* Go to File-&amp;gt;Build&lt;br /&gt;
* Save and close XACT&lt;br /&gt;
* Open game.sln with Visual Studio&lt;br /&gt;
* Browse to the Content\Sounds folder in the Solution Explorer&lt;br /&gt;
* Right click the Sounds folder and select Add-&amp;gt;Existing Item...&lt;br /&gt;
* Select &amp;quot;MySound.wav&amp;quot; and click OK&lt;br /&gt;
&lt;br /&gt;
===Play a Sound===&lt;br /&gt;
&lt;br /&gt;
 Sound.Play(&amp;quot;MySound&amp;quot;); // No file extension&lt;br /&gt;
&lt;br /&gt;
==Use the Particle Engine==&lt;br /&gt;
&lt;br /&gt;
Particles are handled by the TACParticleEngine, a separate library that uses the AC_GraphicsEngine that has been modified to better fit the needs of the Autism Game. Features are added to it on an as-needed basis so if a new feature needs to be added and any problems arise in its integration into the current particle engine contact Brian Murphy.&lt;br /&gt;
&lt;br /&gt;
Quick layout of TACParticleEngine:&lt;br /&gt;
&lt;br /&gt;
 The ParticleManager contains references to all loaded ParticleEngines.&lt;br /&gt;
 ParticleEngines contain a series of Emitters.&lt;br /&gt;
 Emitters contain a heap of Particles, which are the objects that actually get drawn.&lt;br /&gt;
&lt;br /&gt;
Particle Effects are imported via its own unique pipeline using the existing XNA framework, so they can be called in a similar manner:&lt;br /&gt;
&lt;br /&gt;
Make sure to include these packages so that we can create and access our particle engine objects:&lt;br /&gt;
&lt;br /&gt;
 using TACParticleEngine;&lt;br /&gt;
 using TACParticleEngine.Particles;&lt;br /&gt;
 &lt;br /&gt;
Inside of the class declaration make these global variables:&lt;br /&gt;
 &lt;br /&gt;
 ParticleManager mParticleManager;&lt;br /&gt;
 ParticleEngine mTestEffect;&lt;br /&gt;
&lt;br /&gt;
Make sure to initialize in the classes initialize method:&lt;br /&gt;
&lt;br /&gt;
 mParticleManager = new ParticleManager(Game); // Initialize the particle manager object with a reference to the current game&lt;br /&gt;
 mTestEffect = mParticleManager.Load(&amp;quot;ParticleEffects/Explosion&amp;quot;); // Load in the given particle effect file by giving the&lt;br /&gt;
                                                                   // location at which it is compiled to&lt;br /&gt;
&lt;br /&gt;
After these three things have been done, you&amp;#039;ll now have an effect loaded into a Particle Engine object via the Particle Manager. However the Particle Engine doesn&amp;#039;t mean anything if it doesn&amp;#039;t do anything so let&amp;#039;s set up the rest of the code we need for updating and drawing:&lt;br /&gt;
&lt;br /&gt;
To get the engine to update, just call&lt;br /&gt;
&lt;br /&gt;
 mParticleManager.Update((float)gameTime.ElapsedGameTime.TotalSeconds);&lt;br /&gt;
&lt;br /&gt;
in the Update(GameTime gameTime) method.&lt;br /&gt;
&lt;br /&gt;
As for drawing, a little more effort is required. First of, since the TACPArticleEngine makes use of the Camera class from the AC_GraphicsEngine, we will need to create and initialize one if we are to render our particles, so let&amp;#039;s get our camera set if it hasn&amp;#039;t been done so before for other drawing.&lt;br /&gt;
&lt;br /&gt;
Add the following line to the list of global variables at the beginning of the class:&lt;br /&gt;
&lt;br /&gt;
 Camera mActiveCamera;&lt;br /&gt;
&lt;br /&gt;
This will be whatever kind of camera we are currently using for drawing in case we may want other cameras for whatever reason.&lt;br /&gt;
&lt;br /&gt;
Next we need to initialize the camera to any specific type of camera that derive from camera. As of now this is limited to FollowCamera, OrthographicCamera, PerspectiveCamera2D, and PerspectiveCamera3D. For now well us a PerspectiveCamera3D as our active camera.&lt;br /&gt;
&lt;br /&gt;
 mActiveCamera = new Perspective3DCamera(new Vector3(0, 0, -5), Vector3.Zero, Vector3.Up, MathHelper.Pi/5, 1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
Now that we have our active camera set, we can now draw by including the following line in the Draw(GameTime gameTime) method:&lt;br /&gt;
&lt;br /&gt;
 mParticleManager.Render(gameTime, mActiveCamera);&lt;br /&gt;
&lt;br /&gt;
*Note that this assumes that the GraphicsDevice.Clear(Color.Black) and base.Draw(gameTime) method calls are also in the method as they are by default.&lt;br /&gt;
&lt;br /&gt;
This will now draw any particles that have been loaded by the Particle Manager and have been set active, however the current particle engine we created has been set active yet so do that now.&lt;br /&gt;
&lt;br /&gt;
This is done by calling the following line whenever you would want drawing of that Particle Engine to occur.&lt;br /&gt;
&lt;br /&gt;
 mTestEffect.SetActive(true);&lt;br /&gt;
&lt;br /&gt;
This particle engine is now active, and if it had been previously active, it&amp;#039;s lifetime would have been reset to 0. Using this call, we can also turn off the particle engine from creating anymore particles by giving it false as its parameter instead.&lt;br /&gt;
&lt;br /&gt;
Besides this method, there are a series of methods that allow us to modify the drawing of the ParticleEngine itself. These are as followed:&lt;br /&gt;
&lt;br /&gt;
 SetEnginePosition(Vector3 Position) // Given a 3D vector, we can move the whole particle engine to the desired position&lt;br /&gt;
&lt;br /&gt;
 SetEngineColor(Vector4 Color) // Given a 4D vector of float values 0-1 in the form of RGBA, we can change the coloring of the whole particle engine&lt;br /&gt;
                               // Keep in mind that this applies that much of the emitters&amp;#039; texture for each value, so a black picture with 1,0,0,1 as&lt;br /&gt;
                               // its value will not be red but still black&lt;br /&gt;
&lt;br /&gt;
 SetEngineSize(Vector2 Size) // Given a 2D vector, we can modify the dimensions of the particle image, this is always 2D since particles in 3D are &lt;br /&gt;
                             // simply billboard sprites&lt;br /&gt;
&lt;br /&gt;
===Create a New Particle Effect===&lt;br /&gt;
&lt;br /&gt;
To make a new effect you will need two things, a new particle file, placed into the appropriate directory, as well as whatever textures are needed in their appropriate directory. Make sure that after the particle file has been created and included into the project that it is set to compile using the particle importer and processor. If these options don&amp;#039;t come up, you probably just need to include a reference to the TACParticleEngine within the projects content folder.&lt;br /&gt;
&lt;br /&gt;
Here is the format of a particle file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;particle&amp;gt; // This declares that we are making a particle effect&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;emitter&amp;gt; // This declares that we are adding a new emitter to our particle effect&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;!--type: point|spline|directional|spray--&amp;gt;&lt;br /&gt;
            &amp;lt;textureName&amp;gt;Textures/SmokeParticle&amp;lt;/textureName&amp;gt; // Directory of the texture the emitter will use&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;blendEffect&amp;gt;AlphaBlend&amp;lt;/blendEffect&amp;gt; // Blend options, typically uses Additive (for fiery effects) &lt;br /&gt;
                                                  // and AlphaBlend (for smokey or piece effects&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;positions&amp;gt;(0,0,50)&amp;lt;/positions&amp;gt; // Default position th emitter appears at. Multiple Positions can be given in the form of&lt;br /&gt;
                                            // (x,y,z)(x,y,z)(x,y,z)..., this will create a spline emitter, which will form a smooth curve&lt;br /&gt;
                                            // using all the given points&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minVel&amp;gt;(0,0,0)&amp;lt;/minVel&amp;gt; // Minimum velocity for particles. If this value is a zero vector and so is the maximum velocity, then&lt;br /&gt;
                                     // this will create either a point or spline emitter, depending on the number of positions given. If this&lt;br /&gt;
                                     // has any values of x, y, or z are &amp;lt; -1 or &amp;gt; 1, then a spray emitter is created, otherwise a directional&lt;br /&gt;
                                     // emitter is created. In either case, the number of positions should be 1.&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxVel&amp;gt;(0,0,0)&amp;lt;/maxVel&amp;gt; // This is the maximum velocity. Used only for spray and directional emitters. For spray emitters, this is&lt;br /&gt;
                                     // the direction in which all particles will move. In the directional emitter, this determines the end range&lt;br /&gt;
                                     // in which particles can move in&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;emitLifetime&amp;gt;0.3&amp;lt;/emitLifetime&amp;gt; // This is how long the emitter exists for in seconds&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;particlesPerSec&amp;gt;50&amp;lt;/particlesPerSec&amp;gt; // This is how many particles will be created every second the emitter is alive&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;particleAmount&amp;gt;20&amp;lt;/particleAmount&amp;gt; // This is the total amount of particles that can exist at any time. In most cases, this number &lt;br /&gt;
                                                // should be slightly over the emitLifetime * particlesPerSec, otherwise effect inconsistencies &lt;br /&gt;
                                                // could result.&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;particleLifetime&amp;gt;3&amp;lt;/particleLifetime&amp;gt; // How long an individual particle is alive for in seconds&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;lifeLengthRandomizer&amp;gt;1&amp;lt;/lifeLengthRandomizer&amp;gt; // This use to randomize the time a particle was alive for, however this has been taken  &lt;br /&gt;
                                                           // out. This will be removed in the future but until then, as with all the other tags, &lt;br /&gt;
                                                           // this tag needs to exist otherwise the particle file won&amp;#039;t compile&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minStartSpeed&amp;gt;0.7&amp;lt;/minStartSpeed&amp;gt; // This is the minimum speed a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxStartSpeed&amp;gt;1&amp;lt;/maxStartSpeed&amp;gt; // This is the maximum speed a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minEndSpeed&amp;gt;0&amp;lt;/minEndSpeed&amp;gt; // This is the minimum speed a particle can end at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxEndSpeed&amp;gt;0&amp;lt;/maxEndSpeed&amp;gt; // This is the maximum speed a particle can end at&lt;br /&gt;
&lt;br /&gt;
            // *Note* currently rotation is not used due to the need to use pixel shader 2.0, which would limit the range of machine this could run &lt;br /&gt;
            // on, or at the least, would result in varied graphics between machines. This can either be fully used if the use of pixel shader 2.0 is &lt;br /&gt;
            // fine, or just scrapped if the use of pixel shader 2.0 seems like at will never happen.&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;startRotationRange&amp;gt;6.28&amp;lt;/startRotationRange&amp;gt; // Range at which a particle can start rotated&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minStartRotSpeed&amp;gt;-1&amp;lt;/minStartRotSpeed&amp;gt; // The minimum speed at which a particle can rotate at start&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxStartRotSpeed&amp;gt;1&amp;lt;/maxStartRotSpeed&amp;gt; // The maximum speed at which a particle can rotate at start&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minEndRotSpeed&amp;gt;0&amp;lt;/minEndRotSpeed&amp;gt; // The minimum speed at which a particle can rotate at end&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxEndRotSpeed&amp;gt;0&amp;lt;/maxEndRotSpeed&amp;gt; // The maximum speed at which a particle can rotate at end&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;!-- (r,g,b,a) range 0.0-1.0 --&amp;gt;&lt;br /&gt;
            &amp;lt;minStartColor&amp;gt;(1,1,1,0.3)&amp;lt;/minStartColor&amp;gt; // The minimum values of RGBA that a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxStartColor&amp;gt;(1,1,1,0.3)&amp;lt;/maxStartColor&amp;gt; // The maximum values of RGBA that a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minEndColor&amp;gt;(1,1,1,0)&amp;lt;/minEndColor&amp;gt; // The minimum values of RGBA that a particle can end at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxEndColor&amp;gt;(1,1,1,0)&amp;lt;/maxEndColor&amp;gt; // The maximum values of RGBA that a particle can end at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;!-- (x,y) --&amp;gt;&lt;br /&gt;
           &amp;lt;minStartSize&amp;gt;(200,200)&amp;lt;/minStartSize&amp;gt; // The minimum size that a particle can start at&lt;br /&gt;
&lt;br /&gt;
           &amp;lt;maxStartSize&amp;gt;(200,200)&amp;lt;/maxStartSize&amp;gt; // The maximum size that a particle can start at&lt;br /&gt;
&lt;br /&gt;
           &amp;lt;minEndSize&amp;gt;(300,300)&amp;lt;/minEndSize&amp;gt; // The minimum size that a particle can end at&lt;br /&gt;
&lt;br /&gt;
           &amp;lt;maxEndSize&amp;gt;(300,300)&amp;lt;/maxEndSize&amp;gt; // The minimum size that a particle can end at&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;/emitter&amp;gt; // Declares that the emitter has been set and is now finished being made&lt;br /&gt;
&lt;br /&gt;
Here&amp;#039;s some additional emitters to just show how multiple emitters in a single effect can be done&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;emitter&amp;gt;&lt;br /&gt;
        &amp;lt;!--type: point|spline|directional|spray--&amp;gt;&lt;br /&gt;
        &amp;lt;textureName&amp;gt;Textures/BasicParticleImage&amp;lt;/textureName&amp;gt;&lt;br /&gt;
        &amp;lt;blendEffect&amp;gt;Additive&amp;lt;/blendEffect&amp;gt;&lt;br /&gt;
        &amp;lt;positions&amp;gt;(0,0,120)&amp;lt;/positions&amp;gt;&lt;br /&gt;
        &amp;lt;minVel&amp;gt;(1.001,1.001,1)&amp;lt;/minVel&amp;gt;&lt;br /&gt;
        &amp;lt;maxVel&amp;gt;(0,0,0)&amp;lt;/maxVel&amp;gt;&lt;br /&gt;
        &amp;lt;emitLifetime&amp;gt;0.3&amp;lt;/emitLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;particlesPerSec&amp;gt;1000&amp;lt;/particlesPerSec&amp;gt;&lt;br /&gt;
        &amp;lt;particleAmount&amp;gt;400&amp;lt;/particleAmount&amp;gt;&lt;br /&gt;
        &amp;lt;particleLifetime&amp;gt;2&amp;lt;/particleLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;lifeLengthRandomizer&amp;gt;1&amp;lt;/lifeLengthRandomizer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;minStartSpeed&amp;gt;2&amp;lt;/minStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSpeed&amp;gt;2&amp;lt;/maxStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSpeed&amp;gt;0&amp;lt;/minEndSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSpeed&amp;gt;0&amp;lt;/maxEndSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;startRotationRange&amp;gt;6.28&amp;lt;/startRotationRange&amp;gt;&lt;br /&gt;
        &amp;lt;minStartRotSpeed&amp;gt;-1&amp;lt;/minStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartRotSpeed&amp;gt;1&amp;lt;/maxStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndRotSpeed&amp;gt;0&amp;lt;/minEndRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndRotSpeed&amp;gt;0&amp;lt;/maxEndRotSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (r,g,b,a) range 0.0-1.0 --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartColor&amp;gt;(1,0,0,0.3)&amp;lt;/minStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartColor&amp;gt;(1,0,0,0.3)&amp;lt;/maxStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;minEndColor&amp;gt;(0,0,0,0)&amp;lt;/minEndColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndColor&amp;gt;(0,0,0,0)&amp;lt;/maxEndColor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (x,y) --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartSize&amp;gt;(1,1)&amp;lt;/minStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSize&amp;gt;(1,1)&amp;lt;/maxStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSize&amp;gt;(0.1,0.1)&amp;lt;/minEndSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSize&amp;gt;(0.1,0.1)&amp;lt;/maxEndSize&amp;gt;&lt;br /&gt;
    &amp;lt;/emitter&amp;gt;&lt;br /&gt;
    &amp;lt;emitter&amp;gt;&lt;br /&gt;
        &amp;lt;!--type: point|spline|directional|spray--&amp;gt;&lt;br /&gt;
        &amp;lt;textureName&amp;gt;Textures/ExplosionParticle&amp;lt;/textureName&amp;gt;&lt;br /&gt;
        &amp;lt;blendEffect&amp;gt;Additive&amp;lt;/blendEffect&amp;gt;&lt;br /&gt;
        &amp;lt;positions&amp;gt;(0,0,60)&amp;lt;/positions&amp;gt;&lt;br /&gt;
        &amp;lt;minVel&amp;gt;(0,0,0)&amp;lt;/minVel&amp;gt;&lt;br /&gt;
        &amp;lt;maxVel&amp;gt;(0,0,0)&amp;lt;/maxVel&amp;gt;&lt;br /&gt;
        &amp;lt;emitLifetime&amp;gt;0.3&amp;lt;/emitLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;particlesPerSec&amp;gt;100&amp;lt;/particlesPerSec&amp;gt;&lt;br /&gt;
        &amp;lt;particleAmount&amp;gt;40&amp;lt;/particleAmount&amp;gt;&lt;br /&gt;
        &amp;lt;particleLifetime&amp;gt;0.3&amp;lt;/particleLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;lifeLengthRandomizer&amp;gt;0.1&amp;lt;/lifeLengthRandomizer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;minStartSpeed&amp;gt;2&amp;lt;/minStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSpeed&amp;gt;2&amp;lt;/maxStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSpeed&amp;gt;0&amp;lt;/minEndSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSpeed&amp;gt;0&amp;lt;/maxEndSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;startRotationRange&amp;gt;6.28&amp;lt;/startRotationRange&amp;gt;&lt;br /&gt;
        &amp;lt;minStartRotSpeed&amp;gt;-1&amp;lt;/minStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartRotSpeed&amp;gt;1&amp;lt;/maxStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndRotSpeed&amp;gt;0&amp;lt;/minEndRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndRotSpeed&amp;gt;0&amp;lt;/maxEndRotSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (r,g,b,a) range 0.0-1.0 --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartColor&amp;gt;(1,1,1,0.7)&amp;lt;/minStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartColor&amp;gt;(1,1,1,0.7)&amp;lt;/maxStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;minEndColor&amp;gt;(1,1,1,0)&amp;lt;/minEndColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndColor&amp;gt;(1,1,1,0)&amp;lt;/maxEndColor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (x,y) --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartSize&amp;gt;(10,10)&amp;lt;/minStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSize&amp;gt;(50,50)&amp;lt;/maxStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSize&amp;gt;(10,10)&amp;lt;/minEndSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSize&amp;gt;(50,50)&amp;lt;/maxEndSize&amp;gt;&lt;br /&gt;
    &amp;lt;/emitter&amp;gt;&lt;br /&gt;
 &amp;lt;/particle&amp;gt; // Declares the end of the particle file&lt;br /&gt;
&lt;br /&gt;
==Keep Score and Give Resources to the Simulator Mode==&lt;br /&gt;
&lt;br /&gt;
Use the ScoreCard class to keep track of the score from a minigame. It provides easy ways to add and subtract resources, as well as an easy way to display them and pass them along to the Colony Simulator.&lt;br /&gt;
&lt;br /&gt;
MiniGame has a ColonyScoreCard built into it, accessible by the Score property. Here are some examples of how to use it:&lt;br /&gt;
&lt;br /&gt;
 class MyGame : MiniGame&lt;br /&gt;
 {&lt;br /&gt;
   public override void Update(ContentManager content)&lt;br /&gt;
   {&lt;br /&gt;
     Score.Gather(ColonyResources.Money, 500);    // Get 500 Monies&lt;br /&gt;
     &lt;br /&gt;
     MyGameObject mgo = new MyGameObject();&lt;br /&gt;
     mgo.GiveMyGameCarbon();                      // Get 1 Carbon&lt;br /&gt;
 &lt;br /&gt;
     Score.IncurDamageCost(100);                  // On CashOut, Money = Max (Money - DamageCosts, 0)&lt;br /&gt;
 &lt;br /&gt;
     int HowMuchMoneyIHave = Score.QueryResource(ColonyResources.Money);&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   public void DisplayTheScore()&lt;br /&gt;
   {&lt;br /&gt;
     bool playerWonTheMinigame = true;            // Can be set to false if the player lost&lt;br /&gt;
     Score.Display(playerWonTheMinigame );        // Displays a copy of the current score and a message for succses/failure&lt;br /&gt;
     Score.CashOut();                             // Transfers resources from MyGame to the Colony Simulator&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   // ...&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 class MyGameObject : Entity&lt;br /&gt;
 {&lt;br /&gt;
   public void GiveMyGameCarbon()&lt;br /&gt;
   {&lt;br /&gt;
     ColonyBaseApplication.MiniGame.Score.Gather(ColonyResources.Carbon, 1);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Write to the Experimental Log==&lt;br /&gt;
&lt;br /&gt;
As the game runs, certain actions are recorded and written to a file (Autism Collaborative\Game\Game\bin\x86\Debug\ExperimentalLog.txt or the corresponding Release folder). In the lab, these codes are also sent through the parallel port to sync the EEG data. Every action that pertains to an experiment must be logged in order to be analyzed (that&amp;#039;s kind of the whole point of this game!).&lt;br /&gt;
&lt;br /&gt;
First define the necessary game codes.&lt;br /&gt;
&lt;br /&gt;
* Open Logger.cs&lt;br /&gt;
* Add up to 253 codes to public enum ExperimentalCode&lt;br /&gt;
** All codes must start with a unique &amp;quot;code identifier&amp;quot;, an underscore, and then a descriptor in UpperCamelCase&lt;br /&gt;
*** For minigames, the code identifier is 2 letters&lt;br /&gt;
** 3 codes are reserved for special parallel port functions with the software that runs the EEG machines used in lab tests&lt;br /&gt;
&lt;br /&gt;
Now those codes are available for logging. Like so:&lt;br /&gt;
&lt;br /&gt;
 Logger.LogCode(Logger.ExperimentalCode.XX_Descriptor);&lt;br /&gt;
&lt;br /&gt;
It is also possible to tell the logger to log a code every time a specific key is pressed:&lt;br /&gt;
&lt;br /&gt;
 InputState.Encode(Keys.A, InputState.KeyState.Down, Logger.ExperimentalCode.DEBUG_DudeJustPushedA);&lt;br /&gt;
&lt;br /&gt;
Each minigame should remove the encodings when it is done, but it is also a good idea to decode the keys at the start of each minigame just in case. &lt;br /&gt;
&lt;br /&gt;
 InputState.Encode(Keys.A, InputState.KeyState.Down);&lt;br /&gt;
 InputState.DecodeAll();&lt;br /&gt;
&lt;br /&gt;
Every minigame should also start with its GameBegin and end with its GameEnd[Success/Failure] codes.&lt;br /&gt;
&lt;br /&gt;
It may be helpful to log events for debugging purposes. These codes have the identifier &amp;quot;DEBUG&amp;quot; and will not be logged unless the game is running in Debug mode. All new DEBUG tags must be explicitly assigned a value less than 0.&lt;br /&gt;
&lt;br /&gt;
==Use the Game Script==&lt;br /&gt;
&lt;br /&gt;
The tAC_Engine houses a [[http://www.lua.org/ Lua]] Virtual Machine. This can be used to tweak global parameters at runtime, load them from config files, drive cutscenes, or even save and load levels.&lt;br /&gt;
&lt;br /&gt;
Function callbacks are defined in C# and then invoked from a Lua file or the in-game Debug console. In other words, C# tells Lua &amp;quot;you may use these functions: X,Y,...&amp;quot; and then Lua says &amp;quot;do X, do Y, etc.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Here are a couple of ways to leverage this system:&lt;br /&gt;
&lt;br /&gt;
===Make a Cutscene===&lt;br /&gt;
&lt;br /&gt;
* Create a new lua file in the Scripts directory&lt;br /&gt;
** That file can call any registered function callbacks&lt;br /&gt;
* In the Properties window, set Copy to Output Directory to Copy if Newer&lt;br /&gt;
* Call that cutscene with:&lt;br /&gt;
 GenericBaseApplication.GameManager.PlayCutscene(@&amp;quot;Scripts\MyCutscene.lua&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
===To Register a Function Callback===&lt;br /&gt;
&lt;br /&gt;
* Create the function in C# (if the function does not already exist)&lt;br /&gt;
** It must be declared public and non-static&lt;br /&gt;
** If the need arises to register a static function, declare an instanced function in GenericLuaHelper or ColonyLuaHelper that simply calls the static function.&lt;br /&gt;
* Register the function with the Lua Virtual Machine&lt;br /&gt;
** Add the special LuaCallback annotation to the function&lt;br /&gt;
* Call the RegisterLuaCallbacks function in the class&amp;#039;s constructor that contains the function.&lt;br /&gt;
* Example:&lt;br /&gt;
 public MyClass()&lt;br /&gt;
 {  // Constructor&lt;br /&gt;
   LuaHelper.RegisterLuaCallbacks(this);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 [LuaCallback(&amp;quot;SetMyVariable&amp;quot;)]&lt;br /&gt;
 public int SetMyVariable(int value)&lt;br /&gt;
 {&lt;br /&gt;
   mMyVariable = value;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Tweak Game Parameters===&lt;br /&gt;
&lt;br /&gt;
Exposing a variable to the Lua Virtual Machine allows it to be accessed by a any script (including config files) or changed at runtime in the drop down console (accessible in Debug mode by hitting &amp;quot;~&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
* Expose a variable with a global setter/getter with a LuaCallback annotation&lt;br /&gt;
** Make sure to call the RegisterLuaCallbacks function in that class&amp;#039;s constructor if the getter/setter is not in the Game Manager&lt;br /&gt;
* Set the default value for the variable in the config file (optional)&lt;br /&gt;
** There are 3 config files for the 3 configurations of the game builds&lt;br /&gt;
*** Debug.conf, for development&lt;br /&gt;
*** StandardRelease.conf, for public releases of the game&lt;br /&gt;
*** LabRelease.conf, for use in the lab&lt;br /&gt;
&lt;br /&gt;
===Create Local Settings===&lt;br /&gt;
&lt;br /&gt;
Programmers may want to change certain properties on their machines without affecting the source-controlled code. They could change the resolution, sound settings, or even have the game bypass the regular startup sequence and launch right into the middle of a MiniGame all with no effect on other developers.&lt;br /&gt;
&lt;br /&gt;
* Create a new file: Autism Collaborative\Game\Game\Scripts\LocalSettings.lua&lt;br /&gt;
** The Visual Studio project already has this file included, but VS won&amp;#039;t be able to edit it until the file is created manually&lt;br /&gt;
* Add Lua commands and save the file&lt;br /&gt;
** Visual Studio can now be used to edit the file&lt;br /&gt;
* The file is run at the end of the Debug.conf script (if it exists)&lt;br /&gt;
** That means that this script is only run in Debug mode&lt;br /&gt;
* do &amp;#039;&amp;#039;&amp;#039;NOT&amp;#039;&amp;#039;&amp;#039; add LocalSettings.lua to source control!&lt;br /&gt;
&lt;br /&gt;
===Creating Scripts in C# Code===&lt;br /&gt;
&lt;br /&gt;
Alternatively, scripts can created using C# code rather than Lua. A C# script either be object oriented or imperative. They are able to both take in objects and return values. The CSharpHelper class can be called to run these scripts using it&amp;#039;s DoSimpleFile method. This will simply run all the code in the script. The value of this is that commonly edited code, such as configuration files, can be saved in a convenient separate location. The methods for CSharpHelper are well documented within the file itself. An example of a basic call to a C# sharp script is as follows:&lt;br /&gt;
&lt;br /&gt;
 CSharpHelper.doSimpleFile(Environment.CurrentDirectory + @&amp;quot;\Configs\Debug.confcss&amp;quot;, this, &amp;quot;game&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
This starts a C# file called &amp;quot;Debug.confcss&amp;quot; which is located in the Configs directory. The second parameter is a Game object. The object passed in can be of any type. The third parameter is the identifier of the object within the script. In this case the identifier is &amp;quot;game&amp;quot;. This means that inside the script, lines such as:&lt;br /&gt;
&lt;br /&gt;
 game.Update();&lt;br /&gt;
&lt;br /&gt;
while execute the passed in object&amp;#039;s update function.&lt;br /&gt;
&lt;br /&gt;
==Run the Game in the Lab==&lt;br /&gt;
&lt;br /&gt;
To enable the features necessary to run the game in the lab, the file conlab.tac must exist next to the game&amp;#039;s executable.&lt;br /&gt;
&lt;br /&gt;
From visual studio:&lt;br /&gt;
* Change the configuration to &amp;quot;ReleaseLab&amp;quot;&lt;br /&gt;
* Build the solution&lt;br /&gt;
From a public release of the game:&lt;br /&gt;
* Find &amp;quot;constd.tac,&amp;quot; the standard encrypted config file&lt;br /&gt;
* Copy &amp;quot;conlab.tac&amp;quot; to the same directory&lt;br /&gt;
** Autism Collaborative\Game\Game\bin\x86\Laboratory\conlab.tac is generated when the game is compiled&lt;br /&gt;
** If the game finds conlab, it assumes it is in the lab and uses that config file&lt;br /&gt;
** If conlab is not present, it assumes it is not in the lab and uses constd.tac as the config file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Publish the Installer==&lt;br /&gt;
&lt;br /&gt;
===Create the Installer===&lt;br /&gt;
&lt;br /&gt;
We use InnoSetup to create the installer. Checkout their website (http://www.jrsoftware.org/isinfo.php) if you need to change the script, but simply publishing the game does not require any adjustment to the installer script.&lt;br /&gt;
&lt;br /&gt;
* Install InnoSetup if necessary&lt;br /&gt;
** Run Autism Collaborative\Utilities\Installer Installer\isetup-5.2.2.exe&lt;br /&gt;
* Compile the game&lt;br /&gt;
** In the second menu bar (immediately below the top menu bar) within Visual Studio, change &amp;quot;Debug&amp;quot; to &amp;quot;ReleasePub&amp;quot; or &amp;quot;ReleaseLab&amp;quot;.  (In the box to the right, leave the default &amp;quot;Mixed Platforms&amp;quot;.)  &lt;br /&gt;
*** ReleasePub is for our releases to the general public. This will usually be the correct configuration.&lt;br /&gt;
*** ReleaseLab is for builds to be used in the lab. This will create the config file to run the game in &amp;quot;lab mode.&amp;quot; The resulting exe file will actually be the same as ReleasePub, but constd.tac will be replaced with conlab.tac.&lt;br /&gt;
*** Debug mode is used while developing, so do not build the game in debug mode when creating the installer.&lt;br /&gt;
*** For the exact effects of the different build configurations on the game flow, unit stats, etc. see the config files in Autism Collaborative\Game\Game\Configs&lt;br /&gt;
** Goto Build-&amp;gt;Build Solution&lt;br /&gt;
* Compile the installer script&lt;br /&gt;
** Open Autism Collaborative\Game\Game\Installer.iss with InnoSetup&lt;br /&gt;
** Goto Build-&amp;gt;Compile&lt;br /&gt;
** Goto Run-&amp;gt;Run&lt;br /&gt;
*** This creates the file Autism Collaborative\Game\Game\Output\tAC_Installer.exe&lt;br /&gt;
&lt;br /&gt;
===Upload the Installer to the Web===&lt;br /&gt;
&lt;br /&gt;
* Get a username/password for autismcollaborative.org from Matthew.&lt;br /&gt;
* Use a secure FTP client to login, such as WinSCP&lt;br /&gt;
** Either download it or run Autism Collaborative\Utilities\WinSCP.exe&lt;br /&gt;
* Login to autismcollaborative.org (port 22)&lt;br /&gt;
* Upload tAC_Installer.exe to your home directory (for example /home/zinsser)&lt;br /&gt;
** Do not overwrite the existing installer (/home/belmonte/autismcollaborative.org/downloads/AstropolisSetup.exe) since that would delete the installer from the website until the new installer finishes uploading (usually over an hour!)&lt;br /&gt;
* Once the upload is complete, enter the command &amp;quot;mv /home/zinsser/tAC_Installer.exe /home/belmonte/autismcollaborative.org/downloads/AstropolisSetup.exe&amp;quot; (you may have to open a terminal first, depending on your SFTP client)&lt;br /&gt;
** In the above command, substitute your username for &amp;quot;zinsser&amp;quot;, but keep &amp;quot;belmonte&amp;quot; as the destination user directory&lt;br /&gt;
** If there is a permissions problem, contact Matthew to make sure your user has permission to the autismcollaborative.org directory!&lt;br /&gt;
&lt;br /&gt;
==Use the ErrorLog==&lt;br /&gt;
&lt;br /&gt;
When the game encounters an Unhandled Exception (like when an end user runs into a bug in our code), useful information is dumped to ErrorLog.txt. The user is encouraged to email that file to us so we can locate the problem they ran into. Although the ErrorLog will tell us what function the program died in, it cannot tell us specifically which line was the culprit (although ErrorLogs created when the game is running in Visual Studio will tell us exactly which line!).&lt;br /&gt;
&lt;br /&gt;
We do, however, have the ability to log any custom information from a MiniGame. This may prove invaluable in debugging based on end-user error reports. All you (the programmer) must do is override the string MiniGame.DebugInfo() function. When ErrorLog.txt is created, it calls that function on the current MiniGame and appends the returned text to the bottom of the file.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Code_How_To%27s&amp;diff=303</id>
		<title>Code How To&#039;s</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Code_How_To%27s&amp;diff=303"/>
				<updated>2008-07-03T23:22:35Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: /* Import a new Sound */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides tutorials for some of the most common actions a programmer may wish to implement. It may helpful to read the [[Code Overview]] first.&lt;br /&gt;
&lt;br /&gt;
==Submit a Bug or Other Issue==&lt;br /&gt;
&lt;br /&gt;
* Go to http://www.AutismCollaborative.org/bugs/&lt;br /&gt;
* Fill out the fields that apply to this issue&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Type of Bug:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Functional Problem&lt;br /&gt;
** Any actual &amp;quot;Bug&amp;quot;&lt;br /&gt;
* Suggestion&lt;br /&gt;
** A possible change to the game that may improve it&lt;br /&gt;
* New Feature&lt;br /&gt;
** Something that &amp;#039;&amp;#039;&amp;#039;absolutely must&amp;#039;&amp;#039;&amp;#039; be implemented&lt;br /&gt;
** Use sparingly; make sure it&amp;#039;s not actually a Suggestion&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Severity:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* How much this issue affects the game/application&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Priority:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* How soon the issue should be resolved (relative to other issues)&lt;br /&gt;
* The majority of issues should be Low priority&lt;br /&gt;
* Use High sparingly&lt;br /&gt;
&lt;br /&gt;
==Coding Conventions==&lt;br /&gt;
&lt;br /&gt;
* Place the name of the file, authors, and copyright info at the top of each file&lt;br /&gt;
** Any person who makes significant changes to a file should add their name to the list of authors in a file&lt;br /&gt;
*** This helps anyone reading the code because they know who to ask if they have a question about something&lt;br /&gt;
* All private and protected class member variables are lowerCamelCase&lt;br /&gt;
* Private/protected class member variables are preceded with &amp;quot;m&amp;quot; (ie mLocalVariable)&lt;br /&gt;
* All functions, properties (sometimes called &amp;quot;smart fields&amp;quot;), and public class variables are UpperCamelCase&lt;br /&gt;
* Public variables should only be used with small classes that are only used by one or two other classes&lt;br /&gt;
* This code is intended to be viewed by many people who do not have strong programming backgrounds, therefore documentation is &amp;#039;&amp;#039;&amp;#039;very&amp;#039;&amp;#039;&amp;#039; important&lt;br /&gt;
** Document the purpose of each class&amp;#039;s member variables, either next to their declaration or as a summary for their property accessor&lt;br /&gt;
** Create a summary documentation block for every function unless it is extremely obvious&lt;br /&gt;
*** This can be done by placing the cursor above a function definition and typing &amp;quot;///&amp;quot;&lt;br /&gt;
*** This block shows up in Intellisense when writing that function in code&lt;br /&gt;
** Add a summary to any properties that are possibly confusing or not straightforward &lt;br /&gt;
** Document every step of each algorithm (except for very obvious function calls like ResetSettings();)&lt;br /&gt;
*** Someone should be able to read only the comments in a function and still understand what it does&lt;br /&gt;
** See MeteorMadness.cs for an example of the appropriate level of documentation&lt;br /&gt;
* See the Load a Texture section for naming conventions of texture assets&lt;br /&gt;
&lt;br /&gt;
==Create a New Minigame==&lt;br /&gt;
&lt;br /&gt;
* Declare the class&lt;br /&gt;
** Create a new folder under ColonySimulator&lt;br /&gt;
** Create a new file in that folder named NewMinigame.cs where NewGame is the name of the new minigame&lt;br /&gt;
** Place all new minigame-specific classes in that folder&lt;br /&gt;
** Have the class derive from GameScreen&lt;br /&gt;
 class NewGame : Gamescreen {...}&lt;br /&gt;
* Implement the Constructor&lt;br /&gt;
** Initialize game variables&lt;br /&gt;
** Declare a ScoreCard (see Scoring tutorial)&lt;br /&gt;
** Log the GameBegin code (see the Logging tutorial)&lt;br /&gt;
* Implement Update()&lt;br /&gt;
 public override void Update(GameTime gameTime){...}&lt;br /&gt;
** Do not assume a constant call rate&lt;br /&gt;
*** This function will almost always be called 60 times per second, but that rate may vary depending on CPU load&lt;br /&gt;
*** At the beginning of each cycle, get the time since the last cycle like this:&lt;br /&gt;
**** float dt = gameTime.ElapsedGameTime;&lt;br /&gt;
*** Build the time into all movement and timers, for example:&lt;br /&gt;
 myEntity.LifeSpan -= dt;&lt;br /&gt;
 myEntity.Position += myEntity.Velocity * dt;&lt;br /&gt;
* Implement Draw()&lt;br /&gt;
 public override void Draw(SpriteBatch spriteBatch){...}&lt;br /&gt;
** Be sure to call each entities Draw and Update methods. Optional: Register all entities with the XNA game object.&lt;br /&gt;
This will have XNA automatically call their Draw and Update functions at appropriate times.&lt;br /&gt;
** Consider using a generalized render-queue such as GenericWorldSpace &amp;#039;&amp;#039;&amp;#039;(not-yet-implemented as of Oct 2007)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Use the Raise function to place the minigame gamescreen on the stack based game system.&lt;br /&gt;
* End the game using Done function. This will pop it off the game stack, returning the state of the game to the previous state.&lt;br /&gt;
** Flush the particle system (see the particles tutorial) if any emitters were created&lt;br /&gt;
** Log the GameEndSuccess/GameEndFailure code&lt;br /&gt;
** Show the score&lt;br /&gt;
&lt;br /&gt;
==Use Images==&lt;br /&gt;
&lt;br /&gt;
XNA supports most common types of images, including JPEG, GIF, DDS, etc.&lt;br /&gt;
&lt;br /&gt;
===Load a Texture===&lt;br /&gt;
&lt;br /&gt;
But before you can load a texture in code you must add it to the content pipeline:&lt;br /&gt;
&lt;br /&gt;
* Import the content into the project&lt;br /&gt;
** Browse to the appropriate folder in Visual Studio&amp;#039;s Solution Explorer&lt;br /&gt;
*** For example, Content\MiniGames\MyImage.png&lt;br /&gt;
** Right click on that folder and select Add-&amp;gt;Existing Item&lt;br /&gt;
** Select the image to import&lt;br /&gt;
&lt;br /&gt;
Once that&amp;#039;s done, you can load it memory with the XNA content manager:&lt;br /&gt;
&lt;br /&gt;
 Texture2D myTexture = Content.Load(@&amp;quot;General\myTexture&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
The XNA content manager defaults to the content folder of the project, so all addresses can be relative from there. Also, the name of the image should be the same as the asset name. This can be set in the properties window. &lt;br /&gt;
&lt;br /&gt;
===Display a Static Image===&lt;br /&gt;
&lt;br /&gt;
Before manually drawing something to screen consider using some type of game object, be it an Entity, HUD element, or even a Ticker (see the tutorials below). Game objects all know how to draw themselves, so it is unlikely that a minigame will need to draw something directly to the screen. Should the need arise, however, here&amp;#039;s how it&amp;#039;s done:&lt;br /&gt;
&lt;br /&gt;
* Load it in code:&lt;br /&gt;
 GraphicsDeviceManager gdm = ...;    // This is declared in GenericGameManager.cs&lt;br /&gt;
 ConentManager cm = ...;             // Usually a parameter, as in Update(ContentManager content)&lt;br /&gt;
 SpriteBatch sb = new SpriteBatch(gdm.GraphicsDevice);                     // Basically a wrapper for a DirectX render target&lt;br /&gt;
 Texture2D texture = TextureManager.Load(@&amp;quot;Content\General\myTexture&amp;quot;);&lt;br /&gt;
 Rectangle destination = ...;        // Display destination&lt;br /&gt;
 Color tint = Color.White;           // Tint the image with this color&lt;br /&gt;
 float rotation = 0f;                // Rotation (in radians)&lt;br /&gt;
 Vector2 center = new Vector2(texture.Width / 2f, texture.Height / 2f);         // Origin of rotation&lt;br /&gt;
 float zDepth = 1f;                  // Order to draw sprites within this spritebatch&lt;br /&gt;
 &lt;br /&gt;
 sb.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.BackToFront, SaveStateMode.SaveState);&lt;br /&gt;
 &lt;br /&gt;
 sb.Draw(&lt;br /&gt;
   texture,&lt;br /&gt;
   destination ,&lt;br /&gt;
   null,               // What part of the source image to sample from--null tells it to use the whole image&lt;br /&gt;
   tint ,&lt;br /&gt;
   rotation,&lt;br /&gt;
   center,&lt;br /&gt;
   SpriteEffects.None, // How to mirror the image&lt;br /&gt;
   zDepth &lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 sb.End();&lt;br /&gt;
&lt;br /&gt;
===Display an Animation===&lt;br /&gt;
&lt;br /&gt;
Animations are created using the AnimatedSprite class. Here&amp;#039;s an example:&lt;br /&gt;
&lt;br /&gt;
 //Declare Animated Sprite&lt;br /&gt;
 //Parameters: Game object, SpriteSheet as a Texture2D object, Position as Vector2, FrameSize as Vector2, Number of Frames&lt;br /&gt;
 AnimatedSprite testAnimation = new AnimatedSprite(this, Content.Load&amp;lt;Texture2D&amp;gt;(&amp;quot;TestSpriteSheet&amp;quot;), new Vector2(200, 300), new Vector2(64, 64), 16);&lt;br /&gt;
 //Pass a reference to the SpriteBatch that the AnimatedSprite will use&lt;br /&gt;
 testAnimation.SpriteBatch = spriteBatch;&lt;br /&gt;
 //Turn on the Animation&lt;br /&gt;
 testAnimation.Animate(true);&lt;br /&gt;
 //Turn off the Animation&lt;br /&gt;
 testAnimation.Animate(false);&lt;br /&gt;
&lt;br /&gt;
*Do not forget to call the draw and update methods of the AnimatedSprite explicitly, or to add them to the XNA game.components array so to allow XNA to call them.&lt;br /&gt;
&lt;br /&gt;
==Create a New Type of Game Object==&lt;br /&gt;
&lt;br /&gt;
All specific game objects (players, enemies, collectibles, projectiles, etc.) should derive from Entity. This gives them easy ways to draw themselves, move, collide with other entities, and be passed to many tAC_Engine functions.&lt;br /&gt;
&lt;br /&gt;
==Get User Input==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DO NOT&amp;#039;&amp;#039;&amp;#039; use the standard XNA keyboard accessors (Xna.Framework.Input.KeyboardState or Xna.Framework.Input.Keyboard) or mouse accessors (Xna.Framework.Input.MouseState) because tAC_Engine does a lot of caching and logging behind the scenes. Use tAC_Engine.InputState instead.&lt;br /&gt;
&lt;br /&gt;
===Keyboard===&lt;br /&gt;
&lt;br /&gt;
 if (InputState.IsKeyDown(Keys.A))&lt;br /&gt;
 {&lt;br /&gt;
   // The A key was pressed&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Mouse===&lt;br /&gt;
&lt;br /&gt;
 if (InputState.IsMouseLeftUp &amp;amp;&amp;amp; InputState.WasMouseLeftDown)&lt;br /&gt;
 {&lt;br /&gt;
  // The mouse was just clicked (clicks are typically registered on the release, not the initial press)&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Vector2 location = InputState.MouseLocation;&lt;br /&gt;
&lt;br /&gt;
==Manage a Heads Up Display==&lt;br /&gt;
&lt;br /&gt;
Use the HUD class for any HUD element (like health bars, menu buttons, etc.). Typically, you&amp;#039;ll want to create a class that inherits from Widget2D. See MeteorWidgets.cs for examples.&lt;br /&gt;
&lt;br /&gt;
==Display Text or Icons with the Ticker==&lt;br /&gt;
&lt;br /&gt;
 string text = &amp;quot;w00t.&amp;quot;;                      // Text to display (can be &amp;quot;&amp;quot;)&lt;br /&gt;
 Texture2D image = null;                     // Can also be set to an image&lt;br /&gt;
 Vector2 imageSize = new Vector2(25f, 25f);  // Size of the (optional) icon&lt;br /&gt;
 Vector2 offset = new Vector2(700f, 50f);    // This will display the ticker 700 pixels to the right of the screen&amp;#039;s &lt;br /&gt;
                                             //   center and 50 pixels below the screen&amp;#039;s center&lt;br /&gt;
 Vector2 velocity = new Vector2 (-10f, 0f);  // Move left 10 pixels per second&lt;br /&gt;
 Ticker.Font font = Ticker.Font.Standard;    // Regular text&lt;br /&gt;
 Color color = Color.DeepPink;               // The manliest of colors&lt;br /&gt;
 float opacity = .5f;                        // 50% transparent&lt;br /&gt;
 float seconds = 5f;                         // Disappear after 5 seconds&lt;br /&gt;
 bool fade = true;                           // Fade in and fade out&lt;br /&gt;
 &lt;br /&gt;
 Ticker.Display(text, image, imageSize, offset, velocity, font, color, opacity, seconds, fade);&lt;br /&gt;
&lt;br /&gt;
==Display Text Manually==&lt;br /&gt;
&lt;br /&gt;
Most text displayed should be done using the Ticker, but if you really want to display text manually use the Nuclex font library (XNA now supports text, so the Nuclex library may eventually be removed). First you must import the desired font:&lt;br /&gt;
&lt;br /&gt;
* Create an xml file for the new font called FontName.tffimport that looks like this:&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;TrueTypeImport&amp;gt;&lt;br /&gt;
   &amp;lt;Path&amp;gt;Content\Fonts\MercuryII.ttf&amp;lt;/Path&amp;gt;&lt;br /&gt;
   &amp;lt;Size&amp;gt;32&amp;lt;/Size&amp;gt;&lt;br /&gt;
 &amp;lt;/TrueTypeImport&amp;gt;&lt;br /&gt;
* Put the font (FontName.ttf) and FontName.tffimport in the Content\Fonts directory&lt;br /&gt;
* Set the following properties for FontName.ttf&lt;br /&gt;
** Build Action: None&lt;br /&gt;
** Copy to Output Directory: Copy if newer&lt;br /&gt;
** File Name: MercuryII.ttf&lt;br /&gt;
* Set the following properties for FontName.tffimport&lt;br /&gt;
** Build Action: Content&lt;br /&gt;
** Content Importer: TrueTypeFont - XNA Framework&lt;br /&gt;
** Content Processor: Bitmap Font - XNA Framework&lt;br /&gt;
** Copy to Output Directory: Do not copy&lt;br /&gt;
** XNA Framework Content: True&lt;br /&gt;
&lt;br /&gt;
Now for the code:&lt;br /&gt;
&lt;br /&gt;
 ContentManager cm = ...;&lt;br /&gt;
 SpriteBatch sb = ...;&lt;br /&gt;
 BitmapFont bmf = cm.Load&amp;lt;BitmapFont&amp;gt;(@&amp;quot;Content\Fonts\Arial&amp;quot;);&lt;br /&gt;
 sb.Begin(SpriteBlendMode.AlphaBlend);&lt;br /&gt;
 bmf.DrawString(new Vector2(10.0F, 10.0F), &amp;quot;Manual Text!&amp;quot;, Color.Azure);&lt;br /&gt;
 sb.End();&lt;br /&gt;
&lt;br /&gt;
==Use Sound==&lt;br /&gt;
&lt;br /&gt;
===Import a new Sound===&lt;br /&gt;
&lt;br /&gt;
* Run Autism Collaborative\Utilities\XACT\Xact.exe&lt;br /&gt;
** This is the XACT tool from Microsoft DirectX SDK August 2006&lt;br /&gt;
** If--after following the steps in this tutorial--playing a file in code throws an exception about using the wrong version of XACT, try using Xact.exe from a different SDK build&lt;br /&gt;
* Open AudioProject.xap file for the Minigame you wish to add a sound to.&lt;br /&gt;
* Expand Wave Banks and double click Wave Bank in the panel on the left&lt;br /&gt;
* Expand Sound Banks and double click Sound Bank in the panel on the left&lt;br /&gt;
* Go to Wave Banks-&amp;gt;Insert Wave File(s)...&lt;br /&gt;
* Select the file to import &amp;quot;MySound.wav&amp;quot; and click OK - This file should already be in the Content folder you would like to use.  &lt;br /&gt;
* Drag the newly-added file to the Cue Name section in the Sound Bank:Sound Bank window&lt;br /&gt;
* Go to File-&amp;gt;Build&lt;br /&gt;
* Save and close XACT&lt;br /&gt;
* Open game.sln with Visual Studio&lt;br /&gt;
* Browse to the Content\Sounds folder in the Solution Explorer&lt;br /&gt;
* Right click the Sounds folder and select Add-&amp;gt;Existing Item...&lt;br /&gt;
* Select &amp;quot;MySound.wav&amp;quot; and click OK&lt;br /&gt;
&lt;br /&gt;
===Play a Sound===&lt;br /&gt;
&lt;br /&gt;
 Sound.Play(&amp;quot;MySound&amp;quot;); // No file extension&lt;br /&gt;
&lt;br /&gt;
==Use the Particle Engine==&lt;br /&gt;
&lt;br /&gt;
Particles are handled by the TACParticleEngine, a separate library that uses the AC_GraphicsEngine that has been modified to better fit the needs of the Autism Game. Features are added to it on an as-needed basis so if a new feature needs to be added and any problems arise in its integration into the current particle engine contact Brian Murphy.&lt;br /&gt;
&lt;br /&gt;
Quick layout of TACParticleEngine:&lt;br /&gt;
&lt;br /&gt;
 The ParticleManager contains references to all loaded ParticleEngines.&lt;br /&gt;
 ParticleEngines contain a series of Emitters.&lt;br /&gt;
 Emitters contain a heap of Particles, which are the objects that actually get drawn.&lt;br /&gt;
&lt;br /&gt;
Particle Effects are imported via its own unique pipeline using the existing XNA framework, so they can be called in a similar manner:&lt;br /&gt;
&lt;br /&gt;
Make sure to include these packages so that we can create and access our particle engine objects:&lt;br /&gt;
&lt;br /&gt;
 using TACParticleEngine;&lt;br /&gt;
 using TACParticleEngine.Particles;&lt;br /&gt;
 &lt;br /&gt;
Inside of the class declaration make these global variables:&lt;br /&gt;
 &lt;br /&gt;
 ParticleManager mParticleManager;&lt;br /&gt;
 ParticleEngine mTestEffect;&lt;br /&gt;
&lt;br /&gt;
Make sure to initialize in the classes initialize method:&lt;br /&gt;
&lt;br /&gt;
 mParticleManager = new ParticleManager(Game); // Initialize the particle manager object with a reference to the current game&lt;br /&gt;
 mTestEffect = mParticleManager.Load(&amp;quot;ParticleEffects/Explosion&amp;quot;); // Load in the given particle effect file by giving the&lt;br /&gt;
                                                                   // location at which it is compiled to&lt;br /&gt;
&lt;br /&gt;
After these three things have been done, you&amp;#039;ll now have an effect loaded into a Particle Engine object via the Particle Manager. However the Particle Engine doesn&amp;#039;t mean anything if it doesn&amp;#039;t do anything so let&amp;#039;s set up the rest of the code we need for updating and drawing:&lt;br /&gt;
&lt;br /&gt;
To get the engine to update, just call&lt;br /&gt;
&lt;br /&gt;
 mParticleManager.Update((float)gameTime.ElapsedGameTime.TotalSeconds);&lt;br /&gt;
&lt;br /&gt;
in the Update(GameTime gameTime) method.&lt;br /&gt;
&lt;br /&gt;
As for drawing, a little more effort is required. First of, since the TACPArticleEngine makes use of the Camera class from the AC_GraphicsEngine, we will need to create and initialize one if we are to render our particles, so let&amp;#039;s get our camera set if it hasn&amp;#039;t been done so before for other drawing.&lt;br /&gt;
&lt;br /&gt;
Add the following line to the list of global variables at the beginning of the class:&lt;br /&gt;
&lt;br /&gt;
 Camera mActiveCamera;&lt;br /&gt;
&lt;br /&gt;
This will be whatever kind of camera we are currently using for drawing in case we may want other cameras for whatever reason.&lt;br /&gt;
&lt;br /&gt;
Next we need to initialize the camera to any specific type of camera that derive from camera. As of now this is limited to FollowCamera, OrthographicCamera, PerspectiveCamera2D, and PerspectiveCamera3D. For now well us a PerspectiveCamera3D as our active camera.&lt;br /&gt;
&lt;br /&gt;
 mActiveCamera = new Perspective3DCamera(new Vector3(0, 0, -5), Vector3.Zero, Vector3.Up, MathHelper.Pi/5, 1, 1, 100);&lt;br /&gt;
&lt;br /&gt;
Now that we have our active camera set, we can now draw by including the following line in the Draw(GameTime gameTime) method:&lt;br /&gt;
&lt;br /&gt;
 mParticleManager.Render(gameTime, mActiveCamera);&lt;br /&gt;
&lt;br /&gt;
*Note that this assumes that the GraphicsDevice.Clear(Color.Black) and base.Draw(gameTime) method calls are also in the method as they are by default.&lt;br /&gt;
&lt;br /&gt;
This will now draw any particles that have been loaded by the Particle Manager and have been set active, however the current particle engine we created has been set active yet so do that now.&lt;br /&gt;
&lt;br /&gt;
This is done by calling the following line whenever you would want drawing of that Particle Engine to occur.&lt;br /&gt;
&lt;br /&gt;
 mTestEffect.SetActive(true);&lt;br /&gt;
&lt;br /&gt;
This particle engine is now active, and if it had been previously active, it&amp;#039;s lifetime would have been reset to 0. Using this call, we can also turn off the particle engine from creating anymore particles by giving it false as its parameter instead.&lt;br /&gt;
&lt;br /&gt;
Besides this method, there are a series of methods that allow us to modify the drawing of the ParticleEngine itself. These are as followed:&lt;br /&gt;
&lt;br /&gt;
 SetEnginePosition(Vector3 Position) // Given a 3D vector, we can move the whole particle engine to the desired position&lt;br /&gt;
&lt;br /&gt;
 SetEngineColor(Vector4 Color) // Given a 4D vector of float values 0-1 in the form of RGBA, we can change the coloring of the whole particle engine&lt;br /&gt;
                               // Keep in mind that this applies that much of the emitters&amp;#039; texture for each value, so a black picture with 1,0,0,1 as&lt;br /&gt;
                               // its value will not be red but still black&lt;br /&gt;
&lt;br /&gt;
 SetEngineSize(Vector2 Size) // Given a 2D vector, we can modify the dimensions of the particle image, this is always 2D since particles in 3D are &lt;br /&gt;
                             // simply billboard sprites&lt;br /&gt;
&lt;br /&gt;
===Create a New Particle Effect===&lt;br /&gt;
&lt;br /&gt;
To make a new effect you will need two things, a new particle file, placed into the appropriate directory, as well as whatever textures are needed in their appropriate directory. Make sure that after the particle file has been created and included into the project that it is set to compile using the particle importer and processor. If these options don&amp;#039;t come up, you probably just need to include a reference to the TACParticleEngine within the projects content folder.&lt;br /&gt;
&lt;br /&gt;
Here is the format of a particle file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;particle&amp;gt; // This declares that we are making a particle effect&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;emitter&amp;gt; // This declares that we are adding a new emitter to our particle effect&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;!--type: point|spline|directional|spray--&amp;gt;&lt;br /&gt;
            &amp;lt;textureName&amp;gt;Textures/SmokeParticle&amp;lt;/textureName&amp;gt; // Directory of the texture the emitter will use&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;blendEffect&amp;gt;AlphaBlend&amp;lt;/blendEffect&amp;gt; // Blend options, typically uses Additive (for fiery effects) &lt;br /&gt;
                                                  // and AlphaBlend (for smokey or piece effects&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;positions&amp;gt;(0,0,50)&amp;lt;/positions&amp;gt; // Default position th emitter appears at. Multiple Positions can be given in the form of&lt;br /&gt;
                                            // (x,y,z)(x,y,z)(x,y,z)..., this will create a spline emitter, which will form a smooth curve&lt;br /&gt;
                                            // using all the given points&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minVel&amp;gt;(0,0,0)&amp;lt;/minVel&amp;gt; // Minimum velocity for particles. If this value is a zero vector and so is the maximum velocity, then&lt;br /&gt;
                                     // this will create either a point or spline emitter, depending on the number of positions given. If this&lt;br /&gt;
                                     // has any values of x, y, or z are &amp;lt; -1 or &amp;gt; 1, then a spray emitter is created, otherwise a directional&lt;br /&gt;
                                     // emitter is created. In either case, the number of positions should be 1.&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxVel&amp;gt;(0,0,0)&amp;lt;/maxVel&amp;gt; // This is the maximum velocity. Used only for spray and directional emitters. For spray emitters, this is&lt;br /&gt;
                                     // the direction in which all particles will move. In the directional emitter, this determines the end range&lt;br /&gt;
                                     // in which particles can move in&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;emitLifetime&amp;gt;0.3&amp;lt;/emitLifetime&amp;gt; // This is how long the emitter exists for in seconds&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;particlesPerSec&amp;gt;50&amp;lt;/particlesPerSec&amp;gt; // This is how many particles will be created every second the emitter is alive&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;particleAmount&amp;gt;20&amp;lt;/particleAmount&amp;gt; // This is the total amount of particles that can exist at any time. In most cases, this number &lt;br /&gt;
                                                // should be slightly over the emitLifetime * particlesPerSec, otherwise effect inconsistencies &lt;br /&gt;
                                                // could result.&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;particleLifetime&amp;gt;3&amp;lt;/particleLifetime&amp;gt; // How long an individual particle is alive for in seconds&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;lifeLengthRandomizer&amp;gt;1&amp;lt;/lifeLengthRandomizer&amp;gt; // This use to randomize the time a particle was alive for, however this has been taken  &lt;br /&gt;
                                                           // out. This will be removed in the future but until then, as with all the other tags, &lt;br /&gt;
                                                           // this tag needs to exist otherwise the particle file won&amp;#039;t compile&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minStartSpeed&amp;gt;0.7&amp;lt;/minStartSpeed&amp;gt; // This is the minimum speed a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxStartSpeed&amp;gt;1&amp;lt;/maxStartSpeed&amp;gt; // This is the maximum speed a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minEndSpeed&amp;gt;0&amp;lt;/minEndSpeed&amp;gt; // This is the minimum speed a particle can end at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxEndSpeed&amp;gt;0&amp;lt;/maxEndSpeed&amp;gt; // This is the maximum speed a particle can end at&lt;br /&gt;
&lt;br /&gt;
            // *Note* currently rotation is not used due to the need to use pixel shader 2.0, which would limit the range of machine this could run &lt;br /&gt;
            // on, or at the least, would result in varied graphics between machines. This can either be fully used if the use of pixel shader 2.0 is &lt;br /&gt;
            // fine, or just scrapped if the use of pixel shader 2.0 seems like at will never happen.&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;startRotationRange&amp;gt;6.28&amp;lt;/startRotationRange&amp;gt; // Range at which a particle can start rotated&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minStartRotSpeed&amp;gt;-1&amp;lt;/minStartRotSpeed&amp;gt; // The minimum speed at which a particle can rotate at start&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxStartRotSpeed&amp;gt;1&amp;lt;/maxStartRotSpeed&amp;gt; // The maximum speed at which a particle can rotate at start&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minEndRotSpeed&amp;gt;0&amp;lt;/minEndRotSpeed&amp;gt; // The minimum speed at which a particle can rotate at end&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxEndRotSpeed&amp;gt;0&amp;lt;/maxEndRotSpeed&amp;gt; // The maximum speed at which a particle can rotate at end&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;!-- (r,g,b,a) range 0.0-1.0 --&amp;gt;&lt;br /&gt;
            &amp;lt;minStartColor&amp;gt;(1,1,1,0.3)&amp;lt;/minStartColor&amp;gt; // The minimum values of RGBA that a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxStartColor&amp;gt;(1,1,1,0.3)&amp;lt;/maxStartColor&amp;gt; // The maximum values of RGBA that a particle can start at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;minEndColor&amp;gt;(1,1,1,0)&amp;lt;/minEndColor&amp;gt; // The minimum values of RGBA that a particle can end at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;maxEndColor&amp;gt;(1,1,1,0)&amp;lt;/maxEndColor&amp;gt; // The maximum values of RGBA that a particle can end at&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;!-- (x,y) --&amp;gt;&lt;br /&gt;
           &amp;lt;minStartSize&amp;gt;(200,200)&amp;lt;/minStartSize&amp;gt; // The minimum size that a particle can start at&lt;br /&gt;
&lt;br /&gt;
           &amp;lt;maxStartSize&amp;gt;(200,200)&amp;lt;/maxStartSize&amp;gt; // The maximum size that a particle can start at&lt;br /&gt;
&lt;br /&gt;
           &amp;lt;minEndSize&amp;gt;(300,300)&amp;lt;/minEndSize&amp;gt; // The minimum size that a particle can end at&lt;br /&gt;
&lt;br /&gt;
           &amp;lt;maxEndSize&amp;gt;(300,300)&amp;lt;/maxEndSize&amp;gt; // The minimum size that a particle can end at&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;/emitter&amp;gt; // Declares that the emitter has been set and is now finished being made&lt;br /&gt;
&lt;br /&gt;
Here&amp;#039;s some additional emitters to just show how multiple emitters in a single effect can be done&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;emitter&amp;gt;&lt;br /&gt;
        &amp;lt;!--type: point|spline|directional|spray--&amp;gt;&lt;br /&gt;
        &amp;lt;textureName&amp;gt;Textures/BasicParticleImage&amp;lt;/textureName&amp;gt;&lt;br /&gt;
        &amp;lt;blendEffect&amp;gt;Additive&amp;lt;/blendEffect&amp;gt;&lt;br /&gt;
        &amp;lt;positions&amp;gt;(0,0,120)&amp;lt;/positions&amp;gt;&lt;br /&gt;
        &amp;lt;minVel&amp;gt;(1.001,1.001,1)&amp;lt;/minVel&amp;gt;&lt;br /&gt;
        &amp;lt;maxVel&amp;gt;(0,0,0)&amp;lt;/maxVel&amp;gt;&lt;br /&gt;
        &amp;lt;emitLifetime&amp;gt;0.3&amp;lt;/emitLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;particlesPerSec&amp;gt;1000&amp;lt;/particlesPerSec&amp;gt;&lt;br /&gt;
        &amp;lt;particleAmount&amp;gt;400&amp;lt;/particleAmount&amp;gt;&lt;br /&gt;
        &amp;lt;particleLifetime&amp;gt;2&amp;lt;/particleLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;lifeLengthRandomizer&amp;gt;1&amp;lt;/lifeLengthRandomizer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;minStartSpeed&amp;gt;2&amp;lt;/minStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSpeed&amp;gt;2&amp;lt;/maxStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSpeed&amp;gt;0&amp;lt;/minEndSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSpeed&amp;gt;0&amp;lt;/maxEndSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;startRotationRange&amp;gt;6.28&amp;lt;/startRotationRange&amp;gt;&lt;br /&gt;
        &amp;lt;minStartRotSpeed&amp;gt;-1&amp;lt;/minStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartRotSpeed&amp;gt;1&amp;lt;/maxStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndRotSpeed&amp;gt;0&amp;lt;/minEndRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndRotSpeed&amp;gt;0&amp;lt;/maxEndRotSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (r,g,b,a) range 0.0-1.0 --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartColor&amp;gt;(1,0,0,0.3)&amp;lt;/minStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartColor&amp;gt;(1,0,0,0.3)&amp;lt;/maxStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;minEndColor&amp;gt;(0,0,0,0)&amp;lt;/minEndColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndColor&amp;gt;(0,0,0,0)&amp;lt;/maxEndColor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (x,y) --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartSize&amp;gt;(1,1)&amp;lt;/minStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSize&amp;gt;(1,1)&amp;lt;/maxStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSize&amp;gt;(0.1,0.1)&amp;lt;/minEndSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSize&amp;gt;(0.1,0.1)&amp;lt;/maxEndSize&amp;gt;&lt;br /&gt;
    &amp;lt;/emitter&amp;gt;&lt;br /&gt;
    &amp;lt;emitter&amp;gt;&lt;br /&gt;
        &amp;lt;!--type: point|spline|directional|spray--&amp;gt;&lt;br /&gt;
        &amp;lt;textureName&amp;gt;Textures/ExplosionParticle&amp;lt;/textureName&amp;gt;&lt;br /&gt;
        &amp;lt;blendEffect&amp;gt;Additive&amp;lt;/blendEffect&amp;gt;&lt;br /&gt;
        &amp;lt;positions&amp;gt;(0,0,60)&amp;lt;/positions&amp;gt;&lt;br /&gt;
        &amp;lt;minVel&amp;gt;(0,0,0)&amp;lt;/minVel&amp;gt;&lt;br /&gt;
        &amp;lt;maxVel&amp;gt;(0,0,0)&amp;lt;/maxVel&amp;gt;&lt;br /&gt;
        &amp;lt;emitLifetime&amp;gt;0.3&amp;lt;/emitLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;particlesPerSec&amp;gt;100&amp;lt;/particlesPerSec&amp;gt;&lt;br /&gt;
        &amp;lt;particleAmount&amp;gt;40&amp;lt;/particleAmount&amp;gt;&lt;br /&gt;
        &amp;lt;particleLifetime&amp;gt;0.3&amp;lt;/particleLifetime&amp;gt;&lt;br /&gt;
        &amp;lt;lifeLengthRandomizer&amp;gt;0.1&amp;lt;/lifeLengthRandomizer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;minStartSpeed&amp;gt;2&amp;lt;/minStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSpeed&amp;gt;2&amp;lt;/maxStartSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSpeed&amp;gt;0&amp;lt;/minEndSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSpeed&amp;gt;0&amp;lt;/maxEndSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;startRotationRange&amp;gt;6.28&amp;lt;/startRotationRange&amp;gt;&lt;br /&gt;
        &amp;lt;minStartRotSpeed&amp;gt;-1&amp;lt;/minStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartRotSpeed&amp;gt;1&amp;lt;/maxStartRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;minEndRotSpeed&amp;gt;0&amp;lt;/minEndRotSpeed&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndRotSpeed&amp;gt;0&amp;lt;/maxEndRotSpeed&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (r,g,b,a) range 0.0-1.0 --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartColor&amp;gt;(1,1,1,0.7)&amp;lt;/minStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartColor&amp;gt;(1,1,1,0.7)&amp;lt;/maxStartColor&amp;gt;&lt;br /&gt;
        &amp;lt;minEndColor&amp;gt;(1,1,1,0)&amp;lt;/minEndColor&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndColor&amp;gt;(1,1,1,0)&amp;lt;/maxEndColor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!-- (x,y) --&amp;gt;&lt;br /&gt;
        &amp;lt;minStartSize&amp;gt;(10,10)&amp;lt;/minStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxStartSize&amp;gt;(50,50)&amp;lt;/maxStartSize&amp;gt;&lt;br /&gt;
        &amp;lt;minEndSize&amp;gt;(10,10)&amp;lt;/minEndSize&amp;gt;&lt;br /&gt;
        &amp;lt;maxEndSize&amp;gt;(50,50)&amp;lt;/maxEndSize&amp;gt;&lt;br /&gt;
    &amp;lt;/emitter&amp;gt;&lt;br /&gt;
 &amp;lt;/particle&amp;gt; // Declares the end of the particle file&lt;br /&gt;
&lt;br /&gt;
==Keep Score and Give Resources to the Simulator Mode==&lt;br /&gt;
&lt;br /&gt;
Use the ScoreCard class to keep track of the score from a minigame. It provides easy ways to add and subtract resources, as well as an easy way to display them and pass them along to the Colony Simulator.&lt;br /&gt;
&lt;br /&gt;
MiniGame has a ColonyScoreCard built into it, accessible by the Score property. Here are some examples of how to use it:&lt;br /&gt;
&lt;br /&gt;
 class MyGame : MiniGame&lt;br /&gt;
 {&lt;br /&gt;
   public override void Update(ContentManager content)&lt;br /&gt;
   {&lt;br /&gt;
     Score.Gather(ColonyResources.Money, 500);    // Get 500 Monies&lt;br /&gt;
     &lt;br /&gt;
     MyGameObject mgo = new MyGameObject();&lt;br /&gt;
     mgo.GiveMyGameCarbon();                      // Get 1 Carbon&lt;br /&gt;
 &lt;br /&gt;
     Score.IncurDamageCost(100);                  // On CashOut, Money = Max (Money - DamageCosts, 0)&lt;br /&gt;
 &lt;br /&gt;
     int HowMuchMoneyIHave = Score.QueryResource(ColonyResources.Money);&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   public void DisplayTheScore()&lt;br /&gt;
   {&lt;br /&gt;
     bool playerWonTheMinigame = true;            // Can be set to false if the player lost&lt;br /&gt;
     Score.Display(playerWonTheMinigame );        // Displays a copy of the current score and a message for succses/failure&lt;br /&gt;
     Score.CashOut();                             // Transfers resources from MyGame to the Colony Simulator&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   // ...&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 class MyGameObject : Entity&lt;br /&gt;
 {&lt;br /&gt;
   public void GiveMyGameCarbon()&lt;br /&gt;
   {&lt;br /&gt;
     ColonyBaseApplication.MiniGame.Score.Gather(ColonyResources.Carbon, 1);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Write to the Experimental Log==&lt;br /&gt;
&lt;br /&gt;
As the game runs, certain actions are recorded and written to a file (Autism Collaborative\Game\Game\bin\x86\Debug\ExperimentalLog.txt or the corresponding Release folder). In the lab, these codes are also sent through the parallel port to sync the EEG data. Every action that pertains to an experiment must be logged in order to be analyzed (that&amp;#039;s kind of the whole point of this game!).&lt;br /&gt;
&lt;br /&gt;
First define the necessary game codes.&lt;br /&gt;
&lt;br /&gt;
* Open Logger.cs&lt;br /&gt;
* Add up to 253 codes to public enum ExperimentalCode&lt;br /&gt;
** All codes must start with a unique &amp;quot;code identifier&amp;quot;, an underscore, and then a descriptor in UpperCamelCase&lt;br /&gt;
*** For minigames, the code identifier is 2 letters&lt;br /&gt;
** 3 codes are reserved for special parallel port functions with the software that runs the EEG machines used in lab tests&lt;br /&gt;
&lt;br /&gt;
Now those codes are available for logging. Like so:&lt;br /&gt;
&lt;br /&gt;
 Logger.LogCode(Logger.ExperimentalCode.XX_Descriptor);&lt;br /&gt;
&lt;br /&gt;
It is also possible to tell the logger to log a code every time a specific key is pressed:&lt;br /&gt;
&lt;br /&gt;
 InputState.Encode(Keys.A, InputState.KeyState.Down, Logger.ExperimentalCode.DEBUG_DudeJustPushedA);&lt;br /&gt;
&lt;br /&gt;
Each minigame should remove the encodings when it is done, but it is also a good idea to decode the keys at the start of each minigame just in case. &lt;br /&gt;
&lt;br /&gt;
 InputState.Encode(Keys.A, InputState.KeyState.Down);&lt;br /&gt;
 InputState.DecodeAll();&lt;br /&gt;
&lt;br /&gt;
Every minigame should also start with its GameBegin and end with its GameEnd[Success/Failure] codes.&lt;br /&gt;
&lt;br /&gt;
It may be helpful to log events for debugging purposes. These codes have the identifier &amp;quot;DEBUG&amp;quot; and will not be logged unless the game is running in Debug mode. All new DEBUG tags must be explicitly assigned a value less than 0.&lt;br /&gt;
&lt;br /&gt;
==Use the Game Script==&lt;br /&gt;
&lt;br /&gt;
The tAC_Engine houses a [[http://www.lua.org/ Lua]] Virtual Machine. This can be used to tweak global parameters at runtime, load them from config files, drive cutscenes, or even save and load levels.&lt;br /&gt;
&lt;br /&gt;
Function callbacks are defined in C# and then invoked from a Lua file or the in-game Debug console. In other words, C# tells Lua &amp;quot;you may use these functions: X,Y,...&amp;quot; and then Lua says &amp;quot;do X, do Y, etc.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Here are a couple of ways to leverage this system:&lt;br /&gt;
&lt;br /&gt;
===Make a Cutscene===&lt;br /&gt;
&lt;br /&gt;
* Create a new lua file in the Scripts directory&lt;br /&gt;
** That file can call any registered function callbacks&lt;br /&gt;
* In the Properties window, set Copy to Output Directory to Copy if Newer&lt;br /&gt;
* Call that cutscene with:&lt;br /&gt;
 GenericBaseApplication.GameManager.PlayCutscene(@&amp;quot;Scripts\MyCutscene.lua&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
===To Register a Function Callback===&lt;br /&gt;
&lt;br /&gt;
* Create the function in C# (if the function does not already exist)&lt;br /&gt;
** It must be declared public and non-static&lt;br /&gt;
** If the need arises to register a static function, declare an instanced function in GenericLuaHelper or ColonyLuaHelper that simply calls the static function.&lt;br /&gt;
* Register the function with the Lua Virtual Machine&lt;br /&gt;
** Add the special LuaCallback annotation to the function&lt;br /&gt;
* Call the RegisterLuaCallbacks function in the class&amp;#039;s constructor that contains the function.&lt;br /&gt;
* Example:&lt;br /&gt;
 public MyClass()&lt;br /&gt;
 {  // Constructor&lt;br /&gt;
   LuaHelper.RegisterLuaCallbacks(this);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 [LuaCallback(&amp;quot;SetMyVariable&amp;quot;)]&lt;br /&gt;
 public int SetMyVariable(int value)&lt;br /&gt;
 {&lt;br /&gt;
   mMyVariable = value;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===Tweak Game Parameters===&lt;br /&gt;
&lt;br /&gt;
Exposing a variable to the Lua Virtual Machine allows it to be accessed by a any script (including config files) or changed at runtime in the drop down console (accessible in Debug mode by hitting &amp;quot;~&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
* Expose a variable with a global setter/getter with a LuaCallback annotation&lt;br /&gt;
** Make sure to call the RegisterLuaCallbacks function in that class&amp;#039;s constructor if the getter/setter is not in the Game Manager&lt;br /&gt;
* Set the default value for the variable in the config file (optional)&lt;br /&gt;
** There are 3 config files for the 3 configurations of the game builds&lt;br /&gt;
*** Debug.conf, for development&lt;br /&gt;
*** StandardRelease.conf, for public releases of the game&lt;br /&gt;
*** LabRelease.conf, for use in the lab&lt;br /&gt;
&lt;br /&gt;
===Create Local Settings===&lt;br /&gt;
&lt;br /&gt;
Programmers may want to change certain properties on their machines without affecting the source-controlled code. They could change the resolution, sound settings, or even have the game bypass the regular startup sequence and launch right into the middle of a MiniGame all with no effect on other developers.&lt;br /&gt;
&lt;br /&gt;
* Create a new file: Autism Collaborative\Game\Game\Scripts\LocalSettings.lua&lt;br /&gt;
** The Visual Studio project already has this file included, but VS won&amp;#039;t be able to edit it until the file is created manually&lt;br /&gt;
* Add Lua commands and save the file&lt;br /&gt;
** Visual Studio can now be used to edit the file&lt;br /&gt;
* The file is run at the end of the Debug.conf script (if it exists)&lt;br /&gt;
** That means that this script is only run in Debug mode&lt;br /&gt;
* do &amp;#039;&amp;#039;&amp;#039;NOT&amp;#039;&amp;#039;&amp;#039; add LocalSettings.lua to source control!&lt;br /&gt;
&lt;br /&gt;
===Creating Scripts in C# Code===&lt;br /&gt;
&lt;br /&gt;
Alternatively, scripts can created using C# code rather than Lua. A C# script either be object oriented or imperative. They are able to both take in objects and return values. The CSharpHelper class can be called to run these scripts using it&amp;#039;s DoSimpleFile method. This will simply run all the code in the script. The value of this is that commonly edited code, such as configuration files, can be saved in a convenient separate location. The methods for CSharpHelper are well documented within the file itself. An example of a basic call to a C# sharp script is as follows:&lt;br /&gt;
&lt;br /&gt;
 CSharpHelper.doSimpleFile(Environment.CurrentDirectory + @&amp;quot;\Configs\Debug.confcss&amp;quot;, this, &amp;quot;game&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
This starts a C# file called &amp;quot;Debug.confcss&amp;quot; which is located in the Configs directory. The second parameter is a Game object. The object passed in can be of any type. The third parameter is the identifier of the object within the script. In this case the identifier is &amp;quot;game&amp;quot;. This means that inside the script, lines such as:&lt;br /&gt;
&lt;br /&gt;
 game.Update();&lt;br /&gt;
&lt;br /&gt;
while execute the passed in object&amp;#039;s update function.&lt;br /&gt;
&lt;br /&gt;
==Run the Game in the Lab==&lt;br /&gt;
&lt;br /&gt;
To enable the features necessary to run the game in the lab, the file conlab.tac must exist next to the game&amp;#039;s executable.&lt;br /&gt;
&lt;br /&gt;
From visual studio:&lt;br /&gt;
* Change the configuration to &amp;quot;ReleaseLab&amp;quot;&lt;br /&gt;
* Build the solution&lt;br /&gt;
From a public release of the game:&lt;br /&gt;
* Find &amp;quot;constd.tac,&amp;quot; the standard encrypted config file&lt;br /&gt;
* Copy &amp;quot;conlab.tac&amp;quot; to the same directory&lt;br /&gt;
** Autism Collaborative\Game\Game\bin\x86\Laboratory\conlab.tac is generated when the game is compiled&lt;br /&gt;
** If the game finds conlab, it assumes it is in the lab and uses that config file&lt;br /&gt;
** If conlab is not present, it assumes it is not in the lab and uses constd.tac as the config file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Publish the Installer==&lt;br /&gt;
&lt;br /&gt;
===Create the Installer===&lt;br /&gt;
&lt;br /&gt;
We use InnoSetup to create the installer. Checkout their website (http://www.jrsoftware.org/isinfo.php) if you need to change the script, but simply publishing the game does not require any adjustment to the installer script.&lt;br /&gt;
&lt;br /&gt;
* Install InnoSetup if necessary&lt;br /&gt;
** Run Autism Collaborative\Utilities\Installer Installer\isetup-5.2.2.exe&lt;br /&gt;
* Compile the game&lt;br /&gt;
** In the second menu bar (immediately below the top menu bar) within Visual Studio, change &amp;quot;Debug&amp;quot; to &amp;quot;ReleasePub&amp;quot; or &amp;quot;ReleaseLab&amp;quot;.  (In the box to the right, leave the default &amp;quot;Mixed Platforms&amp;quot;.)  &lt;br /&gt;
*** ReleasePub is for our releases to the general public. This will usually be the correct configuration.&lt;br /&gt;
*** ReleaseLab is for builds to be used in the lab. This will create the config file to run the game in &amp;quot;lab mode.&amp;quot; The resulting exe file will actually be the same as ReleasePub, but constd.tac will be replaced with conlab.tac.&lt;br /&gt;
*** Debug mode is used while developing, so do not build the game in debug mode when creating the installer.&lt;br /&gt;
*** For the exact effects of the different build configurations on the game flow, unit stats, etc. see the config files in Autism Collaborative\Game\Game\Configs&lt;br /&gt;
** Goto Build-&amp;gt;Build Solution&lt;br /&gt;
* Compile the installer script&lt;br /&gt;
** Open Autism Collaborative\Game\Game\Installer.iss with InnoSetup&lt;br /&gt;
** Goto Build-&amp;gt;Compile&lt;br /&gt;
** Goto Run-&amp;gt;Run&lt;br /&gt;
*** This creates the file Autism Collaborative\Game\Game\Output\tAC_Installer.exe&lt;br /&gt;
&lt;br /&gt;
===Upload the Installer to the Web===&lt;br /&gt;
&lt;br /&gt;
* Get a username/password for autismcollaborative.org from Matthew.&lt;br /&gt;
* Use a secure FTP client to login, such as WinSCP&lt;br /&gt;
** Either download it or run Autism Collaborative\Utilities\WinSCP.exe&lt;br /&gt;
* Login to autismcollaborative.org (port 22)&lt;br /&gt;
* Upload tAC_Installer.exe to your home directory (for example /home/zinsser)&lt;br /&gt;
** Do not overwrite the existing installer (/home/belmonte/autismcollaborative.org/downloads/AstropolisSetup.exe) since that would delete the installer from the website until the new installer finishes uploading (usually over an hour!)&lt;br /&gt;
* Once the upload is complete, enter the command &amp;quot;mv /home/zinsser/tAC_Installer.exe /home/belmonte/autismcollaborative.org/downloads/AstropolisSetup.exe&amp;quot; (you may have to open a terminal first, depending on your SFTP client)&lt;br /&gt;
** In the above command, substitute your username for &amp;quot;zinsser&amp;quot;, but keep &amp;quot;belmonte&amp;quot; as the destination user directory&lt;br /&gt;
** If there is a permissions problem, contact Matthew to make sure your user has permission to the autismcollaborative.org directory!&lt;br /&gt;
&lt;br /&gt;
==Use the ErrorLog==&lt;br /&gt;
&lt;br /&gt;
When the game encounters an Unhandled Exception (like when an end user runs into a bug in our code), useful information is dumped to ErrorLog.txt. The user is encouraged to email that file to us so we can locate the problem they ran into. Although the ErrorLog will tell us what function the program died in, it cannot tell us specifically which line was the culprit (although ErrorLogs created when the game is running in Visual Studio will tell us exactly which line!).&lt;br /&gt;
&lt;br /&gt;
We do, however, have the ability to log any custom information from a MiniGame. This may prove invaluable in debugging based on end-user error reports. All you (the programmer) must do is override the string MiniGame.DebugInfo() function. When ErrorLog.txt is created, it calls that function on the current MiniGame and appends the returned text to the bottom of the file.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Concept_Art&amp;diff=275</id>
		<title>Concept Art</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Concept_Art&amp;diff=275"/>
				<updated>2008-06-18T14:46:59Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: added my name :)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hacker Havoc==&lt;br /&gt;
&lt;br /&gt;
In Hacker Havoc, a secret agent has been sent out to infiltrate the spy satellites of the space pirates who have been harassing our cargo lines and stealing our resources.  The goal is to sneak to the various comm stations that contain the pirates communication logs, hack them, and find the location of the stolen cargo.  &lt;br /&gt;
&lt;br /&gt;
===Main Character===&lt;br /&gt;
In the game the player will control a top secret agent infiltrating pirate spy satellites.  The agent has a bunch of cool equipment at his disposal.  Cloaking fields, hacking tools and various less then lethal traps that will let him sneak undetected.  The current idea is to have our agent decked out splinter cell style all in black.  The cloaking device will be integrated into the suit and his traps look similar to the ones from Golden Eye.  &lt;br /&gt;
&lt;br /&gt;
What we need art wise is pictures of the agent and his gear.  Shots of the agent in action sneaking around, full body shots that detail where the tools are stored and what other technologies are integrated into the suit.  Sketches of traps and what they do.&lt;br /&gt;
&lt;br /&gt;
===Locations===&lt;br /&gt;
To find the whereabouts of the cargo ships &amp;quot;&amp;quot; will have to infiltrate spy satellites.  These satellites are controlled by differing factions of space pirates.  There are three different factions that we are looking to include; Humans, Aliens and Robots.  &lt;br /&gt;
&lt;br /&gt;
We need art for what the different satellites could look like.  This would include both the interior and exterior of the station.   &lt;br /&gt;
&lt;br /&gt;
===Enemies===&lt;br /&gt;
To make a stealth game fun you need things to avoid and hide from.  We need some concept art for different guards, sentry equipment and obstacles the player must avoid to reach each comm station.  These should relate to one of the pirate factions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Stealth Fighter===&lt;br /&gt;
To get to the satellites undetected the player will use the Bobcat B-3 Interceptor.  This is a small one man long range fight.  It is equipped with the best cloaking, stealth technologies, and hyper space technologies.  We need some schematic sketches and payload details for this ship.&lt;br /&gt;
&lt;br /&gt;
===Pirate Ships===&lt;br /&gt;
The evil pirates have stolen our cargo!  We need ship information and ideas for the different factions.  This would include weapon details, propulsion systems, and hulls that fit withing the different factions.  &lt;br /&gt;
&lt;br /&gt;
===Contact Info===&lt;br /&gt;
If anyone wants needs anything clarified or wants some more info on Hacker Havoc please let me know.  You can contact me, Karl Orosz, at kao7002 at rit dot edu.&lt;br /&gt;
&lt;br /&gt;
===Submission Information===&lt;br /&gt;
Google Sketchup Pro or jped/png file formats.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Concept_Art&amp;diff=274</id>
		<title>Concept Art</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Concept_Art&amp;diff=274"/>
				<updated>2008-06-18T14:38:22Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hacker Havoc==&lt;br /&gt;
&lt;br /&gt;
In Hacker Havoc, a secret agent has been sent out to infiltrate the spy satellites of the space pirates who have been harassing our cargo lines and stealing our resources.  The goal is to sneak to the various comm stations that contain the pirates communication logs, hack them, and find the location of the stolen cargo.  &lt;br /&gt;
&lt;br /&gt;
===Main Character===&lt;br /&gt;
In the game the player will control a top secret agent infiltrating pirate spy satellites.  The agent has a bunch of cool equipment at his disposal.  Cloaking fields, hacking tools and various less then lethal traps that will let him sneak undetected.  The current idea is to have our agent decked out splinter cell style all in black.  The cloaking device will be integrated into the suit and his traps look similar to the ones from Golden Eye.  &lt;br /&gt;
&lt;br /&gt;
What we need art wise is pictures of the agent and his gear.  Shots of the agent in action sneaking around, full body shots that detail where the tools are stored and what other technologies are integrated into the suit.  Sketches of traps and what they do.&lt;br /&gt;
&lt;br /&gt;
===Locations===&lt;br /&gt;
To find the whereabouts of the cargo ships &amp;quot;&amp;quot; will have to infiltrate spy satellites.  These satellites are controlled by differing factions of space pirates.  There are three different factions that we are looking to include; Humans, Aliens and Robots.  &lt;br /&gt;
&lt;br /&gt;
We need art for what the different satellites could look like.  This would include both the interior and exterior of the station.   &lt;br /&gt;
&lt;br /&gt;
===Enemies===&lt;br /&gt;
To make a stealth game fun you need things to avoid and hide from.  We need some concept art for different guards, sentry equipment and obstacles the player must avoid to reach each comm station.  These should relate to one of the pirate factions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Stealth Fighter===&lt;br /&gt;
To get to the satellites undetected the player will use the Bobcat B-3 Interceptor.  This is a small one man long range fight.  It is equipped with the best cloaking, stealth technologies, and hyper space technologies.  We need some schematic sketches and payload details for this ship.&lt;br /&gt;
&lt;br /&gt;
===Pirate Ships===&lt;br /&gt;
The evil pirates have stolen our cargo!  We need ship information and ideas for the different factions.  This would include weapon details, propulsion systems, and hulls that fit withing the different factions.  &lt;br /&gt;
&lt;br /&gt;
===Contact Info===&lt;br /&gt;
If anyone wants needs anything clarified or wants some more info on Hacker Havoc please let me know.  You can contact me at kao7002 at rit dot edu.&lt;br /&gt;
&lt;br /&gt;
===Submission Information===&lt;br /&gt;
Google Sketchup Pro or jped/png file formats.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Concept_Art&amp;diff=273</id>
		<title>Concept Art</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Concept_Art&amp;diff=273"/>
				<updated>2008-06-18T14:37:46Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hacker Havoc==&lt;br /&gt;
&lt;br /&gt;
In Hacker Havoc, a secret agent has been sent out to infiltrate the spy satellites of the space pirates who have been harassing our cargo lines and stealing our resources.  The goal is to sneak to the various comm stations that contain the pirates communication logs, hack them, and find the location of the stolen cargo.  &lt;br /&gt;
&lt;br /&gt;
===Main Character===&lt;br /&gt;
In the game the player will control a top secret agent infiltrating pirate spy satellites.  The agent has a bunch of cool equipment at his disposal.  Cloaking fields, hacking tools and various less then lethal traps that will let him sneak undetected.  The current idea is to have our agent decked out splinter cell style all in black.  The cloaking device will be integrated into the suit and his traps look similar to the ones from Golden Eye.  &lt;br /&gt;
&lt;br /&gt;
What we need art wise is pictures of the agent and his gear.  Shots of the agent in action sneaking around, full body shots that detail where the tools are stored and what other technologies are integrated into the suit.  Sketches of traps and what they do.&lt;br /&gt;
&lt;br /&gt;
===Locations===&lt;br /&gt;
To find the whereabouts of the cargo ships &amp;quot;&amp;quot; will have to infiltrate spy satellites.  These satellites are controlled by differing factions of space pirates.  There are three different factions that we are looking to include; Humans, Aliens and Robots.  &lt;br /&gt;
&lt;br /&gt;
We need art for what the different satellites could look like.  This would include both the interior and exterior of the station.   &lt;br /&gt;
&lt;br /&gt;
===Enemies===&lt;br /&gt;
To make a stealth game fun you need things to avoid and hide from.  We need some concept art for different guards, sentry equipment and obstacles the player must avoid to reach each comm station.  These should relate to one of the pirate factions.&lt;br /&gt;
&lt;br /&gt;
===Vehicles===&lt;br /&gt;
&lt;br /&gt;
====Stealth Fighter====&lt;br /&gt;
To get to the satellites undetected the player will use the Bobcat B-3 Interceptor.  This is a small one man long range fight.  It is equipped with the best cloaking, stealth technologies, and hyper space technologies.  We need some schematic sketches and payload details for this ship.&lt;br /&gt;
&lt;br /&gt;
====Pirate Ships====&lt;br /&gt;
The evil pirates have stolen our cargo!  We need ship information and ideas for the different factions.  This would include weapon details, propulsion systems, and hulls that fit withing the different factions.  &lt;br /&gt;
&lt;br /&gt;
===Contact Info===&lt;br /&gt;
If anyone wants needs anything clarified or wants some more info on Hacker Havoc please let me know.  You can contact me at kao7002 at rit dot edu.&lt;br /&gt;
&lt;br /&gt;
===Submission Information===&lt;br /&gt;
Google Sketchup Pro or jped/png file formats.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Concept_Art&amp;diff=272</id>
		<title>Concept Art</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Concept_Art&amp;diff=272"/>
				<updated>2008-06-18T14:13:28Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: New page: ==Hacker Havoc==  ===Main Character=== In the game the player will control a top secret agent infiltrating pirate spy satellites.  The agent has a bunch of cool equipment at his disposal. ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Hacker Havoc==&lt;br /&gt;
&lt;br /&gt;
===Main Character===&lt;br /&gt;
In the game the player will control a top secret agent infiltrating pirate spy satellites.  The agent has a bunch of cool equipment at his disposal.  Cloaking fields, hacking tools and various less then lethal traps that will let him sneak undetected.  The current idea is to have our agent decked out splinter cell style all in black.  The cloaking device will be integrated into the suit and his traps look similar to the ones from Golden Eye.  &lt;br /&gt;
&lt;br /&gt;
What we need art wise is pictures of the agent and his gear.  Shots of the agent in action sneaking around, full body shots that detail where the tools are stored and what other technologies are integrated into the suit.  Sketches of the traps and what they do.&lt;br /&gt;
&lt;br /&gt;
===Locations===&lt;br /&gt;
To find the whereabouts of the cargo ships &amp;quot;&amp;quot; will have to infiltrate spy satellites.  These satellites are controlled by differing factions of space pirates.  There are three different factions that we are looking to include; Humans, Aliens and Robots.  We need ideas of what these satellites could look like.&lt;br /&gt;
&lt;br /&gt;
====Human====&lt;br /&gt;
====Alien====&lt;br /&gt;
====Robot====&lt;br /&gt;
&lt;br /&gt;
===Enemies===&lt;br /&gt;
&lt;br /&gt;
===Vehicles===&lt;br /&gt;
&lt;br /&gt;
====Stealth Fighter====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Cargo Ships====&lt;br /&gt;
&lt;br /&gt;
====Pirate Ships====&lt;br /&gt;
The evil pirates have stolen our cargo!  but how did they do it ?? What do their ships look like ??&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Main_Page&amp;diff=271</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Main_Page&amp;diff=271"/>
				<updated>2008-06-18T13:39:12Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: /* Major Sections */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;&amp;#039;&amp;#039;&amp;#039;Welcome to the Autism Game wiki&amp;#039;&amp;#039;&amp;#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page is used by the developers working on Astropolis, a video game that collects scientific research. Here at the Autism Collaborative, we want to share both our findings and our processes with the public because we believe that is the most beneficial for everyone. As such, this wiki is a tool used by the Astropolis developers, but we encourage anyone interested in the project to explore and gain insight into our process for making the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The Motivation==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Integrative studies of perception, attention, and social cognition in autism&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Although much progress has been made identifying structural and functional profiles in autism, this work has resulted in a multiplicity of hypotheses targeted at particular brain or cognitive subsystems or levels of analysis; our most vexing problem often is not identifying the observational details, but assembling these details into a coherent theory.  The division between social and non-social studies of autism is a case in point.  Competing theories have construed autism variously as an exclusively social deficit in &amp;quot;theory of mind,&amp;quot; an abnormality of attention and executive function with social and non-social consequences, an atypical weakness in &amp;quot;central coherence,&amp;quot; or an enhancement of perceptual function.  Although each of these views seems to capture a piece of the truth, a synthesis of all of them will not be possible as long as they continue to be approached as competing rather than synergistic views, as long as their psychological descriptions remain incompletely connected to neurobiological explanations and to clinical impairments, and as long as individual experiments continue to collect data germane to only one theory in isolation.&lt;br /&gt;
&lt;br /&gt;
==The Strategy==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Embed a suite of psychological experiments within a video game that&amp;#039;s fun to play&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Perhaps the single most important obstacle to integrative studies of autism is the practical limit on the amount of time that a single experimental subject can reasonably be expected to perform before becoming fatigued.  Unfortunately, often the more controlled a stimulus is from the scientist&amp;#039;s point of view, the more repetitive and tedious the experiment can seem from the subject&amp;#039;s point of view.  Behavioural research on autism in recent years has highlighted the importance of motivation, behavioural set, and task instruction in establishing cognitive strategy and determining performance (e.g. Plaisted et al. 1999; Dalton et al. 2005).  In light of these considerations, we propose to embed experimental stimuli in the context of a video game that captures and maintains subjects&amp;#039; interest, transparently collecting behavioural data and synchronising with physiological recording as the subject plays the game.  The practical advantages of such an engaging and ecologically valid format over the usual repetitive blocks of trials are legion.  Indeed, varying levels and demands of attentional shifting and multimodal integration are natural in the context of video game play, and psychophysical measures such as dot motion coherence and embedded figures are easily implemented as, for example, the movement of a star field on a view screen and the detection of an adversary in a cluttered environment.  In addition, the strategic and adversarial nature of a video game carries natural opportunities to explore higher-level cognitive measures such as comprehension of game-related narratives and social attribution to a computer-generated adversary.  The video game format is increasingly being used to acquire simultaneous behavioural and EEG observations in ecologically valid contexts, for example in visuomotor tracking (Smith et al. 1999), air traffic control (Brookings et al. 1996), and military command and control simulations (St John et al. 2002, 2004; Berka et al. 2004).  Recent results in human-computer interaction (von Ahn 2006) also point to the power of the game context to establish and to maintain motivation in tasks that otherwise might not seem engaging, and to teach persons with developmental disorders (Golan &amp;amp; Baron-Cohen 2006).  Also along these lines, the video game format affords subjects more of a chance to become comfortable with the task before entering the laboratory, minimising the potential confound of state anxiety associated with performance of an unfamiliar task in a testing situation.&lt;br /&gt;
&lt;br /&gt;
==Major Sections==&lt;br /&gt;
&lt;br /&gt;
[[Plot]]&lt;br /&gt;
&lt;br /&gt;
[[Functional specifications]]&lt;br /&gt;
&lt;br /&gt;
[[Meetings]]&lt;br /&gt;
&lt;br /&gt;
[[Dev Setup]]&lt;br /&gt;
&lt;br /&gt;
[[Code How To&amp;#039;s]]&lt;br /&gt;
&lt;br /&gt;
[[TODO List]]&lt;br /&gt;
&lt;br /&gt;
[[Concept Art]]&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Milestones&amp;diff=214</id>
		<title>Milestones</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Milestones&amp;diff=214"/>
				<updated>2008-06-09T19:39:46Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sprint 1: &lt;br /&gt;
  * Implement basic structure of Dungeon game.&lt;br /&gt;
     []Loading XML data&lt;br /&gt;
     []converting XML data to load level&lt;br /&gt;
     []Basic update structure&lt;br /&gt;
     []Data structures of the levels&lt;br /&gt;
     []Input&lt;br /&gt;
     []Game Flow&lt;br /&gt;
     []Collision&lt;br /&gt;
     []Implement Menus&lt;br /&gt;
     []Difficulty&lt;br /&gt;
     []Game play programming&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Sprint 2:&lt;br /&gt;
  * Implement more complex Dungeon game functions&lt;br /&gt;
     []Traps/Enemies&lt;br /&gt;
     []Stealth bar&lt;br /&gt;
     []Player abilities&lt;br /&gt;
     []AI Logic&lt;br /&gt;
     []placeholder UI&lt;br /&gt;
     []Integrate the player &amp;#039;PDA&amp;#039; (multitool) &lt;br /&gt;
          []Use player abilities through tool&lt;br /&gt;
          []placeholder UI&lt;br /&gt;
&lt;br /&gt;
Sprint 3:&lt;br /&gt;
  * Implement Hacking Phase, aka Embedded Figures test&lt;br /&gt;
     []Create hackable objects&lt;br /&gt;
     []Placeholder graphics for hacking phase&lt;br /&gt;
     []Logging&lt;br /&gt;
     []integrate into level&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sprint 4:&lt;br /&gt;
  * Implement Sally Anne&lt;br /&gt;
     []Implement first theory of mind question&lt;br /&gt;
     []implement 2nd theory of mind question&lt;br /&gt;
     []Tie into level progression&lt;br /&gt;
     []Logging&lt;br /&gt;
&lt;br /&gt;
Sprint 5:&lt;br /&gt;
  * Implement Rewards&lt;br /&gt;
     []Implement a system for rewarding the player&lt;br /&gt;
     []calculate total rewards based of performance in mini game&lt;br /&gt;
     []tie to colony simulator&lt;br /&gt;
  * Tutorial&lt;br /&gt;
     []yep&lt;br /&gt;
  * Implement easy access trial modifiers to mini game menu&lt;br /&gt;
&lt;br /&gt;
Sprint 6:&lt;br /&gt;
  * Implement Map Editor&lt;br /&gt;
     []Read/Write/edit XML data containing tileset information for world/level/room&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sprint 7:&lt;br /&gt;
  * Implement Player Profiles&lt;br /&gt;
     []Keep track of missions played/progression made&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sprint 8: &lt;br /&gt;
  * Create new levels and obstacles.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Milestones&amp;diff=213</id>
		<title>Milestones</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Milestones&amp;diff=213"/>
				<updated>2008-06-09T19:39:02Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Sprint 1: &lt;br /&gt;
  * Implement basic structure of Dungeon game.&lt;br /&gt;
     []Loading XML data&lt;br /&gt;
     []converting XML data to load level&lt;br /&gt;
     []Basic update structure&lt;br /&gt;
     []Data structures of the levels&lt;br /&gt;
     []Input&lt;br /&gt;
     []Game Flow&lt;br /&gt;
     []Collision&lt;br /&gt;
     []Implement Menus&lt;br /&gt;
     []Difficulty&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Sprint 2:&lt;br /&gt;
  * Implement more complex Dungeon game functions&lt;br /&gt;
     []Traps/Enemies&lt;br /&gt;
     []Stealth bar&lt;br /&gt;
     []Player abilities&lt;br /&gt;
     []AI Logic&lt;br /&gt;
     []placeholder UI&lt;br /&gt;
     []Integrate the player &amp;#039;PDA&amp;#039; (multitool) &lt;br /&gt;
          []Use player abilities through tool&lt;br /&gt;
          []placeholder UI&lt;br /&gt;
&lt;br /&gt;
Sprint 3:&lt;br /&gt;
  * Implement Hacking Phase, aka Embedded Figures test&lt;br /&gt;
     []Create hackable objects&lt;br /&gt;
     []Placeholder graphics for hacking phase&lt;br /&gt;
     []Logging&lt;br /&gt;
     []integrate into level&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sprint 4:&lt;br /&gt;
  * Implement Sally Anne&lt;br /&gt;
     []Implement first theory of mind question&lt;br /&gt;
     []implement 2nd theory of mind question&lt;br /&gt;
     []Tie into level progression&lt;br /&gt;
     []Logging&lt;br /&gt;
&lt;br /&gt;
Sprint 5:&lt;br /&gt;
  * Implement Rewards&lt;br /&gt;
     []Implement a system for rewarding the player&lt;br /&gt;
     []calculate total rewards based of performance in mini game&lt;br /&gt;
     []tie to colony simulator&lt;br /&gt;
  * Tutorial&lt;br /&gt;
     []yep&lt;br /&gt;
  * Implement easy access trial modifiers to mini game menu&lt;br /&gt;
&lt;br /&gt;
Sprint 6:&lt;br /&gt;
  * Implement Map Editor&lt;br /&gt;
     []Read/Write/edit XML data containing tileset information for world/level/room&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sprint 7:&lt;br /&gt;
  * Implement Player Profiles&lt;br /&gt;
     []Keep track of missions played/progression made&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sprint 8: &lt;br /&gt;
  * Create new levels and obstacles.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Milestones&amp;diff=212</id>
		<title>Milestones</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Milestones&amp;diff=212"/>
				<updated>2008-06-09T19:38:44Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: New page: Mile Stones  Sprint 1:    * Implement basic structure of Dungeon game.      []Loading XML data      []converting XML data to load level      []Basic update structure      []Data structures...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mile Stones&lt;br /&gt;
&lt;br /&gt;
Sprint 1: &lt;br /&gt;
  * Implement basic structure of Dungeon game.&lt;br /&gt;
     []Loading XML data&lt;br /&gt;
     []converting XML data to load level&lt;br /&gt;
     []Basic update structure&lt;br /&gt;
     []Data structures of the levels&lt;br /&gt;
     []Input&lt;br /&gt;
     []Game Flow&lt;br /&gt;
     []Collision&lt;br /&gt;
     []Implement Menus&lt;br /&gt;
     []Difficulty&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Sprint 2:&lt;br /&gt;
  * Implement more complex Dungeon game functions&lt;br /&gt;
     []Traps/Enemies&lt;br /&gt;
     []Stealth bar&lt;br /&gt;
     []Player abilities&lt;br /&gt;
     []AI Logic&lt;br /&gt;
     []placeholder UI&lt;br /&gt;
     []Integrate the player &amp;#039;PDA&amp;#039; (multitool) &lt;br /&gt;
          []Use player abilities through tool&lt;br /&gt;
          []placeholder UI&lt;br /&gt;
&lt;br /&gt;
Sprint 3:&lt;br /&gt;
  * Implement Hacking Phase, aka Embedded Figures test&lt;br /&gt;
     []Create hackable objects&lt;br /&gt;
     []Placeholder graphics for hacking phase&lt;br /&gt;
     []Logging&lt;br /&gt;
     []integrate into level&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sprint 4:&lt;br /&gt;
  * Implement Sally Anne&lt;br /&gt;
     []Implement first theory of mind question&lt;br /&gt;
     []implement 2nd theory of mind question&lt;br /&gt;
     []Tie into level progression&lt;br /&gt;
     []Logging&lt;br /&gt;
&lt;br /&gt;
Sprint 5:&lt;br /&gt;
  * Implement Rewards&lt;br /&gt;
     []Implement a system for rewarding the player&lt;br /&gt;
     []calculate total rewards based of performance in mini game&lt;br /&gt;
     []tie to colony simulator&lt;br /&gt;
  * Tutorial&lt;br /&gt;
     []yep&lt;br /&gt;
  * Implement easy access trial modifiers to mini game menu&lt;br /&gt;
&lt;br /&gt;
Sprint 6:&lt;br /&gt;
  * Implement Map Editor&lt;br /&gt;
     []Read/Write/edit XML data containing tileset information for world/level/room&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sprint 7:&lt;br /&gt;
  * Implement Player Profiles&lt;br /&gt;
     []Keep track of missions played/progression made&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sprint 8: &lt;br /&gt;
  * Create new levels and obstacles.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Hacker_Havoc&amp;diff=209</id>
		<title>Hacker Havoc</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Hacker_Havoc&amp;diff=209"/>
				<updated>2008-06-05T01:46:57Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
This minigame tests theory of mind and detection of embedded figures.&lt;br /&gt;
&lt;br /&gt;
The mini-game&amp;#039;s theory-of-mind component is an adaptation of the classic “Sally Anne” test of theory-of-mind. In the “Sally Anne” test one character, Sally, places a marble in a safe place, and then whilst Sally is out of the room another character, Anne, moves the marble to a new hiding place.  The subject is asked “Where will Sally look for her marble?” or “Where does Sally think the marble is?” Many autistic children, like normal children under four years of age, answer this question erroneously in terms of what they themselves know about where Anne moved the marble, instead of what Sally knows.  Those who correctly answer this first-order theory-of-mind question may still respond incorrectly to a second-order question: if, unbeknownst to Anne, Sally was peering through the keyhole and saw Anne move the marble, “Where does Anne think Sally will look for the marble?”&lt;br /&gt;
&lt;br /&gt;
The player is infiltrating a subspace communications satellite.  The player will have to navigate to and hack comm stations to steal Pirate communication messages.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Premise==&lt;br /&gt;
&lt;br /&gt;
You are a covert operative for the World Space Initiative. The Order of Orion is attacking merchants carrying WSI payloads, stealing their cargo, and stashing the goods on various planets or locations. Your mission is to infiltrate their communication satellites and discover the location of the stolen cargo.&lt;br /&gt;
&lt;br /&gt;
==Objective==&lt;br /&gt;
&lt;br /&gt;
Recover as many communication logs about stolen Cargo as possible and determine where the merchants and cargo are.&lt;br /&gt;
&lt;br /&gt;
==Characters==&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
Player:  An elite reconisaince operative trained in stealth and sabotage.  These agents have access to a personal cloaking device, a molecular copier, hacking tools and many other items.  They excel in non lethal force and avoid direct confrontation whenever possible.   &lt;br /&gt;
&lt;br /&gt;
Bobcat B-3 Interceptor:  A small ship outfitted with the best cloaking and stealth technology available.  This ship is used to get the operative to and from the satellite undetected.&lt;br /&gt;
&lt;br /&gt;
Satellite Security:  The satellite is garrisoned with security guards and security devices.  These guards are tasked with keeping the satelite safe and un comprimized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//These Characters will be shown in the cut scenes.&lt;br /&gt;
Merchants:  Various merchants that ferry goods throughout the solar system. Those carrying WSI goods are targets of OoO raiders. &lt;br /&gt;
&lt;br /&gt;
Raiders:  Various OoO pirates target merchants under WSI contracts.  Pirates can be found stealing from all across the galaxy and transporting any valuable cargo to different locations.  &lt;br /&gt;
&lt;br /&gt;
Cargo:  The OoO is stealing WSI payloads and hiding them on planets to be picked up by other OoO operatives at a later date. Finding these are the objectives of the game.  All cargo will have an Icon on them symbolizing the type of material inside.  &lt;br /&gt;
&lt;br /&gt;
Planets and Buildings:  Pirates and merchants will move cargo from on plater to another, or one building to another.&lt;br /&gt;
&lt;br /&gt;
==Gameplay==&lt;br /&gt;
&lt;br /&gt;
The game is divided into 3 different phases:&lt;br /&gt;
&lt;br /&gt;
Puzzle Phase&lt;br /&gt;
	Players will explore floors of the satellite to find comm stations.  They will have to avoid guards and move from room to room until they find that floors comm station.  Players will have to use their abilities to deactivate traps and guards. &lt;br /&gt;
&lt;br /&gt;
Hacking Phase&lt;br /&gt;
	Players will have to complete a embedded figures test whenever they use their hacking tool. &lt;br /&gt;
&lt;br /&gt;
Sally Anne Phase&lt;br /&gt;
	Players will be shown an animation depicting the message the player has found. Players will then be asked the theory of mind questions.  Game play will then transition back to the Puzzle Phase.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Phases==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Puzzle Phase&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Objective &lt;br /&gt;
&lt;br /&gt;
The player will explore the different floors of the satellite.  Before a player can move to the next floor the player must explore all the rooms of the floor and hack the communication panel.  To do so players will have to avoid detection by utilizing their various stealth abilities.  &lt;br /&gt;
&lt;br /&gt;
The game will be turn based.  The game state will not change until the player performs an action.  This will allow players to take as much time as needed to plan out their moves.  Guards and other interactive objects will not do anything until after the player has done an action.  Players will always complete their action before the world takes it&amp;#039;s turn.  &lt;br /&gt;
&lt;br /&gt;
When the player enters the facility, the security system is un aware of them.  When a player is caught or fails an event, such as hacking a terminal, the security system will become more aware of them.  This awareness is represented by a meter.  Once them meter is filled the Security System is fully aware of the player and will send guards to capture the infiltrator.  Once this occurs sirens will sound and the player will have to tele port to their ship and escape the station.  The awareness level will effectively act as the players lives or attempts.  After a period of turns of not being detected the players awareness level will start decreasing.  &lt;br /&gt;
&lt;br /&gt;
Actions&lt;br /&gt;
&lt;br /&gt;
Move -  The player will be able to move in 4 unique directions!  &lt;br /&gt;
Wait -  This action represent the player skipping a turn.&lt;br /&gt;
Cloak - This action will make the player invisible for a specific number of turns.&lt;br /&gt;
Hack - This action will start the Hacking Phase.  If a player is un successful in hacking the object then they will be teleported back to the beginning of the level.    &lt;br /&gt;
Set Trap - Players will be able to set traps for guards&lt;br /&gt;
Use - Players will be able to interact with their environment using this action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enemies&lt;br /&gt;
&lt;br /&gt;
Guard - Guards will patrol the halls of the facility.  A patrolling guard will be able to catch any player in their line of sight.  Guards will have predictable paths that they follow.  Guards can be avoided by using the cloak ability or deactivated by placing a trap.  A deactivated guard will either disappear or fall to the floor.  If guards do not dissappear then the player will have to move them to prevent other guards from finding the body.&lt;br /&gt;
&lt;br /&gt;
Sentry Camera - A sentry camera will detect the player if they enter in to it&amp;#039;s line of sight.  Sentry camera&amp;#039;s will not move, but will rotate in place.  To disable a sentry camera you will need to find it&amp;#039;s control panel and hack it.  Each camera and control panel will have matching colors.  Cloaking can be used to avoid the camera.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Espionage PDA&lt;br /&gt;
&lt;br /&gt;
Every infiltrator has their own personal Espionage PDA.  This PDA can communicate with your ship and provide you with useful information.  This will be where the player can see their mission objectives, current mission progress, can view or retry any tutorial sections or end the game.  &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hacking Phase&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Encrypted comms are represented by shapes that flow from the left to the right of the screen, somewhat akin to &amp;#039;&amp;#039;the Matrix.&amp;#039;&amp;#039; The bottom of the game screen houses the screen of &amp;#039;&amp;#039;the Snifftron ST3,&amp;#039;&amp;#039; a device that hackers use to decrypt data. &lt;br /&gt;
&lt;br /&gt;
In a manner very similar to the traditional Embedded Figures Test, the ST3 generates an abstract shape and displays it on its screen. As the data stream flows across the top of the game screen, random shapes pop out and appear in the center of the data stream. If this large shape contains the simpler shape displayed on the ST3, then the player should press spacebar before the trial expires. If this happens, the player successfully &amp;quot;filters&amp;quot; the data stream. The player can only fail this process (either by not pressing spacebar on a match or pressing spacebar on a non-match) 3 times before the connection is lost and the message is lost.  Some objects will be more difficult to hack and will require more sucessful matches. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the player filters the data successfully enough times, then the comm is decrypted.  Diffrent results will occur depending on the item hacked.  If a comm terminal is hacked,a small cutscene plays before returning to the navigation screen. If the player is unsuccessful, then they return to the navigation screen and their detection level will increase.&lt;br /&gt;
&lt;br /&gt;
The large shapes are generated according the figure below. Generating smaller shapes that are embedded in the large shapes can easily be done by connecting the dots along edge connections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
==Sally Anne Phase==&lt;br /&gt;
&lt;br /&gt;
Once a players successfully hacks the comm station they will be shown a brief series of animations depicting the message they stole. There will be many different messages, but each will follow the same principles. In animation #1, a friendly ship deposits a resource (e.g. fuel or materials) in a depot on one of several available planets.  (Planets are readily distinguishable by their location on the star map and by their surface appearance.)  In animation #2, an opponent ship appears and either steals the resource and deposits it on another planet (THEFT, 2/3 probability) or simply scans the resource (¬THEFT, 1/3 probability).  Animation #3 is a picture of the friendly ship&amp;#039;s control centre including its captain and its viewscreen, which shows either a sensor scan of the opponent&amp;#039;s actions (SCAN, ½ probability) or noise representing sensor jamming (¬SCAN, ½ probability).  Thus by the end of animation #3, one of three equiprobable situations exists: (1) the friend believes correctly that the resource is in its original location, and the opponent believes correctly that the friend will look for the resource in this location (¬THEFT); (2) the friend believes incorrectly that the resource is in its original location, and the opponent believes correctly that the friend will look for the resource in its original location (THEFT∧¬SCAN); (3) the friend believes correctly that the resource is in its new location, and the opponent believes incorrectly that the friend will look for the resource in its original location (THEFT∧SCAN).  Animation #4 reminds the player that the friend will always set course to retrieve the resource, and that the opponent will always set course to intercept the friend.  After this fourth animation, the player is prompted pictorially to lay in two intercept courses (by moving the mouse to the appropriate planet), one to rendez-vous with the friend and one to engage the opponent.  In order to set these courses the player must infer where the friend thinks the resource is and where the opponent thinks the friend will look for the resource, respectively.  Accuracy and response time in these tasks measure first-order and second-order theory-of-mind processing.&lt;br /&gt;
&lt;br /&gt;
These animations will be still shots depicting the cut scene.  Animations are planned for future releases.&lt;br /&gt;
&lt;br /&gt;
==Scoring==&lt;br /&gt;
&lt;br /&gt;
Players will be given a score based on how many messages they steal and how many bonus items they find.  This score will determine how much money they get.  A players score will be reduced based on the number of times they were caught.    &lt;br /&gt;
Players will also be given resources and trade goods for each correct Sally Anne response.&lt;br /&gt;
Players will be given a ranking of sorts, based on their score and responses, that will determine the number of tokens they receive.&lt;br /&gt;
Players will always receive at least one of the tokens.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Development==&lt;br /&gt;
&lt;br /&gt;
[[Milestones]]&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Tasks&amp;diff=208</id>
		<title>Tasks</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Tasks&amp;diff=208"/>
				<updated>2008-06-02T15:17:54Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are the tasks that still need to be completed for the Colony Simulator&lt;br /&gt;
&lt;br /&gt;
*       Transparent 3D objects&lt;br /&gt;
 o Details: Enable Transparent objects&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
&lt;br /&gt;
*       Z-ordering&lt;br /&gt;
**       Sort opaque objects for optimal rendering&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
&lt;br /&gt;
**       Sort transparent objects for correct rendering&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
&lt;br /&gt;
*       Track down problem with Normals when exporting a Collada File&lt;br /&gt;
 o Details: Normals don&amp;#039;t export properly&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
&lt;br /&gt;
*       UI&lt;br /&gt;
 o Details: Design and implement the UI interface and all the menus for the colony simulator.&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
&lt;br /&gt;
*       Mouse Picking&lt;br /&gt;
 o Details: Translate the 2D coords of the mouse to the 3D vector to determine what the user is clicking on in the game.  &lt;br /&gt;
 o Assigned to:&lt;br /&gt;
&lt;br /&gt;
*       Gameplay programming/object interaction (big broad topic!)&lt;br /&gt;
 o Details: This will probabl be divided into many smaller categories.  General gameplay elements.  Factions, building interactions and the like. &lt;br /&gt;
 o Assigned to:&lt;br /&gt;
&lt;br /&gt;
*       Place Objects&lt;br /&gt;
 o Details: Select and build buildings on the colony sim.&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
&lt;br /&gt;
*       Delete Objects&lt;br /&gt;
 o Details: Select and destroy buildings.  &lt;br /&gt;
 o Assigned to:&lt;br /&gt;
&lt;br /&gt;
*       Time&lt;br /&gt;
 o Details: Design and implement a real-time turn based timing system.   &lt;br /&gt;
 o Assigned to:&lt;br /&gt;
&lt;br /&gt;
*       Economy&lt;br /&gt;
 o Details: Design and implement resources and monies. Balance out supply and demand issues.    &lt;br /&gt;
 o Assigned to:&lt;br /&gt;
&lt;br /&gt;
*       Tech Tree&lt;br /&gt;
 o Details: Design and implement the tech &lt;br /&gt;
 o Assigned to:&lt;br /&gt;
&lt;br /&gt;
*       Game Flow&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
&lt;br /&gt;
*     Level loading&lt;br /&gt;
 o Details: Load a players colony sim from an xml file. &lt;br /&gt;
 o Assigned to:&lt;br /&gt;
&lt;br /&gt;
*      Saving&lt;br /&gt;
 o Details: Save a players colony information to an xml file &lt;br /&gt;
 o Assigned to:&lt;br /&gt;
&lt;br /&gt;
*     Transition between minigames and main game&lt;br /&gt;
 o Details: Decide how players will transition between the colony sim and the minigames.  Design and implement UI elements for this system.  &lt;br /&gt;
 o Assigned to:&lt;br /&gt;
&lt;br /&gt;
*       Main Menu&lt;br /&gt;
 o Details: Create all the menus and transitions.&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
&lt;br /&gt;
*      Finish Art&lt;br /&gt;
 o Details: Either August or a new artist will finish this.&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
&lt;br /&gt;
*     Settings/System Options&lt;br /&gt;
 o Details: Enable, save and restore System settings.  Saved in an xml file.  Could be tied to user profiles.&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
&lt;br /&gt;
*     User Profiles&lt;br /&gt;
 o Details: Enable, save, restore User profiles.  Profiles will be saved as XML files.  These will be for player information and not contain colony sim information. &lt;br /&gt;
 o Assigned to:&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Tasks&amp;diff=207</id>
		<title>Tasks</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Tasks&amp;diff=207"/>
				<updated>2008-06-02T15:06:12Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are the tasks that still need to be completed for the Colony Simulator&lt;br /&gt;
&lt;br /&gt;
*       Transparent 3D objects&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Z-ordering&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Sort opaque objects for optimal rendering&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Sort transparent objects for correct rendering&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Track down problem with Normals when exporting a Collada File&lt;br /&gt;
 o Details: Normals don&amp;#039;t export properly&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       UI&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Mouse Picking&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Gameplay programming/object interaction (big broad topic!)&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Place Objects&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Delete Objects&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Time&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Economy&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Tech Tree&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Game Flow&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*     Level loading&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*      Saving&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*     Transition between minigames and main game&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Main Menu&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*      Finish Art (Either I&amp;#039;ll get to it or an artist will finish it)&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*     Settings/System Options&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*     User Profiles&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Tasks&amp;diff=206</id>
		<title>Tasks</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Tasks&amp;diff=206"/>
				<updated>2008-06-02T15:04:39Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are the tasks that still need to be completed for the Colony Simulator&lt;br /&gt;
&lt;br /&gt;
*       Transparent 3D objects&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Z-ordering&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Sort oaque objects for optimal rendering&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Sort transparent objects for correct rendering&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Track down problem with Normals when exporting a Collada File&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       UI&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Mouse Picking&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Gameplay programming/object interaction (big broad topic!)&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Place Objects&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Delete Objects&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Time&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Economy&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Tech Tree&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Game Flow&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*     Level loading&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*      Saving&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*     Transition between minigames and main game&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*       Main Menu&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*      Finish Art (Either I&amp;#039;ll get to it or an artist will finish it)&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*     Settings/System Options&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;br /&gt;
*     User Profiles&lt;br /&gt;
 o Details:&lt;br /&gt;
 o Assigned to:&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Tasks&amp;diff=205</id>
		<title>Tasks</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Tasks&amp;diff=205"/>
				<updated>2008-06-02T15:02:56Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are the tasks that still need to be completed for the Colony Simulator&lt;br /&gt;
&lt;br /&gt;
*       Transparent 3D objects&lt;br /&gt;
*       Z-ordering&lt;br /&gt;
*       Sort opaque objects for optimal rendering&lt;br /&gt;
*       Sort transparent objects for correct rendering&lt;br /&gt;
*       Track down problem with Normals when exporting a Collada File&lt;br /&gt;
*       UI&lt;br /&gt;
*       Mouse Picking&lt;br /&gt;
*       Gameplay programming/object interaction (big broad topic!)&lt;br /&gt;
*       Place Objects&lt;br /&gt;
*       Delete Objects&lt;br /&gt;
*       Time&lt;br /&gt;
*       Economy&lt;br /&gt;
*       Tech Tree&lt;br /&gt;
*       Game Flow&lt;br /&gt;
*     Level loading&lt;br /&gt;
*      Saving&lt;br /&gt;
*     Transition between minigames and main game&lt;br /&gt;
*       Main Menu&lt;br /&gt;
*      Finish Art (Either I&amp;#039;ll get to it or an artist will finish it)&lt;br /&gt;
*     Settings/System Options&lt;br /&gt;
*     User Profiles&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Tasks&amp;diff=204</id>
		<title>Tasks</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Tasks&amp;diff=204"/>
				<updated>2008-06-02T15:01:22Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are the tasks that still need to be completed for the Colony Simulator&lt;br /&gt;
&lt;br /&gt;
•       Transparent 3D objects&lt;br /&gt;
•       Z-ordering&lt;br /&gt;
•       Sort opaque objects for optimal rendering&lt;br /&gt;
•       Sort transparent objects for correct rendering&lt;br /&gt;
•       Track down problem with Normals when exporting a Collada File&lt;br /&gt;
•       UI&lt;br /&gt;
•       Mouse Picking&lt;br /&gt;
•       Gameplay programming/object interaction (big broad topic!)&lt;br /&gt;
•       Place Objects&lt;br /&gt;
•       Delete Objects&lt;br /&gt;
•       Time&lt;br /&gt;
•       Economy&lt;br /&gt;
•       Tech Tree&lt;br /&gt;
•       Game Flow&lt;br /&gt;
•     Level loading&lt;br /&gt;
•      Saving&lt;br /&gt;
•     Transition between minigames and main game&lt;br /&gt;
•       Main Menu&lt;br /&gt;
•      Finish Art (Either I&amp;#039;ll get to it or an artist will finish it)&lt;br /&gt;
•     Settings/System Options&lt;br /&gt;
•     User Profiles&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Tasks&amp;diff=203</id>
		<title>Tasks</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Tasks&amp;diff=203"/>
				<updated>2008-06-02T15:00:14Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: New page: These are the tasks that still need to be completed for the Colony Simulator  •       Transparent 3D objects •       Z-ordering  o     Sort opaque objects for optimal rendering  o     ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are the tasks that still need to be completed for the Colony Simulator&lt;br /&gt;
&lt;br /&gt;
•       Transparent 3D objects&lt;br /&gt;
•       Z-ordering&lt;br /&gt;
 o     Sort opaque objects for optimal rendering&lt;br /&gt;
 o     Sort transparent objects for correct rendering&lt;br /&gt;
•       Track down problem with Normals when exporting a Collada File&lt;br /&gt;
•       UI&lt;br /&gt;
•       Mouse Picking&lt;br /&gt;
•       Gameplay programming/object interaction (big broad topic!)&lt;br /&gt;
•       Place Objects&lt;br /&gt;
•       Delete Objects&lt;br /&gt;
•       Time&lt;br /&gt;
•       Economy&lt;br /&gt;
•       Tech Tree&lt;br /&gt;
•       Game Flow&lt;br /&gt;
 o     Level loading&lt;br /&gt;
 o     Saving&lt;br /&gt;
 o     Transition between minigames and main game&lt;br /&gt;
•       Main Menu&lt;br /&gt;
 o     Finish Art (Either I&amp;#039;ll get to it or an artist will finish it)&lt;br /&gt;
 o     Settings/System Options&lt;br /&gt;
 o     User Profiles&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Functional_specifications&amp;diff=202</id>
		<title>Functional specifications</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Functional_specifications&amp;diff=202"/>
				<updated>2008-06-02T14:58:40Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to this game&amp;#039;s functional spec table of contents.  There are two major parts: the colony simulator and the minigames.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Important Neuroscientific Considerations in Game Design for Autism]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Colony Simulator&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Colony Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Factions]]&lt;br /&gt;
&lt;br /&gt;
[[Structures]]&lt;br /&gt;
&lt;br /&gt;
[[Consumables]]&lt;br /&gt;
&lt;br /&gt;
[[Tasks]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Minigames&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Meteor Madness]]&lt;br /&gt;
&lt;br /&gt;
[[Factory Frenzy]]&lt;br /&gt;
&lt;br /&gt;
[[Hacker Havoc]]&lt;br /&gt;
&lt;br /&gt;
[[Spaceship Shenanigans]]&lt;br /&gt;
&lt;br /&gt;
[[Mini Game Rewards]]&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Mini_Game_Rewards&amp;diff=201</id>
		<title>Mini Game Rewards</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Mini_Game_Rewards&amp;diff=201"/>
				<updated>2008-05-07T16:30:14Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: /* Tokens */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;One of the goals of this project is to motivate the players to want to complete and do successful in the psychological tests.  To accomplish this players will receive rewards from playing mini games that will allow them to build and improve their colony.&lt;br /&gt;
&lt;br /&gt;
==Rewards== &lt;br /&gt;
Rewards will be given in the form of Money, Resources, Buildings, Technologies and Tokens.  Not all mini games will give the same rewards.&lt;br /&gt;
&lt;br /&gt;
===Money===&lt;br /&gt;
Money is used in the construction of every building.  Completing mini games will be the main and possibly only source of income for players.  All mini games will give the player some amount of money based on their performance.  Some mini games will reward the player with bonus money for completing bonus objectives not directly related to the tests.  An example of this is in Maritime Defender where the player can gain money by destroying asteroids.&lt;br /&gt;
&lt;br /&gt;
===Resources===&lt;br /&gt;
Some mini games will reward the player with resources.  These resources will be used to construct buildings in the Colony Simulator.  Resources will be specific to a mini game.  These will mostly be common resources, but there may be a few mini game only resources that cannot be accumulated in the colony mode. &lt;br /&gt;
&lt;br /&gt;
===Buildings=== &lt;br /&gt;
If a player dose especially well or completes a series of tasks withing a mini game they could be rewarded with a building.  These buildings will be special to the mini game and provide unique bonuses.  Players will be able to build only one of these buildings each time they earn the reward.  These buildings will be faction neutral.  &lt;br /&gt;
&lt;br /&gt;
===Technologies===&lt;br /&gt;
These will be very rare rewards.  They will give the player a permanent technology bonus.  These technologies will be unique and add flavor to a colony, but will not be overly important.  They will be the cool technologies.    &lt;br /&gt;
&lt;br /&gt;
===Tokens===&lt;br /&gt;
Tokens will be given to a player each time they play a mini game.  Players will always receive at least one token each time they play a mini game, but will receive many more for successfully completing a mini game.  Each mini game will have it&amp;#039;s own token.  These tokens will represent objects that can be used to trade with Interstellar Merchants.  The items the Merchants will have will be powerful and will only be exclusive to the merchants store.  By setting proper token requirements on items it is hoped that this will encourage players to play all the mini games.&lt;br /&gt;
&lt;br /&gt;
This is similar to World of Warcrafts mark of honor Player Versus Player reward system.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Mini_Game_Rewards&amp;diff=200</id>
		<title>Mini Game Rewards</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Mini_Game_Rewards&amp;diff=200"/>
				<updated>2008-05-07T16:28:27Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: New page: One of the goals of this project is to motivate the players to want to complete and do successful in the psychological tests.  To accomplish this players will receive rewards from playing ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;One of the goals of this project is to motivate the players to want to complete and do successful in the psychological tests.  To accomplish this players will receive rewards from playing mini games that will allow them to build and improve their colony.&lt;br /&gt;
&lt;br /&gt;
==Rewards== &lt;br /&gt;
Rewards will be given in the form of Money, Resources, Buildings, Technologies and Tokens.  Not all mini games will give the same rewards.&lt;br /&gt;
&lt;br /&gt;
===Money===&lt;br /&gt;
Money is used in the construction of every building.  Completing mini games will be the main and possibly only source of income for players.  All mini games will give the player some amount of money based on their performance.  Some mini games will reward the player with bonus money for completing bonus objectives not directly related to the tests.  An example of this is in Maritime Defender where the player can gain money by destroying asteroids.&lt;br /&gt;
&lt;br /&gt;
===Resources===&lt;br /&gt;
Some mini games will reward the player with resources.  These resources will be used to construct buildings in the Colony Simulator.  Resources will be specific to a mini game.  These will mostly be common resources, but there may be a few mini game only resources that cannot be accumulated in the colony mode. &lt;br /&gt;
&lt;br /&gt;
===Buildings=== &lt;br /&gt;
If a player dose especially well or completes a series of tasks withing a mini game they could be rewarded with a building.  These buildings will be special to the mini game and provide unique bonuses.  Players will be able to build only one of these buildings each time they earn the reward.  These buildings will be faction neutral.  &lt;br /&gt;
&lt;br /&gt;
===Technologies===&lt;br /&gt;
These will be very rare rewards.  They will give the player a permanent technology bonus.  These technologies will be unique and add flavor to a colony, but will not be overly important.  They will be the cool technologies.    &lt;br /&gt;
&lt;br /&gt;
===Tokens===&lt;br /&gt;
Tokens will be given to a player each time they play a mini game.  Players will always receive at least one token each time they play a mini game, but will receive many more for successfully completing a mini game.  Each mini game will have it&amp;#039;s own token.  These tokens will represent objects that can be used to trade with Interstellar Merchants.  The items the Merchants will have will be powerful and will only be exclusive to the merchants store.  By setting proper token requirements on items it is hoped that this will encourage players to play all the mini games.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Functional_specifications&amp;diff=199</id>
		<title>Functional specifications</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Functional_specifications&amp;diff=199"/>
				<updated>2008-05-07T15:50:03Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to this game&amp;#039;s functional spec table of contents.  There are two major parts: the colony simulator and the minigames.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Important Neuroscientific Considerations in Game Design for Autism]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Colony Simulator&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Colony Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Factions]]&lt;br /&gt;
&lt;br /&gt;
[[Structures]]&lt;br /&gt;
&lt;br /&gt;
[[Consumables]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Minigames&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Meteor Madness]]&lt;br /&gt;
&lt;br /&gt;
[[Factory Frenzy]]&lt;br /&gt;
&lt;br /&gt;
[[Hacker Havoc]]&lt;br /&gt;
&lt;br /&gt;
[[Spaceship Shenanigans]]&lt;br /&gt;
&lt;br /&gt;
[[Mini Game Rewards]]&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Factions&amp;diff=198</id>
		<title>Factions</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Factions&amp;diff=198"/>
				<updated>2008-05-07T15:42:57Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: New page: Factions  Factions will represent different paths of development that a player can choose. Players will be able play with any faction they want and do not have to choose on exclusively. Co...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Factions&lt;br /&gt;
&lt;br /&gt;
Factions will represent different paths of development that a player can choose. Players will be able play with any faction they want and do not have to choose on exclusively. Colonies can be all one faction, or they can be blend of multiple factions.&lt;br /&gt;
&lt;br /&gt;
Factions would represent races (humans, robots, aliens), corporations(each corporation has it&amp;#039;s on area of expertise), or groups of people ( much like countries or political parties). Each faction will be distinct! This will be done buy playing off popular archetypes that autistic players will have an easy time identifying. Giving each faction a distinct colour, unique symbols, and keeping buildings with the same style would be a good way to accomplish this. Players will have a rating with each faction.&lt;br /&gt;
&lt;br /&gt;
Ex: The Tree Hugger Collective&amp;#039;s buildings and research a geared towards a more eco friendly colony. Whereas Unchained Autonomous building focus more on a industrial look and make robots!!!&lt;br /&gt;
&lt;br /&gt;
Buildings, units and technologies will be associated with different factions. Creating buildings that belong to a specific faction will increase your faction rating for that faction. New buildings and units will be available to you based on your faction rating. Some building may give bonuses to some factions but may give negatives to others.&lt;br /&gt;
&lt;br /&gt;
For example: The player would like to build a tree sky scraper. However the Sky Scraper requires trees and a rating of 60 with the Tree Hugger Collective (THC) both of which the players has zero. The player can build Tree Farms though, which produce trees and give THC rating. The player builds 20 of these farms granting him enough faction and wood to make the sky scraper.&lt;br /&gt;
&lt;br /&gt;
If a player destroys a building they will lose the faction bonus associated with it. We could implement a level system, where once a player achieves a level that gain is permanent, but their faction could still change. Levels could override a faction requirement. Some buildings would not have a level option and would require a high faction. Once a building is built it will never need to check the players faction rating again.&lt;br /&gt;
&lt;br /&gt;
Example: Jimmy has spent a lot of time making tree farms and skyscrapers. In doing so he has reached 1000 faction rating and advances to level 2 with the Tree Hugger Collective. However Jimmy decides that he doesn&amp;#039;t want his tree farms anymore and decides to destroy all of them and replace them with &amp;quot;Unchained Autonomous&amp;quot; robot factories. His rating with THC drops to 25 as a result. Jimmy likes the idea of his robots living in tree sky scrapers, but needs to build more skyscrapers for his colonies people. Since he has a level 2 faction rating with THC and the tree sky scraper requires 60 Faction OR Level 2 he can still build more sky scrapers for his robots to live happily in.&lt;br /&gt;
&lt;br /&gt;
In this example I used level N to indicate the faction level. This could easily be assigned something more visually identifiable. Maybe a military rank or something else that use insignias. You current level would be shown at all times beside your Faction Bar.&lt;br /&gt;
&lt;br /&gt;
Detailed faction information can be viewed from it&amp;#039;s own window in the game. On the game screen the Faction could be shown as an level up bar coloured to your factions predominate colour. Your faction rating will be displayed in the center of the bar. The bar will indicate how much more faction you need to achieve the next level with that faction.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Functional_specifications&amp;diff=197</id>
		<title>Functional specifications</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Functional_specifications&amp;diff=197"/>
				<updated>2008-05-07T15:40:09Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to this game&amp;#039;s functional spec table of contents.  There are two major parts: the colony simulator and the minigames.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Important Neuroscientific Considerations in Game Design for Autism]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Colony Simulator&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Colony Mode]]&lt;br /&gt;
&lt;br /&gt;
[[Factions]]&lt;br /&gt;
&lt;br /&gt;
[[Structures]]&lt;br /&gt;
&lt;br /&gt;
[[Consumables]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Minigames&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[Meteor Madness]]&lt;br /&gt;
&lt;br /&gt;
[[Factory Frenzy]]&lt;br /&gt;
&lt;br /&gt;
[[Hacker Havoc]]&lt;br /&gt;
&lt;br /&gt;
[[Spaceship Shenanigans]]&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Consumables&amp;diff=193</id>
		<title>Consumables</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Consumables&amp;diff=193"/>
				<updated>2008-04-17T01:48:49Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Consumables come in 3 varieties.  Resources are gathered which can then be made into products.  Plants produce utilities which many other structures require to run.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All consumables are broken into two tiers.  Tier I is the bare minimum that should make it into the game.  However, since much of this game&amp;#039;s fun will be rooted in creating a complex, diverse economy it may be beneficial to include more consumables.  These are listed in the Tier II category and may be added to the game later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Resources&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
Harvester units can gather resources by traveling from their home structure to a resource tile in the city, harvesting it, and then returning to its home.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;#039;&amp;#039;&amp;#039;Tier I&amp;#039;&amp;#039;&amp;#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oxygen&lt;br /&gt;
&lt;br /&gt;
Vegetables (this could be considered a product if it requires nitrates)&lt;br /&gt;
&lt;br /&gt;
Iron&lt;br /&gt;
&lt;br /&gt;
Gold&lt;br /&gt;
&lt;br /&gt;
Carbon&lt;br /&gt;
&lt;br /&gt;
Silicon&lt;br /&gt;
&lt;br /&gt;
FutureMetal1&lt;br /&gt;
&lt;br /&gt;
Titanium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;#039;&amp;#039;&amp;#039;Tier II&amp;#039;&amp;#039;&amp;#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nitrogen&lt;br /&gt;
&lt;br /&gt;
FutureMetal2&lt;br /&gt;
&lt;br /&gt;
FutureMetal3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Products&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
Factories and refineries take in resources or other products to make new products.  These products are shipped out to other structures through a delivery or transport unit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;#039;&amp;#039;&amp;#039;Tier I&amp;#039;&amp;#039;&amp;#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cast/Machined Metal&lt;br /&gt;
&lt;br /&gt;
Rolled Metal&lt;br /&gt;
&lt;br /&gt;
Circuitboards (Gold+Silicon)&lt;br /&gt;
&lt;br /&gt;
Ceramics (Carbon+Silicon)&lt;br /&gt;
&lt;br /&gt;
Superconductors (from FutureMetal1 and/or Ceramics)&lt;br /&gt;
&lt;br /&gt;
Diamond (from Carbon)&lt;br /&gt;
&lt;br /&gt;
Steel (iron+carbon)&lt;br /&gt;
&lt;br /&gt;
Atomic Clay&lt;br /&gt;
&lt;br /&gt;
Plastics&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;#039;&amp;#039;&amp;#039;Tier II&amp;#039;&amp;#039;&amp;#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Meat (requires vegetables)&lt;br /&gt;
&lt;br /&gt;
Nitrates (from Nitrogen)&lt;br /&gt;
&lt;br /&gt;
Atomic Clay (broken down molecules that can be reassembled into almost anything)&lt;br /&gt;
&lt;br /&gt;
Nanotube&lt;br /&gt;
&lt;br /&gt;
Pharmaceuticals&lt;br /&gt;
&lt;br /&gt;
Gold+FutureMetalX Alloy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Utilities&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
Each utility is made by a specific plant.  For that list, go to the [[Structures]] page.  Utilities are transported through lines.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Water&lt;br /&gt;
&lt;br /&gt;
Electricity&lt;br /&gt;
&lt;br /&gt;
FutureGas1 (possibly called &amp;#039;&amp;#039;Hydrocarbonic Gas&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;#039;&amp;#039;&amp;#039;MiniGame Tokens&amp;#039;&amp;#039;&amp;#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Playing a mini game will result in the player receiving a Mini game specific token.  There will be a vendor or trader that the player can trade in these tokens for upgrades and new buildings.  These items will range in rpice and will require only tokens.  This will hopefully give the player more incentive to play all our mini games!.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Hacker_Havoc&amp;diff=192</id>
		<title>Hacker Havoc</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Hacker_Havoc&amp;diff=192"/>
				<updated>2008-04-17T01:43:36Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: /* Sally Anne Phase */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
This minigame tests theory of mind and detection of embedded figures.&lt;br /&gt;
&lt;br /&gt;
The mini-game&amp;#039;s theory-of-mind component is an adaptation of the classic “Sally Anne” test of theory-of-mind. In the “Sally Anne” test one character, Sally, places a marble in a safe place, and then whilst Sally is out of the room another character, Anne, moves the marble to a new hiding place.  The subject is asked “Where will Sally look for her marble?” or “Where does Sally think the marble is?” Many autistic children, like normal children under four years of age, answer this question erroneously in terms of what they themselves know about where Anne moved the marble, instead of what Sally knows.  Those who correctly answer this first-order theory-of-mind question may still respond incorrectly to a second-order question: if, unbeknownst to Anne, Sally was peering through the keyhole and saw Anne move the marble, “Where does Anne think Sally will look for the marble?”&lt;br /&gt;
&lt;br /&gt;
The player is infiltrating a subspace communications satellite.  The player will have to navigate to and hack comm stations to steal Pirate communication messages.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Premise==&lt;br /&gt;
&lt;br /&gt;
You are a covert operative for the World Space Initiative. The Order of Orion is attacking merchants carrying WSI payloads, stealing their cargo, and stashing the goods on various planets or locations. Your mission is to infiltrate their communication satellites and discover the location of the stolen cargo.&lt;br /&gt;
&lt;br /&gt;
==Objective==&lt;br /&gt;
&lt;br /&gt;
Recover as many communication logs about stolen Cargo as possible and determine where the merchants and cargo are.&lt;br /&gt;
&lt;br /&gt;
==Characters==&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
Player:  An elite reconisaince operative trained in stealth and sabotage.  These agents have access to a personal cloaking device, a molecular copier, hacking tools and many other items.  They excel in non lethal force and avoid direct confrontation whenever possible.   &lt;br /&gt;
&lt;br /&gt;
Bobcat B-3 Interceptor:  A small ship outfitted with the best cloaking and stealth technology available.  This ship is used to get the operative to and from the satellite undetected.&lt;br /&gt;
&lt;br /&gt;
Satellite Security:  The satellite is garrisoned with security guards and security devices.  These guards are tasked with keeping the satelite safe and un comprimized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//These Characters will be shown in the cut scenes.&lt;br /&gt;
Merchants:  Various merchants that ferry goods throughout the solar system. Those carrying WSI goods are targets of OoO raiders. &lt;br /&gt;
&lt;br /&gt;
Raiders:  Various OoO pirates target merchants under WSI contracts.  Pirates can be found stealing from all across the galaxy and transporting any valuable cargo to different locations.  &lt;br /&gt;
&lt;br /&gt;
Cargo:  The OoO is stealing WSI payloads and hiding them on planets to be picked up by other OoO operatives at a later date. Finding these are the objectives of the game.  All cargo will have an Icon on them symbolizing the type of material inside.  &lt;br /&gt;
&lt;br /&gt;
Planets and Buildings:  Pirates and merchants will move cargo from on plater to another, or one building to another.&lt;br /&gt;
&lt;br /&gt;
==Gameplay==&lt;br /&gt;
&lt;br /&gt;
The game is divided into 3 different phases:&lt;br /&gt;
&lt;br /&gt;
Puzzle Phase&lt;br /&gt;
	Players will explore floors of the satellite to find comm stations.  They will have to avoid guards and move from room to room until they find that floors comm station.  Players will have to use their abilities to deactivate traps and guards. &lt;br /&gt;
&lt;br /&gt;
Hacking Phase&lt;br /&gt;
	Players will have to complete a embedded figures test whenever they use their hacking tool. &lt;br /&gt;
&lt;br /&gt;
Sally Anne Phase&lt;br /&gt;
	Players will be shown an animation depicting the message the player has found. Players will then be asked the theory of mind questions.  Game play will then transition back to the Puzzle Phase.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Phases==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Puzzle Phase&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Objective &lt;br /&gt;
&lt;br /&gt;
The player will explore the different floors of the satellite.  Before a player can move to the next floor the player must explore all the rooms of the floor and hack the communication panel.  To do so players will have to avoid detection by utilizing their various stealth abilities.  &lt;br /&gt;
&lt;br /&gt;
The game will be turn based.  The game state will not change until the player performs an action.  This will allow players to take as much time as needed to plan out their moves.  Guards and other interactive objects will not do anything until after the player has done an action.  Players will always complete their action before the world takes it&amp;#039;s turn.  &lt;br /&gt;
&lt;br /&gt;
When the player enters the facility, the security system is un aware of them.  When a player is caught or fails an event, such as hacking a terminal, the security system will become more aware of them.  This awareness is represented by a meter.  Once them meter is filled the Security System is fully aware of the player and will send guards to capture the infiltrator.  Once this occurs sirens will sound and the player will have to tele port to their ship and escape the station.  The awareness level will effectively act as the players lives or attempts.  After a period of turns of not being detected the players awareness level will start decreasing.  &lt;br /&gt;
&lt;br /&gt;
Actions&lt;br /&gt;
&lt;br /&gt;
Move -  The player will be able to move in 4 unique directions!  &lt;br /&gt;
Wait -  This action represent the player skipping a turn.&lt;br /&gt;
Cloak - This action will make the player invisible for a specific number of turns.&lt;br /&gt;
Hack - This action will start the Hacking Phase.  If a player is un successful in hacking the object then they will be teleported back to the beginning of the level.    &lt;br /&gt;
Set Trap - Players will be able to set traps for guards&lt;br /&gt;
Use - Players will be able to interact with their environment using this action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enemies&lt;br /&gt;
&lt;br /&gt;
Guard - Guards will patrol the halls of the facility.  A patrolling guard will be able to catch any player in their line of sight.  Guards will have predictable paths that they follow.  Guards can be avoided by using the cloak ability or deactivated by placing a trap.  A deactivated guard will either disappear or fall to the floor.  If guards do not dissappear then the player will have to move them to prevent other guards from finding the body.&lt;br /&gt;
&lt;br /&gt;
Sentry Camera - A sentry camera will detect the player if they enter in to it&amp;#039;s line of sight.  Sentry camera&amp;#039;s will not move, but will rotate in place.  To disable a sentry camera you will need to find it&amp;#039;s control panel and hack it.  Each camera and control panel will have matching colors.  Cloaking can be used to avoid the camera.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Espionage PDA&lt;br /&gt;
&lt;br /&gt;
Every infiltrator has their own personal Espionage PDA.  This PDA can communicate with your ship and provide you with useful information.  This will be where the player can see their mission objectives, current mission progress, can view or retry any tutorial sections or end the game.  &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hacking Phase&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Encrypted comms are represented by shapes that flow from the left to the right of the screen, somewhat akin to &amp;#039;&amp;#039;the Matrix.&amp;#039;&amp;#039; The bottom of the game screen houses the screen of &amp;#039;&amp;#039;the Snifftron ST3,&amp;#039;&amp;#039; a device that hackers use to decrypt data. &lt;br /&gt;
&lt;br /&gt;
In a manner very similar to the traditional Embedded Figures Test, the ST3 generates an abstract shape and displays it on its screen. As the data stream flows across the top of the game screen, random shapes pop out and appear in the center of the data stream. If this large shape contains the simpler shape displayed on the ST3, then the player should press spacebar before the trial expires. If this happens, the player successfully &amp;quot;filters&amp;quot; the data stream. The player can only fail this process (either by not pressing spacebar on a match or pressing spacebar on a non-match) 3 times before the connection is lost and the message is lost.  Some objects will be more difficult to hack and will require more sucessful matches. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the player filters the data successfully enough times, then the comm is decrypted.  Diffrent results will occur depending on the item hacked.  If a comm terminal is hacked,a small cutscene plays before returning to the navigation screen. If the player is unsuccessful, then they return to the navigation screen and their detection level will increase.&lt;br /&gt;
&lt;br /&gt;
The large shapes are generated according the figure below. Generating smaller shapes that are embedded in the large shapes can easily be done by connecting the dots along edge connections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
==Sally Anne Phase==&lt;br /&gt;
&lt;br /&gt;
Once a players successfully hacks the comm station they will be shown a brief series of animations depicting the message they stole. There will be many different messages, but each will follow the same principles. In animation #1, a friendly ship deposits a resource (e.g. fuel or materials) in a depot on one of several available planets.  (Planets are readily distinguishable by their location on the star map and by their surface appearance.)  In animation #2, an opponent ship appears and either steals the resource and deposits it on another planet (THEFT, 2/3 probability) or simply scans the resource (¬THEFT, 1/3 probability).  Animation #3 is a picture of the friendly ship&amp;#039;s control centre including its captain and its viewscreen, which shows either a sensor scan of the opponent&amp;#039;s actions (SCAN, ½ probability) or noise representing sensor jamming (¬SCAN, ½ probability).  Thus by the end of animation #3, one of three equiprobable situations exists: (1) the friend believes correctly that the resource is in its original location, and the opponent believes correctly that the friend will look for the resource in this location (¬THEFT); (2) the friend believes incorrectly that the resource is in its original location, and the opponent believes correctly that the friend will look for the resource in its original location (THEFT∧¬SCAN); (3) the friend believes correctly that the resource is in its new location, and the opponent believes incorrectly that the friend will look for the resource in its original location (THEFT∧SCAN).  Animation #4 reminds the player that the friend will always set course to retrieve the resource, and that the opponent will always set course to intercept the friend.  After this fourth animation, the player is prompted pictorially to lay in two intercept courses (by moving the mouse to the appropriate planet), one to rendez-vous with the friend and one to engage the opponent.  In order to set these courses the player must infer where the friend thinks the resource is and where the opponent thinks the friend will look for the resource, respectively.  Accuracy and response time in these tasks measure first-order and second-order theory-of-mind processing.&lt;br /&gt;
&lt;br /&gt;
These animations will be still shots depicting the cut scene.  Animations are planned for future releases.&lt;br /&gt;
&lt;br /&gt;
==Scoring==&lt;br /&gt;
&lt;br /&gt;
Players will be given a score based on how many messages they steal and how many bonus items they find.  This score will determine how much money they get.  A players score will be reduced based on the number of times they were caught.    &lt;br /&gt;
Players will also be given resources and trade goods for each correct Sally Anne response.&lt;br /&gt;
Players will be given a ranking of sorts, based on their score and responses, that will determine the number of tokens they receive.&lt;br /&gt;
Players will always receive at least one of the tokens.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Hacker_Havoc&amp;diff=191</id>
		<title>Hacker Havoc</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Hacker_Havoc&amp;diff=191"/>
				<updated>2008-04-16T21:15:14Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: /* Premise */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
This minigame tests theory of mind and detection of embedded figures.&lt;br /&gt;
&lt;br /&gt;
The mini-game&amp;#039;s theory-of-mind component is an adaptation of the classic “Sally Anne” test of theory-of-mind. In the “Sally Anne” test one character, Sally, places a marble in a safe place, and then whilst Sally is out of the room another character, Anne, moves the marble to a new hiding place.  The subject is asked “Where will Sally look for her marble?” or “Where does Sally think the marble is?” Many autistic children, like normal children under four years of age, answer this question erroneously in terms of what they themselves know about where Anne moved the marble, instead of what Sally knows.  Those who correctly answer this first-order theory-of-mind question may still respond incorrectly to a second-order question: if, unbeknownst to Anne, Sally was peering through the keyhole and saw Anne move the marble, “Where does Anne think Sally will look for the marble?”&lt;br /&gt;
&lt;br /&gt;
The player is infiltrating a subspace communications satellite.  The player will have to navigate to and hack comm stations to steal Pirate communication messages.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Premise==&lt;br /&gt;
&lt;br /&gt;
You are a covert operative for the World Space Initiative. The Order of Orion is attacking merchants carrying WSI payloads, stealing their cargo, and stashing the goods on various planets or locations. Your mission is to infiltrate their communication satellites and discover the location of the stolen cargo.&lt;br /&gt;
&lt;br /&gt;
==Objective==&lt;br /&gt;
&lt;br /&gt;
Recover as many communication logs about stolen Cargo as possible and determine where the merchants and cargo are.&lt;br /&gt;
&lt;br /&gt;
==Characters==&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
Player:  An elite reconisaince operative trained in stealth and sabotage.  These agents have access to a personal cloaking device, a molecular copier, hacking tools and many other items.  They excel in non lethal force and avoid direct confrontation whenever possible.   &lt;br /&gt;
&lt;br /&gt;
Bobcat B-3 Interceptor:  A small ship outfitted with the best cloaking and stealth technology available.  This ship is used to get the operative to and from the satellite undetected.&lt;br /&gt;
&lt;br /&gt;
Satellite Security:  The satellite is garrisoned with security guards and security devices.  These guards are tasked with keeping the satelite safe and un comprimized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//These Characters will be shown in the cut scenes.&lt;br /&gt;
Merchants:  Various merchants that ferry goods throughout the solar system. Those carrying WSI goods are targets of OoO raiders. &lt;br /&gt;
&lt;br /&gt;
Raiders:  Various OoO pirates target merchants under WSI contracts.  Pirates can be found stealing from all across the galaxy and transporting any valuable cargo to different locations.  &lt;br /&gt;
&lt;br /&gt;
Cargo:  The OoO is stealing WSI payloads and hiding them on planets to be picked up by other OoO operatives at a later date. Finding these are the objectives of the game.  All cargo will have an Icon on them symbolizing the type of material inside.  &lt;br /&gt;
&lt;br /&gt;
Planets and Buildings:  Pirates and merchants will move cargo from on plater to another, or one building to another.&lt;br /&gt;
&lt;br /&gt;
==Gameplay==&lt;br /&gt;
&lt;br /&gt;
The game is divided into 3 different phases:&lt;br /&gt;
&lt;br /&gt;
Puzzle Phase&lt;br /&gt;
	Players will explore floors of the satellite to find comm stations.  They will have to avoid guards and move from room to room until they find that floors comm station.  Players will have to use their abilities to deactivate traps and guards. &lt;br /&gt;
&lt;br /&gt;
Hacking Phase&lt;br /&gt;
	Players will have to complete a embedded figures test whenever they use their hacking tool. &lt;br /&gt;
&lt;br /&gt;
Sally Anne Phase&lt;br /&gt;
	Players will be shown an animation depicting the message the player has found. Players will then be asked the theory of mind questions.  Game play will then transition back to the Puzzle Phase.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Phases==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Puzzle Phase&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Objective &lt;br /&gt;
&lt;br /&gt;
The player will explore the different floors of the satellite.  Before a player can move to the next floor the player must explore all the rooms of the floor and hack the communication panel.  To do so players will have to avoid detection by utilizing their various stealth abilities.  &lt;br /&gt;
&lt;br /&gt;
The game will be turn based.  The game state will not change until the player performs an action.  This will allow players to take as much time as needed to plan out their moves.  Guards and other interactive objects will not do anything until after the player has done an action.  Players will always complete their action before the world takes it&amp;#039;s turn.  &lt;br /&gt;
&lt;br /&gt;
When the player enters the facility, the security system is un aware of them.  When a player is caught or fails an event, such as hacking a terminal, the security system will become more aware of them.  This awareness is represented by a meter.  Once them meter is filled the Security System is fully aware of the player and will send guards to capture the infiltrator.  Once this occurs sirens will sound and the player will have to tele port to their ship and escape the station.  The awareness level will effectively act as the players lives or attempts.  After a period of turns of not being detected the players awareness level will start decreasing.  &lt;br /&gt;
&lt;br /&gt;
Actions&lt;br /&gt;
&lt;br /&gt;
Move -  The player will be able to move in 4 unique directions!  &lt;br /&gt;
Wait -  This action represent the player skipping a turn.&lt;br /&gt;
Cloak - This action will make the player invisible for a specific number of turns.&lt;br /&gt;
Hack - This action will start the Hacking Phase.  If a player is un successful in hacking the object then they will be teleported back to the beginning of the level.    &lt;br /&gt;
Set Trap - Players will be able to set traps for guards&lt;br /&gt;
Use - Players will be able to interact with their environment using this action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enemies&lt;br /&gt;
&lt;br /&gt;
Guard - Guards will patrol the halls of the facility.  A patrolling guard will be able to catch any player in their line of sight.  Guards will have predictable paths that they follow.  Guards can be avoided by using the cloak ability or deactivated by placing a trap.  A deactivated guard will either disappear or fall to the floor.  If guards do not dissappear then the player will have to move them to prevent other guards from finding the body.&lt;br /&gt;
&lt;br /&gt;
Sentry Camera - A sentry camera will detect the player if they enter in to it&amp;#039;s line of sight.  Sentry camera&amp;#039;s will not move, but will rotate in place.  To disable a sentry camera you will need to find it&amp;#039;s control panel and hack it.  Each camera and control panel will have matching colors.  Cloaking can be used to avoid the camera.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Espionage PDA&lt;br /&gt;
&lt;br /&gt;
Every infiltrator has their own personal Espionage PDA.  This PDA can communicate with your ship and provide you with useful information.  This will be where the player can see their mission objectives, current mission progress, can view or retry any tutorial sections or end the game.  &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hacking Phase&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Encrypted comms are represented by shapes that flow from the left to the right of the screen, somewhat akin to &amp;#039;&amp;#039;the Matrix.&amp;#039;&amp;#039; The bottom of the game screen houses the screen of &amp;#039;&amp;#039;the Snifftron ST3,&amp;#039;&amp;#039; a device that hackers use to decrypt data. &lt;br /&gt;
&lt;br /&gt;
In a manner very similar to the traditional Embedded Figures Test, the ST3 generates an abstract shape and displays it on its screen. As the data stream flows across the top of the game screen, random shapes pop out and appear in the center of the data stream. If this large shape contains the simpler shape displayed on the ST3, then the player should press spacebar before the trial expires. If this happens, the player successfully &amp;quot;filters&amp;quot; the data stream. The player can only fail this process (either by not pressing spacebar on a match or pressing spacebar on a non-match) 3 times before the connection is lost and the message is lost.  Some objects will be more difficult to hack and will require more sucessful matches. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the player filters the data successfully enough times, then the comm is decrypted.  Diffrent results will occur depending on the item hacked.  If a comm terminal is hacked,a small cutscene plays before returning to the navigation screen. If the player is unsuccessful, then they return to the navigation screen and their detection level will increase.&lt;br /&gt;
&lt;br /&gt;
The large shapes are generated according the figure below. Generating smaller shapes that are embedded in the large shapes can easily be done by connecting the dots along edge connections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
==Sally Anne Phase==&lt;br /&gt;
&lt;br /&gt;
Once a players successfully hacks the comm station they will be shown a brief series of animations depicting the message they stole. There will be many different messages, but each will follow the same principles. In animation #1, a friendly ship deposits a resource (e.g. fuel or materials) in a depot on one of several available planets.  (Planets are readily distinguishable by their location on the star map and by their surface appearance.)  In animation #2, an opponent ship appears and either steals the resource and deposits it on another planet (THEFT, 2/3 probability) or simply scans the resource (¬THEFT, 1/3 probability).  Animation #3 is a picture of the friendly ship&amp;#039;s control centre including its captain and its viewscreen, which shows either a sensor scan of the opponent&amp;#039;s actions (SCAN, ½ probability) or noise representing sensor jamming (¬SCAN, ½ probability).  Thus by the end of animation #3, one of three equiprobable situations exists: (1) the friend believes correctly that the resource is in its original location, and the opponent believes correctly that the friend will look for the resource in this location (¬THEFT); (2) the friend believes incorrectly that the resource is in its original location, and the opponent believes correctly that the friend will look for the resource in its original location (THEFT∧¬SCAN); (3) the friend believes correctly that the resource is in its new location, and the opponent believes incorrectly that the friend will look for the resource in its original location (THEFT∧SCAN).  Animation #4 reminds the player that the friend will always set course to retrieve the resource, and that the opponent will always set course to intercept the friend.  After this fourth animation, the player is prompted pictorially to lay in two intercept courses (by moving the mouse to the appropriate planet), one to rendez-vous with the friend and one to engage the opponent.  In order to set these courses the player must infer where the friend thinks the resource is and where the opponent thinks the friend will look for the resource, respectively.  Accuracy and response time in these tasks measure first-order and second-order theory-of-mind processing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scoring==&lt;br /&gt;
&lt;br /&gt;
Players will be given a score based on how many messages they steal and how many bonus items they find.  This score will determine how much money they get.  A players score will be reduced based on the number of times they were caught.    &lt;br /&gt;
Players will also be given resources and trade goods for each correct Sally Anne response.&lt;br /&gt;
Players will be given a ranking of sorts, based on their score and responses, that will determine the number of tokens they receive.&lt;br /&gt;
Players will always receive at least one of the tokens.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Hacker_Havoc&amp;diff=190</id>
		<title>Hacker Havoc</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Hacker_Havoc&amp;diff=190"/>
				<updated>2008-04-16T21:14:47Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: /* Characters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
This minigame tests theory of mind and detection of embedded figures.&lt;br /&gt;
&lt;br /&gt;
The mini-game&amp;#039;s theory-of-mind component is an adaptation of the classic “Sally Anne” test of theory-of-mind. In the “Sally Anne” test one character, Sally, places a marble in a safe place, and then whilst Sally is out of the room another character, Anne, moves the marble to a new hiding place.  The subject is asked “Where will Sally look for her marble?” or “Where does Sally think the marble is?” Many autistic children, like normal children under four years of age, answer this question erroneously in terms of what they themselves know about where Anne moved the marble, instead of what Sally knows.  Those who correctly answer this first-order theory-of-mind question may still respond incorrectly to a second-order question: if, unbeknownst to Anne, Sally was peering through the keyhole and saw Anne move the marble, “Where does Anne think Sally will look for the marble?”&lt;br /&gt;
&lt;br /&gt;
The player is infiltrating a subspace communications satellite.  The player will have to navigate to and hack comm stations to steal Pirate communication messages.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Premise==&lt;br /&gt;
&lt;br /&gt;
You are a covert operative for the World Space Initiative. The Order of Orion is attacking merchants carrying WSI payloads, stealing their cargo, and stashing the goods on various planets. Your mission is to infiltrate their communication satellites and discover the location of the stolen cargo.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objective==&lt;br /&gt;
&lt;br /&gt;
Recover as many communication logs about stolen Cargo as possible and determine where the merchants and cargo are.&lt;br /&gt;
&lt;br /&gt;
==Characters==&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
Player:  An elite reconisaince operative trained in stealth and sabotage.  These agents have access to a personal cloaking device, a molecular copier, hacking tools and many other items.  They excel in non lethal force and avoid direct confrontation whenever possible.   &lt;br /&gt;
&lt;br /&gt;
Bobcat B-3 Interceptor:  A small ship outfitted with the best cloaking and stealth technology available.  This ship is used to get the operative to and from the satellite undetected.&lt;br /&gt;
&lt;br /&gt;
Satellite Security:  The satellite is garrisoned with security guards and security devices.  These guards are tasked with keeping the satelite safe and un comprimized.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//These Characters will be shown in the cut scenes.&lt;br /&gt;
Merchants:  Various merchants that ferry goods throughout the solar system. Those carrying WSI goods are targets of OoO raiders. &lt;br /&gt;
&lt;br /&gt;
Raiders:  Various OoO pirates target merchants under WSI contracts.  Pirates can be found stealing from all across the galaxy and transporting any valuable cargo to different locations.  &lt;br /&gt;
&lt;br /&gt;
Cargo:  The OoO is stealing WSI payloads and hiding them on planets to be picked up by other OoO operatives at a later date. Finding these are the objectives of the game.  All cargo will have an Icon on them symbolizing the type of material inside.  &lt;br /&gt;
&lt;br /&gt;
Planets and Buildings:  Pirates and merchants will move cargo from on plater to another, or one building to another.&lt;br /&gt;
&lt;br /&gt;
==Gameplay==&lt;br /&gt;
&lt;br /&gt;
The game is divided into 3 different phases:&lt;br /&gt;
&lt;br /&gt;
Puzzle Phase&lt;br /&gt;
	Players will explore floors of the satellite to find comm stations.  They will have to avoid guards and move from room to room until they find that floors comm station.  Players will have to use their abilities to deactivate traps and guards. &lt;br /&gt;
&lt;br /&gt;
Hacking Phase&lt;br /&gt;
	Players will have to complete a embedded figures test whenever they use their hacking tool. &lt;br /&gt;
&lt;br /&gt;
Sally Anne Phase&lt;br /&gt;
	Players will be shown an animation depicting the message the player has found. Players will then be asked the theory of mind questions.  Game play will then transition back to the Puzzle Phase.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Phases==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Puzzle Phase&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Objective &lt;br /&gt;
&lt;br /&gt;
The player will explore the different floors of the satellite.  Before a player can move to the next floor the player must explore all the rooms of the floor and hack the communication panel.  To do so players will have to avoid detection by utilizing their various stealth abilities.  &lt;br /&gt;
&lt;br /&gt;
The game will be turn based.  The game state will not change until the player performs an action.  This will allow players to take as much time as needed to plan out their moves.  Guards and other interactive objects will not do anything until after the player has done an action.  Players will always complete their action before the world takes it&amp;#039;s turn.  &lt;br /&gt;
&lt;br /&gt;
When the player enters the facility, the security system is un aware of them.  When a player is caught or fails an event, such as hacking a terminal, the security system will become more aware of them.  This awareness is represented by a meter.  Once them meter is filled the Security System is fully aware of the player and will send guards to capture the infiltrator.  Once this occurs sirens will sound and the player will have to tele port to their ship and escape the station.  The awareness level will effectively act as the players lives or attempts.  After a period of turns of not being detected the players awareness level will start decreasing.  &lt;br /&gt;
&lt;br /&gt;
Actions&lt;br /&gt;
&lt;br /&gt;
Move -  The player will be able to move in 4 unique directions!  &lt;br /&gt;
Wait -  This action represent the player skipping a turn.&lt;br /&gt;
Cloak - This action will make the player invisible for a specific number of turns.&lt;br /&gt;
Hack - This action will start the Hacking Phase.  If a player is un successful in hacking the object then they will be teleported back to the beginning of the level.    &lt;br /&gt;
Set Trap - Players will be able to set traps for guards&lt;br /&gt;
Use - Players will be able to interact with their environment using this action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enemies&lt;br /&gt;
&lt;br /&gt;
Guard - Guards will patrol the halls of the facility.  A patrolling guard will be able to catch any player in their line of sight.  Guards will have predictable paths that they follow.  Guards can be avoided by using the cloak ability or deactivated by placing a trap.  A deactivated guard will either disappear or fall to the floor.  If guards do not dissappear then the player will have to move them to prevent other guards from finding the body.&lt;br /&gt;
&lt;br /&gt;
Sentry Camera - A sentry camera will detect the player if they enter in to it&amp;#039;s line of sight.  Sentry camera&amp;#039;s will not move, but will rotate in place.  To disable a sentry camera you will need to find it&amp;#039;s control panel and hack it.  Each camera and control panel will have matching colors.  Cloaking can be used to avoid the camera.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Espionage PDA&lt;br /&gt;
&lt;br /&gt;
Every infiltrator has their own personal Espionage PDA.  This PDA can communicate with your ship and provide you with useful information.  This will be where the player can see their mission objectives, current mission progress, can view or retry any tutorial sections or end the game.  &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hacking Phase&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Encrypted comms are represented by shapes that flow from the left to the right of the screen, somewhat akin to &amp;#039;&amp;#039;the Matrix.&amp;#039;&amp;#039; The bottom of the game screen houses the screen of &amp;#039;&amp;#039;the Snifftron ST3,&amp;#039;&amp;#039; a device that hackers use to decrypt data. &lt;br /&gt;
&lt;br /&gt;
In a manner very similar to the traditional Embedded Figures Test, the ST3 generates an abstract shape and displays it on its screen. As the data stream flows across the top of the game screen, random shapes pop out and appear in the center of the data stream. If this large shape contains the simpler shape displayed on the ST3, then the player should press spacebar before the trial expires. If this happens, the player successfully &amp;quot;filters&amp;quot; the data stream. The player can only fail this process (either by not pressing spacebar on a match or pressing spacebar on a non-match) 3 times before the connection is lost and the message is lost.  Some objects will be more difficult to hack and will require more sucessful matches. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the player filters the data successfully enough times, then the comm is decrypted.  Diffrent results will occur depending on the item hacked.  If a comm terminal is hacked,a small cutscene plays before returning to the navigation screen. If the player is unsuccessful, then they return to the navigation screen and their detection level will increase.&lt;br /&gt;
&lt;br /&gt;
The large shapes are generated according the figure below. Generating smaller shapes that are embedded in the large shapes can easily be done by connecting the dots along edge connections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
==Sally Anne Phase==&lt;br /&gt;
&lt;br /&gt;
Once a players successfully hacks the comm station they will be shown a brief series of animations depicting the message they stole. There will be many different messages, but each will follow the same principles. In animation #1, a friendly ship deposits a resource (e.g. fuel or materials) in a depot on one of several available planets.  (Planets are readily distinguishable by their location on the star map and by their surface appearance.)  In animation #2, an opponent ship appears and either steals the resource and deposits it on another planet (THEFT, 2/3 probability) or simply scans the resource (¬THEFT, 1/3 probability).  Animation #3 is a picture of the friendly ship&amp;#039;s control centre including its captain and its viewscreen, which shows either a sensor scan of the opponent&amp;#039;s actions (SCAN, ½ probability) or noise representing sensor jamming (¬SCAN, ½ probability).  Thus by the end of animation #3, one of three equiprobable situations exists: (1) the friend believes correctly that the resource is in its original location, and the opponent believes correctly that the friend will look for the resource in this location (¬THEFT); (2) the friend believes incorrectly that the resource is in its original location, and the opponent believes correctly that the friend will look for the resource in its original location (THEFT∧¬SCAN); (3) the friend believes correctly that the resource is in its new location, and the opponent believes incorrectly that the friend will look for the resource in its original location (THEFT∧SCAN).  Animation #4 reminds the player that the friend will always set course to retrieve the resource, and that the opponent will always set course to intercept the friend.  After this fourth animation, the player is prompted pictorially to lay in two intercept courses (by moving the mouse to the appropriate planet), one to rendez-vous with the friend and one to engage the opponent.  In order to set these courses the player must infer where the friend thinks the resource is and where the opponent thinks the friend will look for the resource, respectively.  Accuracy and response time in these tasks measure first-order and second-order theory-of-mind processing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scoring==&lt;br /&gt;
&lt;br /&gt;
Players will be given a score based on how many messages they steal and how many bonus items they find.  This score will determine how much money they get.  A players score will be reduced based on the number of times they were caught.    &lt;br /&gt;
Players will also be given resources and trade goods for each correct Sally Anne response.&lt;br /&gt;
Players will be given a ranking of sorts, based on their score and responses, that will determine the number of tokens they receive.&lt;br /&gt;
Players will always receive at least one of the tokens.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Hacker_Havoc&amp;diff=189</id>
		<title>Hacker Havoc</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Hacker_Havoc&amp;diff=189"/>
				<updated>2008-04-16T21:09:09Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: /* Objective */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
This minigame tests theory of mind and detection of embedded figures.&lt;br /&gt;
&lt;br /&gt;
The mini-game&amp;#039;s theory-of-mind component is an adaptation of the classic “Sally Anne” test of theory-of-mind. In the “Sally Anne” test one character, Sally, places a marble in a safe place, and then whilst Sally is out of the room another character, Anne, moves the marble to a new hiding place.  The subject is asked “Where will Sally look for her marble?” or “Where does Sally think the marble is?” Many autistic children, like normal children under four years of age, answer this question erroneously in terms of what they themselves know about where Anne moved the marble, instead of what Sally knows.  Those who correctly answer this first-order theory-of-mind question may still respond incorrectly to a second-order question: if, unbeknownst to Anne, Sally was peering through the keyhole and saw Anne move the marble, “Where does Anne think Sally will look for the marble?”&lt;br /&gt;
&lt;br /&gt;
The player is infiltrating a subspace communications satellite.  The player will have to navigate to and hack comm stations to steal Pirate communication messages.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Premise==&lt;br /&gt;
&lt;br /&gt;
You are a covert operative for the World Space Initiative. The Order of Orion is attacking merchants carrying WSI payloads, stealing their cargo, and stashing the goods on various planets. Your mission is to infiltrate their communication satellites and discover the location of the stolen cargo.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objective==&lt;br /&gt;
&lt;br /&gt;
Recover as many communication logs about stolen Cargo as possible and determine where the merchants and cargo are.&lt;br /&gt;
&lt;br /&gt;
==Characters==&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
Player:  An elite reconisaince operative trained in stealth and sabotage.  These agents have access to a personal cloaking device, a molecular copier, hacking tools and many other items.  They excel in non lethal force and avoid direct confrontation whenever possible.   &lt;br /&gt;
&lt;br /&gt;
Bobcat B-3 Interceptor:  A small ship outfitted with the best cloaking and stealth technology available.  This ship is used to get the operative to and from the satellite undetected.&lt;br /&gt;
&lt;br /&gt;
Satellite Security:  The satellite is garrisoned with security guards and security devices.  These guards are tasked with keeping the satelite safe and uncomprimised.&lt;br /&gt;
&lt;br /&gt;
Merchant Vessels:  Various merchants that ferry goods throughout the solar system. Those carrying WSI goods are targets of OoO raiders. &lt;br /&gt;
&lt;br /&gt;
Raiders:  Various OoO pirates target merchants under WSI contracts. Pirate ships range in size and firepower from fighter to capital.&lt;br /&gt;
&lt;br /&gt;
Payload:  Ships can carry payloads and deposit them on planets. The OoO is stealing WSI payloads and hiding them on planets to be picked up by other OoO operatives at a later date.&lt;br /&gt;
&lt;br /&gt;
Planets:  Merchants can launch from or land on planets. Planets can also hold payloads.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gameplay==&lt;br /&gt;
&lt;br /&gt;
The game is divided into 3 different phases:&lt;br /&gt;
&lt;br /&gt;
Puzzle Phase&lt;br /&gt;
	Players will explore floors of the satellite to find comm stations.  They will have to avoid guards and move from room to room until they find that floors comm station.  Players will have to use their abilities to deactivate traps and guards. &lt;br /&gt;
&lt;br /&gt;
Hacking Phase&lt;br /&gt;
	Players will have to complete a embedded figures test whenever they use their hacking tool. &lt;br /&gt;
&lt;br /&gt;
Sally Anne Phase&lt;br /&gt;
	Players will be shown an animation depicting the message the player has found. Players will then be asked the theory of mind questions.  Game play will then transition back to the Puzzle Phase.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Phases==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Puzzle Phase&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Objective &lt;br /&gt;
&lt;br /&gt;
The player will explore the different floors of the satellite.  Before a player can move to the next floor the player must explore all the rooms of the floor and hack the communication panel.  To do so players will have to avoid detection by utilizing their various stealth abilities.  &lt;br /&gt;
&lt;br /&gt;
The game will be turn based.  The game state will not change until the player performs an action.  This will allow players to take as much time as needed to plan out their moves.  Guards and other interactive objects will not do anything until after the player has done an action.  Players will always complete their action before the world takes it&amp;#039;s turn.  &lt;br /&gt;
&lt;br /&gt;
When the player enters the facility, the security system is un aware of them.  When a player is caught or fails an event, such as hacking a terminal, the security system will become more aware of them.  This awareness is represented by a meter.  Once them meter is filled the Security System is fully aware of the player and will send guards to capture the infiltrator.  Once this occurs sirens will sound and the player will have to tele port to their ship and escape the station.  The awareness level will effectively act as the players lives or attempts.  After a period of turns of not being detected the players awareness level will start decreasing.  &lt;br /&gt;
&lt;br /&gt;
Actions&lt;br /&gt;
&lt;br /&gt;
Move -  The player will be able to move in 4 unique directions!  &lt;br /&gt;
Wait -  This action represent the player skipping a turn.&lt;br /&gt;
Cloak - This action will make the player invisible for a specific number of turns.&lt;br /&gt;
Hack - This action will start the Hacking Phase.  If a player is un successful in hacking the object then they will be teleported back to the beginning of the level.    &lt;br /&gt;
Set Trap - Players will be able to set traps for guards&lt;br /&gt;
Use - Players will be able to interact with their environment using this action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enemies&lt;br /&gt;
&lt;br /&gt;
Guard - Guards will patrol the halls of the facility.  A patrolling guard will be able to catch any player in their line of sight.  Guards will have predictable paths that they follow.  Guards can be avoided by using the cloak ability or deactivated by placing a trap.  A deactivated guard will either disappear or fall to the floor.  If guards do not dissappear then the player will have to move them to prevent other guards from finding the body.&lt;br /&gt;
&lt;br /&gt;
Sentry Camera - A sentry camera will detect the player if they enter in to it&amp;#039;s line of sight.  Sentry camera&amp;#039;s will not move, but will rotate in place.  To disable a sentry camera you will need to find it&amp;#039;s control panel and hack it.  Each camera and control panel will have matching colors.  Cloaking can be used to avoid the camera.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Espionage PDA&lt;br /&gt;
&lt;br /&gt;
Every infiltrator has their own personal Espionage PDA.  This PDA can communicate with your ship and provide you with useful information.  This will be where the player can see their mission objectives, current mission progress, can view or retry any tutorial sections or end the game.  &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hacking Phase&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Encrypted comms are represented by shapes that flow from the left to the right of the screen, somewhat akin to &amp;#039;&amp;#039;the Matrix.&amp;#039;&amp;#039; The bottom of the game screen houses the screen of &amp;#039;&amp;#039;the Snifftron ST3,&amp;#039;&amp;#039; a device that hackers use to decrypt data. &lt;br /&gt;
&lt;br /&gt;
In a manner very similar to the traditional Embedded Figures Test, the ST3 generates an abstract shape and displays it on its screen. As the data stream flows across the top of the game screen, random shapes pop out and appear in the center of the data stream. If this large shape contains the simpler shape displayed on the ST3, then the player should press spacebar before the trial expires. If this happens, the player successfully &amp;quot;filters&amp;quot; the data stream. The player can only fail this process (either by not pressing spacebar on a match or pressing spacebar on a non-match) 3 times before the connection is lost and the message is lost.  Some objects will be more difficult to hack and will require more sucessful matches. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the player filters the data successfully enough times, then the comm is decrypted.  Diffrent results will occur depending on the item hacked.  If a comm terminal is hacked,a small cutscene plays before returning to the navigation screen. If the player is unsuccessful, then they return to the navigation screen and their detection level will increase.&lt;br /&gt;
&lt;br /&gt;
The large shapes are generated according the figure below. Generating smaller shapes that are embedded in the large shapes can easily be done by connecting the dots along edge connections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
==Sally Anne Phase==&lt;br /&gt;
&lt;br /&gt;
Once a players successfully hacks the comm station they will be shown a brief series of animations depicting the message they stole. There will be many different messages, but each will follow the same principles. In animation #1, a friendly ship deposits a resource (e.g. fuel or materials) in a depot on one of several available planets.  (Planets are readily distinguishable by their location on the star map and by their surface appearance.)  In animation #2, an opponent ship appears and either steals the resource and deposits it on another planet (THEFT, 2/3 probability) or simply scans the resource (¬THEFT, 1/3 probability).  Animation #3 is a picture of the friendly ship&amp;#039;s control centre including its captain and its viewscreen, which shows either a sensor scan of the opponent&amp;#039;s actions (SCAN, ½ probability) or noise representing sensor jamming (¬SCAN, ½ probability).  Thus by the end of animation #3, one of three equiprobable situations exists: (1) the friend believes correctly that the resource is in its original location, and the opponent believes correctly that the friend will look for the resource in this location (¬THEFT); (2) the friend believes incorrectly that the resource is in its original location, and the opponent believes correctly that the friend will look for the resource in its original location (THEFT∧¬SCAN); (3) the friend believes correctly that the resource is in its new location, and the opponent believes incorrectly that the friend will look for the resource in its original location (THEFT∧SCAN).  Animation #4 reminds the player that the friend will always set course to retrieve the resource, and that the opponent will always set course to intercept the friend.  After this fourth animation, the player is prompted pictorially to lay in two intercept courses (by moving the mouse to the appropriate planet), one to rendez-vous with the friend and one to engage the opponent.  In order to set these courses the player must infer where the friend thinks the resource is and where the opponent thinks the friend will look for the resource, respectively.  Accuracy and response time in these tasks measure first-order and second-order theory-of-mind processing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scoring==&lt;br /&gt;
&lt;br /&gt;
Players will be given a score based on how many messages they steal and how many bonus items they find.  This score will determine how much money they get.  A players score will be reduced based on the number of times they were caught.    &lt;br /&gt;
Players will also be given resources and trade goods for each correct Sally Anne response.&lt;br /&gt;
Players will be given a ranking of sorts, based on their score and responses, that will determine the number of tokens they receive.&lt;br /&gt;
Players will always receive at least one of the tokens.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	<entry>
		<id>https://www.autismcollaborative.org/wiki/index.php?title=Hacker_Havoc&amp;diff=188</id>
		<title>Hacker Havoc</title>
		<link rel="alternate" type="text/html" href="https://www.autismcollaborative.org/wiki/index.php?title=Hacker_Havoc&amp;diff=188"/>
				<updated>2008-04-16T20:59:10Z</updated>
		
		<summary type="html">&lt;p&gt;Orosz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
This minigame tests theory of mind and detection of embedded figures.&lt;br /&gt;
&lt;br /&gt;
The mini-game&amp;#039;s theory-of-mind component is an adaptation of the classic “Sally Anne” test of theory-of-mind. In the “Sally Anne” test one character, Sally, places a marble in a safe place, and then whilst Sally is out of the room another character, Anne, moves the marble to a new hiding place.  The subject is asked “Where will Sally look for her marble?” or “Where does Sally think the marble is?” Many autistic children, like normal children under four years of age, answer this question erroneously in terms of what they themselves know about where Anne moved the marble, instead of what Sally knows.  Those who correctly answer this first-order theory-of-mind question may still respond incorrectly to a second-order question: if, unbeknownst to Anne, Sally was peering through the keyhole and saw Anne move the marble, “Where does Anne think Sally will look for the marble?”&lt;br /&gt;
&lt;br /&gt;
The player is infiltrating a subspace communications satellite.  The player will have to navigate to and hack comm stations to steal Pirate communication messages.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Premise==&lt;br /&gt;
&lt;br /&gt;
You are a covert operative for the World Space Initiative. The Order of Orion is attacking merchants carrying WSI payloads, stealing their cargo, and stashing the goods on various planets. Your mission is to infiltrate their communication satellites and discover the location of the stolen cargo.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Objective==&lt;br /&gt;
&lt;br /&gt;
Save as many merchant vessels and recover as much WSI cargo as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Characters==&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
Player:  An elite reconisaince operative trained in stealth and sabotage.  These agents have access to a personal cloaking device, a molecular copier, hacking tools and many other items.  They excel in non lethal force and avoid direct confrontation whenever possible.   &lt;br /&gt;
&lt;br /&gt;
Bobcat B-3 Interceptor:  A small ship outfitted with the best cloaking and stealth technology available.  This ship is used to get the operative to and from the satellite undetected.&lt;br /&gt;
&lt;br /&gt;
Satellite Security:  The satellite is garrisoned with security guards and security devices.  These guards are tasked with keeping the satelite safe and uncomprimised.&lt;br /&gt;
&lt;br /&gt;
Merchant Vessels:  Various merchants that ferry goods throughout the solar system. Those carrying WSI goods are targets of OoO raiders. &lt;br /&gt;
&lt;br /&gt;
Raiders:  Various OoO pirates target merchants under WSI contracts. Pirate ships range in size and firepower from fighter to capital.&lt;br /&gt;
&lt;br /&gt;
Payload:  Ships can carry payloads and deposit them on planets. The OoO is stealing WSI payloads and hiding them on planets to be picked up by other OoO operatives at a later date.&lt;br /&gt;
&lt;br /&gt;
Planets:  Merchants can launch from or land on planets. Planets can also hold payloads.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gameplay==&lt;br /&gt;
&lt;br /&gt;
The game is divided into 3 different phases:&lt;br /&gt;
&lt;br /&gt;
Puzzle Phase&lt;br /&gt;
	Players will explore floors of the satellite to find comm stations.  They will have to avoid guards and move from room to room until they find that floors comm station.  Players will have to use their abilities to deactivate traps and guards. &lt;br /&gt;
&lt;br /&gt;
Hacking Phase&lt;br /&gt;
	Players will have to complete a embedded figures test whenever they use their hacking tool. &lt;br /&gt;
&lt;br /&gt;
Sally Anne Phase&lt;br /&gt;
	Players will be shown an animation depicting the message the player has found. Players will then be asked the theory of mind questions.  Game play will then transition back to the Puzzle Phase.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Phases==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Puzzle Phase&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Objective &lt;br /&gt;
&lt;br /&gt;
The player will explore the different floors of the satellite.  Before a player can move to the next floor the player must explore all the rooms of the floor and hack the communication panel.  To do so players will have to avoid detection by utilizing their various stealth abilities.  &lt;br /&gt;
&lt;br /&gt;
The game will be turn based.  The game state will not change until the player performs an action.  This will allow players to take as much time as needed to plan out their moves.  Guards and other interactive objects will not do anything until after the player has done an action.  Players will always complete their action before the world takes it&amp;#039;s turn.  &lt;br /&gt;
&lt;br /&gt;
When the player enters the facility, the security system is un aware of them.  When a player is caught or fails an event, such as hacking a terminal, the security system will become more aware of them.  This awareness is represented by a meter.  Once them meter is filled the Security System is fully aware of the player and will send guards to capture the infiltrator.  Once this occurs sirens will sound and the player will have to tele port to their ship and escape the station.  The awareness level will effectively act as the players lives or attempts.  After a period of turns of not being detected the players awareness level will start decreasing.  &lt;br /&gt;
&lt;br /&gt;
Actions&lt;br /&gt;
&lt;br /&gt;
Move -  The player will be able to move in 4 unique directions!  &lt;br /&gt;
Wait -  This action represent the player skipping a turn.&lt;br /&gt;
Cloak - This action will make the player invisible for a specific number of turns.&lt;br /&gt;
Hack - This action will start the Hacking Phase.  If a player is un successful in hacking the object then they will be teleported back to the beginning of the level.    &lt;br /&gt;
Set Trap - Players will be able to set traps for guards&lt;br /&gt;
Use - Players will be able to interact with their environment using this action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enemies&lt;br /&gt;
&lt;br /&gt;
Guard - Guards will patrol the halls of the facility.  A patrolling guard will be able to catch any player in their line of sight.  Guards will have predictable paths that they follow.  Guards can be avoided by using the cloak ability or deactivated by placing a trap.  A deactivated guard will either disappear or fall to the floor.  If guards do not dissappear then the player will have to move them to prevent other guards from finding the body.&lt;br /&gt;
&lt;br /&gt;
Sentry Camera - A sentry camera will detect the player if they enter in to it&amp;#039;s line of sight.  Sentry camera&amp;#039;s will not move, but will rotate in place.  To disable a sentry camera you will need to find it&amp;#039;s control panel and hack it.  Each camera and control panel will have matching colors.  Cloaking can be used to avoid the camera.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Espionage PDA&lt;br /&gt;
&lt;br /&gt;
Every infiltrator has their own personal Espionage PDA.  This PDA can communicate with your ship and provide you with useful information.  This will be where the player can see their mission objectives, current mission progress, can view or retry any tutorial sections or end the game.  &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hacking Phase&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Encrypted comms are represented by shapes that flow from the left to the right of the screen, somewhat akin to &amp;#039;&amp;#039;the Matrix.&amp;#039;&amp;#039; The bottom of the game screen houses the screen of &amp;#039;&amp;#039;the Snifftron ST3,&amp;#039;&amp;#039; a device that hackers use to decrypt data. &lt;br /&gt;
&lt;br /&gt;
In a manner very similar to the traditional Embedded Figures Test, the ST3 generates an abstract shape and displays it on its screen. As the data stream flows across the top of the game screen, random shapes pop out and appear in the center of the data stream. If this large shape contains the simpler shape displayed on the ST3, then the player should press spacebar before the trial expires. If this happens, the player successfully &amp;quot;filters&amp;quot; the data stream. The player can only fail this process (either by not pressing spacebar on a match or pressing spacebar on a non-match) 3 times before the connection is lost and the message is lost.  Some objects will be more difficult to hack and will require more sucessful matches. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the player filters the data successfully enough times, then the comm is decrypted.  Diffrent results will occur depending on the item hacked.  If a comm terminal is hacked,a small cutscene plays before returning to the navigation screen. If the player is unsuccessful, then they return to the navigation screen and their detection level will increase.&lt;br /&gt;
&lt;br /&gt;
The large shapes are generated according the figure below. Generating smaller shapes that are embedded in the large shapes can easily be done by connecting the dots along edge connections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ComingSoon.png]]&lt;br /&gt;
&lt;br /&gt;
==Sally Anne Phase==&lt;br /&gt;
&lt;br /&gt;
Once a players successfully hacks the comm station they will be shown a brief series of animations depicting the message they stole. There will be many different messages, but each will follow the same principles. In animation #1, a friendly ship deposits a resource (e.g. fuel or materials) in a depot on one of several available planets.  (Planets are readily distinguishable by their location on the star map and by their surface appearance.)  In animation #2, an opponent ship appears and either steals the resource and deposits it on another planet (THEFT, 2/3 probability) or simply scans the resource (¬THEFT, 1/3 probability).  Animation #3 is a picture of the friendly ship&amp;#039;s control centre including its captain and its viewscreen, which shows either a sensor scan of the opponent&amp;#039;s actions (SCAN, ½ probability) or noise representing sensor jamming (¬SCAN, ½ probability).  Thus by the end of animation #3, one of three equiprobable situations exists: (1) the friend believes correctly that the resource is in its original location, and the opponent believes correctly that the friend will look for the resource in this location (¬THEFT); (2) the friend believes incorrectly that the resource is in its original location, and the opponent believes correctly that the friend will look for the resource in its original location (THEFT∧¬SCAN); (3) the friend believes correctly that the resource is in its new location, and the opponent believes incorrectly that the friend will look for the resource in its original location (THEFT∧SCAN).  Animation #4 reminds the player that the friend will always set course to retrieve the resource, and that the opponent will always set course to intercept the friend.  After this fourth animation, the player is prompted pictorially to lay in two intercept courses (by moving the mouse to the appropriate planet), one to rendez-vous with the friend and one to engage the opponent.  In order to set these courses the player must infer where the friend thinks the resource is and where the opponent thinks the friend will look for the resource, respectively.  Accuracy and response time in these tasks measure first-order and second-order theory-of-mind processing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scoring==&lt;br /&gt;
&lt;br /&gt;
Players will be given a score based on how many messages they steal and how many bonus items they find.  This score will determine how much money they get.  A players score will be reduced based on the number of times they were caught.    &lt;br /&gt;
Players will also be given resources and trade goods for each correct Sally Anne response.&lt;br /&gt;
Players will be given a ranking of sorts, based on their score and responses, that will determine the number of tokens they receive.&lt;br /&gt;
Players will always receive at least one of the tokens.&lt;/div&gt;</summary>
		<author><name>Orosz</name></author>	</entry>

	</feed>