Month: April 2017

Day- 49 The End of Something (Kind of) Old

Day- 49 The End of Something (Kind of) Old


Quote of the Day: “See you in 3 weeks” -Pretty much everyone

Music of the Day: Listened to most of my favorite songs. I’m gonna list my top 5 from a few bands here, so be forewarned.

METALLICA (Song- Album)

  1. Moth Into Flame- Hardwired To Self-Destruct
  2. Enter Sandman- Metallica
  3. King Nothing- Load
  4. Atlas, Rise!- Hardwired to Self-Destruct
  5. All Nightmare Long- Death Magnetic

GREEN DAY (Song- Album)

  1. Youngblood- Revolution Radio
  2. Jesus of Suburbia- American Idiot
  3. Carpe Diem- Demolicious
  4. East Jesus Nowhere- 21st Century breakdown
  5. Welcome to Paradise- Dookie

WOLFMOTHER (Song- Album)

  1. Tales from the Forest of Gnomes- Wolfmother
  2. Victorious- Victorious
  3. Joker and the Thief- Wolfmother
  4. 10,000 feet- Cosmic Egg
  5. Gypsy Caravan- Victorious


  • Who Are You- The Who
  • The Devil’s Bleeding Crown- Volbeat
  • Thunderstruck- AC/DC
  • Freewill- Rush
  • Sympathy for the Devil- The Rolling Stones
  • Rock ‘n’ Roll Band- The Scorpions
  • Hate To Say I told You So- The Hives
  • Juke Box Hero- Foreigner
  • Cut The Cord- Shinedown
  • From The Pinnacle To The Pit- Ghost
  • The Way Of The Warrior- Hammerfall
  • Wash it All Away- Five Finger Death Punch
  • Freak Like Me- Halestorm
  • The Trail- Marcin Przybylowicz (He’s Polish)
  • Nimble Bastard- Incubus
  • Open Your Eyes- Disturbed

This was it. My last day at Proper Villains (At least as the intern. I come back in 3 weeks on the payroll as an actual employee). And it was a good day. Just because it was my last didn’t mean that I was gonna slack off and do nothing, so I started by hooking up the game over screen for control mode. On a side note that will become more relevant shortly, we now have task manager software up and running (it’s called Zoho) that let’s Jeremy assign us all tasks and a certain amount of hours in which to complete them. The control mode game over screen was listed as having a time allotment of 6 hours, and to my extreme satisfaction I finished it in about 20 minutes. I also got to use events for the first time, which greatly simplified the process. An event is essentially a specialized trigger that can be used by any piece of code, without having to connect the script that the event is made in. So I created an event that triggers when a point is captured, which then causes another script to check through all the points and see if they’re all the same color. If they are, it throws another event trigger that then says to the UI “Hey, game’s over. Show the screen.” This event chain let me link up 3 completely different scripts without ever having to write a whole bunch of new code and making sure that each script had access to exactly the parts of the other ones that it needed. instead it just goes “event one happened, do event 2, then do the thing” (Zhu Li! Do the Thing!).

With that done, I started working on moving a flag up and down a stick. Much less glamorous, I know, but very important for user feedback. In control mode, you have those capture points that look similar to the ones in the picture from yesterday:

Left and Right

The way it was, there wasn’t a way to track you capture percentage on a point. You don’t just walk onto a point and it’s yours, you have to stay on it for a few seconds to fully capture it, and visually there was no feedback for that. Yet. So we decided to have it tied to the flag moving up (or down) the flagpole. It moves up relative to your capture percentage before eventually locking at the top and turning to your team’s color. I did have a little bit of fun with it though, because initially I forgot to lock it to the top of the flagpole so it would just keep ascending into space, even after you had fully taken the point. I also got to mess around with position vs. local position, which simplified the calculation by a lot. Basically, position is the objects actual coordinates in the scene (x, y, and z), but local position is where it is relative to it’s parent object, in this case the flagpole. This let me change how far it was up the pole based on the pole, instead of making sure the two matched in world position. This also means that it doesn’t matter where the flagpole is, the flag will always move relative to it, rather than having to make it individual to each case. I also made it change to the associated team color when it reaches the top of the pole, just for some added visual indication.

