Game programmer Growth

Source: Internet
Author: User

Compared with playing games, writing games requires thousands of times of complexity. In addition to mastering general programming skills, there must be a considerable number of graphics.
The basics of learning, physics, and mathematics, especially in China, are even more difficult for beginners due to the lack of relevant materials. The following summarizes some entry-level methods and documents that are easier to start.


First, you must be proficient in a high-level language, such as C ++ or C #. Second, you must have good English reading skills. For game developers, English reading is one of the most important and basic tools, because
Most resources will be in English. Do not always wait for others to translate for you. Try to read the English documents and you will find that it is not that difficult :)


At the beginning, you have to select a graphic API, usually between DirectX and OpenGL. If cross-platform is considered, OGL is the first choice.
DX is the first choice if it is only on the MS Platform. I don't know much about OGL, so the big department information below is related to DX.

Of course, as one of the preparations, you must first go to DirectX develop
Center to download the latest DirectX SDK.

Entry books are very important and recommended <Introduction
3D game programming with DirectX
9.0> (as if a Chinese version was published last year), that is, the legendary longshu. This is the best DX entry-level teaching material, Frank
Luna discusses all aspects of DX from the beginning to the end. Coupled with <advanced 3D game programming
DirectX
9.0> although the title is advanced, there is actually not much content at the advanced level. After reading these two books, you are basically familiar with DirectX.
Now. The same is true if you want to learn xNa. After all, xNa is based on DX.


Don't read graphics books from the very beginning. At this time, you don't have a basic understanding of Graphic programming, so you can see it in the dark. Do not use online tutorials or forum questions as the primary learning path.
Good books and system learning are the most efficient. Do not immediately look at the examples in the SDK. The basic principle of many graphics is to readCodeI don't understand. Some books that are too old to read, such
Windows game programming master skills (I see someone looking for this book ). Some people say that the basic idea is always the same. Unfortunately, for modern GPUs, many early technologies and optimization techniques have long expired.
. Graphics programming is a very fast developing technology. Let's look at the speed of GPU development ~ Two years is the innovation of a generation of products.

Well, after getting started, it is the stage for you to consolidate and expand your horizons. Now we can compare it with computer graphics.
Suitable. Vomit blood recommendation <Real-Time-rendering>, this book is equivalent to all graphicsProgramPersonnel must read books and reference manuals. Recent
The third edition has just been released (Updated: An electronic version is available ). Unfortunately, there is only the second version in China, which is a little old. If you cannot find the third version, it is worth reading. All other books in China named after graphics have a total
Similarities: Boring and outdated. You only need to look at the two-dimensional 3D transformation and curve and surface representation. If you find that you did not learn mathematics well in the past, three mathematical books are tailored to game programmers.
<3D math primer for graphics and game development>,
<Mathematics for 3D game programming and Computer
Graphics> and <essential mathematics guide 2nd
Edition>, the first book has a Chinese version, and the last one is a new book generated in years.

In fact, there is no fixed learning route after getting started. It is best to learn it based on the direction you are interested in.

Shader: cg_tutorial and the complete Effect
And HLSL guide is a good entry material, and of course there are SDK documents. <Shaders for game programmers
And artists> there are a lot of getting started examples. <Advanced lighting and Materials
With shaders> describes various lighting models and technologies in detail. <GPU gems>
1 ~ 3 must be read. Although there are 2 or 2 Chinese versions, some translations are not ideal. It is strongly recommended that you directly read the English version. The shaderx series is also a classic series, which is published every year, including
With the latest real-time rendering technology, there are now 6th million books. However, only 1 ~ can be found on the network ~ 3. Most shader in volume 1 and 2 are written in ASM, but they can understand the principle and convert it to HLSL.
It is not difficult. In addition, nvidia sdk and ati sdk are also important resources for learning shader. Finally, there is an output <Programming
Vertex, geometry, and pixel shaders>

