Tuesday, October 30, 2012

INFR 3330 - Arting for Game Design

So as people may or may not know, I consider myself a programmer. I do that because A) I'm a terrible artist, and B) I'm not that bad at programming. So all things considered, it makes sense that I consider myself a programmer.

However, I have a confession to make. I'm kind of scared of Unity. Yes, Unity. I have no idea why actually. But I looked into it in May, and then spent an afternoon going "I have no idea what's going on" and then closed it and never wanted to look at it again.

Oh God. (Wikipedia)

So yea, I've been trying to avoid Unity for as long as I can. I can't do so any longer though. I have things I need to do in Unity, one of which is the marriage game that's due this week for Game Design. The game needs to be made in Unity or Source, and considering how no one in the group knows Source, Unity was our choice.

It was a spur of the moment decision. Like as I'm writing about it now, I still don't really remember what I was thinking at that moment. But the moment we decided on Unity, I volunteered to do art. Yes. I volunteered to be an artist.


So yea, I became an artist for Game Design. Arting in the name of Game Design you could say.

I don't normally do art, but when I do, it's normally pretty terrible. But hey, I volunteered, so I had to do it. I had to make a bunch of art assets for the game, and then port them into Unity so that they can be used for the finished product, so I pulled out my trusty tablet, opened up Photoshop, and started working.

Yes, I own a tablet.

It was different than programming obviously. I wouldn't say it was a bad experience, but at the end of the day, I'm a more comfortable person when I'm programming. Anyways, here's some samples of the art I did for the game.

You'll see more when we present our game.

I wonder what our game is about. Hint, it's definitely not Batman.

Yay for drawing characters.

And that's it for now. Any more and it might spoil our game.

This is a rare occasion, not often do you get to see my arting skills. Also, a theme of the game has to be surprise  This is a meta-surprise, cause I'm doing art instead of programming. Surprising.

Sunday, October 28, 2012

INFR 3110 - Post Midterm Thoughts

So we had our midterm on Monday. It was ok. Like, I felt like I didn't do bad, but at the same time I kinda feel like I didn't do too well either. So I'm not really sure. Regardless, we'll probably get our marks this week or next week, so we'll see!

So since midterms are over now, I've been focusing more on getting everything else done. It's nice to not need to study until December, but at the same time there's still a lot of work to be done for pretty much everything. For one, I really need to get those homework questions done.

Dem repositories.

So as you can see from above, assuming I get all those handed in, I'll be exactly at 60. I have most of them handed in, just missing Hard 4 and Medium 7. I think Hard 4 is done, but I'm still working on Medium 7.

I started working on Medium 7 yesterday, which is the camera question. For the most part the question is fairly straightforward, but I'm just not really sure how to draw a frustum. Or what a God of War camera means.

But, you can has third person camera.

So my goal is to get to 60 by the end of the week. The ideal path would be for me to hand in Hard 4 tomorrow during office hours, and then Medium 7 on Friday. If they both get accepted, then I'll be done and I can focus on other things.

And by other things, that mostly means GDW and all the other assignments we have for our game. GDW is getting kinda sketchy since we really don't have anything to show at this point. So I'm getting kind of worried. Getting our engine set up is taking longer than I would've hoped for.

Although we have this Eldertree class.

Another thing about GDW is that we have a lot of programmers now. As a result, there's a lot of programming styles going into our game. Like even in terms of file naming conventions, we have a bunch. I have a feeling our game engine is going to be very convoluted haha.

I do full names like "SoundHandler" and "WebserverHandler", Gordon does short forms like "rtManager" and "rtListener", and Alston does metaphoric stuff like "Eldertree" and "Branch". And once you get into the actual code, it gets even more crazy from there haha.

Monday, October 22, 2012

INFR 3330 - Playing Blind

So on Wednesday we had another more "hands on" class for Game Design. It all started with a pre-recording audio introduction to what the class was about, and then the prof explained to us our activity. We were tasked with creating a purely auditory game, and when he came back in like 45 minutes he had to play the game.

We ended up choosing Harrison's game since it was the easiest. Honestly I felt that Naeem's game was probably better, but Harry's game was easier to organize. It turned out to be a good idea since it took us half an hour to form a tunnel with Game Devs.

Game Devs are too damn hard to organize.

The game was pretty ok. We had our prof come in blindfolded and had him navigate a human maze. Whenever he got close to a person we had that person making a beeping noise which would keep him on track.

We also got him to go over tables too because we could.