Then we had lunch, which was really really good pizza (Meat lovers plus ricotta cheese. Delicious). And I went back to fine tune the flag and game over screens. The flag needed to be able to move down when the point was reverting to neutral, which happens when you don’t fully capture it. It turned out my code would work just fine for this… if the point actually was doing what it was supposed to. It wasn’t slowly returning to neutral, the code had gotten taken out somewhere. So I re-made it (nothing too complicated) and voila, moving flag both ways. The game over screen was having one small issue wherein you couldn’t actually use the “Main Menu” button, and this baffled Jeremy and I for a long time. I actually found the solution when I was testing my flag code at a different computer with the sound on (usually I mute the game and listen to Spotify), because the “select button” sound was playing over and over very quickly. It turns out that my event trigger for game over was being called in Update, which is of course used every single frame, so the event was being triggered many many times per second. normally not a big problem, since it needed to be in update to make sure it caught the end of the game. But because of the way the UI works, a button is by default highlighted when a menu opens, and my event was telling it to do that over and over very very quickly, meaning there was no way to use the other button. A very simple boolean check to see if it had already been called fixed this, and with that my day was over, and my senior project came to a close.

This paragraph is a general reflection on my time here, and the things that I’ve taken away. If you want the full presentation, mine’s on Wednesday, May 3rd at BASIS. So this internship has taught me a lot of things. First, it’s taught me a brand new language, that being C#, and a whole game engine (Unity). Second, it’s taught me a lot of how the indie game industry works, and what to expect when I actually go into the field or start my own company. Third, it’s taught me both what works and what doesn’t work, not only code wise, but development wise as well. I’m not criticizing Proper Villains for this at all, it’s just something that happens at every company, and something that I’m sure I will have to deal with in the future. but it was good to have that experience and be able to say “Ok, doing this will be useful, but we should avoid doing this.” Lastly, it’s taught me how to be more creative, which is a skill that I needed to improve on. It’s very different to be at home with a notebook and a pencil and say “Hmm, I want to make something like this,” and then plan out how it works than it is to be sitting at a computer in the middle of a project and say “This isn’t working, maybe I should do it this way,” or better yet “I thought I should do it this way, but if I do it like this it’s simpler and more fun.” This internship was a really great experience, and I even managed to get myself a job out of it to boot. I’m grateful that I was given the opportunity to do so.

If you’ve made it this far, congrats, and thanks for reading the entire thing! If you have (for some reason) been keeping track of your MiniBotz points, you should have 14, and if that’s the case it means that you have read pretty much every single post, so a massive extra thank you (if you haven’t been keeping track but have read every post then a massive thanks to you too). That means that I was entertaining enough to come back to and you enjoyed the content. A huge thank you goes to Mr. Swindle and Mr. Winkelman for being amazing advisers, and to everyone here at Proper Villains (even though I doubt any of them read these) for letting me intern here and giving me a job! Like I said a couple of days ago, I do plan to keep blogging about working here, and also about other things that would be out of place on this one (Nothing inappropriate, just more gaming-specific stuff), and I actually have a custom URL that I got for Christmas of all things a couple years ago -> There won’t be a site up for a couple of weeks, but it’ll be ready to go after graduation, when I come and work here for real. So thanks for putting up with me for 49 whole days (technically this is the 50th post exactly too, so that turned out well), and I hope that you come back and put up with me for another 49 or more.


Weeks 10-12

Hello! Sorry I have not updated in a while, but I have been busy working on my presentation! My internship ended last week at Dr. Dyson’s office, so I have been working solely on my presentation and paper, and I am getting ready to present next week. I decided to research the quality of patient care, which is what I am presenting on, while also including anecdotes from my internship. My presentation is next Tuesday, so this will be my last post on the blog! Thank you everyone for reading!

Weeks 4 and 5

Hello all! I am sorry for the hiatus. These past three weeks I have been on travel, to home and to tour colleges. I did work for three days last week, which I will be updating you on in the blog post. Thank you for your patience in waiting for this update!

On Monday of last week, I learned of an upcoming event that Engage Miami is planning in partnership with the ACLU. It will feature a panel of lawyers who will educate attendees on protesters’ rights, so that protesters can stand up for themselves in situations when law enforcement/government are involved. Despite the fact that I will no longer be with the organization by the time the event rolls around, I designed a flier for the event (with help and critique from a board member) that will soon be cleared for publication.

On Tuesday, I made volunteer calls once more. The event I was promoting was a March For Science that Saturday, which was an event carried out nationally with a Miami chapter. We got a few confirmations (hooray!).  The rest of my work that week was done remotely, as my supervisor was on vacation that week.

