Insect Interactive

Pre-production:

preproductionPage1

One of the first items my partner and I discussed the design of once we had an application idea in mind was what we wanted the controller for the exhibit to look. Since we are going for a bathroom floor look in this top-down view application, we figured it would be best to try to “connect” the controller to the digital world by having the bathroom floor texture in the application match that of the bathroom floor texture on the controller. This will allow the user to have a better connection with the application and bridge a gap between what is real (the controller) and what is fake (the applications visuals). Since cockroaches are known for causing large scale infestations, we decided to make family one of the main recurring themes in the application. This could be anywhere from the home screen, pause menu and of course the application itself. At the home screen, the user will be greeted by a line of historical family portraits which contain the cockroaches family. The main menu will be extremely basic and allows the player to continue to the application with the press of any of the buttons present. As for the main application, the player will be introduced to three cockroaches; each with their own demonstrations. Two will be full grown adults and one will be a baby cockroach (to display the fact about babies being as small as a speck of dust).

temp.jpg

If we have extra time with application development, we plan on having a pause screen in the application, which will feature a cockroach moving around to prevent screen burn when the application is in this state. At this time the player can cycle through the two options using the two buttons on the panel and select their desired option with the center button. The image on the right shows a sketch of the loading screen for the application. Again, this is a small application that shouldn’t take too long to load, but if we have some time left for production it would be a nice touch. As the application progresses its load status in the background, the cockroach on the floor makes his way across the hall. Once he reaches the hole back to his home, the main level will load.

 

Production:

For the final beta I was in charge of programming all of the cockroach AI, setting up the audio clips to play on a specific button press, polishing animations, setting up sprites, refining the floor texture, recording the facts audio, designing the floor that the user interacts with, programming the Arduino board to allow for interaction and last but not least, testing the application after each change made to ensure everything worked out without any bugs or compilation errors.

The cockroach AI consists of a series of if statements within a single script that is applied to all of the cockroaches. The system is designed to detect a certain button press and act accordingly. For example if the A key is pressed on the keyboard, only the RadioactiveRoach gameobject will play its fact animation; leaving the others to continue playing their idle animations uninterrupted. The cockroach AI script also contains a group of methods that are called from a script on another object; the FactManager. The fact manager contains a separate script that is in charge of holding an array of audio clips to set and play on a single audio source depending on what key is pressed and also to detect if a fact is currently playing. Checking if a fact audio clip is already playing was cruicial to the design of the application as it prevents multiple instances of the same audio clip (as well as others if a different button were to be pressed) from overlaying; creating a loud and disturbing mix of audio files playing simultaneously. Depending on what fact was already in the process of playing (both the audio clip and associated animation for the roach), a boolean switch would be enabled to allow the clip to play afterwards BUT only if the other buttons were not spammed. If any button is clicked more than once a fail safe is enabled to break the loop. This prevents the facts playing one after the other in the order they were selected for +5 minutes with no way to stop them except for restarting the application. After debugging and rewriting for about a total time of 4-7 hours, the system was finally complete. Then it was on to programming the Arduino board.

This step was relatively simple as I just had to use some of the built in Arduino frameworks and write “if” statements to tell them when to fire. The script contains a variable with a value set to determine how sensitive the pads will be to voltage change in the wires. I had originally set it to 50 but found it to be too high; later setting it to 25. Within the loop method is an “if” statement to determine if the switch on the board is in the left or right side. If it is on the left side, pad inputs will be sent to the computer to simulate key presses. If it is to the right, then keyboard presses will not be sent. This was an important feature to include to make sure that no keyboard requests would be sent when trying to debug scripts or troubleshoot wiring. Inside the switch’s if statement are three more if statements; one for each keyboard input. I simply told the program “if this pad is touched and has a voltage input greater than the variable I created above, send a keyboard input of the letter ‘a’ to the computer”. I did this for the other two but simply changed the pad numbers to listen to as well as the key being sent to the computer. At the very bottom outside of all “if” statements but still contained in the loop is a delay set to 250 milliseconds. This helps to save resources on the Arduino and keep the key input from being spammed. If not for this input, the person could keep touching the wire and for each millisecond they did, the letter would be sent/and or printed through the keyboard input. I found 250ms to be a good delay to reduce this problem as without making the machine wait too long. Once I had all inputs completed, I recorded some of the narrative bits to test the input; success. The final step was to create the bathroom floor that the user’s would be interacting with.

