{"id":868,"date":"2016-07-26T22:59:56","date_gmt":"2016-07-26T20:59:56","guid":{"rendered":"http:\/\/amidos-games.com\/blog\/?p=868"},"modified":"2016-08-07T00:23:13","modified_gmt":"2016-08-06T22:23:13","slug":"ijcai16-talk-modifying-mcts-for-humanlike-video-game-playing","status":"publish","type":"post","link":"http:\/\/akhalifa.com\/blog\/ijcai16-talk-modifying-mcts-for-humanlike-video-game-playing\/","title":{"rendered":"IJCAI16 Talk: Modifying MCTS for Humanlike Video Game Playing"},"content":{"rendered":"<p>Hello everyone,<br \/>\nAges since last post \ud83d\ude00 on Thursday July 14th I gave a talk about my paper &#8220;<a href=\"http:\/\/www.akhalifa.com\/blog\/documents\/modifying-mcts-human.pdf\">Modifying MCTS for Humanlike Video Game Playing<\/a>&#8221; with <a href=\"https:\/\/twitter.com\/aireye\">Aaron Isaksen<\/a>, <a href=\"http:\/\/www.nealen.net\/\">Andy Nealen<\/a>, and <a href=\"http:\/\/julian.togelius.com\/\">Julian Togelius<\/a> at IJCAI16. Thanks to Aaron, he captured a video of my talk. Here is it:<\/p>\n<div align=\"center\"><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/O5ktmnos5JY\" frameborder=\"0\" allowfullscreen><\/iframe><\/div>\n<p>Also we did a poster for the conference which looked amazing. Here is the poster:<\/p>\n<p><a href=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-Poster.001.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-Poster.001.png\" alt=\"Humanlike MCTS Poster.001\" width=\"768\" height=\"1152\" class=\"alignnone size-full wp-image-869\" srcset=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-Poster.001.png 768w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-Poster.001-200x300.png 200w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-Poster.001-683x1024.png 683w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/><\/a><\/p>\n<p>If the video is not clear, I am posting the slides here with my comments:<\/p>\n<div align=\"center\">\n<a href=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.001.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.001.png\" alt=\"Humanlike MCTS New.001\" width=\"720\" height=\"405\" class=\"alignnone size-full wp-image-871\" srcset=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.001.png 720w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.001-300x169.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>Hello everyone, I am Ahmed Khalifa, PhD student at NYU Tandon&#8217;s School of Engineering. Today I am gonna talk about my paper &#8220;Modifying MCTS for Humanlike Video Game Playing&#8221;.<\/p>\n<p><a href=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.002.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.002.png\" alt=\"Humanlike MCTS New.002\" width=\"720\" height=\"405\" class=\"alignnone size-full wp-image-872\" srcset=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.002.png 720w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.002-300x169.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>We are trying to modifying Monte Carlo Tree Search algorithm to play different games like human player. We are using General Video Game Playing Framework to test our algorithm.<\/p>\n<p><a href=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.003.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.003.png\" alt=\"Humanlike MCTS New.003\" width=\"720\" height=\"405\" class=\"alignnone size-full wp-image-873\" srcset=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.003.png 720w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.003-300x169.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>Why do we need that? One important reason is create humanlike NPCs. One of the reason people play Multiplayer games is the lack of realistic NPCs to play with or against. Also evaluating levels and games for AI-assisted tools. For example if you gave these two levels to a human, he will pick the one on the left as its playable by human while the one of the right is super difficult, it might even be impossible to be played.<\/p>\n<p><a href=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.004.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.004.png\" alt=\"Humanlike MCTS New.004\" width=\"720\" height=\"405\" class=\"alignnone size-full wp-image-874\" srcset=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.004.png 720w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.004-300x169.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>Before we start, whats general video game playing which we are using its framework. Its a competition for general intelligence where competitors create different agents that plays different unseen games. These games are written in a scripting language called Video Game Description Language. Every 40msec the agent should select one of the available actions. Like up, down, left, right, use button, nil which is do nothing. A game play trace is a sequence of actions.<\/p>\n<p><a href=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.005.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.005.png\" alt=\"Humanlike MCTS New.005\" width=\"720\" height=\"405\" class=\"alignnone size-full wp-image-875\" srcset=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.005.png 720w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.005-300x169.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>Here are two videos that shows the difference between human player and MCTS agent. On the left you can see humans tends to go towards their goal and only do actions when necessary (for example only attack when monster is near). While MCTS agent on the right is stuck in the upper left corner moving in walls, attacking the air and walls.<\/p>\n<p><a href=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.006.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.006.png\" alt=\"Humanlike MCTS New.006\" width=\"720\" height=\"405\" class=\"alignnone size-full wp-image-876\" srcset=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.006.png 720w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.006-300x169.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>By analyzing the play traces for both human players and MCTS agent on different games. We found that humans tends to repeat the same action multiple times before changing. In the first graph it shows human have tendency to repeat the same action twice by 50%. Also humans tends to use more NILs and tends to repeat it more during the play trace. While in the third graph it shows the MCTS have a higher tendency to change actions more often than humans. Humans 70% of the time don\u2019t change their action.<\/p>\n<p><a href=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.007.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.007.png\" alt=\"Humanlike MCTS New.007\" width=\"720\" height=\"405\" class=\"alignnone size-full wp-image-877\" srcset=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.007.png 720w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.007-300x169.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>In order to achieve similar play traces, we need to modify MCTS. These are the main 4 steps for MCTS.<\/p>\n<p><a href=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.008.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.008.png\" alt=\"Humanlike MCTS New.008\" width=\"720\" height=\"405\" class=\"alignnone size-full wp-image-878\" srcset=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.008.png 720w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.008-300x169.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>We tried to modify each step on its own but none of them have a big change in the distribution except for the selection step.<\/p>\n<p><a href=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.009.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.009.png\" alt=\"Humanlike MCTS New.009\" width=\"720\" height=\"405\" class=\"alignnone size-full wp-image-879\" srcset=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.009.png 720w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.009-300x169.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>Selection step depends on UCB equation to select the next node.<\/p>\n<p><a href=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.010.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.010.png\" alt=\"Humanlike MCTS New.010\" width=\"720\" height=\"405\" class=\"alignnone size-full wp-image-880\" srcset=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.010.png 720w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.010-300x169.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>UCB equation consists of two terms, exploitation term and exploration term. The exploitation term bias the selection to select the best node while the exploration term push MCTS to explore less visited nodes.<\/p>\n<p><a href=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.011.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.011.png\" alt=\"Humanlike MCTS New.011\" width=\"720\" height=\"405\" class=\"alignnone size-full wp-image-881\" srcset=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.011.png 720w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.011-300x169.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>We modified the equation by adding a new bonus term which consists of 3 parts:<br \/>\nHuman Modeling<br \/>\nTrivial Branch Pruning<br \/>\nMap Exploration Bonus<br \/>\nAlso we modified the Exploitation term with a MixMax term.<br \/>\nWe are going to explain all these terms in details in the upcoming slides.<\/p>\n<p><a href=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.012.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.012.png\" alt=\"Humanlike MCTS New.012\" width=\"720\" height=\"405\" class=\"alignnone size-full wp-image-882\" srcset=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.012.png 720w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.012-300x169.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>We added a bonus value that shift the MCTS distribution to be similar to human distribution. As you see from the video the agent tends to repeat the same action and do more NILs with lower action to new action frequency. But as we see, it is still stupid, stuck in the corner, attacking air, moving into walls.<\/p>\n<p><a href=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.013.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.013.png\" alt=\"Humanlike MCTS New.013\" width=\"720\" height=\"405\" class=\"alignnone size-full wp-image-883\" srcset=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.013.png 720w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.013-300x169.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>Thats why we added the second term which avoids selecting stupid nodes (like attacking walls and moving into walls) As we see the agent stopped attacking the air and whenever it get stuck in a wall, it changes the action or apply nil. But its still stuck in the corner.<\/p>\n<p><a href=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.014.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.014.png\" alt=\"Humanlike MCTS New.014\" width=\"720\" height=\"405\" class=\"alignnone size-full wp-image-884\" srcset=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.014.png 720w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.014-300x169.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>So we added a bonus term that reward nodes that have less visited positions on the map. As we can see the agent now go every where and explore. But as we see the agent is coward, it avoids attacking the spiders.<\/p>\n<p><a href=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.015.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.015.png\" alt=\"Humanlike MCTS New.015\" width=\"720\" height=\"405\" class=\"alignnone size-full wp-image-885\" srcset=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.015.png 720w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.015-300x169.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>So we used MixMax term instead of the exploitation term which use the mixture between the best value and the average value of the node instead of the average value only. As we can see the agent become courageous and moves towards the enemies and kill them.<\/p>\n<p><a href=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.016.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.016.png\" alt=\"Humanlike MCTS New.016\" width=\"720\" height=\"405\" class=\"alignnone size-full wp-image-886\" srcset=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.016.png 720w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.016-300x169.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>Analyzing the play traces after all these modifications. our BoT (Bag of Tricks) algorithm tends to be more similar to human compared to MCTS in action repetition, nil repetition. Also having less action to new action changes.<\/p>\n<p><a href=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.017.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.017.png\" alt=\"Humanlike MCTS New.017\" width=\"720\" height=\"405\" class=\"alignnone size-full wp-image-887\" srcset=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.017.png 720w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.017-300x169.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>In order to verify these results we conducted a user study. In the study, each user watch two videos and he was to specify which is more likely to be human and why?<\/p>\n<p><a href=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.018.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.018.png\" alt=\"Humanlike MCTS New.018\" width=\"720\" height=\"405\" class=\"alignnone size-full wp-image-888\" srcset=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.018.png 720w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.018-300x169.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>From the study our BoT algorithm was more human than MCTS but still not as good as humans, except for PacMan where deceived the humans by 60%.<\/p>\n<p><a href=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.019.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.019.png\" alt=\"Humanlike MCTS New.019\" width=\"720\" height=\"405\" class=\"alignnone size-full wp-image-889\" srcset=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.019.png 720w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.019-300x169.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>When we analyzed the human comments we found that the main reason for recognizing agent are the same as we stuff we tries to solve. Jitterness (changing directions very quickly), Useless moves (attacking walls, moving into them),  No long term planning (stuck in one of the corners), too fast reaction time, over confidence (killing all enemies and become over achiever)<\/p>\n<p><a href=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.020.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.020.png\" alt=\"Humanlike MCTS New.020\" width=\"720\" height=\"405\" class=\"alignnone size-full wp-image-890\" srcset=\"http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.020.png 720w, http:\/\/akhalifa.com\/blog\/wp-content\/uploads\/2016\/07\/Humanlike-MCTS-New.020-300x169.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>Thanks for listening.\n<\/p><\/div>\n<p>That&#8217;s everything for now.<br \/>\nByeBye<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello everyone, Ages since last post \ud83d\ude00 on Thursday July 14th I gave a talk about my paper &#8220;Modifying MCTS for Humanlike Video Game Playing&#8221; with Aaron Isaksen, Andy Nealen, and Julian Togelius at IJCAI16. Thanks to Aaron, he captured a video of my talk. Here is it: Also we did a poster for the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[128,140,150,59],"tags":[],"_links":{"self":[{"href":"http:\/\/akhalifa.com\/blog\/wp-json\/wp\/v2\/posts\/868"}],"collection":[{"href":"http:\/\/akhalifa.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/akhalifa.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/akhalifa.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/akhalifa.com\/blog\/wp-json\/wp\/v2\/comments?post=868"}],"version-history":[{"count":5,"href":"http:\/\/akhalifa.com\/blog\/wp-json\/wp\/v2\/posts\/868\/revisions"}],"predecessor-version":[{"id":897,"href":"http:\/\/akhalifa.com\/blog\/wp-json\/wp\/v2\/posts\/868\/revisions\/897"}],"wp:attachment":[{"href":"http:\/\/akhalifa.com\/blog\/wp-json\/wp\/v2\/media?parent=868"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/akhalifa.com\/blog\/wp-json\/wp\/v2\/categories?post=868"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/akhalifa.com\/blog\/wp-json\/wp\/v2\/tags?post=868"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}