Many things could be said about Conner's expression in this picture.

Thinking back, this activity kind of reminded me about one of the things I did in Hong Kong. We went to a place and did this activity called "Dialogue in the Dark" where all the participants are given a walking stick and put into a pitch black room.

Like it was literally pitch black. You couldn't see anything at all. Then, you were guided along by your cane and by a literal blind person. Between your guide's instructions and your sense of feel, smell and hearing, you were brought on an adventure to simulate navigating through Hong Kong as a blind person.

This was actually a pretty fun day.

It was quite an experience. I've never been blind so I've always relied on having my sense of seeing. Being in that room where I couldn't see was so disorienting at first. It almost felt kind of panicky to be forced to move and not be able to see where I was going.

However eventually I got used to it and noticed that through my other senses I could still navigate, albeit more carefully and awkwardly. It was a truly eye-opening (lolpun) experience to how it would be to have your sense of vision removed and could only use your other senses.

It was literally this black.

So relating it back to game design, it made me kind of think. How good are the sound cues in the current games we play? If I were to have a blind person play the games I play and enjoy, would they be able to?

I've thought about it for a few games like Arkham City, Uncharted 3, StarCraft II, and so on. The result is no. No they cannot. Those games have good sounds, and games like Uncharted 3 could definitely be able to paint a picture of your environment very well through sound.

Their soundtrack is actually really good.

You would not be able to know where to shoot in Uncharted, or where your enemies are in Batman, or like do anything at all in StarCraft. In fact, some of the SC2 pros play with sound off to make their visual awareness better.

