Monday, October 31, 2011

Post-midterm stretch, and getting ready for MIGS!

Good day ladies and gentlemen!

Sorry for making this post late, as midterm time was quite hectic, and naturally left me sleep deprived.

First midterm was by itself on a Tuesday, so I was able to study a lot for it, and didn't do too bad.
The second midterm was the beginning of the true midterm crunch time, as my two other midterms fell on succeeding days. To boot, for my third midterm (Game Engine Design), I was required to complete a certain number of homework questions to attempt it. Of that week, my midterms went well, but unfortunately my last midterm didn't go so well as I only was able to study for it the morning of, thanks to the other assignments and midterms due before. In fact, I was supposed to do my last midterm tomorrow, but I had to do it a few days ago since I'm in Montreal for MIGS at this time of writing.

Now I'd like to elaborate on the homework questions I did to be able to do my Game Design Design midterm. Here are many different questions to choose from, some more hard than others, and each has "experience points" weighted accordingly. One must attain 20 experience points to do the midterm, and 40 to do the final exam.

One of the questions asked me to create a program where the user smashes a pile of bricks by throwing a ball from camera point, using provided physics calculations from Havok. Another question required me to import a textured 3D model from modeling program Autodesk Maya, and be able to rotate it, pan around it, and zoom in and out. So I decided to blend both questions into one. The biggest challenge was to have the camera rotate smoothly, and to this day my software camera technology isn't exactly user-friendly. Regardless, this is how I did this in a nutshell:

I first put a pivot node in the middle of the scene, and connected it to another pivot node that encapsulates the camera. To visualize, a pivot node is basically a joint in a structure; in this case, a camera movement structure similar to film practice.