I went to Planned Parenthood Wednesday because I was to travel Thursday. There I was given a list of stories for the bank, this one with over 300 names. Just categorizing each story has taken me over five hours, so making my way through calls will take me a few days.

On Thursday I traveled! I am sorry for the short update and the wait, but this next update should be considerably longer. I am sad to announce that the last day of my internship will be May 5, but happy to be returning home soon. Thank you all for reading!

Day 48- Friendly Fire

Day 48- Friendly Fire

Quote of the Day: Not really any good ones that spring to mind

Music of the Day: Lots of songs with “Carpe Diem” somewhere in the title. Not on purpose, just a funny coincidence.

I came back today (the penultimate day of my project) knowing that I had to finish as much as I possibly could before I left, because after I’m gone I won’t be here for reference if anything I made breaks. First, though, I turned in my employment paperwork, which was very exciting. Then I went over to the main dev area and saw… people working on Git. Wonderful. While this meant that I wasn’t able to work for a little while, the reason was worth it: the project was being moved to the local Git repository rather than a cloud based one somewhere in the world. Basically it’s stored on the Proper Villains server now, meaning that our pushes/pulls are much, much faster and we don’t have to worry about someone hacking into the remote and stealing our work since all the data is at our office now. After a little while they gave me the go ahead to start working again though, and I got down to my tasks. First up: polishing off the team select.

The first thing I needed to do was make sure that the correct bots were getting put into the character select for each player, and that turned out to be amazingly simple, since the code was already there. I just needed to hook it up. Next I needed to make sure that transitioning from team select to the actual game worked without a hitch, and though at first I thought it was, surprise surprise things broke pretty soon. If you remember waaaaaaaaaaaaaaaaaay back to day 12 I think it was, when I was still working on the teleporter, Clip and Mack would have a bug where they couldn’t attack after moving levels. Thankfully, I also remembered that I had encountered that bug before, but couldn’t remember how I fixed it. Conveniently, I wrote that down in the post. So I referred back to one of my earlier posts to fix a thing that I had broken once before. It was a kind of funny experience. With that fixed, I ran into another issue: botz could damage themselves. This was more prevalent for some over others, but it was still comical to watch Mack repeatedly slam the ground while slowly killing himself.

The solution to this one was also pretty simple. Remember how each bot has a string that tells them what team they’re on? Well, their attacks do too (it’s called a “Damage Mask”), and basically it says “Hey, if my attack is from the same team as the thing it’s hitting, don’t do damage to it.” It stops friendly fire, basically. So all I had to do was set the damage mask of the bot’s attacks in the same spot that I set its team. Pretty easy. That done, I moved back into the team select scene itself to add a feature that I had forgotten when I initially made it: team swapping. or, rather, telling whatever team had just been left that it had one less player. This also turned out to be pretty easy, I just grabbed whatever it’s previous team had been and said to that team ‘hey, you have one less player now,” therreby keeping the maximum players per team functionality intact as well. And With that (plus a small Music manager bugfix that isn’t worth talking about), I was off to the volleyball tournament.

If you’ve made it this far, congrats! Tomorrow is the last day of my project, so there may be an extra-long post. Just a warning.

Day 25: Repetitions

At the start of my internship, I thought the most frustrating part of the internship would be listening to the same song over and over again. Although it seemed to be that way at the beginning, I have grown use to listening to the same song on repeat. After a while, I’ve learned to find new things to listen for every time around. Today was a great example of how often you have to listen to a song over and over.

The same band that has been in for two weeks continued recording today. The singer for the band came into do vocal overdubs. The band was past recording music, as all of the instruments sounded up to par, but the vocals still needed work. For the past couple of weeks, I have been listening to the same set of songs on repeat, and especially so when recording the vocals. I didn’t have a problem with having the same song repeated, and I managed to enjoy the song every time around.

In the afternoon, a guitarist came into the studio record a guitar solo for a song, and that was the important thing on his agenda. To record about 15 or so seconds of a song, we took an hour to get the solo right. There were a lot of takes made, and it took a while to finally get it right.

Today just showed how the recording process is just a matter of repetitions.

Day 47- Schoolyard Draft

Day 47- Schoolyard Draft

Quote of the Day: “Oh I can’t join that team. Fine, didn’t want to anyways” -Yen

Music of the Day: 