But then I thought back to this thread I read (or don't remember if I just heard about it) a few years ago. Apparently some guy could play Pokemon blind. At first I was like what, how could you do that. And then it became apparent to me. Pokemon actually has a trillion sound cues.

Playing Pokemon blind like a boss.

So the guy is playing through the game, and he navigates by crashing into things. Which is ok, because in Pokemon when you do that it makes a bump noise which as a player, notifies you that yes, you have hit a wall. And when you think about it, there's so many sounds in Pokemon.

Every Pokemon has their own cry, which tells you which Pokemon you are facing without needing to see it. Almost every attack has it's own unique sound effect. And literally everything you do prompts a sound cue. It's actually really cool how they do that, and people don't really notice.

I mean, everyone here has navigated Dark Cave without Flash since Flash is a waste of an ability slot. (Bulbapedia)

I find that pretty interesting. I mean, we focus so much on the visually nowadays that we don't really care about the auditory at all. Yet some people can only have the auditory. I think that by adding a bunch of (not annoying) sound cues would make a game not only more accessible by people, but also just make the game better overall.

Sunday, October 21, 2012

INFR 3110 - Engines Midterm

The death knell rings.

But seriously though, the Engine's midterm is tomorrow. Yes, it's that time again, midterm season. Where my resume gets tweaked, I catch up on all the news, and my music collection is updated.

God I hate studying.

But actually, the death knell is ringing.

So more than half the class can't write the midterm as of yesterday, meaning tomorrow all those white and red people have to become green people. Don't know if that's going to happen. All I know is that I was first on that list, but Gordon overtook me on Friday :(

But the actual studying of this class is aksjfdnksand. Granted compared to the other two midterms I have on the same day, it's the most awesome one, so I really don't mind that much. But I read like 200 pages yesterday of the textbook and I don't know what else to study.

Saad said it was a light read. It actually wasn't bad.

I never know how to study for Hogue-esque exams. I always feel like I would be ok, but at the same time you never know. Like I just never feel prepared for these exams. So I think I'll just do what I normally do and just write it anyways.

In terms of homework, I'm currently at 32 points. I really want to get to 60. I think it's 100% possible. I got Buckstein to look over my sound question on Friday and I need to change a few more things, but for the most part I'm done. That's another 15 points since it's a hard question.

Looks slightly more interesting than last time.

So that should in theory bring me to 47. Buckstein told me to consider doing this question up to nightmare. I considered it, but after talking to Gordon I think I figured out a better path to 60. I started working on the AI question as well initially planning on going to hard with it.

However that's going to take a lot of effort. Getting the medium section isn't actually that hard. Hardest part about that is the single flocking behaviour. But going to hard requires two more flocking and three more simple behaviours, which would take some time and effort.

Don't all my homework questions look so exciting?

There's actually seek, flee and arrive there. It's just arrive is currently overlapping seek. Regardless though, I could spend like a day finishing the medium section of this question, and that should bring me to 55.

After that all I need to do is one more medium. Gordon said the camera one should be easy, and the more I think about it, the more I think he's right. So if I do that as my fourth medium, then bam. 60. Sounds like a good plan I think.

Tuesday, October 16, 2012

INFR 3330 - Trampoline Dodgeball

So today is my sister's birthday. As a result I went back home yesterday to celebrate. We ended up playing dodgeball. The rules and mechanics of that game are pretty straight forward and I'm sure most people know it, but essentially you have a ball and you throw it at people.

If you get hit, then you're out. If you catch it, then the person who threw it is out. The team that eliminates the other team first wins. It's a fairly simple game. However there was a twist when we played it yesterday, we played it at a place called "Sky Zone".

Yes. Trampolines.

So it was dodgeball. But on trampolines. Trampolines are also fairly straightforward since you jump on them and you jump higher. So again, simple mechanics.

But what was interesting to me was the fact that this game essentially took two activities, playing dodgeball and jumping on a trampoline and essentially merged their mechanics into a game of trampoline dodgeball. So now you're playing dodgeball, but on a trampoline.

Dodgeball + Trampolines = ??

It was an interesting twist to dodgeball. I don't really remember if I've ever been on a trampoline before, but I've definately played dodgeball. I remember a lot of running around and dodging balls, but when you're on trampolines, you can't actually run that effectively.

It's very awkward to run in the court they have set up, so the dynamics of the game changes a bit since there's more bouncing and jumping to get around. For example, if there was a ball in front of me, normally I would run for it. But with trampoline dodgeball, if you went for it by rushing, you would likely lose control and as a result be an easier target. So you had to be very careful.

You could actually jump really high, contrary to what this picture shows.

Another thing was that the court was designed so it was in a 3x6 grid, where every slot was a trampoline and there were these ridge things in the middle that were not bouncy. This pretty much meant that unlike regular dodgeball where formations could be more clustered or spread out, the environment actually limits you to playing in a grid format.

This is because when more than two people are bouncing on the same trampoline, it really can mess with your momentum. At first a lot of that was going on, but then as we started playing I noticed how although no one said you couldn't be on the same trampoline, everyone eventually figured out it was better to stay on your own and not enter anyone else's if you could help it.

Observing game mechanics/dynamics like a boss.

Also another thing I noticed was that it would seem like constantly jumping/bouncing around would make it harder to get hit, but I slowly realized that it was actually easier to get hit just because it was harder to dodge things when you're in midair.

However, it's kinda cool because if you stay on the trampoline and then dodge the balls that are coming at you, you can use the trampoline's power to propel yourself out of the way given you don't go out of control and you react in time.

Also the walls are trampolines.

Overall, the game was fun. I've never done anything like that before, and honestly I was dying since I am so out of shape. Woke up today and my legs are stiff from jumping and arm hurts because it's so sore from throwing. But it was fun. Definitely a lot more physically challenging than I thought it would be.

It was still pretty interesting to me as to how two activities with simple mechanics could be fused together into a game that although still had simple mechanics, had different dynamics resulting because of that. Many of the rules and mechanics of dodgeball were still in place, but people had to adapt and execute their strategies in different ways due to the new mechanics and constraints of the game.

Sunday, October 14, 2012

INFR 3110 - Engine Components and More Homework

To this week my GDW group got together to discuss how we wanted to structure our game's engine. Last year when I made SHFT and SHFTed, our engine was object based. That pretty much meant that I had a bunch of classes and within each class I stuck a lot of stuff in there and that class was essentially fixed.

You couldn't really be too too flexible with that system since if you wanted to change something, then you would have to change a lot of stuff to make it work. This year however, we want to make our game more flexible so we decided to try making a component based system instead.

It's hard to see in this picture, but there's an octopus here.

After finding out what a component based system was, and after explaining it a few more times to others, I eventually created a metaphor comparing a component based engine with an octopus. Hence, the Programming Octopus was born.

So the Programming Octopus represents the brain of the engine, and each tentacle is a pointer. These pointers are initially empty, but then the programmer can give the octopus something, and all of a sudden the Programming Octopus is like "hey, I have something now" and it'll hold onto it with one tentacle and do things with it.

Wikipedia says this octopus is trying to open a bottle. (Wikipedia)

So essentially it makes for a more flexible and functional system since objects are created in a general form, and then depending on what you want it to do, you attach components to it and the object figures out what to do with it. We spent some time discussing how it would work, and how we would do it for our game and I'm pretty excited for it. I think we can get a cool system going.

Other Game Engines related things I did this week was continue to work on homework questions. I worked on another medium question last week; the OgreLog Tool.

Mmm.. File parsing.

This question seemed to me like it was one of the easier medium questions, and after doing it I really think it is. I actually enjoy file/string parsing, so this wasn't too bad for me to do. The hardest part was getting everything working in a Windows structure. Luckily, my summer internship got me to work with MFC, so I was already familiar with how it worked.

I also started working on my first hard question. I am technically the "sound producer" for our GDW group, so I figured I would start working on the FMOD question. Not to mention it seemed like one of the easier hard questions anyways, so it sounded like a good idea.

It's hard to find a good screenshot of a program that only plays sound.

I got most of the requirements for it done already, just missing three more. I should hopefully have that done within the week though, which would be a huge boost to my experience points.

Monday, October 8, 2012

INFR 3330 - Being Outside For a Change

So this last week we had in Game Design, we had two completely different types of lectures.

The first type of lecture was your standard sit in a classroom while the prof talks at you lecture. For some reason everyone was kinda like "zombie mode engaged" during that class and it was really hard to get anyone motivated to do anything. As a result, Dr. Nacke joked that we were all at a "Facebook Party", which prompted an epic response from the class.

The party only ran for the last ten minutes of class though.

I thought that was pretty funny haha.

But considering the zombie-like behaviors of the class for our first class that week, the lecture style was changed up for the one on Weds. I knew it was going to be a different type of class the moment the prof showed up with a bag of balls.

There were many balls, but only we got the Hello Kitty one.

We were tasked with creating a game using some rope, a small ball and a big ball. The requirements were that the win condition was getting the small ball into a rope hoop while the team controls the big ball. Also there has to be at least two out of four classes from I think Battlfield implemented in the game.

The best part was that we spent the entire class outside for this activity. Which is a huge change from what we've ever done at UOIT. Like, aside from that one time we went outside for Graphic Design I to draw some stuff, we've never actually been outside for class. It was weird.

Game Devs outside. Ridiculousness.

The entire activity was oddly refreshing though. Not sitting in front of our computers the entire lecture and like, actually out and about moving around. We spent some time thinking of a game idea and eventually I decided that our game was too complicated so I made a new one that was a bit simpler.

It was cool seeing people playtest their games though, some of them were pretty interesting. But what was more interesting was seeing my fellow Game Devs like running around and like. Moving around. That was weird.

Game Devs are out of their natural habitat; call David Attenborough.

It was a nice class though. Definitely wouldn't mind doing it again, although I can't see me enjoying it if all our classes were outside.

Sunday, October 7, 2012

INFR 3110 - Hard Coded Solar Systems and Snakes

So more homework questions were worked on this week.

I talked about it a bit in my last blog post for Game Engines, but I finished working on the medium solar system question this week. That question wasn't actually that hard since everything we need to do it was given to us in the examples that came with TwoLoc, but took some time to actually do.

Yes, I have a tree as a selection icon. And the sun is still black.

The most annoying part about this question are the moons. There are too many damn moons in our solar system. For example, Jupiter has 67 moons and Saturn has like 200. That's a lot of moons. As a result I just put the major ones since most of those moons don't even have any information on them since theyre so minor.

But still, that's like. 7 moons for Saturn and a bunch for Jupiter and stuff too. I made the mistake of hard coding all the moons and planets, which was a huge mistake. In hindsight it would've been much faster if I wrapped everything up into a class or struct or something and just made instances of objects.

Once again, I am the king of hard coding.

Yea so don't do that. Advice to people planning on doing this question, don't hard code things. Regardless, it worked, so that was great.

Another question I worked on this week is the dynamic texture one. I talked about it last week too and I said that I wasn't sure if I did it right. Well apparently I didn't do it right, so I was right. About being wrong. Anyways, so I had to redo it since you have to actually change the pixel data on the texture, not change the entire texture.

Yes, that's a purple dot on a black texture.

Now, people who know me know that I pretty much work on a homework question, go "ehh, close enough" and then hand it in. I normally get it to the point where it's just passable as complete and then get the points for it. So for that question I just had a black texture and had a purple dot scan through it.

It was pretty lame looking, but it showed off what the question was asking. So I showed it to Buckstein and he was like "make it more exciting". So I was like ughhhhhhh. So this morning I had some time to kill and I decided to make it more exciting. Wasn't sure how to do so, and I was thinking and thinking, and then I thought of an epic idea.

Black texture; now with a green dot and a white line!

No, that's not actually a black texture with a white line and green dot. Well. It is. But actually, it's a game of Snake. I just wrote a quick algorithm for displaying the goal dot and the player snake, and then added in quick controls. Game is actually fairly easy to make.

The controls are WASD to move, and the rules are the same as any version of snake. You get the dot, you gain one unit in size. If you collide with the edges or your tail, you lose. This version is actually pretty hard, since the resolution of the texture is 256 x 256, which makes getting the goal kinda hard. But still, it's now pretty interesting imo.

Monday, October 1, 2012

INFR 3330 - Great Canadian Appathon 3

So this weekend was the third annual Great Canadian Appathon, or GCA3 for short. Essentially, the Appathon is a game jam where Canadians across Canada compete for a $30000 grand prize and a chance of having their game published by XMG.

To do so, you need to create an app in 48 hours. For us, the event started at 5 PM on Friday and ended today at 5 PM (Sunday). The Game Development Society were the hosts of the Appathon at UOIT, so for the last few weeks we've been in constant contact with the sponsors, administrative people at UOIT and as many people as we can to setup and promote the event.

Yay Appathon. (GreatCanadianAppathon)

So I primarily focused on promoting the event. And by that I pretty much just went to random classes, did a short speal about the thing, and/or wrote about it on the board at the front of the class. I wasn't sure exactly how many people we hooked at first, since our numbers according to the XMG people were pretty low in the week leading up the event.

Luckily though, a pretty decent number of people showed up. I think by the end of it we had like 12 teams registered. And since each team has 1 - 4 people, that's a pretty sizable number. The largest host event in Canada had 15 teams, so we were close. Hopefully next year we'll have the most in the entire country.

UA1140 was home to many people this weekend.

Aside from Mario, none of the GDSoc execs were planning on actually making an app though. We were pretty much just there for moral support and supervision. But the day of the event the four of us kinda sat together and were like: "Yo, we could totally make an app". And on the spot decided to make and team and register.

And there it was, team "Misc Execs" was formed (we're really awesome at names btw). It was composed of myself, Branan, Kevin and Naeem, the other execs in GDSoc. However Branan couldn't stay for the weekend, so it was really just the three of us. I think Kevin actually stayed over night, but me and Naeem didn't really want to sleep there, so we left at night. Too early in the semester for all nighters.

Might be my favorite picture of the event though.

So between "supervising" and doing stuff, we ended up getting together today (Sunday), and worked on that app we said we would make. So this morning at about 10 AM we started to actually work on the app. We figured we had like 5 - 6 hours, plenty of time.

We were floating ideas by each other since Friday, so we already knew what we were going to do. Inspired by the (possibly overplayed) song Gangnam Style by Psy, we decided to make a parody of it called "Oppa Gamedev Style".

Yes, I am prohrammer.

The premise was straightforward. We were going to make a sing-along karaoke game with modified lyrics to the beat of Gangnam Style. So we got to work, I was the programmer and worked entirely in Flash Actionscript 3, which I have't touched in a while, but it was still pretty easy to get back into. Kevin was the artist and did all the art for the game, and Naeem composed new lyrics.

We actually worked pretty efficiently, getting most of what we wanted to do done. However, apparently getting the timings right on the lyrics takes a lot of time, so unfortunately we didn't have enough time to actually make the timings work. However pretty much everything else went according to plan, so that was great.

Aside from these monstrous, hard coded arrays.

The "game" itself was pretty simple. It starts off with the splash screen above and then after a few seconds it fades away to reveal a fairly simple interface.

Ghettoness to the max. Also, it's pixelated cause retro theme.

So you see the beginning of the lyrics to the bottom, and start/stop buttons to the top with a disco ball and some weird pixelated background in the background. Nothing too special so far. In fact, this is the least special part of our app.

The best part is when you hit play.

Yea man.

Kevin actually went and spent time finding faces of the GDSoc execs on Facebook and photoshopping them onto the Gangnam Style cartoon thing. Then he pixelated them all just because. They all animate and everything. It's beautiful. We even tested it on an actual Android device and it worked too, which is awesome.

Shame the timings on the lyrics were off though. Regardless, this Appathon was fun, and that's all I really wanted from this event. To have a great time, and to show off something fun from it. And honestly, I think we succeeded.