How often can see a similar "introduction to game development? Master what skills are needed for game development?" Under such a question, interview the generality of game development the skills it takes to make a summary, hope everyone to game development can have a basic understanding of!
game development basic demand is high?
Apes and other programs, want to play a good game developers, foundation is not bad, algorithm, data structures, a basis of language can't be little, of course, in addition to these basic skills, but also have more in-depth understanding of the game, such as see a function can guess or give a ballpark implementation approach,
Have a look at what are the basic game development:
Mathematical basis: according to the content of what you are doing to decide, general logic is less to consider the upper points such as content, but if you want to make graphics, matrix in linear algebra, high number must have a certain strength
Algorithm: common sort, find the need to understand and master, further common and divide and conquer, greedy, dynamic programming, sometimes also can learn now sell now, in addition, in addition to these basic algorithm, there are still A lot of other areas in the field of the game is not commonly used algorithms, such as the octree lookup, collision detection, A *, there are some very special cases need developers to find A suitable algorithm,
C + + (c #) : basic grammar, templates, agent, namespace, const, inheritance, memory structure, virtual tables, references, assert that macro definition, etc.
Data structure: the first is to master list, array, queue, stack, stack, graph, tree data structure, then the various sorting, search, traversal algorithms, such as the mastery of the later can quickly familiar with the basic library of STL or something like the original, more accurate and use it every time you can choose the appropriate data structure
Design patterns: generally speaking, we need to quickly set up the game logic framework design patterns, such as the aforementioned various logical system, but also need through the design pattern to understand engine modules design train of thought, of course, if you want to design the game engine, the more not less the design patterns,
By engine modules must understand: there's no need to say more, watch the game engine architecture again, don't understand write code often appear all sorts of problems (such as synchronization issues), editor functions with bad,
Memory management: may have a lot of engine or language as far as possible to help you deal with the memory, but you need to avoid in some special cases, memory pool technology, the use of a variety of c + + new, may not,
Familiar with development tools: here refers to not only to a certain engine USES skilled, but also for different engine related content have a certain understanding, can quickly instance,
Compilation principle, link, third-party libraries, often will encounter all sorts of link error, compile error, packaging errors, it requires you to have certain knowledge and experience to solve these problems,
Performance analysis and performance optimization: is mainly from three aspects, memory, CPU, GPU, and to start a rendering batch, rendering instantiation, cloth optimization, network synchronization data, physical cost, loading resource optimization (bag), and cutting, sound file loading, LOD, art resources to make standardization and so on, the debug engine can use the built-in tools, further details can use Intel VTune tools (I might have time to write a the use of relevant document)
Although the understanding of the game: don't play games also can participate in the game development, but the person who played the game or have advantages, the most obvious is the person who played the game will have more ideas and opinions on the game, also used to active learning technology with the advantages of the other games, (planning program, especially)
Development experience: this is one of the more broad, hard words say clear, such as your game somehow some bugs, novice totally do not know how to start, and experienced people have all sorts of means to debug and solve, experienced veteran sometimes really is worth N a novice, so that you need to continue to learn and practice,
often listen to other people say the game development is very complex, complicated?
In summary content is too miscellaneous, segmentation and too deep, to name two technical direction (rendering, AI) is your infinite deep enough, there are some modules, is not too difficult, but the complexity of the content, requirement changes frequently, processes is not good as the bottomless ~
So we do a simple game module summary:
Game logic module system: the core gameplay, including all kinds of weapons, status, skills, backpack, combat logic system such as
The animation module system: the state machine, Montage, animation, integration, IK etc.
Physical modules: need interactive performance object with physical characteristics (including rigid bodies, fluid, particles, cloth, etc.), adjust the size of various parameters, such as gravity, adjust the size of the interaction force, adjust the physical constraints
Module: AI AI navigation, and player interaction, players also need to give the AI to use many of the functions of system, at a deeper level of machine learning can be considered relevant content into
The UI module: build all kinds of interface framework (backpack, pinched face, maps, etc.), very time consuming and effort, the late need to constantly adjust the
Rendering modules: core client performance, needless to say, the content is very much and deep
Network module: the underlying architecture, synchronization, network connection
Scenario modules: including terrain, checkpoints, vegetation, role management and optimization, etc.
The input and input processing module: converting player input processing logic, need to be aware of key combination, switch input method, etc.
Game login and update: this is a special set of tools to do, such as the kinds of games we common register, online update,
Here basically need art, in addition to the network planning, program participation and cooperation,
game development is just write logic code?
Not ~ ~ ~ the game, of course, is also a software project, is a demand for change is very frequent project, when you jump out of the underlying logic programmer, you will find that you have a lot of things to do,
For example:
Version control: general use git or SVN
Storage and serialization (such as protobuf) : single player of the game to need through the serialization, file synchronization system also need through serialized objects in the game to build
Games against plugins: fairness, generally on the server to do all kinds of checking measures, this thing is really not easy, and trouble, few people really understand. I tell itself is also very hope to have superior
Multithreading optimization: generally used for rendering, physics, network synchronization and so on, to reduce costs, increase CPU utilization
Database: what data to existing in the database, what is the local can, should choose what database? Will appear after the game and take database merger? Merge the Key how to deal with?
CDN/server deployment and operation such as: this is very complex, and to consider the cost and want to hold more players (online), sometimes may need to use the CDN technology to optimize network synchronization, in addition to consider cost issues to decide whether to rent the cloud server
Implement network penetration: his room for a player games, we need to provide network means of penetration, can let two players link and communication network, sometimes, Internet penetration technology platform will provide, do not need to make the wheels,
The use of performance analysis tools: mentioned the performance optimization, we need to optimize all kinds of tools to help us find impacts the efficiency bottleneck (such as VTune)
Configuration: need a lot of planning configuration data stored in where? The configuration file? XML? The need to build a small system (or engine)
Voice data processing: general engine provides basic music and sound effects, but some engines for audio processing more in-depth, more effective
Docking platform: the game needs to be released to a different platform, the platform not only refers to the hardware platform (Android, iOS, PS4, PC, XBOX) also includes a variety of software platform (all kinds of app store, such as the Steam on the PC, WeGame, Android applications of treasure, all kinds of software housekeeper, etc.), the process is quite complicated, there are some platform audit is very strict, need to accumulate some experience to fast processing related content
Internationalization and localization: simply put, is the language version is different in different countries, if your game is not only sold to the British the United States, you will have to face localization, pit many
Logging system: development and operation of online games must have a lot of bugs, you can't go to players on the debugging computer, how to quickly locate the bug, logging system is very effective
Debugging and maintenance:
Transplanter breakpoint debugging (most effective), log debug, dump debug, debug console, visual debugging (within the scene to draw certain geometry), sectional focus, screen debug (generally used for debugging rendering, animation, etc.)
Online issue log debug, the server can use the dump debugging, can think of some way to send dump for the client to the server (doing a built-in dump automatically collect client program), the administrator GM debugging (very important, can avoid to restart the server)
Bug:
Severe loss of bug has happened sometimes players serious loss of bugs (such as players spend a lot of time and money) can't change, and not repair in time, want to make up for the player, can give the player compensation by GM,
Game crashing bugs need to be in the online game two days before, the probability of all the bugs by Dump debug repair and update as soon as possible after
Script: simple logic code, hot update
Packaging production line, optimizing the size of the package, package of multi-level recursive reference optimization: the whole project from the compilation to configuration and packaging need to deal with, what to pay attention to what configuration such as
Tool development: according to special requirements for developing specific tool to improve the program, the fine arts, planning the development efficiency of
, of course, the above content is far from enough to cover all contents of game development, I will continue to expand in behind the time to study, and learn everything needs a process, we don't need to master so many things from the start, accumulate over a long period, we may be called a good game developers