I. What are the main aspects of game program development?
Game development mainly consists of the following aspects:
1. graphics engine
2. Sound Engine
3. Physical Engine
4. Game Engine
5. Artificial Intelligence or game logic
6. Game gui (menu)
7. Game Development Tools
8. Network engine development supporting local area network battle
9. Network engine development supporting Internet battles
The following describes each part one by one:
1. graphics engines mainly include scene management and rendering in the game (indoors or outdoors), role Action Management and rendering, special effect management and rendering (particle system, natural simulation (such as water pattern, plant simulation), light and material processing, level object detail management, and development of graphic data conversion tools, these tools are mainly used to use DCC software for artists (such as 3DS MAX, Maya, soft xsi, soft image3d, etc) the model and action data produced by the software, as well as the textures produced by tools such as photo shop or painter, are converted into resource files used in game programs.
2. The sound engine mainly includes the playback of sound effects (SE), voice (VOICE), and background music (BGM. Se refers to those that play frequently in the game and have a short playing time, but must be able to play without delay in a timely manner. Voice refers to the voice or voice in the game, this part has a high requirement on sound quality, and basically uses a relatively high sampling rate to record and play back the sound. However, like Se, it requires timely playback without delay, sometimes, due to memory capacity problems, se may reduce the sampling rate without affecting the effect. However, voice has a great impact on the effect due to the low sampling rate, therefore, generally voice does not adopt the method of reducing the sampling rate. BGM refers to the background music that plays a game for a long period of loop playback (or only once). It is precisely because of this feature of BGM, generally, the background music of a game is played by reading a disk (CD or hard disk. Other advanced audio effects, such as eax, dts5.1, and Dolby surround.
3. the physical engine mainly involves the mechanical simulation of collision between objects in the game world and between objects and scenes, and the mechanical simulation of the object skeleton movement after the collision (the famous physical engine includes the game dynamics SDK of Havok and the ode-Open Dynamics Engine of open source ).
4. the game engine integrates graphics engines, sound engines, and physical engines to create a game system for a game, including the game level editor, the main purpose is to visually adjust the scene, adjust the lighting effect and atomization effect, set events, place items, and set NPCs. In addition, there is a role editor, it is mainly used to edit role attributes and check the correctness of action data. In general, Japanese gaming companies will directly implement the level editor and role editor in the game, and all parameter adjustments will be made in the game through the debugging menu, therefore, they generally make this part of the debugging menu function very powerful, while displaying some important information in real time on the screen, the advantage of this is that the effect of the level editor adjustment is directly the effect of the game, but it may not be very good for the reusability of the program. For example, it is difficult to use another game project, unless the two games are of the same type, you only need to change the scenario and role data, and there is no problem with the next generation of products. You only need to add the debugging menu function according to the style.
5. artificial Intelligence and game logic development are also very different in Japan and Europe and the United States in the game development model, the use of script language development in European and American game companies is very common, therefore, this part of program development is mainly written in the scripting language, and the coupling between the script program and the game program is very low, there is a separate editing, compilation and debugging environment, this is more conducive to the separation of game programs and level design and development, and parallel development, so they generally have a programmer position dedicated to level design. The scripting language of Japanese gaming companies is generally highly coupled with games. Generally, a simple script system is completed through macro functions of some languages and specific functions of Some compilers, therefore, these script programs can only be debugged in the game program, rather than being developed in a separate script editing and compiling environment.
6. the gui (menu) of the game mainly refers to the User Interface Design in those games, which is complicated and simple. It is a 2D GUI interface, 3D GUI is complicated.
7. game development tools include the level editor, role editor, resource Packaging Management, and DCC software plug-in tools.
8. it supports the development of network engines for local area network combat, which mainly solves packet sending and delay processing and communication synchronization issues in LAN networks. There are two methods: synchronous communication and asynchronous communication, asynchronous communication is used in games with high frame speed requirements. synchronous communication is relatively less efficient than asynchronous communication, but the programming model of synchronous communication is simpler than asynchronous communication.
9. network engine development that supports Internet battles. Currently, most online games are structured in C/S, server-side Software Configuration Management, and server programs are optimized, there are also game halls, teams, game logic processing, item management, and charging systems. There are also some network systems that mix the C/S and P2P structures, such as Xbox Live.
2. What are the positions related to programmers in gaming companies?
The positions of programmers in gaming companies are somewhat different in Japanese gaming companies and European and American gaming companies. The positions of programmers in Japanese gaming companies are mainly supervised by technology (director) and primary Programmer (main programmer ), A programmer (programmer) is a programmer responsible for game project development in a Japanese game company. Generally, programmers are not divided based on their work content, in addition to independent system research rooms and sound system production departments (these two departments are relatively independent and often provide services to several projects at the same time), programmers are responsible for the development of each game project, at any time, a single person may have multiple roles. For example, the primary programmer may be responsible for the development of graphics or sound engines in addition to the entire game system. In addition to artificial intelligence, the programmer may also have menus. This situation is rare in game companies in Europe and America. They have a relatively small division of labor. They generally include graphic programmers, sound programmers, AI or game level programmers, and physical programmers, each group may have another leader.
3. How do gaming companies generally recruit programmers?
In this regard, Japanese companies are somewhat different from European and American companies. Japanese companies generally like to recruit some outstanding graduates from some colleges and universities. On the one hand, it costs less than recruiting experienced people, and on the other hand, it is easy to train new people, companies like Sega and konami are all recruiting employees based on this principle. Therefore, if you want to enter a Japanese gaming company, you must learn your software courses well. European and American companies want to recruit and immediately start project development. Therefore, they generally want to recruit people with work experience, even if they are not in the industry, you can work in the relevant industry for 2 or 3 years, so it is important to want to enter European and American game companies for your work experience.
4. What conditions should I think of as a game development programmer?
I think a game software programmer must master the knowledge of the bachelor's degree in computer science, including C or C ++, data structures, compilation principles, algorithms, etc, in addition, linear algebra, calculus, and Newton mechanics are also widely used in the development of graphics and physical engines. To improve linear algebra, it is necessary to understand hardware-related knowledge, such as computer architecture and assembly language, these are very beneficial for us to learn a new hardware platform, write optimization code, and improve our game competitiveness. In addition, the enthusiasm for games is also very important to maintain a perseverance and fear of hardship (for example, overnight overtime) mentality. For those who want to enter the game industry but lack software development knowledge, they can participate in game development training.
5. What are the best ways to learn about game programming?
Nowadays, many people have graduated from the bachelor's degree in computer science and have learned a lot about software development. However, once they want to use the actual project development, they will not be able to get started, this is mainly because there are too few opportunities to use knowledge in schools. Therefore, the best way to learn game programming is to be able to actually participate in a good game project and develop games with people with rich development experience. You may learn a lot that you cannot learn from books and skills. But sometimes you have no chance to participate in a good project or enter a good game company, but you are enthusiastic about game development and want to learn the game development skills, then you should attend specialized game development training, because all the teachers in the game development training course are developers with rich development experience. Generally, they have five years of rich project development experience, they are actually sharing their development experience with him over the years. In addition, they will specially design some projects and topics in the game development training course, they can be used directly in game development, so that you do not enter the famous game companies, but you can learn some common development skills in these companies. There is also an economical way to participate in some open-source projects of online volunteers. These projects are of good or bad quality, and it is very important to choose a good project, in addition, many of them are industry insiders. You have to enter their company to learn their experience. But through open-source projects, you have the opportunity to learn from them, maybe one day, you will enter a well-known game company, but currently there are not many complete open-source game projects, there are some good open-source projects in terms of graphics engine and physical engine, but if you want to join them, you must have a good foundation, some open-source teams are not suitable for anyone.