The floor consists of two layers: the top layer consisting of four tile boards and another layer on the bottom made of one sheet of carpet. Three holes were cut through the carpet in the; about a quarter of a foot away from the left edge and same for the right, as well as one in the center. Insulated wire was fed through these holes from the bottom of the carpet and up between the cracks of the multiple tile boards. Using the carpet layer helped to lower the amount of uneven tiles caused by the wire laying across them in odd positions; creating a cushion for the three wires. The wires were then cut to length from the spool of intercom wire and had their sheaths removed on each end. The two copper ends were then twisted together to increase durability and make a more secure connection. After finding an ideal length to protrude the wire through the carpet and up through the tile from, I applied super glue to the carpet fibers directly onto the hole. This would help keep the wires from being pulled back and forth or even ripped out of the sheet entirely. Holes were then cut into the thorax of some rubber cockroaches and the wire ends were fed through to the top; then bent down to maintain stability of the roach and keep the wire seated. The other ends were then connected the the correct pads on the Arduino, and all assets were testing. In the end, we had a product that allowed for interaction and learning by touching one of the most well known hated insects in the world.

Documentation (12/1/18):

Featured below is a video composition of users interacting with our exhibit at the Rochester Museum of Science.

Advertisements

Game Feel Design Studio

Video Game Documentation:
Video:
Personal Responsibilities:
Most of my work on Asstro was based around fixing any errors with scripts that were previously created as well as created scripts from scratch to allow the player to transition between scenes when needed. During the design phase of the project, I was in charge of rigging the alien character as well as the player (player rig ended up not being used). While other members were completing their assigned models and rigs, I was busy creating the sound effects and soundtrack loop that is heard within in the game. From the sound of the player landing on the hard surface below him, to getting hit by an enemy, all of the sound effects were recorded, mixed and exported by myself. Once all of the assets were created and placed into the scene, I was in charge of placing scripts on the necessary game objects and modifying the references to match the required components (Example: Creating the reference to the “player” game object in a scripts “Player Model” reference block in the inspector). I then aided the animators in properly exporting the character animations, as there were some issues in the beginning that were quickly resolved after informing them that the joint hierarchies must match the original model exactly; no referencing in the model in a Maya scene and exporting. I then created the animator to control the animations for both the player and alien game objects. I reviewed the code that had already been written and modified it to work properly with our application. Some functions were missing from the scripts so I added those in where needed. Some of said functions involved activating triggers in the animator for the player when a button was pressed, switching scenes on collisions and basic UI interaction. Once all scripts were taken care of, one of my final tasks was to create the particle systems that create the light trail behind the player as well as the enemies. The particle system was then modified by my team members.
Assets:
Scripts:
Enemy rig:

Sound effects:

Documentation of the finished game (video and still)
A description of what you were personally responsible for
All assets created by you (even if they were unused)

Asset Level Design

Windows Download: https://www.dropbox.com/s/ms2dv66ozkjfgb5/Windows%20Build.zip?dl=0

Mac OSX Download:  https://www.dropbox.com/s/zi6mobhar6pa08t/OSXBuild.zip?dl=0

Gameplay: https://vimeo.com/291823761

Screenshots:

deathScreenenemyShotstart

This game is designed to test a player’s timing and memory through the use of looping enemy actions. Each enemy has a different travel distance and speed; but that speed and travel distance stays the same every time the level is loaded. It is up to the player to determine when they should progress forward to reach the door at the end of the level to help the player escape from his nightmare. Development was quite basic due to the low poly art style of the application. Once I had all of the modelling, rigging and animations done, it was a matter of figuring out how I wanted the enemies to move. I originally wanted to use an ease-in and ease-out type motion when the enemies reached their travel end points, but decided this made it a bit to easy for the player to progress through the level. I then made the decision to have the enemies ping-pong back and forth at a constant speed. As the player progresses through the level I increased the difficulty by increasing the population density of enemies as well as making changes such as only have them cover half of the terrain; forcing the player to move to the left or right. Some major changes based on beta testing were the increased field of view on the camera. This allows the player to not only have a better idea of where they are in 3D space, but also to allow the player to make better timing decisions on when to move since they can see enemies from a further distance. Walk animation foot IK was cleaned up for a smoother transition from the idle state. The door opening animation and sound are set off sooner to draw the player’s attention as they come near the final objective and as a way to communicate “This is the end of the level. You’re almost there!”

Eternal Play and Frustrations

