{"id":236,"date":"2014-12-16T17:37:09","date_gmt":"2014-12-16T17:37:09","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/working-social-game-entities-couchbase\/"},"modified":"2014-12-16T17:37:09","modified_gmt":"2014-12-16T17:37:09","slug":"working-social-game-entities-couchbase","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/working-social-game-entities-couchbase\/","title":{"rendered":"Working with social game entities in Couchbase"},"content":{"rendered":"\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>What\u2019s in a new social game? Fundamentally, a game is an \u201cexperience\u201d built around a series of interactions between the player, the content, and other players. Sure, the concept of the game, the storyline, the characters, and social components all have a huge influence on the game experience. But at the heart of a game\u2019s attraction are the objects in the game world, the mechanics associated with these objects and the rewards offered to players. To power all this virtual activity you need a high-performance and scalable database. <\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>In this blog, I\u2019ll share how Couchbase can be used to power your basic game elements &#8211; <\/span><span>Objects<\/span><span>, <\/span><span>Actions<\/span><span> and <\/span><span>Rewards<\/span><\/b><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><b id=\"internal-source-marker_0.7206992749124765\"><span>Game Objects<\/span><\/b><\/h4>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>When you build an online social game, you typically represent elements that are part of the game world. They are called <\/span><span>game objects<\/span><span> and can be game characters, vanity items, functional items and buffs, etc. These object impacted by events in the game. \u00a0Some examples follow<\/span><\/b><\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table align=\"left\" border=\"1\" cellpadding=\"1\" cellspacing=\"1\">\n<thead>\n<tr>\n<th scope=\"col\">Game Object Type<\/th>\n<th scope=\"col\">Document Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Player<\/td>\n<td>\n<div><b id=\"internal-source-marker_0.7206992749124765\"><span>{<\/span><br><span>&#8220;type&#8221;<\/span><span>: <\/span><span>&#8220;player&#8221;<\/span><span>,<\/span><br><span>&#8220;uuid&#8221;<\/span><span>: <\/span><span>&#8220;35767d02-\u00ad???a958&#8221;<\/span><span>,<\/span><br><span>&#8220;name&#8221;<\/span><span>: <\/span><span>&#8220;DonPinto4540&#8221;<\/span><span>,<\/span><br><span>&#8220;score&#8221;<\/span><span>:<\/span><span>663<\/span><span>,<\/span><br><span>&#8220;level&#8221;<\/span><span>:<\/span><span>4<\/span><span>,<\/span><br><span>&#8220;loggedIn&#8221;<\/span><span>: <\/span><span>false<\/span><br><span>}<\/span><\/b><\/div>\n<\/td>\n<\/tr>\n<tr>\n<td>Item<\/td>\n<td>\n<div><b id=\"internal-source-marker_0.7206992749124765\"><span>{<\/span><br><span>&#8220;type&#8221;<\/span><span>:<\/span><span>&#8220;item&#8221;<\/span><span>,<\/span><br><span>&#8220;name&#8221;<\/span><span>:<\/span><span>&#8220;Axe_e5890c94-\u00ad???11&#8221;<\/span><span>,<\/span><br><span>&#8220;uuid&#8221;<\/span><span>:<\/span><span>&#8220;e5890c94-\u00ad???11c6-\u00ad???&#8221;<\/span><span>,<\/span><br><span>&#8220;ownerId&#8221;<\/span><span>:<\/span><span>&#8220;Dale9887&#8221;<\/span><br><span>}<\/span><\/b><\/div>\n<\/td>\n<\/tr>\n<tr>\n<td>Monster<\/td>\n<td>\n<div>\n<div>\n<div><font class=\"Apple-style-span\" face=\"Arial\" size=\"2\"><b id=\"internal-source-marker_0.7206992749124765\"><span>{<\/span><br><span>&#8220;type&#8221;<\/span><span>:<\/span><span>&#8220;monster&#8221;<\/span><span>,<\/span><br><span>&#8220;name&#8221;<\/span><span>:<\/span><span>&#8220;Goliath9932&#8221;<\/span><span>,<\/span><br><span>&#8220;uuid&#8221;<\/span><span>:<\/span><span>&#8220;d10dfc1b-\u00ad???0412-\u00ad???41&#8221;<\/span><span>,<\/span><br><span>&#8220;hitpoints&#8221;<\/span><span>:<\/span><span>370<\/span><span>,<\/span><br><span>&#8220;experienceWhenKilled&#8221;<\/span><span>:<\/span><span>52<\/span><span>,<\/span><br><span>}<\/span><\/b><\/font><\/div>\n<\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>In Couchbase, JSON documents are used to model game objects and are identified using the document id. For these documents, the <\/span><span>type<\/span><span> field is used to define the type of the object being stored.<\/span><\/b><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><b id=\"internal-source-marker_0.7206992749124765\"><span>Game Actions<\/span><\/b><\/h3>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>As part of game play, players perform <\/span><span>actions<\/span><span> that may lead to the game objects being updated or changed. For example, players can move to different areas of a map, perform actions and earn rewards, and retrieve the coordinates of other players\u2019 that are currently in the game. \u00a0Each such player action translates to viewing, adding, removing or updating documents in the database. \u00a0<\/span><\/b><\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>In reality, social games have multiple players playing concurrently and their actions might impact the same object. As an example, actions performed in a game may require \u201cenergy\u201d and once a player runs out \u201cenergy\u201d, they need to recharge. Items such as speedup and energy packs are pretty common in social games give a quick boost of \u201cenergy\u201d to the player. But the fun comes from competing for the limited number of \u201cenergy\u201d packs in the game. Access to shared game objects needs to be synchronized to avoid conflicts and to maintain a consistent game state. Couchbase Server provides both <\/span><a href=\"https:\/\/www.couchbase.com\/docs\/couchbase-sdk-java-1.1\/couchbase-sdk-java-update-cas.html#table-couchbase-sdk_java_cas-expiry-transcoder\"><span>optimistic<\/span><\/a><span> and <\/span><a href=\"https:\/\/www.couchbase.com\/docs\/couchbase-sdk-java-1.1\/couchbase-sdk-java-retrieve-get-and-lock.html\"><span>pessimistic<\/span><\/a><span> concurrency control. <\/span><\/b><\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>Here\u2019s how to use these concurrency mechanisms. Let\u2019s say two players want to attach the same tree-house at the same time. By using the CAS methods and retry logic, game programmers can guarantee atomic updates of global shared game objects to maintain consistent game state.<\/span><\/b><\/p>\n\n\n\n<p>\u00a0<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><font class=\"Apple-style-span\" size=\"3\"><b id=\"internal-source-marker_0.7206992749124765\"><span>Game Rewards<\/span><\/b><\/font><\/h4>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>Most games have a structure composed of a cycle of actions and <\/span><span>rewards<\/span><span>. Scoring systems are used in games to allow players to measure how well they have mastered the game and also to make it a little addictive. A leaderboard is typically used to record players with top scores.<\/span><\/b><\/p>\n\n\n\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/www.couchbase.com\/blog\/sites\/default\/files\/uploads\/all\/leaderboard_games.jpg\"><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>Game leaderboards can be created in Couchbase Server 2.0 using <\/span><a href=\"https:\/\/www.couchbase.com\/docs\/couchbase-manual-2.0\/couchbase-views.html\"><span>views<\/span><\/a><span>. A <\/span><span>view<\/span><span> in Couchbase is written using map\/reduce functions that generate an index. For the JSON game objects shown in the game objects section, a map function (as shown below) can be used to generate a list of player scores. If the jsonType field of the document is of type <\/span><span>player, <\/span><span>we emit the score of the player and the id.<\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>function<\/span><span> <\/span><span>(<\/span><span>doc<\/span><span>)<\/span><span> <\/span><span>{<\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>\u00a0<\/span><span>if<\/span><span> <\/span><span>(<\/span><span>doc.<\/span><span>jsonType<\/span><span> <\/span><span>==<\/span><span> <\/span><span>&#8220;player&#8221;<\/span><span>){<\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>\u00a0\u00a0\u00a0emit<\/span><span>([<\/span><span>&#8220;Score&#8221;<\/span><span>,<\/span><span> \u00a0doc.<\/span><span>score<\/span><span>]<\/span><span>,<\/span><span> doc._id<\/span><span>)<\/span><span>;<\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>\u00a0<\/span><span>}<\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>}<\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>The map function above can be used to create a leaderboard of sorts. Well, it depends on how we query it. Views can be queried using the REST API or using other SDKs such as PHP.<\/span><\/b><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p dir=\"ltr\"><b id=\"internal-source-marker_0.7206992749124765\"><span>To <\/span><a href=\"https:\/\/www.couchbase.com\/docs\/couchbase-manual-2.0\/couchbase-views-querying-rest-api.html\"><span>query the view using REST<\/span><\/a><span> you can use the following curl command &#8211; <\/span><\/b><\/p>\n<\/li>\n\n<\/ol>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>curl -X GET -H &#8216;Content-Type: application\/json&#8217; <\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>\u2018https:\/\/<\/span><span>bucketname<\/span><span>:<\/span><span>password<\/span><span>@<\/span><span>localhost<\/span><span>:8092\/<\/span><span>bucketname<\/span><span>\/_design\/<\/span><span>designdocname<\/span><span>\/_view\/<\/span><\/b><\/p>\n\n\n\n<p><b><span>viewname<\/span><\/b><b id=\"internal-source-marker_0.7206992749124765\"><span>?<\/span><\/b><b><span>descending=true&amp;connection_timeout=60000&amp;limit=10&amp;skip=0<\/span><span>\u2019<\/span><\/b><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p dir=\"ltr\"><b id=\"internal-source-marker_0.7206992749124765\"><span>To query the view using PHP you can use the code snippet as shown below and print out the top 10 player scores &#8211; \u00a0<\/span><\/b><\/p>\n<\/li>\n\n<\/ol>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>\/* Setup couchbase connection object *\/<\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>$lbview<\/span><span> <\/span><span>=<\/span><span> <\/span><span>$cb<\/span><span>-&gt;<\/span><span>getView<\/span><span>(<\/span><span>&#8220;<\/span><span>bucketname<\/span><span>&#8220;<\/span><span>,<\/span><span> <\/span><span>&#8220;<\/span><span>viewname<\/span><span>&#8220;<\/span><span>)<\/span><span>;<\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>$apage<\/span><span> = <\/span><span>$lbview-&gt;<\/span><span>getResult<\/span><span>(<\/span><a href=\"https:\/\/www.php.net\/array\"><span>array<\/span><\/a><span>(<\/span><span>&#8220;descending&#8221;<\/span><span> <\/span><span>=&gt;<\/span><span> <\/span><span>true<\/span><span>))<\/span><span>;<\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>$rowCtr<\/span><span> <\/span><span>=<\/span><span> 0;<\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>foreach<\/span><span>(<\/span><span>$apage<\/span><span>-&gt;<\/span><span>rows<\/span><span> <\/span><span>AS<\/span><span> <\/span><span>$row<\/span><span>)<\/span><span> <\/span><span>{<\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>\u00a0<\/span><span>if<\/span><span>(<\/span><span>$rowCtr<\/span><span> <span>9<\/span><span>)<\/span><\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>\u00a0{<\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>\u00a0\u00a0<\/span><a href=\"https:\/\/www.php.net\/printf\"><span>printf<\/span><\/a><span>(<\/span><span>&#8220;Score <\/span><span>%s<\/span><span> for user <\/span><span>%s<\/span><span>.<\/span><span>n<\/span><span>&#8220;<\/span><span>,<\/span><span> <\/span><span>$row<\/span><span>-&gt;<\/span><a href=\"https:\/\/www.php.net\/key\"><span>key<\/span><\/a><span>[<\/span><span>1<\/span><span>]<\/span><span>,<\/span><span> <\/span><span>$row<\/span><span>-&gt;<\/span><span>value<\/span><span>)<\/span><span>;<\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>\u00a0\u00a0\u00a0<\/span><span>$rowCtr = $rowCtr + 1;<\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>\u00a0\u00a0}<\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>\u00a0\u00a0\u00a0<\/span><span>else<\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break;<\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>}<\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>Final Thoughts<\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>There\u2019s a bit of application code that has to occur here to translate the mapreduce view output into a useful format but in general crankin\u2019 out a leaderboard using Couchbase is super easy. I hope this helps someone utilize the new features of Couchbase Server 2.0 (views). For a more detailed look at views, see the docs : https:\/\/www.couchbase.com\/docs\/couchbase-manual-2.0\/couchbase-views.html <\/span><\/b><\/p>\n\n\n\n<p><b id=\"internal-source-marker_0.7206992749124765\"><span>Game On!<\/span><\/b><\/p>\n","protected":false},"excerpt":{"rendered":"<p>What\u2019s in a new social game? Fundamentally, a game is an \u201cexperience\u201d built around a series of interactions between the player, the content, and other players. Sure, the concept of the game, the storyline, the characters, and social components all have a huge influence on the game experience. But at the heart of a game\u2019s [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":18,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[35],"class_list":["post-236","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.6 (Yoast SEO v27.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Working with social game entities in Couchbase - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/ko\/working-social-game-entities-couchbase\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Working with social game entities in Couchbase\" \/>\n<meta property=\"og:description\" content=\"What\u2019s in a new social game? Fundamentally, a game is an \u201cexperience\u201d built around a series of interactions between the player, the content, and other players. Sure, the concept of the game, the storyline, the characters, and social components all have a huge influence on the game experience. But at the heart of a game\u2019s [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/working-social-game-entities-couchbase\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-16T17:37:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Don Pinto, Principal Product Manager, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Don Pinto, Principal Product Manager, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/working-social-game-entities-couchbase\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/working-social-game-entities-couchbase\\\/\"},\"author\":{\"name\":\"Don Pinto, Principal Product Manager, Couchbase\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/eb130a1e0278989e089a7fbbf8bc754c\"},\"headline\":\"Working with social game entities in Couchbase\",\"datePublished\":\"2014-12-16T17:37:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/working-social-game-entities-couchbase\\\/\"},\"wordCount\":815,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/working-social-game-entities-couchbase\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/working-social-game-entities-couchbase\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/working-social-game-entities-couchbase\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/working-social-game-entities-couchbase\\\/\",\"name\":\"Working with social game entities in Couchbase - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/working-social-game-entities-couchbase\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/working-social-game-entities-couchbase\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2014-12-16T17:37:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/working-social-game-entities-couchbase\\\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/working-social-game-entities-couchbase\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/working-social-game-entities-couchbase\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/working-social-game-entities-couchbase\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Working with social game entities in Couchbase\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"width\":\"1024\",\"height\":\"1024\",\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/eb130a1e0278989e089a7fbbf8bc754c\",\"name\":\"Don Pinto, Principal Product Manager, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g39c6d6178c73f0dc09af63f930a4f37d\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g\",\"caption\":\"Don Pinto, Principal Product Manager, Couchbase\"},\"description\":\"Don Pinto is a Principal Product Manager at Couchbase and is currently focused on advancing the capabilities of Couchbase Server. He is extremely passionate about data technology, and in the past has authored several articles on Couchbase Server including technical blogs and white papers. Prior to joining Couchbase, Don spent several years at IBM where he maintained the role of software developer in the DB2 information management group and most recently as a program manager on the SQL Server team at Microsoft. Don holds a master's degree in computer science and a bachelor's in computer engineering from the University of Toronto, Canada.\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/ko\\\/author\\\/don-pinto\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Working with social game entities in Couchbase - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/ko\/working-social-game-entities-couchbase\/","og_locale":"ko_KR","og_type":"article","og_title":"Working with social game entities in Couchbase","og_description":"What\u2019s in a new social game? Fundamentally, a game is an \u201cexperience\u201d built around a series of interactions between the player, the content, and other players. Sure, the concept of the game, the storyline, the characters, and social components all have a huge influence on the game experience. But at the heart of a game\u2019s [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/working-social-game-entities-couchbase\/","og_site_name":"The Couchbase Blog","article_published_time":"2014-12-16T17:37:09+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","type":"image\/png"}],"author":"Don Pinto, Principal Product Manager, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Don Pinto, Principal Product Manager, Couchbase","Est. reading time":"4\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/working-social-game-entities-couchbase\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/working-social-game-entities-couchbase\/"},"author":{"name":"Don Pinto, Principal Product Manager, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/eb130a1e0278989e089a7fbbf8bc754c"},"headline":"Working with social game entities in Couchbase","datePublished":"2014-12-16T17:37:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/working-social-game-entities-couchbase\/"},"wordCount":815,"commentCount":2,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/working-social-game-entities-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/working-social-game-entities-couchbase\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/working-social-game-entities-couchbase\/","url":"https:\/\/www.couchbase.com\/blog\/working-social-game-entities-couchbase\/","name":"Working with social game entities in Couchbase - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/working-social-game-entities-couchbase\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/working-social-game-entities-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","datePublished":"2014-12-16T17:37:09+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/working-social-game-entities-couchbase\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/working-social-game-entities-couchbase\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/working-social-game-entities-couchbase\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/working-social-game-entities-couchbase\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Working with social game entities in Couchbase"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/06\/logo.svg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/06\/logo.svg","width":"1024","height":"1024","caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/eb130a1e0278989e089a7fbbf8bc754c","name":"Don Pinto, Principal Product Manager, Couchbase","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/secure.gravatar.com\/avatar\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g39c6d6178c73f0dc09af63f930a4f37d","url":"https:\/\/secure.gravatar.com\/avatar\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g","caption":"Don Pinto, Principal Product Manager, Couchbase"},"description":"Don Pinto is a Principal Product Manager at Couchbase and is currently focused on advancing the capabilities of Couchbase Server. He is extremely passionate about data technology, and in the past has authored several articles on Couchbase Server including technical blogs and white papers. Prior to joining Couchbase, Don spent several years at IBM where he maintained the role of software developer in the DB2 information management group and most recently as a program manager on the SQL Server team at Microsoft. Don holds a master's degree in computer science and a bachelor's in computer engineering from the University of Toronto, Canada.","url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/don-pinto\/"}]}},"acf":[],"authors":[{"term_id":35,"user_id":4,"is_guest":0,"slug":"don-pinto","display_name":"Don Pinto, Principal Product Manager, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/236","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=236"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/236\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/18"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=236"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=236"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}