Truth Seeking through Game Making
Tuesday, May 31, 2005
  Interview with Zie Aun aka no-wing
Tan Zie Aun is a multi-talented Gamma (sophomore) SEGD student from the 2004/2005 (entering) batch. He is well known for his creative artworks (http://no-wing.deviantart.com) and intelligence (among the highest CGPA, brilliant in Math, writes very intelligently). Besides being fluent in Mandarin Chinese and English, he also knows rudimentary Japanese and Korean (self-taught). Best of all, he also creates his own runes and fantasy languages.

1) Please tell us more about yourself and your interests, education background and future plans.

I'm Zie Aun, known online as 'no-wing'. I came into MMU after six years in Singapore. I like to draw and write, other than playing games (duh). Always looking for a good game of Magic: the Gathering. I wish to go into concept art and story-writing, that or trading card games. I'm planning and coding an online card game now, that will be a big part of my portfolio. To see my works, please go to http://no-wing.deviantart.com

2) Why did you choose to join SEGD?

I've always loved games every since I received my first console for a birthday present. Well, I believe most people are game fans too, but I wanted to be more than just a fan. I have my ideas to show the world, and I believe games can be one medium to show my ideas

3) Are you satisfied with the course so far?

I'm satisfied; the course leaves much to desire. I think it's one of the very few courses that you still have your seniors hanging around and openly sharing ideas.

Programming

4) In your opinion, do you think some SEGD student can hate programming but still survive and graduate from the course?

Tough luck. There isn't much programming for the 'game design' subjects, but you still need them for the 'software engineering' part.

5) Do you think programming hard to learn? Why do you think it is so?

Programming is like speaking in another language. Learning it isn't hard, the hardest part is being fluent in it.

6) How much work should a student put into programming to get good at it good enough to be a game industry-standard programmer?

That is, if you're going to be a game programmer. To be fluent in this language (in any language, in fact), you'll have to use it often. Make some small programs in your free time, they help. I'm being hypocritical here, since I don't really like programming, but yeah, practice is the key. Another thing is interaction. Join online forums (one or two should be enough), and ask from people that are better than you.

7) Programming is boring to many new students (and to many senior students), and people do have that lasting first impressions. What do you recommend a newcomer to do to make programming / computer science more interesting and exciting?

To me, to be able to program games is exciting enough.

Art

Imagine if I am a new incoming BETA SEGD student interested in Game Art.

8) I am interested in game art, and I know this course does not teach me that. What do you think I should do?

That is, if you plan to do programming as well. Else I think you should be better off in FCM

9) I don’t know anything about programming, but I know I hate math and doubt that I have the brains to be a good programmer. However, I still want to know about games development, game design and its process since I love games. Do you think it is wise for me to join SEGD?

Learning programming doesn't mean that you'll have to be a game programmer. It's best to know something about game programming if you want to be a developer.

General

10) Any practical advice you can give the BETA SEGD student?

Besides what eXiang said, make a lot of friends. Grasp every opportunity that you come across. Don't be afraid to show people what you can do.

11) Thanks for your time; I am sure new students will appreciate it. I gather that you have been some projects. I hope to conduct a few interviews regarding your projects in the near future. Good Luck.

Besides what eXiang said, make a lot of friends. Grasp every opportunity that you come across. Don't be afraid to show people what you can do.

 
  Interview with eXiang - Relevant to all SEGD students

Note: For more information on MMU SEGD including this interview, please visit the SEGD Wiki, and the MGDC forums.

Recently I conducted a series of Interviews with some students/graduates of the Software Engineering and Games Design course in Multimedia University (for which I am a student of if you didnt know already). The first in the series is Tan Yee Siang (better known as eXiang). Thanks Yee Siang for such insightful answers to questions that most SEGD students ask often in their minds (but seldom from their mouth :p)

Yee Siang is one of the success stories of SEGD. He is well known as the co-founder of MiniMax Studios, MGDC and MMU Game Developer's Club.

1) Tell more about yourself and your interests

