Prj001: Master Server Complex

Author: techlord
Mon. February 4, 2013
Categories: Prj001
  • Overview
  • TCPLink
  • Input/Output Strategy
  • Game Server Control Protocol


TcpLink Classes provide a means to communicate to Master WWW Server (and possibly other Game Servers and Clients) via HTTP. I intend to implement a proprietary HTTP-based Game Server Discovery Protocol (currently titled: prj001net) to handle a Server Registration, Automated Server Location Services, and much more. The implementation of TcpLink is unblocking, thus, can download/upload in the background without interruption to game play. This must also be taking in consideration for coordinating  level loading, etc.

This network operation is desired to acquire media & data files from Master WWW Server and write to memory and localdisk to support Updates, Downloadable Content Add-on. However, in UDK  reading/writing data to localdisk limited for security, anti-hacking, and to prevent malicious intent. I have yet to find a means to read/write raw binary data to/from cached objects (media) .

Data Input/Output:


  1. Disk
  2. Memory
    • Read
      1. Cached Data from TcpLink HTTP Request/Response ASCII or Binary
    • Write
      1. TBD


  1. Disk
    1. TcpLink HTTP Request/Response
  2. Database
    • Read
      1. TcpLink HTTP Request/Response

Reading/Writing data with UDK :

  1. Writing to localdisk from within UDK.   Solutions:
    1. Native means to Saving/Loading Object

      • Engine.uc:  BasicSaveObject/BasicLoadObject – Even though it’s mentioned only on a mobile page, it works perfectly on the PC as well, giving you the added advantage of having a nice multiplatform way to save and load (and I’d presume that whenever Android and Mac OS X support comes out, these functions would work on them, whereas a DLL obviously won’t) . Ref#1
    2. Savegames Are Possible In The UDK written to localdisk in UDKSapitu.ini
    3. Content Packs. Content Packs (Adventure Packs, Model Packs, Sound Packs) are Self-installing Packages containing media and logic that require manual acquisition.  There are Three actions perform to Content Pack acquisition: Update check, Download, Install. Pending- These Actions can be configured to execute automatically or manually. Automatic Actions can each be configured to execute upon startup, exit, or during gameplay (in background). Content availability is randomly accessible, to compensate, an Asset Proxy System can be implemented in-game to use available assets that are suitable to act as a replacements, until content is acquired. Note: Content Packs present a monetize opportunity as Content Packs could be made available for purchase.
    4. Download from Remote and Cache to Memory on Demand. Pros: Currently possible for SaveGameStates. Cons: Lengthy acquisition; long Loading Screens; Assembly Files Require formatted data JSON (tut), *.xml, Lua, or Custom Parsers (Unrealscript or DllBind) to store Http Body data into UDK Objects (cache).
    5. Server Packages. Part of the Network Replication process, Game Server can allow Clients to download Content Packages. Taking this into consideration, a Master Game Server will be implemented to distributed FREE Content Packs (Purchasable Content Packs will require manual download).  The Master Game Server complements the Master WWW Server, this is now known as the Master Server Complex. From this point forward, the codename for the Master Game Server is FRAKTAL0, as credit to FraktalZero of UDK Forums for his suggestion.
    6. DllBind to write Windows DLL. Pros: Read/Write to disk with IOStream STL. Cons: Not cross platform compatible. Ref#1
    7. Hack: Complementary HTTP Utility  or Service that executed to read/write files to disk. Communicate thru Sapitu Config files?
    8. Hack: Devise method to use Logging functions to write data files.
  2. Obtaining cached data for media, etc to output ASCII/Binary format for writing

Input/Output Strategy

Strategy: Acquisition|Source|Storage|Access

    1. Content Packs
      • Strategy: Manual|HTTP Remote (QA approved) |LocalDisk|Write
      • Type: Media, Logic, Data Files
      • Formats: Binary|Ascii
      • Purpose: Provide self-extracting/Installing content package for media {model parts packs/skin packs, music}/logic/data{dialogue} files to localdisk, loaded during Game Level Load.  Will implement Asset Proxy Pattern.
    2. ServerPackages
      • Strategy: Automatic|UDK Remote (QA approved) |LocalDisk|Write
      • Purposes: Uses Master Game Server to download Server Packages.
    3. GameMaster Save/Load
      •  Strategy: Manual+Automatic|HTTP Remote Database|Memory|Write+Read
      • Type: Assembly, Dialog, Logic
      • Formats: Ascii SQL
      • Purpose: Design-time. Game master can pre-create or create adventure in real-time during game play. This provides a mechanism Queried/Update to MWS Database Game-world Construction Data  maintain Persistent Data.
    4. Game-world Construction Data
      • Strategy: Automatic|HTTP Remote Database|Memory|Read
      • Type: Assembly, Dialog, Logic
      • Formats: Ascii SQL
      • Purpose: Play-time. This data is queried from MWS Database and formatted on demand for Game construction and Modular Prefabs Assembly. Uses Parser to store HTTP Body into Objects or execute UnrealScript functions to spawn and assemble Game-world.
    5. Player Game Save/Load
      • Strategy: Manual+Automatic|HTTP Remote Database|Memory|Write+Read
      • Formats: Ascii SQL
      • Purpose: Play-time. Queried/Update to MWS Database (Sapitu Character and Inventory) maintain Persistent Data.


Notice: link_pages is deprecated since version 2.1.0! Use wp_link_pages() instead. in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\wordpress\wp-includes\functions.php on line 3853