Friday, March 19, 2010

Lava Whales Concept

I wanted to post some videos, images, and presentations from our team milestones.  The way it works for our Junior game class is that we have to meet several milestones: game concept, engine proof, first playable, alpha, beta, and gold.  These milestones include a presentation in front of the 3 game professors.  I think it helps us bring focus and urgency to our games which is nice.  So, I'm going to start this post off with our presentation PowerPoint for the game concept milestone!

Game Concept PowerPoint

Wednesday, March 10, 2010

Learning 3ds Max

At DigiPen we have to take GAT 300, 3d modeling and animation for programmers. I took the class last summer, but I decided to take the class a little bit above and beyond the usual assignment specs. Someday I would really like to become a good artist along with being a good programmer. Eventually I might want to be a Technical Artist, but for now I’ll just focus on programming. I would however like to show my current knowledge of 3ds Max in this post.

The first assignment is the one that I spent the most time on. While the original assignment specifications were to make a simple vehicle from the teacher’s template, I decided to make the vehicle from scratch. Also, the original didn’t include making an interior, so I asked the teacher if I could make one. He approved and gave me a poly limit of 800 instead of 600.

For the assignment I made the model, textures (diffuse, specular, glossiness, opacity, reflection), unwrap, lighting. The only thing I wanted to make, but didn’t have time for, was a bump/normal map. Here are the results:



For the second assignment we had to set the vehicle and the plane, which the teacher provided, to follow a path. We also had to model the island using some of the teacher’s textures. I decided to make a few more custom things using textures from www.cgtextures.com. In the end I made the tree models, island model, the lamp post models, the house models, and created a particle effect for the volcano exploding. I also animated the plane and vehicle.





For the last assignment, the easiest of the three, I had to make a mech, which the teacher modeled and textured, walk. We learned about simple forward animation and inverse kinematics. I was much more impressed with my animations than on my previous assignment.



I think these assignments were a great learning experience because I can now understand more of what an artist goes through.

Math 300 Splines

I wanted to show some old projects from school, so I thought I would start with my Math 300 project. The class was about splines and curves. We basically listened to the professor prove formulas for splines; while, for homework we learned the math behind them and then coded projects showing our knowledge. The project goes through different spline types we learned.  The project was coded in C#.

Sunday, February 21, 2010

No Singletons!!!!!!!!!!

I was skimming the blog C0DE517E, and I ran across an interesting post on why singletons are bad. I love singletons, and I try to use them all over the place. Well... at least I did...

There were two Google Tech Talks I found from the blog and I wanted to share the insight I learned from them with you.

The first one I watched was “The Clean Code Talks - 'Global State and Singletons'”. It really kind of blew my mind. The video actually plays right along with what you are thinking. If you don't already agree with the idea of no singletons, then I strongly suggest you watch this video:



I took away several different things, but I thought I would post the most important one here. You should only put things into a constructor for which that object is directly dependent, but conversely, always put all things that object is directly dependent on in the constructor. This means that your class should usually not new any object and should never access any singletons inside the constructor. Your object should not hide dependencies as this makes them hard to understand.

The speaker seems be talking from a testing perspective, but I can see how these things can help keep your code understandable and more stable. Basically he seems to throw everything I've done in my current graphics engine into the garbage, but I feel like I've learned quite a bit. I'm always trying to clean my code and make it more understandable, and to my detriment, I'm maybe even a little OCD about this.

You may still have some questions or not fully understand after watching the above video, so I found another video that really helps to explain in more detail how to clean your code. It is done by the same speaker, Misko Hevery. Here is “The Clean Code Talks - 'Don't Look For Things!'”:


Thursday, February 18, 2010

My Sophomore Game

I was reminded recently by talking to one of my instructors that I really need to update this page.  My goal here to show off stuff that employers can look at, so I'll dig back into history and pull out Muzika!  Muzika was my sophomore game.  Muzika was an arcade-style rhythm game.  Me and my teammates played Rock Band together quite often and wanted to replicate the fun we had.  Our team wasn't all fun and games though, we did lose and gain several team members throughout production.

We originally started working on the game over the Summer.  We had wanted to get a head start over everybody else, and for that reason we created our team probably before anybody else, well into the Spring of 2008.  We worked over the summer hammering out multiple concepts until we arrived on a game similar to Geometry Wars.

At the end of the Summer we were ready to start working on the game, but then the turmoil started.  One of our members was accepted into the Masters program at DigiPen, so we had to acquire a new teammate.  We decided that it would be best to change our game concept because it was still hadn't started coding, and we believed that if everybody had input into the idea they would be more motivated.  This was fine until our new teammate decided to change his degree.  I am glad however that he did pursue his real goals.

Finally we gained Tony Feist to save the day!  With inspiration from Tony, we came up with our new game concept that was a cross between Guitar Hero and Audio Surf.  My responsibilities on the new game team were to program the graphics engine.  This included programming the rendering, particles, UI, and text.  This was really my introduction to DirectX and shaders.  I would also like to take a moment to point out that the game was coded from scratch in C++.

We presented our Alpha for Music Off, later changed to Muzika, in December of 2008.  Here are some screen shots:


We started our second semester and learned that we had lost Tony, our inspiration.  Due to unfortunate circumstances, he wasn't able to continue game class.  We then had to refactor our game idea to meet our abilities.  The team was down, but we finally decided on a game that just tried to mimic Guitar Hero and Rock Band.  While we knew it wouldn't be possible to match these games, we still knew that our refactored goal would be much easier to obtain.  Later we acquired our artist, Jennifer Gilliland, who really helped to give our game its amazing look and feel.  We pushed on until the end of the second semester playtesting and polishing our game.

I feel like we learned a lot from the team troubles.  Even with any conflicts, I am quite proud of what we achieved.

Final Game Credits:
Keith Leung: Producer, Game Architect, Input, Tester, and Note Char Designer
Joanna Leung: Designer, Game Logic, Sound, and Tools
Jennifer Gilliland: Artist
Michael Alling: Art Director, Graphics

Here are the results:
Enjoy!




You can download the game here:
Muzika Download Page

Thursday, December 3, 2009

First Post!

Welcome to my blog!  I plan on being able to update everybody with information on my school, DigiPen; my game team; and any cool graphics stuff I've been working on.

A little bit about myself:
I'm currently a Junior at the DigiPen Institute of Technology where I'm obtaining a Bachelors of Science in Real Time Interactive Simulation.  This essentially boils down to a programming degree for video games.  Every year at our school we are required to take a class in which we make a game over two semesters.  My current game team, Lava Whales, has 5 programmers, 1 producer, and 4 artists.  I'm the graphics programmer for the team.