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.
The last week has certainly been a lot more busy. For starters my GDW group has held a few meetings and we’ve been able to nail down most of our concepts and designs. We’ve settled on a third-person action/adventure in a steampunky/post-apocalyptic setting which focuses primarily on big boss encounters. It may sound a little too ambitious, but that’s just the way we roll.
As for me, I’ve mostly just been trying to create some small concept models. So far I’ve only made some props and equipment for the character, and I’m still not yet sure if they will even make it into the final game or not. At this stage, in my opinion, the best thing to do is create concept art by way of drawings and models, that way the group as a whole can begin to visualize what the world and environments might look like.
In terms of the class itself, things are beginning to look a little more clear now. With the release of the homework questions, I can start to get a feel of the kind of stuff we will be learning and therefore expected to do throughout the year. Certain things sound very manageable, but at the same time other things scare the hell out of me. I’ve only just began looking into the Ogre 3D engine. Hopefully I can quickly become familiar with the framework because I would like to start the homework as soon as possible and get it out of the way. The weeks ahead will be full of programming and more modelling… What else is new?
Just some of the models I did…
This week consisted of some rather interesting Game Design lectures. They involved the class splitting up into groups in order to complete the various tasks. Day 1 was all about level design and coming up with ways of turning what would other wise be a simple objective into something fun and exciting using different level design aspects and techniques. Day 2 was different in that we were tasked to take a basic set of rules and implement our very own design twists.
Day 1 was a bit of a chaotic session. The class was split up half and half, which resulted in two massive groups of about 20-30 people. Sure enough, this resulted in a lot of confusion which I think showed in the final products. The group I a part of was in discussion for about 20 min going over basic rules and level design elements and in the end resulted in what I thought was a bland, uninteresting concept.
The basic idea revolved around two teams competing against each other to try and get a ball into a basket placed at the center of the field. Given that we were in a classroom, we decided to use the tables to our advantage and agreed that all players must stand on top of the tables while playing. Players could apparently (I’m not even sure if we discussed this part) stand wherever they liked to start the game and were not allowed to move unless they possessed the ball, in which case they could take 3 steps. Players were required to try and work together in order to score a goal. This meant having to pass to teammates. The twist here however is that the player must bounce the ball off of any surface while passing the ball. And that pretty well covers it.
The rules as they were written in class
Although this may sound somewhat interesting, it really wasn’t. It was a boring idea and lacked inspiration. It also didn’t help that the majority of the group had to sit out and watch while it was demonstrated to the class instead of having an opportunity to play. Again, I mostly blame the large group sizes. It resulted in many ideas going unspoken or misinterpreted.
Day two was a little bit different. For one thing were were in much smaller groups, which made it easier to communicate and get ideas across. This time we were given a set of rules and some poker chips. Our task was to take these rules, test them out, and then implement new ways of playing the game ourselves. The game initially was a little bland in that there wasn’t really much to it. Each person would essentially take turns flicking a chip at other chips and if your chip touched another chip you were awarded points based upon which colour chip you touched. There were also goal cards handed out to each player but the problem that I found with these goals was that many of them were too difficult to obtain/follow. For example, I had one that required me to hit my chip off of another chip which then had to hit a third chip off the table. I found this to be next to impossible to achieve.
Later on in the class we were given the opportunity to change up the rules slightly to see how we could make the game more fun and interesting. We ended up with a setup that involved every player being given a chip which they would use to try and flick onto a predetermined playing field. Depending on which chip they hit, they would receive points. We also were given the freedom to come up with our own goal cards which worked our nicely with our new set of rules. In the end I preferred our new method of playing over the original.
Overall these lectures were informative and provided us with some helpful insight into level/game design as well as group cooperation and strategy. I am hoping that as the semester goes on we will be able to develop these skills even further.