My name is Tan Yee Siang, most of my course mates just call my nickname: eXiang. I have wide interest in everything, mainly art and science (programming). People said movie is the 8th art, I think game is a form of art as well.

2) Why did you choose to join SEGD?

I came to MMU for the loan, and bcs of a gal also :) When making my choice between FCM and FIT, I choosed SEGD where it is a combination of both. Of course, I join SEGD because I like to play game as well.

3) Did SEGD turn out to be what you thought it would be? Please elaborate.

Well, honestly, I never know what SEGD will look like when I was in Alpha year. I was gambling with my future at that time. Thus, once I get in here and understand the situation, I founded MGDC with lih hern - a game development community/portal mainly for MMU student.

Like John, we all don't want the alpha student to make the wrong decision. The only way to help them is to tell them the truth.

After all, there is not much difference from what I expected. I enjoy all the game development subjects, skipped some boring common IT subject and nearly fail in those Math subject. :)

Programming

4) In your opinion, do you think some SEGD student can hate programming but still survive and graduate from the course?

To me, it is possible to survive the course hating programming as some of my seniors and course mates have did just that. The percentage of programming work in the whole course is about 60%. As an SEGD student, there are many ways to graduate.

However, this doesn't mean that programming is not important. Game development uses programming extensively. (Without programmers there video games will not exist). Programming includes networking, AI, scripting, 2/3D graphic and sound, databases and etc. Game programming is always in the state-of-the-art of IT technology. (With some exception – like Software Engineering which is not very adopted in the industry yet :p)

And we should not forget, gaming technology is inherited from virtual reality technology.

On the other hand, it doesn't mean you can’t create a game without good programming skill. There are plenty of software game creators / authoring tools out there that could help you realize your dream. (You still need to know basic programming/scripting concepts)

Finally you have to ask yourself: Why do you want to spend your resources for a game development degree?

In my opinion, this course is for people that like both programming and the arts.

5) Do you think programming hard to learn? Why do you think it is so?

I don't think programming is hard to learn. Most of the people are weak in programming because they have no interest in it, just like I have no interest in Math.

The hardest thing to learn is the management of development.

6) How much work should a student put into programming to get good at it good enough to be a game industry-standard programmer?

Alot and alot. Imagine sitting in front of computer nearly 24 hourse a day, nearly 7 days a week. When I was in university, I rarely go downtown for cinema and disco. You might not believe it but the number of games I played in the last 3 years won’t be more than 3 titles. The first thing I plan to do after graduate is 2 months vacation and catch up on my much needed sleep.

7) Programming is boring to many new students (and to many senior students), and people do have that lasting first impressions. What do you recommend a newcomer to do to make programming / computer science more interesting and exciting?

Game development is one of the way. You will discover the beauty of programming through game development. To me, at least, I won’t feel bored when developing a game as compared to developing database application.

8) In your opinion, how should a SEGD student go about learning programming?

Being a good game developer is not just about being a good programmer. You need to be able to study on your own independently, able to work in team and manage a project as a team, and most important: be resourceful.

For example: You need to search Google first for the solution before you asking around for help.

Open source is one of the shortcuts for you to learn the programming and system architecture. Believe me or not, when you are exploring open source project, seeing how engineers all around the world implement the project, you are actually importing technology into Malaysia.

Lastly and undeniable, math is still important for a programmer.

9) Any links / articles to recommend?

www.google.com

Art

Imagine if I am a new incoming BETA SEGD student interested in Game Art.

11) I am interested in game art, and I know this course does not teach me that. What do you think I should do?

By default, the place you should go is MMU FCM or Lim Kwok Weng However, in my own opinion, both of these places can’t give you a good environment to succeed as a game artist.

A game artist still has to base his skills on traditional art skill. You need to have traditional art skill such as portrait, water color and so on.

Also, you must not making learning how to use Adobe Photoshop as you goal in your study. You should learn how to use Photoshop to achieve what you want. The ability to realize your artwork inside your mind is more important than what tools you are using.

In blizzard, they only hire artist that like to play game.

