Category: Garrett M.

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.

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 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. 


Day 46- Present

Day 46- Present

Quote of the Day: “Feels like I’m hammering this” -Alex, on a gross-feeling keyboard.

Music of the Day: Lots of Green Day and Ghost.

I came in today intending to buckle down and get as much done as I could (this week is going to be super hectic, as it’s the last week of my internship plus I have volleyball practice/games every day this week, and have to get my presentation done), and of course almost immediately ran into problems. I have a ton to do this week for MiniBotz, and of course Git decides to be uncooperative. SourceTree, one of the clients we use to grab changes, had an update that needed to be installed, and after doing so the entire UI layout had changed and it couldn’t find the project anymore. I didn’t panic, we have 2 other clients installed on each computer, but both GitKraken and Tower couldn’t find the path to the repo anymore, so I was starting to get a little frustrated. So I moved over to the intern computer, which seemed to be functioning alright, and pulled changes and everything fine. But when I opened up the project, I immediately was greeted by a giant red wall of error text. I had seen what it did once before, but that didn’t mean I knew how to fix it. Basically, it had duplicated a one script within itself (There were 2 full copies of all the code inside one class), and I didn’t know which was them more current. Last time this had happened it had been because 2 people were working on it at the same time, so they each had a different copy put in with their individual changes, but not combined. Basically, deleting one of the 2 copies would delete someone’s work that wasn’t in the other one. Wonderful. But no big deal I thought, I don’t need that script right at this moment.

Of course, nothing can ever be that simple. There was another script also having problems, this one a much more important script. Git had added a bunch of “=” and “<” in random places, along with deleting and moving bits and pieces around, enough so that I didn’t want to mess with it and accidentally break it more. And I didn’t want to work on something else in case my pushes moved the broken scripts to everyone else’s projects. So I was stuck on my own with a bunch of broken things that I had no idea how to fix. Wonderful start to a busy week. I put a description of what was happening on Discord and waited for Alex to show up. On the plus side, this large amount of down-time gave me a good opportunity to work on my presentation, which needed it. Badly. I was able to get a bunch more pictures and get it to a much more, well, presentable state and then was able to run through it for practice a couple of times. When Alex got here we started troubleshooting Git and got it to a (hopefully) functional state. I might be moving computers tomorrow though (again).

If you’ve made it this far, congrats! Volleyball tournament is Thursday and Friday (I believe it’s at OV but if not I’ll update it tomorrow). Come out and watch!

Day 45- Teleporter’s Revenge

Day 45- Teleporter’s Revenge

Quote of the Day: “I have a friend who has a Vietnamese-Australian accent” -Yen

Music of the Day: Nothing in specific today, just went with the normal mish-mash.

Today was a bit confusing to explain, but I’ll try as best I can. Because I haven’t been in for a couple of days, there’s been a bunch of changes (both very large and small) that basically meant I spent the first couple hours familiarizing myself with what had changed. Then I started to hook up the UI elements to control mode, making sure that it can be navigated to from the main menu and such. Then I got to play with some new fancy assets, updating the textures on the control points to look much more like control points and less like the placeholder hot pink gumdrop-esque things we had been using. This is where the title of the post comes in: we downloaded some free assets from the Unity store that happened to be intended for use a s a teleporter. I quickly squashed whatever dreams of that they had by ripping out all of their code and using them just for their pretty visuals. Capture points now look like this when neutral:


and then change to this when captured:


Looks very clean in my opinion. They also have a sort of “beaming up” effect to them as well, but we’ll get to that later. For the moment, the spawn pads looked a lot more like actual points and less like unicorn poop. We also decided to add the player’s respawn “shimmer” effect to the gummy bears when they spawned, to make it look like they just beamed in. It’s a nice effect.

What I really wanted to do was make those rings of lights able to track the capture progress of a point, lighting up around the circle as it was being captured and changing back as it was reverted to a neutral state. unfortunately, the included textures didn’t have that functionality (it’s just one big texture rather than a bunch of small ones. think a tablecloth versus a bunch of place mats), and I have neither the skill nor the time to make it that way. Thankfully, there was an included effect tat would suit my purposes just fine: that “beam up” effect I mentioned earlier. It’s really hard to get a good picture f it, and I can’t include video, so I’ll try and describe it as best I can. Basically, it’s a bunch of colored rings that start at the platform and move up into the sky and repeat over and over. I might not have been able to change the color of the platform itself, but I do have control over which color of ring play. So that’s what I did, it plays the effect color of the matching team while being captured as an indicator to the player. Lastly, I started to build a very barebones team select panel, but with next week being the last of my SRP I don’t know how far I’ll get with that.