Terrain: <real time 3D terrain Engines
Using C ++ and DX9> we have discussed all kinds of technologies about terrain rendering in a very comprehensive manner, at least 5th ~ Go through chapter 9. Then you can
Go to virtual terrain to view recent terrain rendering technologies.

Model import and Animation: <advanced animation
DirectX >>, only this one is sufficient.

Physical: <game
Physics> and <game physics engine
Development> All are good. <Real-time collision
Detection> is the best book in collision detection. Unfortunately, no electronic version is available.

Levels: <level of detail for 3D
Graphics>

Ray Tracing: <physical-based
Rendering-from theory to implementation>

Engine Design: To be honest, there are no excellent books in this regard. The more core the content is, the fewer people are willing to write
Right. <3D Game Engine Architecture Engineering real-time applications
With wild magic> only chapter 3 is worth reading. <3D Game Engine
Programming> You can select a part of the chapters you are interested in, but in general, it is quite simple. Update: <3D Game Engine
Design, Second Edition> the photocopy version is available, which is strongly recommended. Recent <pro ogre 3D
Programming> it is also very good, with more than 200 pages, but it allows readers to quickly understand the design and architecture of an existing engine.

AI: <programming game AI
Example> very good. It seems that there is a Chinese version. Alternative <artificial intelligence
Games>. Of course <AI Programming
Wisdom> series is also a must-read work, but currently there is only 1 ~ 2.

Network: % ##@%"
Target = "_ blank" >%##@%
... (I am an Internet idiot + _ + ........)

Comprehensive: <game programming
GEMS> series, but because the content is too extensive,ArticleThe quality is uneven and selective reading is acceptable. GDC and gamefest over the years
T, Siggraph, and other large conference paper should also be concerned.

For those "all in on
E "or write an FPS game for N days.
You should stop reading the drama books. The common problem of such books is that everything is said, and the results are not clear.

In addition to books, we recommend some good network resources:

Www.gamedev.net

In addition to a large number of tutorials, Paul Vientiane, the Forum's accumulated content over the years. Make good use of Forum search, and you will find that no matter how powerful you are, there are always people who are better than you who have met the same question as you long ago.
And provides a solution.

NVIDIA and ATI developer centers

Creators.xna.com xNa Official Website

Www.gamasutra.com
Similar to gamedev

Www.beyond3d.com
In addition to the software, we can also see the analysis of the hardware architecture.

Www.ziggyware.com
Best xNa tutorial website

Www.gameres.com
The only professional game programming website in China, unfortunately, it is too cold compared with gamedev -_-#

Of course, don't forget to collect blogs from various forums :)

Finally, reading is not enough. It is king to write more and practice more.

PS: The above books can be started through the Internet or bookstore, except for those mentioned in particular.

PPS: Do not ask me for an e-book. I can find it. I believe you can also find it. If you cannot find it, I certainly do not have it.



This is one of my thoughts on recruiting and training game programmers over the years. I always wanted to summarize it. The main purpose is to better train new C ++ programmers and establish a game program.
Sequence worker training, development, and success have become the core backbone, management, and options beneficiary. For MMO game production, solving the C ++ technical team is one of the foundations for ensuring qualified software.

My h3d
All core studio technicians and game production managers are members of the smth BBS game production edition. From 99 years to the end of the iner's previous moderators in h3d
Studio. Here, I will remove the specific training and technical team establishment content and only talk to you about the vital interests of game programmers.

In addition, this is not a case to judge in a descending order. Me Ben
Not a very senior technician or administrator. I just insisted on doing one thing for a long time and learned a lot. So there are some experiences. It is not my own level to judge the low level of other structures or individuals in this article.
How high is it. Do not misunderstand.

1. Current Situation of C ++ game programmers