My advice: a CG artist that knows basic programming and has scripting ability is very important in the market today. (SEGD can exposed you the technical part here)

12) I don’t know anything about programming, but I know I hate math and doubt that I have the brains to be a good programmer. However, I still want to know about games development, game design and its process since I love games. Do you think it is wise for me to join SEGD?

You can develop other software even if you are an SEGD student. Same thing, you could still create games even if you are not a SEGD student.

To make you choice, your must have a strong interested and are ready to jump into it with no regret. Ask yourself: What a game development degree can give me?

General

13) Any practical advice you can give the BETA SEGD student?

 
Thursday, May 19, 2005
  3D Graphics Programming links
Following the post on 3D transformation pipeline & essential 3D mathematics, here is a link to a wonderful page with great links on those topics and more!

http://www.realtimerendering.com/

This is actually a website by the author of a book of the same title. I saw the book in Borders (after watching EPIII) and browsed through the introduction and found the link.
 
Wednesday, May 18, 2005
  coLinux: Run full-blown Linux on Windows
Having made the decision to give up buying pirated software I, I have recently been using only Linux on my Laptop. See my previous post for more information. However I missed playing many games (downloadable indie games... since I do not buy pirated games anymore). Since the majority of Linux software are console-based (non-GUI), I thought of giving coLinux a try.

coLinux stands for co-operaive Linux. It runs the Linux operating system on a single windows thread. It supports many flavours of Linux - including my personal favourite - Gentoo. I have been using the excellent Linux emulator Cygwin for ages and thought of having a change. Also some programs do compile well in Cygwin - especially server programs. I needed an alternative - coLinux was IT.

When coLinux is running, it is like having a real saparate Linux box running on Windows. So If you need to use it just give a try. If you need help installing it there are plenty of support (learn to use googgle) and help available. If you are new to Linux and need to know why you should use it, you should write in some comments.
 
Sunday, May 15, 2005
  Linux over the last few days
I have not been updating my blog for the last few days. I could not - because I have been formating my Windows hard disk and installing Linux on it. I installed a fresh Linux from a wonderful distribution called Gentoo Linux. Gentoo is really an awesome distribution. I can proudly say that it is the best Linux distribution I used so far.

But since one of the main idea of Gentoo Linux is for the user to configure almost everything on your system. It will take a long time. The original download to kickstart the installation process is only about 23MB. From there I chose to boostrap my system from scratch. After an accumulated 36 hours of typing Linux commands and studying the Gentoo architecture (while waiting for source codes to download and compile) I finally managed to get the majority of my system running.

My system now runs:

Apache2 web server - Internal only. I do not know how to port forward external requests from port 80 of my ADSL modem/router to my other Wireless router. I manage to port forward from my wireless router to my internal LAN/WLAN though. Going to install PHP and set up MySQL soon.

bsd-ftp FTP server - Internal only too.

SAMBA server - for the other Windows system on my LAN to share files.

OpenOffice - I hope it can open .ppt files to read the lecture notes next trimester!

Neverwinter Nights - still trying to get hardware acceleration: It is very difficult to get it (3D hardware acceleration) working on my laptop's ATI Mobility Radeon 9700. I tried the FireGL driver but it doesn't work yet. Anybody having experience in this, please I beg you - lend me a hand.

Gotta go now. I am going to Church to attend Mass and volenteer to be a warden in the upcoming (23rd May) Golden Jubilee celebration of the arch-diocese of Kuala Lumpur.
 
Tuesday, May 10, 2005
  3D: Essential mathematics

I spent five hours of yesterday morning continuing my 3D graphics programming journey. After experimenting with DirectX a little, I knew I needed to refresh my Math a bit. So I fired up the DirectGraphics SDK help files to look for the list of D3DX library’s mathematic functions. This is what I found:


Data Types
D3DXMATRIX – 4x4 (16 floats) MATRIX

D3DVECTOR3 – 3D VECTOR (3 floats)

D3DXPLANE – plane normal (x,y,z) and distance from origin (4 floats)