If you’ve made it this far, congrats! Have a great weekend, and see you Monday.



Day 44- Colorful

Day 44- Colorful

Quote of the Day: Nothing of real amusement value today

Music of the Day: In addition to The Witcher 3 Soundtrack (AGAIN), I was back to my standard metal/rock. Also listened to a big chunk of the MiniBotz soundtrack because I was testing the Music Manager. Not really my type of music, but it’s at least a lot more diverse now than the 5 songs it originally had.

I Started today by once again recreating the Music Manager, this time on the computer that would actually allow me to upload the changes, and adding a couple more small features/fixes to it, namely to stop it from playing songs on top of each other every time you tab out and back into the game. If you didn’t know, you can hit alt+tab to flip between windows (cmd+tab on mac I think. I don’t know why you wouldn’t know that, it’s a pretty basic feature, but if not then there you , you learned something new). Unfortunately, the way I was checking to see if a song was over was using Unity’s inbuilt isPlaying boolean. Unity also has a very nice (but in this case annoying) feature that automatically pauses your game, music included, whenever you tab out of it, which sets isPlaying to false. So every time you flip out of and back into the window it thinks that the song is no longer playing for a split second and chooses a new one, which is played on top of whatever is left of the old one. This isn’t really an issue for most people, because usually when you start up a game you plan to play it, not tab out and leave it, but it’s still a bug that needs fixing. The solution was to use another inbuilt Unity method, OnApplicationFocus. It does exactly what you think it would do, tells you when the application is the main window or a background one. I just tossed in an extra check to make sure that the window is in focus before choosing a new song, and voila, all done with that project. I made sure to push it to Git before I started working on everything else, just to be sure. Everything went exactly as it should.

Next on my list was a quality of life change for Timmy. Nothing about him was broken or anything, he was just able to receive more features, and this was a pretty simple one: randomizing his color. Basically, I added a random number generator that goes off when Timmy first spawns in to choose what color he’ll be, then make sure he has the matching remains for when he dies. And that’s it. He now comes in cherry, orange, lemon, lime, coconut, and his classic blueberry flavor. I also cleaned up his naming inside of Unity (previously he was called “GummyBearBoss_Blue.” Not very fitting anymore is it?), and organized all of the stuff to do with him into it’s own collection of folders. Cleanliness is very nice, and makes navigating the project that much easier. Then we messed around with Git for a little while and I hit the road.

If you’ve made it this far, congrats! I am very happy that I don’t have to worry about the stress of upcoming AP weeks this year.



Day 43- Gitting Musical

Day 43- Gitting Musical

Quote of the Day: “Look at this pretty nifty thing I found” -Alex

Music of the Day: Seeing as I just finished the Main story line of The Witcher 3 last night, I thought it fitting to listen to the soundtrack. Again. Yknow what, here. Just go give it a listen:

You can also check out the cinematic trailer “Killing Monsters” if you want, but WARNING, it is an M-rated game, and the trailer reflects that: 

All of this is here because I love that game to death and I don’t want to spend today’s post just gushing about it, so I’m trying to curb my writing about it a bit. If for some reason you do want me to gush, literally just mention the game to me any time you see me and you will be in for the whole of my praise.

I worked a bit more on the Music Manager today, adding in the rest of the game’s music from the server. Until now we’ve only had 6 tracks, one for each level and then the title screen music. But we had another 30 songs stored off on the server ready to be implemented, it was just never a priority. So I added them in. It was a long wait while Unity imported them all (audio files tend to be the biggest and take the most effort to convert to unity’s audio system, so importing 30 of them took its toll), but after about 20 minutes I was ready to get down to the nitty-gritty. A.K.A, adding in all 30 of those to the Music Manager object. It was another of those tedious “copy something 30 times then drag and drop each song in” things. Took me a little while but I eventually got it. However, we did want to retain part of the original behavior in that we wanted each level’s “theme” to still play as the first song, then randomize after that. So I added that extra functionality, and tested everything out. Worked great, it was nice to have a change of music for once. I then wanted to check it out on levels besides couch, and… well I hit a snag. But not with my code.