Medium
C ++ programmers in China are all self-taught. Because there are almost no similar C ++ training institutions in China. Everyone knows that social training is the main purpose of making money. It is a great luck to be talented. Not like
Java was first implemented by Sun. There is no C ++ teaching in Chinese university education. The basic C/C ++ courses only help students get started. However, for actual C ++ software engineering applications
Learning textbook knowledge is of little practical significance. Most importantly, the university does not have qualified C ++ teachers. Programming is a technology. The university is engaged in scientific research, and most of them are scientists.
Is born. Not a technician. If you do not have more than 0.1 million lines of code or successful software project experience, it is difficult to teach intermediate and senior C ++ programmers.

The gaming industry has high requirements on C ++ programmers.
. It is much higher than software in the general industry. Because any MMO is a medium and large software project. The number of daily users reaches hundreds of thousands or millions, and the number of users simultaneously Reaches hundreds of thousands.
I have more than a dozen programming technologies in specialized fields.

In addition, medium and high level C ++ programmers are generally very competent. Because they are all self-taught, this requires high IQ and strong self-learning ability,
Ability to solve problems and perseverance to overcome difficulties. However, there are not many such talents in the gaming industry. Aside from talking about senior talents with overall large-scale software architecture capabilities. Capable of independent module development,
It is also difficult to find C ++ programmers who have the ability to independently solve problems in terms of space, performance, and maintainability. Those who have these capabilities and some technical expertise
(Graphics engine, network engine, etc.), more scarce.

Therefore, even large game companies cannot meet the needs of C ++ game programmers. And already in the company
As a C ++ programmer, after a short period of three months and a one-year workout, he cannot really be competent in developing C ++ games.

2. Requirements for C ++ game programmers for MMO Game Development

As mentioned above, all MMO games are medium and large soft
. Various software quality metrics such as space occupation, stability, performance, and maintainability are strictly required for MMO game software. Far greater than general industry software. This scale is similar to that of the banking system.
The client and software logic are much more complex than general commercial software. This requires the software compiler to have a high programming quality.

In game software, solving the software engineering part is just a project
1/3. The other two parts are planning and art/audio. From experience, demand changes are not accidental events for MMO game software, but a basic attribute of MMO game software development. Game software investment
Large, long cycle, and high risk. The MMO market is also changing, and interactive electronic games are developing rapidly. Gaming software must face external changes. Because of the long development cycle, software demand changes have become a basis for software development.
This attribute. As if complexity is a basic attribute of software engineering.

This leads to uncertainty in the Development of game software. Interactive Entertainment is different from commercial applications. Entertainment is between reason and sensibility.
Domain. C ++ development faces the binary world logic of 0 and 1. There are irreconcilable conflicts between these two fields. This situation puts forward higher requirements for C ++ game programmers.

First, basic C ++ knowledge, C/C ++ skills
Yes, it must be extremely solid. It is not a knowledge point or skill point that is difficult to obtain in books for game software development. The knowledge system and skill system developed by game c ++ can be filled with existing C ++ books.
Full. For example, C ++ paorgramming language, C ++ primer, effect c ++, and more effect
C ++. However, before starting game programming, it is very difficult for people who thoroughly read and practice these books. Of course, the person who can really do this is already a senior C ++ programmer. I once met
One after graduation, I went to Google soon

Secondly, we have a deep understanding of object-oriented. Is very important. Proficient in C/C ++ syntax and programming skills.
C ++ game programmers have some requirements. The profound understanding of the object-oriented concept will bring huge changes to large-scale C ++ project development. Sometimes, in a C ++ game project with more than 10 concurrent developers
In, the object-oriented method will become a life-saving tool. Design Patterns and related books are also required courses.

Finally, the essence of good technicians is arrogant. This is positive
. However, this kind of habit affects your continuous improvement and teamwork. And when it becomes the technical manager and the technical core of the project, the value of such technical personnel will be greatly reduced. If
This level of self-determination expands our horizons and continues to improve our overall quality. Only when the technical management capability and architecture capability are improved will their own values continue to grow. To put it into practice, it means the benefits and personal growth.