I am so incredibly happy with what I managed to get done today, even in the first 2 hours or so alone. And it was in no small part thanks to my own GENIUS breakthrough!!! Ok not really. More like thanks in part to my own laziness and the desire to NOT have to build a completely new UI system for team select, because as I’ve said many a time, I am no artist. So as I thought about how I was going to build a completely new menu in less than a week, I realized I didn’t have to. Instead of making some fancy menu where everyone hits various buttons to choose who their teammates are, why not have them play the game to do it? By that I mean stick them onto the level with a couple of capture points that let you choose teams. So that’s what I did. Here, a picture may be helpful in this instance:


Those 2 flags, the blue one on the table to the left and the red one on the cabinet to the right, are the team selectors! Basically, you go stand on one for a couple of seconds and your team is set to the corresponding color and a nice little message play to everyone informing them that player x has joined whatever team, so that they can mark out the enemies they will smite in the actual game. After all players have chosen a team, a 10-second warning is given and then everyone is plopped into the actual game mode itself. This was actually super simple and only required a couple of new scripts to do, most of which was similar to stuff I had already done multiple times. After multiple rounds of testing, I was very satisfied that I had made it so much quicker than expected, and started thinking about other small features I could add. Before I did that, though, I needed to link it up to the menu system, so that it loaded you into team select rather than straight into control mode. This didn’t really need it’s own whole sentence, I just changed the level that it loaded. Wooooo, time wasting! Anyways, that done I was ready to add some features.

First on the list was the ability to restrict team size based on the number of players in the game. For example, if you have 4 players, you want 2 teams of 2, not one team of 3 and then some poor sod who’s going to get their butt kicked. The functionality for this was pretty simple: add an integer that increments when a player joins a certain team, and then check whenever someone tries to join that same team that the number of players on it aren’t maxed out (number of players/2). With that done I added a message to correspond that basically yells at you if you try to cheat the system, then implemented a 10 second timer and corresponding warning before the game actually started. Basically, once every player has joined a team there’s a 10 second warning that pops up and after that 10 seconds the players move to the actual game level and play the game. Small touches like that are what make the mode feel more like a refined, polished experience vs a barebones beta. Last on my list was to hook up the team select scene to the menu, so that it would load in with whatever bots players had chosen when they elected to play control mode.

This was a little bit trickier than it would normally be, because we have so many modifications for control mode and especially the main Player class, there arr big chunks of code that are turned off or added specifically for control mode. So I had to tiptoe around all of this when dropping the correct MiniBotz into the team select scene while still making sure that their core functionality remained. I got it most of the way there with only a few small errors to get around tomorrow. Tomorrow will also be interesting because I won’t be going in to the office, but instead trying to work a little bit remotely from home/school, since I have too many places to be. So we’ll see how that goes.

If you’ve made it this far, congrats! As I said yesterday, I would let you know if the Volleyball tournament wasn’t at OV, and guess what, it’s at Sporting Chance. Also, after reading Cameron’s blog post I’m going to slightly copy his idea of continuing to blog about my day-to-day at Proper Villains, probably on another site that I will get set up. more details on that will come at the end of this week. And also, since I guess I just spoiled it, I’ll be working here over the summer, no longer as Freebie, but instead as Paidbee! Or Garrett. Preferably Garrett. 


Stress and Social Pressures due to Inter-School Relationships

When attending a rigorous curriculum based school like BASIS, traits that may be common in a typical high school tend to play a different role. Stereotypically depicted by media, high school has cliques with the jocks and the popular girls, then the nerds, and the drama and music kids, and often the so called “outcasts” are bullied by the so called “popular kids.” This takes a completely different role at BASIS and often for the better, grades and peers treat everyone as equals and you are not defined by what you are passionate in or good at, allowing for a healthy student body that can act as one. While social pressures from typical high school often come from your position on the popularity scale, what parties you are going to, or who you are in a relationship with, social pressures look differently here as well. When attending a school that is heavily reliant on its education and how well students are doing in the classroom, many students feel pressured to be the best and get the highest grades because that’s what makes them cool, being “smart.” While having the motivation to succeed is never something to frown upon, many students feel pressured to be smart or to do well on exams specifically because their friends are smart or they feel that their peers will look down upon them if it becomes known that they did bad on a test or are struggling in a class. While to a certain extent this becomes human nature to feel pressure to live up to others but it can take a different role in the behavior of some students. It has been seen as students who are struggling in a class or had a difficult time on their exam will present themselves to their peers as if nothing is wrong and that they are succeeding just as the rest of them. This can be detrimental often because if students feel as if they can’t be honest with their peers or close friends it often feels as if there is no on there for them, when in fact it is the contrary. With a resource to talk to, students will hopefully feel more comfortable talking to a trust adult regarding their difficulties in the classroom and maybe even more that is going on in their lives.