Tom Clancy’s Splinter Cell. Probably one of the most addictive games I’ve ever played. The idea of enemies lurking around every corner but having the ability to become one with the shadows and bypass or take them out without raising alarms leads to some intense and memorable moments. In the recent additions to the series, holding the sprint button down while simultaneously holding the melee attack button causes the character I am in control of to take out enemies in whatever direction he is running in with one smooth transition from one execution to another.  The effect of starting a combination of take-downs is instantaneous with the action of pressing and holding the two buttons in sequence; as long as there are enough enemies in the area to allow for take-down combos. Simple actions such as taking an enemy out from behind cover without being spotted by nearby enemies rewards the player with hit markers which allow for a smooth sequence of pin point accuracy shots to be taken with your sidearm in sequence quickly and efficiently. More complex actions such as taking out enough enemies in sequence as stated above,  you are awarded a bonus on your final score based on how many enemies were taken out in sequence, if you raised any alarms by getting spotted by someone in another area and are at later points in the game rewarded upgrades at a discount price. The levels of the game are designed in a way that challenges the player to take more stealthy approaches to reach the objective. At first you can easily run and gun your way through or play “ghost” and take out enemies from cover, slowly making your way through undetected without raising alarms. But as the game progresses, levels require that you use stealth more in order to make it through the level without being caught (which at this point means immediate game over; restarting the level) or dying. Along with this higher need for stealth, the game does become progressively more difficult as the population density of enemies increases, more high-tech weapons become available to the protagonists, building layouts become more elaborate and a plethora of other changes. The player does receive a bit more assistance from the main character’s team that are communicating from an area off the battle ground. Hints are not quite “in your face” but are more frequent and can assist the player in what decision they believe would be best to complete the level.

A game that frustrates me beyond belief is QWOP; an online sports game in which the player must control a track runner’s legs to help him cross the finish line. I interact with the game by using the Q, W, O and P keys on my keyboard. The runner’s thighs are controlled with the Q and W keys whereas the calves are controlled with the O and P keys. It seems as though a 2D flash game involving something as simple as running would be easy with only four keys required but frustrating is an understatement. The controls immediately impact the outcome of your game with no latency. Pressing down on one of the four keys causes the character on screen to bend their leg by the thighs or calves; allowing the character to “run”. The change in the runner’s legs is instantaneous and changes much quicker than what most people can naturally adapt to for making the next move. What frustrates me about the experience is that even though it is extremely difficult to even get past the 2m mark, there is something about the game that makes you want to stay and continue to become frustrated as you attempt over and over to reach the finish line or beat your record. The constant requirement for interaction from the moment you make the first leg movement results in your focus to be snapped back and forth; from frustration for failing AGAIN to trying to focus and beat your score. This loop could go on forever with the player getting more and more frustrated with each attempt, but that addictive quality of “I almost had it” or “I NEED to beat my record” keep you going on the frustration inducing path. The game increases in difficulty the further you go. The reason for this is at some point you may need to react quicker to the character’s leg positions to keep them upright and continue onward. It also becomes more difficult the further you progress because if you go to a new record point (let’s say your record is 55m and you’re now at 79m) and fall… you have to start back at 0; not your previous record.  The player is led through this increase by the sheer desire of wanting to beat their high score or even a friends. It’s like going to a casino and playing the slot machine every time you get “close” to winning, but in this case, sitting at your computer longer trying to get a 2D avatar with messed up legs to win a race.

Net Art

Update #1: Concept Check-In (4/29/18)

UPDATED AS OF 5/9/18

Art is something that for years has been able to inspire people, make them think and in some cases relate to them on a level that would come to one as a major surprise. One of the greatest aspects of art, whether it be a small piece painted on a canvas, performance art, a photograph, video, or any other type, is that it has the ability to communicate a large number of messages all from within the one location in which it exists. Every day, the human mind is able to connect a large quantity of various pieces of information without the person having to even think about wanting to save that information for later. This could be almost anything the user experiences, whether it be something the person hears, sees, smells, feels or even tastes. Every second without even realizing it, our brains are taking in incredible masses of information, interpreting the information, and then finally storing it in our subconscious. This entire process of obtaining information and sending it to the brain for interpretation and storage occurs in less than a single second and is all executed successfully without us having to think about doing so or even realizing that the information we are constantly collecting is even in our presence. What makes this Net Art piece a work of art is its ability to cause the user to subconsciously store the words in a special sequence that no one else may store them as; whether it be the sequence of words in order or perhaps even a specific connection caused by a previous experience that the viewer remembers. The viewer’s mind will make these connections as the large dictionary of various words are being presented to them within a time frame less than a second; even though the single word is only visible on the user’s screen for a little less than two seconds. The user’s eyes will become aware that a new word has appeared on screen and save that word in the back of the user’s mind; in many cases causing the viewer to believe they have forgotten the word, that it is not that important to them, or in some cases not realized what the word in itself was. While the user may stick to believing this, their mind will still have that connection stored somewhere; floating around and waiting to be triggered or brought back up to their current thought by being experienced to a certain event or hearing a certain phrase. Sometime in the future while the viewer is simply going about their daily life, an event may occur and cause a slight flashback moment of viewing this piece, because their subconscious thought process will create a special connection to the series of words that they were subjected to while viewing the piece; even after a long period after seeing the piece. This “fortune cookie” effect is what makes this piece a work of art: it has the strong ability to make a surprising connection to the user’s future that has not yet even occurred.

Update #2: Site link (5/8/18)

http://blondediabetic.000webhostapp.com/NetArt/index.html