Study Notes (12): A complete summary of game development

Summary of game modules:

  • **Game logic module system: **Logic system of various weapons, states, skills, backpacks, battles, etc.
  • **Animation module system: **State machine, Montage, animation fusion, IK, etc.
  • **Physics module: **Give physical properties to objects that need interactive performance (including rigid bodies, fluids, particles, cloth, etc.), adjust various parameters such as gravity, adjust the size of interaction forces, and adjust physical constraints
  • **AI module: ** AI navigation, interaction with players, etc. Many of the player's functional systems also need to be used by AI. For 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 adjusted continuously later
  • **Rendering module: **The core of client performance, needless to say, the content is very rich and deep
  • **Network module: **Underlying architecture, synchronization, network connection scenario module: including terrain, levels, vegetation, role management and optimization, etc.
  • **Input and input processing module: **Convert player input processing into logic, the key combinations, input method switching, etc. need to be paid attention to
  • **Game login and update: **Generally, this is done by a special tool group, such as our common game login devices, online updates, etc.

In addition to the Internet, art, planning, and procedures are basically required for joint participation and cooperation.


**Internal power: **

  • **Mathematics foundation: **Decision based on what you have done. Generally, the upper-level logic is less to consider the high number content such as points. But if you want to do graphics, matrix linear algebra, high numbers must have a certain foundation
  • **Algorithm: * Common sorting and searching need to be understood and mastered. Further common ones are divide and conquer, greedy, and dynamic programming. Sometimes it is also possible to learn and sell now. In addition to these basic algorithms, there are still many areas of the game in other areas less commonly used algorithms, such as octree find, collision detection, A . There are also some very special situations that require developers to find suitable algorithms by themselves.
  • **C++: **Basic syntax, proxy, namespace, const, inheritance, memory structure, virtual table, reference, assertion, macro definition, etc.
  • **Data structure: **First, master data structures such as linked lists, arrays, queues, heaps, stacks, graphs, trees, etc., and then various sorting, search, traversal and other algorithms. After mastering these, you can quickly become familiar with stl or similar basic libraries, and you can more accurately select the appropriate data structure when using it.
  • **Design mode: **Generally speaking, we need design mode to quickly build the game logic framework, such as the various logic systems mentioned above. And also need to understand the design ideas of each module of the engine through design patterns. Of course, if you want to design a game engine, you can't miss the design pattern.
  • **There is a certain in-depth understanding of the various modules of the engine: ** Needless to say, let’s take a look at the game engine architecture. If you don’t understand the written code, there are often various problems (such as synchronization issues), and various functions of the editor are also Not good use.
  • **Memory management: **Maybe many engines or languages ​​have done their best to deal with memory for you, but you will inevitably need to deal with it yourself in some special situations, memory pool technology, and the use of various C++ new.
  • **Familiarity with development tools: **This does not mean that you are only familiar with a certain engine, and you have a certain understanding of the content of different engines, so you can quickly learn by analogy.
  • **Compilation principle, link, third-party libraries: **We often encounter various link errors, compilation errors, and packaging errors. This requires you to have certain relevant knowledge and experience to solve these problems.
  • **Performance analysis and performance optimization: ** CPU and GPU, rendering batches, rendering instantiation, cloth optimization, network synchronization data volume, physical overhead, etc., loading resource optimization
  • ** 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 have more ideas and opinions on games, and they are also used to actively learning the techniques and advantages of other games. (This is the procedure, especially the planning)
  • **Development experience: **This is relatively broad, it is difficult to explain clearly in a few words. For example, there are some bugs in your game inexplicably, novices have no way to start, and experienced people will have various means to debug and solve them. Sometimes experienced veterans are really worth N novices, so this requires continuous learning and practice.

**Technical point: **

  • **Storage and Serialization (protobuf) **
    How to save games for single player players? Build a basic TCP/UDP communication system through serialized sockets
  • **Anti-plugging** to
    ensure the fairness of the game, various verification measures are done on the general server
  • **Multi-threading** is
    generally used for rendering, physics, network synchronization, etc., to reduce overhead and increase cpu utilization
  • Packing pipeline, package size optimization, package multi-layer recursive reference optimization, etc.
  • **Database**
    What data must be stored in the database, and what is stored locally. What database should I choose? Will there be game service after that?
  • **CDN/server deployment and operation, etc.**
    This is also very complicated, and you have to consider the cost and want to accommodate more players (online games). Sometimes you may need to use CDN technology to optimize network synchronization, and also consider cost and other issues To decide whether to rent a cloud server

**Other: **

  • **Version control**
    generally use git or svn
  • **Performance analysis tool**
    mentioned earlier performance optimization, we need various tools to help us find the bottleneck that affects the efficiency of the game before optimization
  • **Configuration**
    Where is the data that needs 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 have more in-depth audio processing and better results
  • **Platform docking**
    Games need to be published to different platforms. This platform not only refers to the hardware platform (Android, iOS, PS4, PC, XBOX) but also includes various software platforms (various application stores, such as Steam on PC, WeGame. Android application treasure, various software housekeepers, etc.) The process is actually quite cumbersome. Some platforms have very strict audits and require accumulation of certain experience to quickly process relevant content.
  • **Internationalization and Localization**
    Simply put, the language versions of different countries are different. If your game is not only sold to the United Kingdom and the United States, you have to deal with localization, and there are many pitfalls.
  • **Log system**
    There must be a lot of bugs in the development and operation of the game, and you can’t go to the player’s computer to debug, how to quickly locate the bug, the log system is very effective
  • **Debug**
    **Development period** Breakpoint debugging (most effective), log debugging, dump debugging, console debugging, visual debugging (drawing specific geometry in the scene), screenshot recording debugging (usually used for debugging) Rendering, animation, etc.)
    **Online period** Log debugging, the server can be used for dump debugging, or a way to transfer the client dump to the server, the administrator GM debugging (very important, to avoid restarting the server)
  • **Bug handling**
    Sometimes the bugs that have occurred cannot be changed or fixed in time. If you want to make up for the player, you can compensate the player through GM
  • **Script**
    Simple logic code, hot update
  • **Tool development**
    Improve the development efficiency of art planning

Reposted from the link (please indicate if reprinted): http://blog.csdn.net/u012999985/article/details/79090524

Guess you like

Origin blog.csdn.net/qq_43801020/article/details/109019913