Every time I would try to load a different level, the console would just explode into red text. Errors everywhere. And non of them seemed to make sense, all of the scripts were working fine and error-less, I had no idea what was causing the problem. So I decided to check out the level, see if there was a missing asset or something. Turns out.. well I’ll let you see the picture first:


See how there’s nothing there? Including on the left? That would be bad. Very, very, very bad. As in “Holy $#*%, the entire level is just gone?!?!?!???!” bad. Now, thankfully, I wasn’t too worried, because one of the nice things about Git is that it lets you revert to an older merge whenever you want, without question. So I knew that if all else failed, we could just bump the project back to an earlier version and be fine, albeit having to recreate anything from beyond that point. So when Alex got here we started looking into it, and found the issue pretty quickly. Basically it seems that somewhere in transition, the files for an older build were deleted manually off of someone’s computer, instead of from within Git’s repo, so when the changes for the project were pushed onto the cloud, git thought that all of those files needed to be deleted, and did so next time we pulled from the server. The solution was exactly what I mentioned above: a revert. Thankfully, we didn’t have to go back far, just to the end of Friday. Now unfortunately, this meant that the Music Manager wasn’t updated with the new songs. So guess what I did? All of that again. And then it wouldn’t push, because the Intern PC is having problems getting along with Git, so I’m probably moving to a different PC tomorrow. And because it wouldn’t push, my changes aren’t on the cloud build now, so i get to manually recreate them. Again. On the bright side though, that should be the last time I ever have to do that.

If you’ve made it this far, it means you weren’t playing The Witcher 3, so no congratulations are in order.


Day 42- The Answer to Life, The Universe, and Everything

Day 42- The Answer to Life, The Universe, and Everything

Quote of the Day: “And there it is!”- Alex, seeing his Git update pushed onto my computer.

Music of the Day: Shinedown, The Hives, and of course, Metallica and Wolfmother

Today started pretty slow, as I came in later than normal (sleeping in is nice). First on the list was the addition of respawning to control mode. Basically, when a player dies, we want them to be able to come right back after a couple of seconds of penalty time and be able to continue playing, but unlike the existing respawn for versus mode, we don’t want it to be stock-based (stock based means dependent on a preset number of lives, you die with no lives/stock left, you lose). Thankfully, since the code for respawning is already implemented for versus mode, all I had to do was duplicate and slightly alter the functionality for control mode. That done, I added the new menu system to the control mode level so that we could navigate to/from it, and then used my now-working Git client to push those changes into the cloud so that everyone else now has them.

Then I went and had a health lunch of Burger King. Sue me I left my actual lunch at home. And then I began on the next mini-project/feature: randomized music. The way it was, every level had a single, 3-minute song that wold play on loop for the entirety of the game. For me, not a huge issue since I usually muted the game and played my own music, but you can see how that would get really annoying really fast. So I made a script that randomizes the next song every time the previous one ends. Right now it only includes the original 5, but we have a massive library of music that we can add at any time. It was not without it’s trials, especially because any scene to do with the menu has it’s own specific music, so I worked a lot with if checks and the DontDestroyOnLoad Function to ensure that music was only playing when it should be. This is one of those times where me explaining what i did in detail would a) probably lose most of you, or b) if it somehow didn’t, bore you half to death. It’s a lot of very very specific logic pathways. So I will spare you the details. And with that I was ready to head home for the weekend, but not before backing up those changes that I made. Git may be working now, but I am still slightly untrustworthy, and we have almost 3 terabytes of server backup space, so I may as well back things up for the next few weeks, just in case.

If you’ve made it this far, congrats! If you do use Steam, the Endless Space (awesome space RTS) collection is on sale for a dollar… down from its normal 35. Pretty great deal. If you’re not a big gamer, have a good weekend!

Day 41- 404Sight

Day 41- 404Sight

Quote of the Day: “Let’s go to Mama Louisa’s” -Yen

Music of the Day: I listened to my “Workouts” playlist and was selectively removing/adding songs as the day went on. It’s almost entirely metal/hard rock, because high tempo songs are really really good for running and weights, at least in my case.

Today was overall pretty slow, but it wasn’t without it’s work. In fact, most of the day’s work consisted of me recreating all of the stuff I’ve done over the past 3-4 days, because Git is still having a temper tantrum no matter what client I try to use on the intern computer. Basically, I can pull new changes off the server, but it won’t let me push any changes I make, so anything I fix is still broken on everyone else’s computer. Combine with his the fact that the build currently on Git doesn’t have any of my fixes for Timmy crashing the game or powerups spawning, or any number of other smaller bugs, because it’s all saved locally and can’t be pushed onto the server and you get one very annoyed me having to basically redo all of that stuff on the one computer that is working with Git. This is where I was very thankful that I started doing this when we first started moving things to Git:chanelog

