LIKE I SAID YESTERDAY, TODAY’S POST IS GOING TO BE PRETTY LONG. JUST A WARNING.
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)
- Moth Into Flame- Hardwired To Self-Destruct
- Enter Sandman- Metallica
- King Nothing- Load
- Atlas, Rise!- Hardwired to Self-Destruct
- All Nightmare Long- Death Magnetic
GREEN DAY (Song- Album)
- Youngblood- Revolution Radio
- Jesus of Suburbia- American Idiot
- Carpe Diem- Demolicious
- East Jesus Nowhere- 21st Century breakdown
- Welcome to Paradise- Dookie
WOLFMOTHER (Song- Album)
- Tales from the Forest of Gnomes- Wolfmother
- Victorious- Victorious
- Joker and the Thief- Wolfmother
- 10,000 feet- Cosmic Egg
- Gypsy Caravan- Victorious
OTHER FAVORITES (Song- Artist)
- 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:
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 -> http://www.thegarrett.report. 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.