Social Anxiety in the School Setting due to Curriculum-Based Stress


One of the sections of Social Anxiety that I am addressing in my study/experiment is Social Anxiety in the School Setting due to Curriculum-Based Stress. When attending BASIS, it is a known fact that our curriculum is rigorous yet allows us to achieve a high level of learning compared to other schools. Due to the study as well as our school beginning in the fifth grade, we can see how students’ progress in dealing with the increasing rigor of the BASIS Education. The fifth-grade curriculum at BASIS is more rigorous than a typical fifth-grade curriculum, containing more science classes as well as not accounting for the typical session of recess given in most elementary schools. To still account for physical activities younger students take KENPO classes as well as Physical Education classes. This continues as the grades increase until high school where the stress levels are expected but are still higher compared to most schools. For being the second best high school in the nation, this is expected and what is known to students and parents before entering the BASIS School system. This, however, does not mean that students often find it difficult to manage their time and stress during these formative years of their childhood, which leads to a further difficulty in the older years. It is important to provide resources for our students as early as possible to guide them through time management, as well as stress and anxiety management. I truly believe that if we provide a resource for the students that this will help their overall mental and emotional well-being and transfer into further success in the classroom. It is also important that we start providing these resources to all students but especially the younger ones, as the younger, they are the more it will become ingrained in their behavior and habits and further help them as they grow older. The desire to implement these programs is easier said than done especially for a charter school, but slow steps can provide further improvement for our entire student body in the future.


Weeks 11+12: Classifying the Chaos

Weeks 11+12: Classifying the Chaos

Dr. Hariri was back last week, but for the majority of the week I had to write and practice my SRP presentation, which gave me little time for coding. On the other hand, what little coding I got done and the meeting I attended/caused turned out to be incredibly productive. Kind of. In terms of the classifier and the machine learning, I worked out the errors then promptly got results that didn’t make sense. After an email to Greg this week, I figured out how the classifier is supposed to function and what the odd results actually meant. Unfortunately the sample size I’m working with is much smaller than the HTML sample size, so I’ve had to recopy and reformat the XML data to get the machine learning to work, which I’m pretty sure is throwing off the accuracy of the model. Machine learning in this case is essentially developed by training a program to recognize a baseline normal then flag any deviation, which separates normal files from anomalies. Or at least that’s the idea. Currently how it works is that it models both malicious and normal then classifies them as such. A few weeks ago, there was a solid half-hour debate between Dr. Hariri and Greg over how the project was supposed to function. The rest of us in that meeting just kind of sat there and watched it unfold. To be honest it was really interesting listening to them debate, and it ended up illuminating the trajectory of the project.

In terms of my project, I asked Dr. Hariri how it was all supposed to fit together and he called a meeting of him, Chintan, Shubha, Doug and I. We developed the diagram above, which is a pretty good theoretical outline of the HTML project and how my project (XML is in red and green) runs in tandem with it. Apparently Avirtek is working on a demo that they need to present in the next week or two, which coincides with the end of my internship.

Outlines and diagrams only reveal so much however, and after talking to Chintan about how everything fits together it’s nice knowing that I’m not the only one a little confused. Discretization is part of the diagram, but in practice the machine learning uses the raw data, and I’ve already explained a little bit of the classifier confusion. Apparently there are different versions of what’s going on in practice, and it’s a bit scattered at the moment. Dr. Hariri will be in tomorrow, and I have questions for him in terms of both the seams of the project and in terms of tying up loose ends for my internship. I’m curious as to how this is going to play out and what my role will be. If I continue working at Avirtek (which I really hope to), I will either keep updating this blog (if Winkelman is okay with that) or move the content to a new site and link it to this one.

I’ll keep you posted,


JG Weeks 10-11

These past two weeks have been heavily focused on getting the W-Maze rats completed with their track sessions. Our data has to be analyzed and consolidated by the first week of May, and our results have to be final and ready to share as well. Our lab is attanding a conference where we were asked and invited to share our research. We will be sharing in the form of a poster presentation.

In addition to the stress of completing our research, I was also given a new cohort of 10 rats to train. They are now on the Linear Track. Luckily, this cohort so far learns a lot quicker than the previous one. I have a little over a week left in the lab. Next week, week 12, will be my last blog post. I will share the data that I have included in my powerpoint presentation.