This picture is the best way to visualize my camera system. The first node is the joint between the legs of the stand, and the main beam. The second joint is at the tip of the beam, holding the camera. The camera itself is also able to rotate.
Whenever the user clicks on the screen and drags the mouse, a built in function of WildMagic (the software engine I'm using) kicks in, and gives me the coordinates of where the mouse clicked. To boot, there's another function from WildMagic that alerts the program when the mouse is clicked AND THEN moved. I used the first mouse function to track the mouse's position, and record its coordinates as "previous mouse coordinates". Then I use the second function (which only kicks in when the mouse and clicked AND held) to check the mouse coordinates again, and compare them to the previous mouse coordinates. I then subtracted the two points from each other to get a vector. In case you don't know, a vector is just a line that points in a direction. So I then take that vector, and the camera's direction vector (also provided by WildMagic) and then cross product them. If you don't know what that is... study linear algebra. If you don't care to learn about linear algebra... then just assume that it's some magical function from Math-Land.

Anyway, after doing the cross product of those two vectors, it gives me another vector which serves as the axis of rotation. In other words, imagine a string through a ball. The ball can rotate only around that string. That string is known as its axis of rotation. Finally, I get the first vector generated from the mouse points, and measure its length. I then use that length to determine the angle of rotation around the already generated axis. Since this whole calculation is conducted around 30 times a second, the length of the vector generated by the mouse motion cannot be too long, so I just convert its distance straight to an angle in degrees. In other words, in my function, 15 units = 15 degrees. Finally I put the axis and angle into a matrix. If you don't know what a matrix is, it's basically a grid of numbers that are helpful for mathematical calculations such as this. If you want to know more, then study linear algebra, as such material can be quite complicated. Anyway, I multiply that matrix by the original matrix the camera pivot has, and then a new orientation is achieved. So that's my camera rotation function! There's still some things I need to fix to get it working, but this is the outcome I have currently. There are some parts that are probably missing, as my function is currently not working perfectly, so please avoid assume that my algorithm is the correct way to do camera rotations.

Camera panning and zooming is a lot easier, as all I had to do was look at the camera's built in up and side vectors, and move along them depending on mouse distance along the x and y axis respectfully. To pan, the user must left-click (like how rotations are done), but also hold the "z" key. As for the zoom, it's the same thing, except it moves along the camera's direction axis, depending on mouse distance along both the x and y axis.

Finally, I textured the blocks and the terrain. I thought about what I should texture them as. After much contemplation, I figured this would be the best theme:

Yes, the background theme plays too, through FMOD.



The other question I had to do involved making a replica of our solar system, with the appropriate planets, textures, rotations, etc. So again I used the same camera controls as the other homework question, but with a non-interactive scene of our solar system. It is set up as a scene graph, which is like a rotational and translational heiarchy. You know that in physiology, the knee is connected to the hip, and the angle is connected to the knee; well the planets are connected to the sun, and the moons are connected to the planets. So when the sun rotates, all the planets rotate with it. When the planets rotate, their moons rotate. And the moons also rotate too, albeit nothing connected to them. However there's still something missing. If the program was executed like this, all the planets would rotate at equal speed. Sure, each planet rotates individually, but on their axis. In order to allow each of them to have different speeds, I had to add extra pivot nodes between the sun and each planet, at the sun's position. Each planet's extra pivot would constitute a different speed, hence resulting different speeds for each planet.

Also, the main theme of Super Mario Galaxy plays in this program through FMOD. Why not?


So there you have it! Now I'm in Montreal waiting to attend MIGS, and listen to many insightful keynotes and presentations, and network with industry professionals as much as possible. Now that I finished all my pre-midterm assignments, and the midterms themselves, now it's time to focus on the GDW. AND time to finish all my other assignments EARLY so that I have more time to work on the GDW project. I have the position of the toolkit programmer, so my workload is definitely not light.

As for my previous blog post reminiscing about my work-ethic, I'm hoping that now that I'm out of the woods, I'll be mature enough to say NO to distractions and be productive with my work EARLY, not just at crunch time. Every time I've presented my GDW, it would pale in comparison to other student's games. So I will do my best to exceed everyone's expectations of me, and it all starts from following a better work-ethic that has a proper sleep schedule; because I hear that the game industry workfield isn't any less rigorous than the work we have now.

Next post will be about what I've learned at MIGS, who I met, and a possible rant on that amount of school lecture content I have to catch up on thanks to MIGS. =P

This is Mario Greco signing out.
Thank you for reading! =D

References:

Photograph. 13ft Telescopic Jib Arm Camera Crane with 100mm Bowl tripod stand & spreader Gold Pan Tilt Motorized Head w Joystick Control Box for Professional Commercial Independent Wedding Documentory Video Film Makers. The Cine City, 2005-2011. Web. 31 Oct 2011. .

Wednesday, October 19, 2011

The worst student

Good day, ladies and gentlemen.

It's currently crunch time. I finally got my project management midterm done, which I spent the entire weekend trying to study for it, as it was the closest thing due (As everything else is due next week). Why didn't I also work on other homework in the meantime, you may ask? Well I believe that because the material of Project Management is so dry and bland, it was only natural for my mind to wonder off about 50 thousand times. I then punished myself by not going out with friends that weekend, so that I may use that time to be more productive. Was I? HELL NO!

Ladies and Gentlemen, welcome to the world of Mario Greco. I try to be mature, do work ahead of time, and unlike some university students, I actually succeeded at doing it - this year anyway. The only problem is that like other university students, somehow the work task appointed seems to stretch out and take up all the available time it can. Ironically, such an unfortunate fate was actually described in Project Management:


"Work expands so as to fill the time available for its completion."
Cyril Northcote Parkinson
As I was writing this blog post, I noticed that my problem wasn't Parkinson's Law, rather it was actually Student's Syndrome!

Oh you ugly, ugly thing...
As you can see where the green line begins on the graph, it starts a little bit after the time's start. I did start studying at a reasonable time, only to unintentionally do so unproductively, in front of a computer screen, and ultimately unintentionally alienating myself from going out with friends and basically having a life. Also notice how the green lump actually stretches past the deadline. Why Mario, why?


Personally, I believe that it was all due to project management's dry content. If I worked on other subjects that I find more interesting, like Game Engine Design, Modeling, and Marketing, I probably would have been more productive. But I know what you're all thinking, "Mario, that is known as an EXCUSE. It's such an ugly and frowned upon word! Why would you use it? You're only hindering your success time and time again!" As I usually imagine important figures in my life saying such a quote to me, such as my dad, karate sensei, game dev professor, or Shigeru Miyamoto.


Then I look over my shoulder to see my classmates, all working hard and completing their work. This isn't the first time this has happened, and I'm not the only one. In both first and second year, I've seen my classmates' work in regards to the GDW project (stands for Game Development Workshop; a project where we basically have to make a game in small groups). Some groups have incredibly phenomenal games that would look fantastic on the university's student demo reel, and then there's some groups who assemble abysmal creations, resulting in their demoralization, and ultimately their drop-out. I've seen it before, and it's not a good feeling. Thankfully I feel that I was at the middle-ground between the two extremes of "good student" and "bad student", but now that those "bad students" seem to have left, where does that put the old middle-ground students? At the negative end of the spectrum, the "bad student" side, if you will. Hence my title, "The worst student".


Typically the worst student lets his mind control himself, partakes in activities that offer temporary satisfactions (such as mindlessly traversing memes on YouTube, repetitively clicking on Facebook profiles, and other stupid or unnecessary things), only to afterward indulge himself in self-pity, and then strive to be on good social terms with the prof and other "good" classmates to create a self-perceptive illusion of being a "good student" as opposed to actually getting work done. And then finally, if required, writing a blog post about acknowledging how he's the worst student, and making a promise to the world that he'll change his ways and truly become a good student; a promise that usually ends up not being followed though; a promise that the world probably doesn't care about in the first place. The process described thus far is then looped forever until either the student drops out, or ends up passing by the skin of his teeth by accomplishing the bare-minimum required to attain the degree.


From my point of view, I don't think I'm anywhere close to having to drop-out, but I do feel like one of those students who doesn't learn his lessons, but still manages to pass. The thing is, I don't want to be like that. I know a lot of students who are like that, but I don't want to be that way. I want to be a phenomenal student who creates a great portfolio, revered by the class and his profs, and is the first pick of development studios around the world scouting for gleaming young new recruits. But the funny thing is that that's not my primary motivation for pursuing my studies; those are just side-results of my motivation to achieve the main reason of why I'm studying game development. What's that reason? I love gaming. I love game development. And forever I've dreamed of working for Nintendo. Childish aspie-oriented fanboyishness aside, it's been the main goal of my life ever since I started playing Super Mario Bros. on the NES, and especially after I was ridiculed for being a Nintendo fanboy back in my late elementary school years. Recently I've wondered that if I were to achieve such a wondrous goal, what should I do next? That's where the concept of art games come into play, and my vision of making games that send a positive message across the world. But that's a whole other story that I can talk about another time.


But in order to work for a company like Nintendo, I have to stand out. As I've heard from Ken Yeeloy back at MIGS 2009, his company didn't apply to Nintendo, Nintendo went to them. (Ken Yeeloy is a gentlemen who works at Next Level Games, which is known for making a few recent Nintendo games, one being Luigi's Mansion 2 for Nintendo 3DS)


Unfortunately as of today I don't stand out, and I continue to live the life of a child stuck in a man's body who won't accept the fact that he's grown up. Then I look at other classmates of mine who stand out, are revered, and are mature independent adults. Then I think, "Wow, how do they do this? How do they stay in control, accomplish what they strive to accomplish, etc.?" Then I look at myself; yes, I've always had the passion for gaming, and now more recently, game development. But I am not in control of myself, not disciplined, and not a mature independent adult. It's only natural for me to not stand out and blend into the array of mediocre students, ones who put things off to the last minute, and then burn the midnight oil time and time again which is also taxing on one's health. Then to boot, reminisce on personal downfalls while stomping away directionless in the heart of Montreal back in 2009. A certain someone remembers this, lol.


I recently found another thing on the internet about some guy named Christian Weston Chandler, who had this brilliant idea to create an original game concept called "Sonichu" (you get my sarcasm) in the form of comic books that look like they were drawn out by a ten year old, when he was actually around 18 at the time of creating them. Yes he does have high-functioning autism, but his passion to create a game series which he longed to pitch to Nintendo ultimately became his demise after internet trolls got a hold of his work a few years later, and taunted him to the nines. His extreme passion coupled with his social and intellectual retardation ultimately led such trolls to even create a Wiki laying out everything negative about him, as you can see here. I must warn you that its content is quite offensive, so if you wish to take a look, proceed with caution. Anyway the reason why I bring this up is because this man made me reflect on myself. Okay, I understand that my disabilities are no where near as drastic as his, and thank God I have parents who raised me to be a socially sound individual. But it just leads me to think that perhaps passion isn't the only variable to success. Perhaps natural born intelligence, creativity, social soundness, and maturity are also equally prominent factors that contribute to the success of an individual. Knowing myself, I'm obviously not the most intelligent person out there (my constant need to ask questions in class should give that away). I'm not the most socially sound person as per asperger's (though I have been gaining positive momentum in that department recently). I feel my creativity has diminished compared to the free mind I had as a child, possibly due to putting most of my attention on completing schoolwork, particularly math and programming. And finally I'm not mature. But I do have passion! Though again, my point and belief is that passion cannot be the only variable of achieving a life-long dream. Hence probably why I'm still in my position today.


This all leads me to wonder if I'm deserving of entering the game industry, or even participating in university life as my high school guidance councilors instructed me to avoid. Yes I'm still alive in university, but as someone who studies game development, my passion should kick in and push me to the top, where all game dev students should be. This isn't bio-med, or engineering, or business studies where people take it "to make lots of money". This is game development, where creativity is supposed to flourish within the passion of its students.


Okay, this is the time where the person I'm talking to would say, "Mario, you're rambling, I think it's time to end the conversation", even though the discussion has been one-sided the whole time. Anyhow, to sum things up, I'm going to try my best to get my work done, and then network at MIGS 2011 to hopefully get my name out there in the industry. Thanks for reading, and if anyone has tips on how to smarten up and be a man, please let me know, thanks.


P.S. Listen to this melancholic music, if you'd like. I find it to be quite soothing: http://www.youtube.com/watch?v=nOrpAJgXY50


References:


"The Economist." Parkinson's Law. N.p., 1955. Web. 19 Oct 2011. .


Holohan, Ron. "Podcast episode 045: schedule killers – student syndrome." the pm411.org project management podcast. N.p., 2009. Web. 19 Oct 2011. .

Thursday, October 13, 2011

MARIO, Y U NO USE WILDMAGIC++ YET?

Good day, ladies and gents.

I have finally completed my 3D model, which you can see below!

Some people have suggested that he looks like me. The character is supposed to be 12. Does that imply that I look like a 12 year old? Sad face... :(
It hasn't been UV textured yet (as in the 2D image that is usually plastered on the 3D model to make it look more realistic), but that will be done for Assignment 3, which again is the same day as my Game Engine Design midterm.

Speaking of that course, I am to complete enough homework questions in order to do the midterm. If I fail to do so, the weight of the midterm will go to the final exam. In order to do the final exam, I'll have to do even more homework questions. So I must get cracking now.

But how can I do that when I have two group projects due this upcoming Tuesday, and a midterm on that same day? Then the next week I have another group project due, modeling assignment 3, and my other three midterms, including Game Engine Design. Also what about working on the GDW, and reading the books I spent lots of money on? Time management, why do you hate me?

Reminiscing on homework workload aside, in order to do the Game Engine Design homework questions, I must get familiar with game engine "Wild Magic ++". In case you don't know what an engine is, it's basically a system of baseline nitty-gritty functions which aids the programmer in making games. Then that engine can be used to make other games, instead of having to make each and every game from pure coding languages which would take forever. Imagine having to construct a graphics engine like OpenGL or DirectX from the ground up for every game? We'd all kill ourselves. Well except maybe a friend of mine Daniel Buckstein; that guy is hardcore. Can I has cookie for referring you?

Making friends look good in a blog that people probably barely read including that friend himself aside, WildMagic++ is an engine that Mario Greco must use to avoid hot water. Moral of the story, hot water burns, and I don't want to get burned like I did in 2nd year.

Close-up of my 3D model. Not to sound arrogant at all, I'm actually really pleased with the way it turned out. Such things usually don't happen to me, so perhaps 3rd year will be my year of success? Hopefully...
And no I did not structure the last sentence to invoke a desire in my readers to pull out a violin and play it.
So that's about it, the past week I think I put too much effort into my model while leaving everything else behind. Now I must do those things I left behind.

Until next week, see you all later!! =D
P.S. Watch this for the lulz: http://www.youtube.com/watch?feature=player_embedded&v=oGTkzyoOpNs

Thursday, October 6, 2011

In preparation to complete Lots O' Homework...

Good day, y'all!

For the past week I've been working on regular school assignments. For one, I met up with my GDW group to do the first Project Management assignment, which we finished over the course of a day. Second, I had to spend almost an all-nighter to complete a knit-tight two page summary of a poorly written article full of malarkey for my Marketing Research course. Thirdly, I've been creating a 3D model of the 2D character I drew a couple of weeks back. I worked a few late nights to complete it for its due date, and then guess what? It gets extended. Yay! So with that, production of the assignment went a little slower, but I figure that with the other upcoming assignments, I should get this model done ASAP! Below is the current look of my model.

Yarrr, I be a head-less lad...
I also have my current progress on the head of the character, which can be seen below!! =D

Hooray! Another image!
And I JUST remembered, I only revealed my prototype drawing of my first modeling assignment character a couple of weeks back. Here it is today, sorry for the delay!

O u fancy, huh?
Anyway, so although the assignment is due the coming Wednesday, I'm going to try to get it done hopefully by tonight, if not, tomorrow. Why? Because I have other homework to do, like the Project Management Assignment 2 due in less than two weeks (October 18th), my Markeing Research assignment due that same day, my Consumer Behaviour assignment due that same day, and my Project Management midterm ON that same day. October 18th is definitely not going to be an easy ride of a day, nor are the days before it. Then a week after that on October 26th, I have my Modeling assignment 3 due! On the same day, I have my Game Engine Design midterm! In order to that midterm, I have to complete a certain number of homework assignments beforehand. A day before the Game Engine Design midterm is my Marketing Research midterm. Finally the day after my Game Engine Design midterm is my Consumer Behaviour midterm. Ladies and gentlemen, this is Mario Greco's October. Huzzah...

Well I guess at least once that's all over, I have nothing but MIGS (Montreal International Game Summit) to look forward to! So in short, my criteria is the following displayed below:

If I complete my homework in a productive and tardy manner, I will go to MIGS looking like the guy on the left. If not, I will go to MIGS looking like the guy on the right.
Apparently Jason Rohrer (maker of games Passage, Gravitation, and Between) is going to make a keynote appearance at MIGS. That man is a game design inspiration to me, so I cannot ask my questions looking like that guy on the right. Therefore, homework must be done. No reminiscing on Facebook or working on side projects like I did last year. Now it's time to get stuff done, YEAHHH!!! =D

See you next week!
P.S. In case you missed the game design critique last week, here it is again: http://www.youtube.com/watch?v=V4we8iFk-fY

References:

"Yao Ming TrollFace." Graphic. Web. 6 Oct 2011. .

"Okay Meme Face." Graphic. Web. 6 Oct 2011. .

"CASTLEVANIA 2: SIMON's QUEST by the Angry Nintendo Nerd - Cinemassacre.com." Graphic. James Rolfe. Cinemassacre, 2006. Web. 6 Oct 2011. .