Due to the nature of Game Development
Is team development. At any time, only valuable technical personnel in a team can reflect their own values.

3
, growth and Technology Development Route

there are several stages of development for general technicians
, ability to develop local functions independently
For example, write logical interface functions for a UI. Compile a self-drawn control for a login dialog box.
B
, ability to develop and tackle a function module independently
for example, add a small logical function module to the game.
C, ability to independently design and develop a system
for example, designing and developing an autopatch System
d
, ability to solve technical difficulties and design the architecture
such as developing a synchronous network simulation system, develop a medium/large game production tool
E. Have the overall architecture and management capabilities, coordinate with others to develop capabilities of a large system
client master, server master, engine main process, etc.
6, technology ctor
develop the technology development direction and establish a technical team, technical Management

in every
phase, great workload and engineering pressure are involved. Sometimes it is a failure that spans one year. It is a good way to switch the organization, start again, or continue as the core team to stay in the company.
continue to start from new opportunities. But the key is to learn from the lessons and try to learn more and practice as much as possible. It also develops based on its strengths. Of course, it is best for game producers to rely on a core team. Become a member of the core
Team.

programs that reach level 3, it is already an indispensable talent for the company. However, programmers often have different understandings of themselves and companies. I have met some people who are easy-to-use and able to write things quickly.
. Various technologies are involved. But he is always uneasy about letting him develop and design a system independently. Even a relatively independent tool. It will also be a mess. Keep people in the backend. But you still feel that you are at a high level
. This kind of person is impetuous and has a low eye and does not want to do a complete thing in detail. So we can see that he keeps jumping and jumping, but his job in the new company has not seen much improvement. The company attaches great importance to handing over to
a programmer, whether or not he can complete the work, and whether he can finish the work comprehensively. Even if it takes a little longer, it cannot be done. This will cause fatal consequences to the project.

4. Development Benefits
let's talk about how the company considers the treatment of technical employees from its own experience.
.
the six files mentioned above roughly divide the treatment level. In fact, at the third level, your treatment is determined by this industry. It is not determined by a company. Because the game
game industry lacks such C ++ programmers. With this level, it is not difficult to find a job in several major city game companies. Large companies are slowing down, and I am a company of less than a hundred people. Therefore, the industry price
must be considered by the company. If there is less, the loss of C ++ programmers in software projects will have a great impact. However, the increasing value is actually the bottleneck of C ++ programmers. If you have been thinking that your
level should be so high for a few years, it would be completely dumbfounded to reach a company with a relatively high overall technical level. In this case, it is very difficult for technicians to start over with a low mindset.
currently, the gaming industry has a low level of technology
, it is not very good for programmers to increase their salaries. Even if a newbie has thousands of levels, he will be given 10 thousand yuan. He doesn't know how much water he has. 1
in the next year, 3-4 RMB is collected. What can be delayed is learning, which affects the mentality. The technicians who have a good mentality and know how to work are willing to take the option and equity right after three to five years, if they have the opportunity to take the option and equity, they are less likely to be higher than those who
started from the very beginning, I don't know how many times the height is.

5. Next I will talk about my personal experience in recruiting C ++ programs.

A
As a C ++ programmer, the growth cycle is relatively long. If you are a newbie (less than 20 thousand of the code and have not done any large projects), we will look at three points. Whether you are willing to study, have a sense of responsibility, and be smart. For example
Today, there are not many people who can satisfy these three points.

A sense of responsibility is a matter of character and determines whether it contributes to the company. This is the most important thing. Some people are actually selfish. The contribution of such people to the company is negative. And in the end, its own value is also
Difficult. Because technology depends on the commercial success of the game to reflect the value. To achieve business success, you need a team to pay for one thing. Whether it depends on how much technical knowledge can be learned. I am the most involved in IQ
In the past two years, I realized that people's IQ is indeed quite different. The higher the IQ, the better. Otherwise, the future is not great.