Matrix and Transformation Functions
D3DXMatrixMultiply – Multiply two 4x4 matrices

D3DXMatrixRotation{X/Y/Z} – build rotation matrices for a particular axis

D3DXMatrixTranslation – create a translation matrix

D3DXMatrixRotationYawPitchRoll – rotate about all axes in one call

D3DXVec3TransformCoord – Multiply 3D vector with a 4x4 Matrix

D3DXVec3TransformNormal – result vector is normalized

D3DXVec3Transform – (x, y, z, 1) -> resulting vector is (x, y, z, w) where w != 1

Vector Functions
D3DXVec3Cross – cross product – returns a vector perpendicular to A and B

D3DXVec3Dot – dot product – return as cosine of the angle between two vectors (float)

D3DXVec3Length – determine the magnitude (float) of a vector

D3DXVec3Normalize – Makes vector unit length


So from this list of functions, I knew which part of mathematics I needed to review or re-learn in my case. I searched Google for:

Linear Algebra (Matrices and Vectors are part of linear algebra)

3D Math

Matrix Multiplication

3D vectors tutorial

3D Rotation Matrix

GameDev.NET 3D Graphics article/tutorial list


After solidifying my mathematics, I went back to the DirectGraphics SDK help files to examine individual D3DX math functions. With my new found knowledge, I recoded the 3D wire-frame rendering pipeline using matrices and vectors. Later today, I am going to continue this journey with DirectX (my API of choice for now).

 
Monday, May 02, 2005
  3D: The Transformation Pipeline

Have you ever wondered how a 3D game is made? Or more specifically, how graphics are displayed on the screen as 3D graphics? I have. In my previous post, I said that is not easy to acquire this knowledge. However, I think it is worth spending a significant amount of time in this area. This is especially true if you intend to develop a 3D game as a programmer – whether the 3D engine, physics or Artificial Intelligence (AI). As I mentioned in my previous post, I will spend the rest of this year learning how to build a 3D rendering engine from scratch.

You will probably be wondering why one wants to learn how to build a 3D rendering engine when there are so many commercial and open-source rendering engines out there. It is true that I will probably never be able to create the next Doom3 or Unreal engine. However, developing the Doom3-beater is not my initial goal; instead my goal is to build a solid foundation of 3D knowledge in order to truly understand, utilize and modify other 3D rendering engines. I want to know what I am doing when I use a 3D engine or graphic API’s “vertex shader” or its simple “drawCube” functions.

Whether I plan to use a pre-built 3D engine or to create my own using a graphics API (Slade3D, haha) like OpenGL or DirectX Graphics, I would like to understand what the API is doing behind the scene. I do not want to be in a situation where I have to spend ten years debugging some annoying unexpected result. That would be disastrous. Without understanding the underlying mathematics that drives a mathematical construct (the 3D world), I do not think I will go very far in the realm of 3D.

I spent the last few nights learning/refreshing about the basics of 3D. Particularly the transformation pipeline (what every vertex of a 3D object must go through) and how vertices and matrices mathematics are used in an engine. I will try to give a brief summary of what I learnt.

I was somewhat shocked to realize how much math one needs to know to comprehend how a basic 3D polygon is rendered on the screen. Furthermore because of the huge amount of calculation the CPU/GPU needs to perform, no 3D API use trigonometric calculations we just discussed to their transformation pipeline; instead another mathematical construct, matrices (plural for matrix) are used.

Phew, that is a lot to learn. I wonder where John Carmack learnt all these from before he programmed Doom. In addition to all these 3D concepts (in its minute detail), I had to refresh a lot of math. I will continue with the math in the next post.

 
John Tan is an entrepreneur, programmer, games developer, game designer. He lives in Cyberjaya, Malaysia and operates a startup game company, Hatchlings Games. His current interest is on Web 2.0 Gaming.

ARCHIVES
January 2005 / February 2005 / April 2005 / May 2005 / June 2005 / October 2005 / November 2005 / December 2005 / January 2006 / February 2006 / May 2006 / June 2006 / September 2006 / November 2006 /


Powered by Blogger