What technologies are required for game development

What technologies are required for game development

Hello everyone, I am Essie, and I will chat with you today. To develop a game, what technologies are required to develop a game without a reference or a baseboard, and what sectors or fields will we involve in the development process.

 

The development of a game requires a general game planner to write background stories for the game, formulate game rules, design game interaction links, calculate game formulas, and all the details of the entire game world, etc.

Like other programmers, if you want to be an excellent game developer, you must have a good foundation, including algorithms, data structures, and languages. Of course, in addition to these basic skills, you also need to have a deeper understanding of the game, such as seeing a function to be able to guess or give a rough implementation idea.

Game programmer: Game programmers need different computer languages ​​and different game engines for development according to the planning book of the game planner.

For example, online game programs need to use C++ language, cocos2D-x game engine, untiy3D game engine, Dx and other technologies. Mobile game programs use java computer language, Android platform technology, ios platform technology, etc.

Game artist: Game artist is mainly game original painting, 2D, 3D game artist, need to use hand-painted, PS, 3Dmax and other software. Design and produce characters, scenes, animations, special effects, etc. in the game.

 

1. Online game planning and design is divided into executive planning and main planning. Online game art design is divided into original painting design, game UI design, and game animation design. Online game program design is divided into game program design.

1. Online game planning designers need to learn: digital game macro environment analysis, digital game advanced planning theory, digital game creative practice Unity3D project development.

2. The original painting design of online games needs to learn: the basics of hand-painting, the art foundation of original painting, the setting of animal characters, and the setting of scenes.

3. Online game UI design needs to learn: UED overview, GUI design foundation, web page UI design, software UI design, game UI design.

4. Online game programming needs to learn: game programming, algorithm and data structure, Win32 programming, game mathematics and intelligent application, 2D game technology and application.

Game development engineer master content:

1. Understand and work on the overall design of the game.

2. Cooperate with the main program to complete the design, development, debugging and other technical support of the game structure and major functions.

3. Responsible for the design and development of game development tools and operation and maintenance tools.

4. Complete the writing and optimization of the game server-side module code and related documents, and conduct unit testing on the completed code.

5. Manage and maintain the production and operation of the game platform.

6. Cooperate with other team members to promote game improvement and innovation.

Responsible for client architecture design, module division, editor planning, engine maintenance and personnel division. Responsible for the integration of the game client and the company's technology platform. Coordinate the relationship with server-side, planning, art and other technical departments of the company.

 

Take a look at the basic skills of game development:

Mathematical basis: It depends on what you are doing. Generally, there is less upper-level logic to consider high-level mathematics such as integrals. But if you want to engage in graphics, matrix linear algebra, advanced mathematics must have a certain foundation

Algorithms: Common sorting and searching need to be understood and mastered. Further common ones are divide and conquer, greedy, dynamic programming, and sometimes it is also possible to learn and sell now. In addition, in addition to these basic algorithms, there are still many algorithms that are not commonly used in other fields in the game field, such as octree search, collision detection, and A*. There are also some very special cases that require developers to find suitable algorithms by themselves.