It may be a simple notepad file but it was invaluable with knowing exactly what I modified and needed to change, and where to find it. This is a skill I’m very glad that I learned, because at the start of my project I would basically entrust everything to my computer/anyone else in the office, and after a few incidents where my stuff wasn’t transferred/incorporated correctly and my code was blamed, I started keeping lists every week (besides this blog) of EXACTLY what I had done where, as both a form of proof that my stuff was, in fact, working, and also so that in the event that something like yesterday/today happened, I would be able to recreate it with significantly less stress. I feel like this project has really exposed me to some of the more real-world aspects of working in this field, and I’m thankful that I picked up on this skill now rather than in 3 years when I’m actually getting paid to do this stuff.

Then the whole office went to lunch at Mama Louisa’s, which was some of the best Italian food I’ve ever had. They had an all you can eat pasta bar with a bunch of different combinations, and oh boy was it good pasta. I didn’t take pictures, but I had a bowl of shells with house made red sauce and seasoned beef, and then a bowl of Linguine with the best garlic Alfredo sauce I have ever tasted and Italian sausage. Go there if you’re ever at Craycroft and Golf Links.

Back at the office were some complications with Git (again), and there were some very high emotions flying around from everyone and I actually ended up stepping out to the warehouse to talk with the GrokTek (other company that’s part of Proper Villains LLC.) guys for a while, and they actually managed to get Git working on my computer. Bunch of super cool dudes. Mind you, I was stepping out not because of my own frustration nor out of disrespect but because I didn’t want to get stuck in the argument outside. After giving it a bout 10-15 minutes, I came back in and things seemed to be more back to normal. Now I have a fancy Git client called GitKraken (it’s basically just a UI overhaul so that it looks nicer than normal Git, which looks like it’s from 1995 dial-up). This is what it looks like:gitkraken

On the left is all of the repositories I have access to (it’s kind of small I know, but that part is boring anyways). To the right is all of the changes on the selected commit (basically that specific update), which I can go through and inspect manually if I really want to. This is especially useful for Jeremy, because when we make a final build and have the master folder updated he can go through and check on all the changes to make sure nothing is broken or missing. The main event is the middle section, which visually shows all of the branch updates laid out in a sort of web fashion. Basically I can see who added what when, and a short description of what it does. It’s much nicer than Tower, which was the other option. Tower looks much more bland and boring.

I did eventually get back to coding, and made a small feature addition for the leaderboards. We learned a while ago that some users were able to keep an older version of the game open on a computer and play that, uploading a score when thy eventually die to the same leaderboard as the current build. Obviously, this opens up the possibility of cheating by savvy users, wherein they could score an inordinate amount of points on an older, easier build. I just added a check to see that the current leaderboard was the same as the one on the instance that they’re playing (leaderboard is reset every 2 weeks and gets a new ID). I also figured out that you can get the player’s steam name, so I added an extra little surprise that calls them out by name on their cheating ways if they fail the check.

If you’ve made it this far, congrats! I can’t believe final presentations are only a few short weeks away.

Day 40- Prepare Yourself

Day 40- Prepare Yourself

Quote of the Day: Nothing

Music of the Day: Started with some J. Geils Band to honor J. Geils, then moved on to Shinedown/Metallica. And Alestorm, who’s entire shtick is heavy metal time-travelling zombie pirates. They’re awesome.

I am livid. Much of the reason I am livid cannot be put on this blog because it would be very unprofessional, but suffice it to say that I am really, really pissed off. I will however try to describe what I did today as best (and non-lividly) as possible.

I started today without much to do, so I spent most of my time working on my presentation. Then I had a delicious lunch of street cart tacos/caramelos (god I’m gonna miss caramelos when I move to Salt Lake). Then I was informed that there were a ton of bugs on the current build, many of them to do with powerups. now, be forewarned this is about the time of day when the lividness ensued, so I’m going to have to tip-toe around all of the details, but suffice it to say this: modularization was being scrapped. And to make things worse, Git is having a temper tantrum and throwing around errors. That’s it for today.

After some very recent events I am significantly less livid and now just mostly frustrated. Anyways, congrats for making it this far, yada-yada. See you tomorrow.