Click here to Skip to main content
14,698,806 members
Articles » Languages » C / C++ Language » Beginners
Posted 21 Sep 2013

Tagged as


1 download
4 bookmarked

The Rapid Development of the Game Server

Rate me:
Please Sign up or sign in to vote.
1.00/5 (1 vote)
21 Sep 2013CPOL
Use XML to configure a database server


Many people are obsessed with the game, and as a developer, like their own games nature is not in the minority. But the development of a bit of the scale of the game, in addition to the main game logic, also needs a lot of data to be preserved. Now popular architecture is a data storage module separately into a service, and the front end through the socket communication. Socket is a popular course completion port technology. But the completion port is the realization of a basic data transceiving, truly, still needs to define various communication protocols. Said communication protocol that it is necessary to mention the Google protobuf protocol. Google protobuf is the Google open a network communication protocol used for encoding and decoding tool library, use it to define the format, you can define a field protocol, by its own compiler generated code file for decoding (can generate many different language files). In simple terms, protobuf is the message content you want to send, efficient serialization and deserialization.

To summarize the above nonsense means: the game must use the completion port +google protobuf so that it will not appear too backward. ODBC API interface and access to the database, these constitute the basic technology of game background services under window. When these conditions are available, you can follow the prescribed order of the writing process. Of course, the formal start of architecture design documentation also needs to write before, but in the amateur game, some steps may face. Here are the steps:

  • The first step is to demand (game) sorting data to save, this step, to design a table structure and some storage process.
  • The second step is to communicate with the front end of the game logic module developers, define the communication protocol, which is to write protobuf documents. At the same time, Google comes with a tool to generate the corresponding.H and .Cc files (protobuf also supports other languages).
  • The third step is to start writing code. Write code for it is nothing more than a package the completion port, and database access interface. After all the interfaces are sealed ends, next is the strength to live. According to a protobuf packet format into a SQL statement, it will execute after the write back a response packet (protobuf).

The above is a game program to process. So how to achieve rapid development?
The answer is, to be fast, be sure to make full use of network resources, to see what can be brought to use. Cost Niang, find Valley brother, check the open source, you will soon discover, the completion port, the online ODBC API that the interface has a good package, the direct use of it. Google protobuf is open source directly to the official website. Things are looking after, will they fight a piece of it, these two or three days. And the database design and the protoBuf agreement prepared, as long as your game is not very complicated, still in the one or two day make. Then in the preliminary set architecture the last message ID switch and then, remove the protobuf package, spliced SQL statement? If you had OUT, write the code to a road, how many days to complete, plus round-trip debugging, changing demand, the whole down, 20 days are few, this is your game needs less complex cases.

It does not do to how to do! Not everybody is doing? Can write protobuf file, write a description of the document, and then use a tool to generate I need code directly?

The answer is, not all right, why? In part because they have to write a description file of XML, and then load the to use this library. Then... the function is realized. Do not believe, do not believe you can download, have a look. Have a look whether achieve a line of code not written a DBServer program.

Wrong place, also does not have a XML description file into .H.Cc tools. If there is such a tool, it belongs to the micro intelligent development. But I think this "compiler" tool will sooner or later.


The database server is a data request, then the SQL statement to query, and returns the result, often time writing this kind of code is very boring, whether this can part abstract. Can you solve the problem only with the configuration file? The answer is yes.

Using the Code

Now talk about how to accelerate the development of the game.
Now suppose you order by the Internet to find the corresponding port complete code, has its own socket code library. So the next step is to refer to the dynamic library. The header file gxddsr.h and zsDDSRDll.lib is added to your project. And then simply write a few lines of code. Before writing it, is what kind of, or take a look at the gxddsr.h interface open, not content, declare three functions, as follows:

//extern int InitDDSR (HINSTANCE _hInstance);
//extern int DDSRMsg (DWORD _dwMsgID, string _Req, string &_Ack);
//extern ReleaseDDSR (void);

Oh. Sell cake, even bank notes are not. Oh, don't worry, that function in the documentation can be found. Following is the extract.


Initialization Function

  • parameters: the _hInstance incoming air, loads an XML file with the same name
//extern int InitDDSR (HINSTANCE _hInstance);

Message Processing Function

parameters that _dwMsgID message ID number. And the corresponding XML (such as MsgItem ID= in "123"), the protobuf message _Req request packet._Ack reply protobuf message package;
return value: >=0 correct execution error; <0; -3000 reached the maximum number of calls, restart the program or use the new version.

//extern int DDSRMsg (DWORD _dwMsgID, string _Req, string &amp;_Ack);

Release Resources Function

//extern ReleaseDDSR (void);

You see, in fact this is not a complex binding interface, remove the middle, we first look at the two, InitDDSR and ReleaseDDSR functions, these two functions in a program to run before, one at the end of the program were to call a line. If your program is an EXE rather than DLL, the initialization function in NULL can.
Read the two functions at intermediate. The DDSRMsg function is really the one you need in your OnRecv event port class or the OnMsg event, it is also in your message processing process, calling this function.

The plan for the zsDDSR.dll upgrade is mainly added data partition function and Redis cache. In addition, the next chapter describes how to configure XML to complete a database service.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Software Developer
China China
No Biography provided

Comments and Discussions

GeneralMy vote of 1 Pin
yimlu21-Sep-13 19:38
Memberyimlu21-Sep-13 19:38 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.