Tell me right now babeh… babeh…
Sorry, I still have the song stuck in my head. I’m not sure why but I think it might have something to do with the fact that I had to listen to it for about 6 hours while working on our Prototype 2 assignment. We had split up the various aspects of the development cycle. So it was my responsibility to add all the notes in the correct time intervals. This of course meant sitting through and listening to every last second of the song in order to sync everything up. It was quite the grind.
The assignment asked us to create a game out of a YouTube video that went viral just a few months ago. I am speaking of the one that showcased a group of people dancing to the song from Bruno Mars, called Marry You, in which a man proposes to his girlfriend at the end. As far as proposals go, I must say it was quite epic. But essentially we had to use this video as a basis for our games. We built ours using Unity and we decided to go with a Dance Dance Revolution style of gameplay in which the player must react to the notes displayed on screen. We also had to make it look happy and cheerful with rainbows and hearts and all that fun stuff. When a heart appears, you click it, and when an arrow appears, the player has to click and drag in the direction the arrow is facing. It`s very simple, but fun at the same time. When using a mouse, the game is actually quite tricky, but on a touch screen phone it gets significantly easier since you can just tap.
Welcome to Happyland, where everyone gets married and has a happy ever after…
Overall I am very happy with the game we made. It may not looking too appealing, but that`s only because we were following the requirements. I`m sure if we had the freedom we would have had dragons flying around and fire falling from the sky and people on the ground getting stomped on and blood everywhere. Oh well, maybe next time…
This week was the dreaded midterm. It was hard to not be nervous going into it, especially when remembering what previous midterms in these types of classes have been like. During the first semester last year in Professor Hogue’s animation class, the average for the midterm was 44%. Knowing this, I couldn’t help but be a little bit skeptical as to how hard it would be. Thankfully though, I didn’t find it to be too soul-crushing.
The first section was all the math stuff. Most of it was very straight-forward and did not involve any actual calculations, which I very much liked. I’ll admit though I had forgotten how to calculate the magnitude of a vector, as bad as that sounds, so I was unable to answer the question that asked us to normalize a vector. I had also fallen victim to the question that asked for the inverse of a rotation matrix. I didn’t quite catch the word ‘rotation’ while reading this question, which of course would have reminded me that the inverse is also the transpose.
The second section was was entitled ‘General.’ This consisted of questions relating to Mercurial, rendering pipelines, and probably other stuff that I can’t remember. Again, everything was straight forward, asking for general explanations and descriptions. We were asked things like how to submit code using repositories, what a PVS(Potentially Visible Set) was, and the proper order of rendering opaque and transparent objects. Overall I felt pretty confident about this section, and unlike the first one, I was able to answer every question.
The third and final section was entirely related to scene graphs and asked us to construct one out of the description of a scene that was provided. The scene consisted of a boat with a few objects placed on it. The way I tackled this was I essentially just attached the ship to the root and then parented all the other objects to the ship, while also taking into account rotations and translations. So at the top of the tree was the root node followed by the ship and its transformations, and below that were (I think) 4 more objects, some of which having children themselves. For the second part of this question which asked us to write the function that set up this scene, I just went with what I had done previously in the homework questions in that I just used createChildSceneNode() for all the objects that had parents. I also put the offset and rotation as the parameters since the question only asked for the first frame. It’s hard for me to be 100% confident about this question because in the end it really depends on what the professor was looking for. I feel like I did it correctly but I’m just going to have to wait and see.
Overall, I thought the midterm was very fair. Professor Khattak stayed true to his word in saying that we wouldn’t have to memorize formulas and concepts. Most of the content on the exam was information that we should have known or at the very least been able to give a basic description for. So kudos to the professor for not making an exam whose sole purpose was to destroy us.
This week we discussed rewards and reward systems in games and as such I thought I would use this topic to talk about trophies/achievements and their impact on games and on myself.
I for one am actually quite the trophy hunter when it comes to playing games on PS3. There’s something about hearing that little “ding” sound and seeing the “You have earned a trophy” message pop up in the corner that is just so incredibly satisfying from a gamer’s point of view. Seeing the game acknowledge your accomplishments is something everyone takes pride in. To some people, earning that platinum trophy is like winning a championship in a major sport. The road to earning that coveted title consumes them, and they will continue to push on, even if they no longer get an enjoyment whatsoever out of actually playing the game. The reason I know this is because it happened to me… once.
Aaahh the platinum trophy… The crowning jewel of all trophy hunters. So purtty…
A few years ago while playing X-Men Origins: Wolverine, I ended up beating the game and realizing that I had collected almost every trophy in one playthrough. However, one of the ones I was missing involved collecting all the dog tags (in this case dog tags were the collectibles) in the game. This of course meant I would have to play through the entire game over again. At the time I thought it was a good idea because I had actually enjoyed the game quite a bit, and seeing that I only needed a few more trophies to earn that platinum was just killing me, so I decided to give it a go. While playing through a second time, I required the help of online videos to show me where all the dog tags were. Having to do this alone would have probably warded off any sane human being, but I, being the crazy nut that I was, kept playing the game and watching the videos as I progressed. I was about halfway through when the boredom really started to kick in. Playing through the game a second time when I had just beaten it was beginning to take its toll on me. I knew at that point I was no longer playing for the enjoyment, instead I was playing to fulfill my own ego. I also knew that I didn’t want to stop there because I was already halfway through and wanted that trophy so badly. So I pushed through and made it to the end. When that “ding” sounded and I received the platinum trophy, the first thing I said was: “Thank God.” I was so relieved to have finally been done playing the game… again.
That whole experience really changed the way I felt about achievements as a whole. Here we have an example of a game that I actually really enjoyed my first time playing, and yet was completely ruined because of a reward system that really serves no purpose other than as a bragging right. It made me realize that achievements can actually sully the experience of playing a game when handled by the wrong person. It also made me question whether or not achievements are basically nothing more than a cheap design tactic to extend the life of a game. There are probably many people out there that would go to great lengths as I did just to earn an achievement. Not because the game itself is intriguing and fun to play, but because the achievements are designed in such a way that it requires you to put in more work than you otherwise would have had to, therefore extending the playing time.
A fun game. I would recommend it. Just stick to one playthrough though.
Everything aside, I have learned my lesson. I still very much enjoy collecting trophies, but I have learned to control myself when it comes to earning some of the more time consuming ones. Never again will I put myself though that again, and I would do my best to try and make sure others don’t either.
No I’m not referring to song. In fact I’m referring to the homework questions once again. As everyone knows, the deadline to hand in easy questions is this Friday, and as such I’ve been working fairly diligently towards making sure I have at least 4 done. So far I have managed to complete 3 of those 4. The next two days are going to fully go towards making sure I complete 1 more.
Last week I talked about getting started with Ogre and the problems I was facing right off the bat. I also mentioned how I was able to complete question #1. Since then I have been working on 2 more: Questions 4 and 5. I thought I would take this as an opportunity to share my progress on these two questions.
Question 4 asks us to build 3 different trees out of imposters and billboards. The question itself is not very complicated. The hardest part was actually figuring out how to properly set up a billboard. In the end the amount of code required is very minimal, but the process of making it work took some time. Basically what it consisted of was first creating two intersecting perpendicular planes with the tree texture on them which is placed at the center of the scene. This part was simple for me because it was very similar to the first question I did in the sense that your just creating an entity and then attaching a material to it. The only difference being that instead of loading in a .mesh file you only need to call the createPlane function. After this I needed to create a billboard. This part was a little bit tricky at first because it did not involve the use of an entity, instead you have to create both a Billboard and BillboardSet object. The BillboardSet object is attached to the scene node and from that a new Billboard object is created and a material is assigned. The process for creating a billboard is very similar to that of an entity, it just took a little bit of research to finally figure how how it worked.
My fantastically drawn trees. The top ones are the billboards.
The second question I did was Question #5. This question asks for a dynamic texture to be placed on a billboard. I have to admit at first I thought this was asking for a sequence of images (for example a GIF image), but instead I found out that what it was in fact asking for was to have a texture that can essentially be drawn on, or altered in some way. This made things a little more challenging and I ended up having to turn to some examples to try and figure out how to get it to work. In my search I managed to find out that built into the TwoLoc engine is a DynamicTexture class. This right away made things much simpler. Using one of the sample projects as a reference, I was able to quickly learn how this class works. Basically what I was able to figure out was that by declaring an instance of DynamicTexture, you can create an array of texture coordinates that can manipulate each individual pixel on a texture. In the end, all I really ended up having to do was create a plane and attach the DynamicTexture object as a material, then use ColourArray2D to specify the coordinates I wanted to alter on the texture. So to make things easier I just went ahead and made the W, A, S, and D keys navigate a cursor around the plane which changes the colour from white to red as it passes over.
To go with the previous question… I drew a tree.
So that’s what I’ve been up to the last week as far as Ogre is concerned. I think for my last easy question I will try tackling question #2, which involves creating a robot arm and rotating the joints. This doesn’t sound like it will be too hard and given that I have previous experience doing forward kinematics on skeletons I should be able to get it done on time.
Alright so I finally got around to experimenting with Ogre and all of it’s functionality. I “broke the ice” if you will… I decided to just dive right in and attempt the first homework question. It involved loading in a mesh and assigning two lights to the scene which revolved around the object. It sounds very simple and yet it took several hours to get done.
First thing was first, I had to get a mesh to load in. I began looking at some of the examples that had objects involved in them to see if I could extract something from the code to use in my own. But of course, they were all being loaded using the fbx format, so I quickly decided to move on from that and try searching it up online. From what I was able to understand, there wasn’t really a whole lot to it. In fact, there’s literally only 3 lines needed to load in a mesh, but of course, like all things when it comes to programming, it’s never that simple. When I checked the Ogrelog, it kept telling me that it couldn’t locate the file I was trying to load in, even though it appeared that I was telling it exactly where the file was. That’s when the experimentation started, and as always, things started to become a mess. I was placing lines that I probably should have avoided in places that I probably shouldn’t have been looking at. But nothing was working. I knew it had something to do with creating an Entity because whenever I commented that line out it would run properly with the exception of there not being an object in the scene of course.
3 lines to load in a mesh…
Eventually I got a tip to check the resources.cfg file and noticed that it was pointing to a file path that I was previously unaware of. So I changed the resource file and made it point to the folder I was working with and voila! It worked! So essentially all that time was wasted on something as simple as an incorrect file path. Of course it was that simple, why wouldn’t it be? Once I got the mesh to work, setting the material and adding two light sources was all too easy. I was very relieved to finally have it done. I’m now 5 XP closer to getting out of here alive.
Here’s the trouble maker!
Over the years, when it comes to linear level design, a lot has changed. To me it seems that not long ago even linear games had a sense of freedom and exploration. It may have been very limited, but it was still present. Today however, it seems most games just go for the fully scripted, hold the players hand through the story sort of deal. They mostly consist of set-piece moment after set-piece moment which are often entirely out of the player’s control. While it is impressive to see what developers are capable of doing these days through the use of these set-pieces, I can’t help but feel like too much control is being taken away from the player in a lot of games today.
Nowhere is this more prevalent than in First-person shooters. It’s hard for me to think of examples that don’t follow this method when it comes to these kinds of games. I suppose the only ones I can think of off the top of my head would be Borderlands and Deus Ex. Both of these being more open-world, sandbox-type games. The majority of FPS games however, are very linear and extremely event driven. Take Call of Duty or Battlefield 3 for example, both of these games are essentially as linear as you can get. There is no exploration or branching of paths that I can think of in either of them. It’s basically just one set-piece after another. The player is required to follow exactly where the game is telling them to go. And if you decide to ignore the commands and try wandering off the trail, you’ll get annoying messages from your companions telling you to hurry up and follow them. These are the most extreme examples I can think of, and I have to admit I usually don’t enjoy when games decide to follow this procedure.
Everyone probably remembers this scene from the trailer of Battlefield 3. Believe me, it wasn’t anywhere near as exciting as they made it seem.
That being said though, there do exist other games which are also highly linear but are very enjoyable experiences. A couple of examples would be Uncharted and Metal Gear Solid 4. Uncharted is able to remain enjoyable through expert pacing and immersive storytelling, and Metal Gear Solid does it by giving the player a lot of freedom when it comes to handling objectives and level traversal. In Metal Gear Solid, you will often be presented with situations in which there could potentially be 5-10 different ways of progressing, and as the player you will have to decide which method works the best for you. These types of games, although still very linear in terms of story progression, offer huge amounts of replayability due to the fact that they can be played so many different ways. It would seem that this sort of style would work the best but unfortunately that’s not what we’re seeing out of most linear games these days.
Be quiet or they’ll hear you!
If I could change one things about linear driven game experiences, it would be to have less “uncontrollable” set-piece moments, and more exploration and problem-solving situations for the player. In my opinion it’s always better to do something at your own discretion rather than be forced to do it.