World of Warcraft from the perspective of programs and databases

Source: Internet
Author: User
Tags blizzard

In the past few days, I reviewed wow and analyzed the General System of wow based on the database knowledge I learned recently and my own knowledge. Of course, I only look at the shadows of a leopard. I hope that heroes who have some knowledge of Wow can give me and those who know wow some advice, so that the world can better understand wow, it enables Chinese games to learn (not plagiarize) and surpass wow.

I don't know where the idea comes from, so I thought of the wow database structure andProgramSo, let's take a look.
First think of: What OS and database is used by game server

At first, we guessed it was UNIX/BSD, and the database was Oracle.
This method is suitable for large online games such as wow because of its massive storage and data volume.

Some key information found on the internet proves that my conjecture is not much different from reality.

The description of 1.9c in a server failure. Only the key parts are listed below.
After receiving the EVA storage alarm email, contact the data center engineer and HP engineer.
Start the fault emergency process at, including the9/HP/blizzard us.
PM Oracle experts join fault emergency handling process
At pm, blizzard database engineers started to analyze fault conditions with Oracle experts.
At, blizzard said that no new news has been received from their admin and DBA, and they are still investigating the fault.

2. Blizzard Database Administrator recruitment requirements
Oracle Database Administrator

The World of Warcraft development team is looking for a self-motivated and knowledgeable IT professional to help administer the wow databases. as the person responsible for handling the database-side of wow pushes and patches, our live team Oracle DBA's job duties wocould include designing, login ing, maintaining, monitoring, benchmarking and troubleshooting Oracle databases.

Blizzard offers a fun, creative, and technically challenging environment with excellent compensation and a full range of benefits.

Responsibilities:

Provide production on-call support.
Maintain and enhance existing databases.
Perform routine database maintenance.
Work with end users to ensure smooth production rolouts and pushes.
Assist in training other employees.
Requirements:

3 + years professional Oracle DBA experience, including Oracle 9i.
Extensive experience with database performance tuning.
Experience working with large databases (> 1 Tb ).
Experience with Oracle RAC and partitioning features.
Proficiency in Linux/UNIX environments including Shell scripting.
Plusses:
Strong knowledge of SQL & PL/SQL.
Familiarity with UNIX tools and shell Scripting
Familiarity with hp eva's and Data Protector.
Passion for video games, including MMORPG's

So the wow server should be hpunix + Oracle

Then I will make some guesses about the wow database. As for whether it is correct or not or the set of conformity levels, I will not learn it.

Mainly divided into the following parts

-Game server:
This is the server in the game, not the server in the physical sense mentioned above. For example, the seven-zone evil spirits, black iron, and garkisen are game servers.

-Game zone:
A game region consists of many game servers. I think it is entirely because of physical reasons that each zone should be physically composed of a server cluster. in this cluster, there are many database instances, each database instance corresponds to a game server.

-Verification System:
In the game, login, queuing, and authentication should all be completed.

-Chat channel:
The chat channel is an independent server, which can be analyzed from the situations where the characters and maps in the game are stuck and the chat is completely unaffected. The Chat cannot send messages offline, therefore, I can arbitrarily think that the Chat Server basically does not operate on the database. At most, some temporary tables are used to save messages when the current processing is not available or the players cannot receive the messages temporarily; or the server saves all chat data to the database to facilitate query of players' behaviors.
In addition, the chat server is independent of all servers, and all game servers in each zone use the Chat Server corresponding to the zone. In this way, the system and database of the server can be specially optimized based on the characteristics of the chat server.

-Copy & battlefield:
Replica & battlefield (hereinafter referred to as replica) I think it should be the same as the chat server and it is an independent server. However, unlike the normal game server, it does not save other map data, only the data of the copy map is saved.
As for how to implement cross-server battlefield, I thought that we should copy the required role data to the replica server and lock the data (tables or rows) in the original server ), when you exit the battlefield, use the data of the replica server to update the original data. We can regard the battlefield as a temporary table in the database and update it to the place where it needs to be saved after processing.
Through the above explanation, we can also understand why the screen needs to be loaded when entering the battlefield. loading the screen is not only a transitional screen, but also carries the loading client resources and communicates with the server for processing; when loading the screen is displayed, the replica server exchanges role data as described above.
Large replicas are different from normal replicas. I think they only change the reset time and copy policy.

-Map
The map is defined in the client resources. To prevent user tampering, BLZ uses mixed naming and check for the resource files and DBC of the map, the reason is that some acceleration plug-ins appeared during wow's Public Beta in China, allowing the role to directly traverse objects that seem impossible to traverse the walls and the surface, which proves that BLZ wants to reduce the server load, most collision detection is performed directly on the client.
Wow's actual map structure is different from what we see in the game. It divides a continent into N small pieces of map data, the client only needs to load all the map blocks near the player's position. The technical details are not analyzed in detail.

-East-West China:
Every mainland China should be an independent database. I think the reason for loading images is that the terrain and materials of the two continents are very different. The client needs to release all resources of the Mainland China first, load the necessary resources of the target mainland, and transfer the data of the role to the target mainland.

-Role:
The Role in the game should be separated into several tables, including the player's attributes, tasks, packages, mailboxes, and banks. Important, such as item packages, mailboxes, and banks, servers write cache data in memory to the database within a short period of time (relative to other data; however, some data that is not very important to the above data takes a long time to be submitted to the database. This also explains why the role's location and task are all in the back-to-archive, but the item is not in the back-to-archive, which also causes the legendary hands to kill.

-Monster:
The prototype mode should be used to generate monsters in the world. Therefore, to save the data of monsters, you need to save the changed values.

-Others:
There are always events in the game, such as visits to the circus of the dark moon, Halloween events, Valentine's Day events, etc. These things should be scalable, as you can imagine, to facilitate the management and expansion of BLZ self-Wow, BLZ should provide tools or script user guides for itself and agents in the server or server cluster management center. I can't guess what the wow script uses. It may be Perl \ Python \ sh. It won't be Lua anyway.

-Behaviors and skills:
Why does wow feel so smooth to play, no other online games seem or are slow to respond, and wow does not communicate with the client all the time? Its main working principle is, the client first processes the user's input and executes the corresponding start animation or processing. The actual display result is displayed only after the server processes the input and returns the result. This is why after the disconnection, the player still performs operations on the role, but cannot obtain the operation results.
Skill and behavior are similar. In fact, many game restrictions are carried out on the client, which is caused by BLZ to reduce the load on the server and reduce the traffic. So, I guess here, as long as the memory address or the correspondingCodeWow can be tampered with in many places. As far as I know, all plug-ins of wow are implemented by violent modification of the memory of the client, and it is very easy to see how to modify network packets, BLZ encryption is still very good :).
 
Basically, I have analyzed so many things. I tried to dig out more things from my own mind. Unfortunately, I still know too little things. I can't help it now.

Note:The above data and comments are purely speculation and speculation. If there are similarities, it is a coincidence!

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.