B
If you have 2-3 years of C ++ program experience, you should check whether you are arrogant, cooperative or frequent job hopping.

First, we should be responsible. Too selfish, too considerate for yourself, time
And regards your own interests as the most important person. No matter how good his technology is.

Then we checked whether it was arrogant. When people are the easiest to be arrogant, they often get started with a technology.
Small achievements. However, our vision is still not open, and we have not experienced the in-depth technical knowledge in this field, and there are no good people around us. At this time, technical staff are prone to arrogance. Moderate self-confidence and arrogance are allowed.
However, nothing is done, indicating that there is little room for improvement.

Cooperative Awareness is the key to game development. This includes the ability to communicate, think, and solve problems. A dedicated Technician
It's a terrible thing in the game team. Because game software is not something that a person can do. Due to the complexity of the logic, various technical fields are required and the requirements change frequently. Team communication is required for each step.
Cooperation. There is little hope of survival in the game development field for technicians who lack such awareness or who are not suitable for team development.

As a C ++ programmer, frequent job-hopping resumes are very
Fatal. Anyone who has been doing C ++ For A Long Time knows. It takes a lot of time to enter a huge C ++ software project. After training, project familiarity, and contribution to the project, this time is short. If one person
Frequent job hopping means that he has never worked hard on core things in a project. Or, if you fail to do so, you can run away immediately.

C
For programmers with special skills, it is equivalent to programmers. C ++ only requires training space for beginners. However, they have high professional requirements. It should have been carefully studied in a certain technical field. Of course, at the end of the company
He must be a Senior Programmer who is familiar with C ++. Because any technology in the professional field must be used as a tool in the project.


D. Good C ++ game programmers are not easy to find. If he did well, he had long been a core member of the project. If the project is good, its own treatment will be very good and stable. You do not need to apply for an application through the general recruitment channel.
It is either pulled to the company as the core technology to take the option, or start your own business.

Here is an example. Netease has a cloud style. Everyone knows that he is the client master of westward journey 2. He is China's first open source Engineer
C ++ game engine. A complete set of C ++ game engine code is available. He did this in college. Go To Netease after graduation. With the platform, it became one of the most successful MMO in Chinese history. As a game Technician
Clerk, his value can be said to be already very high. We can't tell you how high it is. But you can perform this analysis.

An experienced C/C ++ programmer. China
Self-developed successful projects with millions of online games. Currently, Netease has been paying for engine and game products for its independent leadership team for nearly three years. Such a resume has a high value in itself. He is in any public
The company can find a job with an annual salary of several hundred thousand. If he has the ability to manage. Project management or technical management capabilities. The contribution made by a listed company should be measured in millions/year scale.
Quantity. If he can find a business person, take charge of the helm, and have a certain commercial ability, he can start his own business independently. The angel venture capital attracted tens of millions (otherwise, nothing can be done, of course ). If the product can be made,
It is natural for you to reach tens of millions.

I believe that there are not many people with higher levels of game programmers, luck, and development space in China. Then we can take him as a benchmark.

I know many people disagree with him. However, the problems mentioned here are as follows:
It's not about him. He does not need to judge whether he is not convinced. As a person in a society, it is not measured by the number of lines of code that can be written, how elegant the code is. From this point, technology
Before it is converted into a successful commercial product, its value is 0. As a technician, the standard for society to measure his value is not to check whether the code is of superior quality and fast speed. It means that he can be a successful commercial product.
Product or company development contribution. I still don't quite understand this truth a few years ago. As a technician, I believe that most of my fellow technicians are unlikely to understand and agree with this opinion from the root. Here
It is not the level of evaluation, but the value. Your value represents your benefits. This is not the decision of a boss, but the decision of a company depends on the per capita GDP and the current development level of the industry.
Of sales. I think this applies to all game production personnel. It is made by a technician.


Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.