C++ (C#): basic syntax, templates, proxies, namespaces, const, inheritance, memory structures, virtual tables, references, assertions, macro definitions, etc.

Data structure: First of all, master data structures such as linked lists, arrays, queues, heaps, stacks, graphs, trees, etc., and then various algorithms for sorting, searching, and traversal. After mastering these, you can quickly become familiar with stl or similar basic library primitives, and you can choose the appropriate data structure more accurately when using it

Design patterns: Generally speaking, we need design patterns to quickly build game logic frameworks, such as the various logic systems mentioned above. And it is also necessary to understand the design ideas of each module of the engine through design patterns.

Have a certain in-depth understanding of each module of the engine: Needless to say, let’s look at the game engine architecture. If you don’t understand the written code, various problems (such as synchronization problems) often occur, and various functions of the editor cannot be used well.

Memory management: Maybe many engines or languages ​​have already handled memory for you as much as possible, but you will inevitably need to handle it yourself in some special cases. Memory pool technology, the use of various C++ new, you have to know.

Familiarity with development tools: This does not mean that you are only proficient in using a certain engine, and you have a certain understanding of the content related to different engines, and you can quickly learn by analogy.

Compilation principle, linking, and third-party libraries: often encounter various linking errors, compilation errors, and packaging errors, which require certain relevant knowledge and experience to solve these problems.

Performance analysis and performance optimization: mainly in three aspects - memory, CPU, GPU. The starting points include rendering batches, rendering instantiation, cloth optimization, network synchronization data volume, physical overhead, etc., resource loading optimization (package merging), cropping, sound file loading, LOD, art resource production standardization, etc. When debugging, you can use the built-in tools of the engine, and for further details, you can use Intel's VTune tool

Understanding of games: Although you can participate in game development without playing games, people who have played games still have an advantage. The most obvious thing is that people who have played games will have more thoughts and opinions on games, and are also used to actively learning the techniques and advantages of other games. (Procedure is like this, planning is even more so)

Development experience: This is relatively broad, and it is difficult to explain it in a few words.

I often hear people say that game development is complicated:

 

In summary, the content is too complicated and the subdivisions are too deep. Simply citing two technical directions (rendering, AI) is enough for you to go deeper. There are also some modules, which are not too difficult to say, but the content is quite complicated, and the requirements change frequently. If they are not handled well, they are like a bottomless pit~

Then we simply make a summary of the game module:

Game logic module system: the core of gameplay, including logic systems such as various weapons, status, skills, backpacks, and battles

Animation module system: state machine, Montage, animation fusion, IK, etc.

Physics module: give physical characteristics to objects that need interactive performance (including rigid bodies, fluids, particles, cloth, etc.), adjust various parameters such as gravity, adjust the force in interaction, and adjust physical constraints

AI module: AI navigation, interaction with players, etc. Many functional systems of players also need to be used by AI. In a deeper level, you can consider integrating machine learning-related content

UI module: building various interface frameworks (backpacks, pinching faces, maps, etc.), is very time-consuming and energy-consuming, and needs to be continuously adjusted in the later stage

Rendering module: the core of client-side performance, needless to say, the content is very rich and deep

Network module: underlying architecture, synchronization, network connection

Scene module: including terrain, levels, vegetation, character management and optimization, etc.

Input and input processing module: convert player input processing into logic, need to pay attention to combination keys, input method switching, etc.

Game login and update: Generally, this is done by a dedicated tool group, such as our common game login tools, online updates, etc.

In addition to the network, it basically requires the participation of art, planning, and programming

 

Is game development just writing logic code?

Of course, not~~~ The game is also a software project, and it is a project with extremely frequent changes in requirements. When you jump out of the low-level logic programmer, you will find that you still have a lot of things to do.

for example:

Version control: generally use git or svn

Storage and serialization (such as protobuf): The game archives of stand-alone players need to be serialized. The synchronization system in the game also needs to be built by serializing objects

Anti-cheat: To ensure the fairness of the game, various verification measures are performed on the general server. This thing is really not easy and troublesome. There are really not many people around who know it

Multi-thread optimization: generally used for rendering, physics, network synchronization, etc., to reduce overhead and increase cpu utilization

Database: Any data that needs to be stored in the database can be stored locally. What database should I choose? Will there be a merge of game servers and databases in the future? How to deal with the merged key?

Deployment and operation of CDN/server: This is also very complicated, and you need to consider the cost and want to accommodate more players (online games). Sometimes you may need to use CDN technology to optimize network synchronization. In addition, you must also consider issues such as cost to decide to rent Cloud server or physical high-performance server

Realize network penetration: For games where players open their own rooms, we need to provide a means of network penetration so that two players on the intranet can link and communicate. Sometimes, the network penetration technology platform will provide it, and there is no need to invent the wheel yourself.

Use performance analysis tools: As mentioned earlier, performance optimization, before optimization, we need various tools to help us find bottlenecks that affect game efficiency (such as VTune)

 

Configuration: Where is the data that requires a lot of planning and configuration stored? configuration file? XML? This requires building a small system (or provided by the engine)

Sound data processing: general engines provide basic music and sound effect processing, but some engines process audio more deeply and have better effects

Platform docking: Games need to be published on different platforms. This platform not only refers to hardware platforms (Android, iOS, PS4, PC, XBOX) but also includes various software platforms (various application stores, such as Steam on PC, WeGame. Android The application treasure on the Internet, various software housekeepers, etc.) This process is actually quite cumbersome, and some platforms have very strict audits, and you need to accumulate a certain amount of experience to quickly process related content

Internationalization and localization: In simple terms, different countries have different language versions. If your game is not only sold to the United Kingdom and the United States, you have to face localization, and there are many pitfalls

Log system: There must be many bugs in the development and operation of the game, and you can’t debug it on the player’s computer. How to quickly locate bugs, the log system is very effective

Debugging and maintenance: breakpoint debugging during development (most effective), log debugging, dump debugging, console debugging, visual debugging (drawing specific geometry in the scene), screenshot recording debugging (generally used to debug rendering, animation, etc.)

Log debugging during the online period, the server can use dump debugging, or find a way to transfer the client dump to the server (make a built-in automatic collection client dump program), administrator GM debugging (very important, can avoid restarting the server)

Bug Handling: Bugs with serious losses Sometimes bugs that have caused serious losses to players (such as players investing a lot of time and money) cannot be changed and cannot be repaired in time. If you want to make up for the players, you can use the GM to compensate the players.

Game crash bugs need to be repaired and updated as soon as possible after debugging all bugs with a high probability of occurrence two days before the game goes live

Script: simple logic code, hot update

Packaging pipeline, package size optimization, package multi-layer recursive reference optimization, etc.: what processing is required for the entire project from compilation to configuration to packaging, which configurations should be paid attention to, etc.

Tool development: develop specific tools for special needs to improve the development efficiency of programs, art, and planning

Of course, the above is far from enough to cover everything in game development

And learning anything requires a process, we don't need to master so many things at the beginning. It is possible to become an excellent game developer over time

Guess you like

Origin blog.csdn.net/V13807970340/article/details/130624808