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
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.
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
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. :)
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
Lastly and undeniable, math is still important for a programmer.
9) Any links / articles to recommend?
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.
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?
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
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
Linear Algebra (Matrices and Vectors are part of linear algebra)
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).
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.