In Part 1 of this article, I defined non-blocking transaction processing in the game client. In Part 3, the cheating exploits discussed in Part 2 are addressed. First, I adapt the common database technique of resource locking to the Potential Engine (the MMORPG game server). Then, I introduce the concept of resource isolation, which potentially allows for server-side concurrency and distributed load balancing.
To recap the previous discussion, it may be desirable to process server-side transactions concurrently. However, this may result in various exploits and cheats, if the server follows a faulty parallel processing paradigm.
When many threads may be processing a store of data, it is imperative that transactions are performed atomically. That is, each logical action (even if executing concurrently with other actions) must access and manipulate required pieces of data without interference from other transactions. This is the goal of the concurrency model: to allow actions to execute in parallel without manipulating data in a conflicting way.
The common database approach is to use resource locking. In a relational database, locking occurs on tables, and/or rows, and/or cells. In the Potential Engine, content objects are the resources. In this context, each action knows the content objects it needs to transact the action. The engine obtains an exclusive lock on each before any data is read/manipulated. This ensures no two actions will interfere with each other’s data.
This approach to resource locking, as defined here, is lacking in many details, such as deadlock avoidance. Notice that this technique is very low-level (involving individual content objects). This model also implies a system-wide, centralized database.
Next, I submit for your consideration, a concept of resource isolation. This approach to concurrent transaction processing operates at a higher level than resource locking. In the context of a game server, resource isolation involves defining what content is associated, according to game rules. This forms clusters of content that are mutually isolated. Each cluster can operate in parallel with all other clusters.
For example, an MMORPG may define each cave as a geographic region, in which all gameplay is isolated from the rest of the online world. Then, each cave can be considered a cluster. Minimally, this model allows a game server to process transactions sequentially within each cluster, but process all clusters concurrently. Of course, resource locking can be utilized within each cluster to improve internal throughput.
Furthermore, since the content for a cluster has been isolated, that content can reside in a completely separate processing context. That is, resource isolation also defines a model of distributed data processing. This allows, for example, a game’s data to be managed by a server farm rather than one centralized server/database.
The resource isolation technique is more theoretical, whereas the resource locking approach is a rather well-defined approach. These resource isolation concepts are not unique, but I believe further formalization and definition of the concept is important to understanding the nature of distributed software design. Is that an unusual hobby?


