{"id":2600,"date":"2013-03-02T19:48:47","date_gmt":"2013-03-03T02:48:47","guid":{"rendered":"http:\/\/www.nathalielawhead.com\/candybox\/?p=2600"},"modified":"2014-03-18T23:02:45","modified_gmt":"2014-03-19T06:02:45","slug":"pandorabots-to-flash-actionscript-tutorial","status":"publish","type":"post","link":"https:\/\/www.nathalielawhead.com\/candybox\/pandorabots-to-flash-actionscript-tutorial","title":{"rendered":"Pandorabots To Flash (Actionscript Tutorial)"},"content":{"rendered":"<p>As promised this is a tutorial for building a Flash interface for a <a href=\"http:\/\/www.pandorabots.com\" target=\"_blank\">Pandorabots chatbot<\/a>.<br \/>\nThis is a portion of an unreleased game I was building where you are stuck inside of a giant maze. The maze is actually a machine. An artificial intelligence called &#8220;I&#8221;.<br \/>\nYou can talk to it throughout your journey, and it engages with you in existential conversations, often taunting you. <a href=\"http:\/\/www.nathalielawhead.com\/candybox\/indoctrination-group-b-epic-weird-sci-fi-scenario-2\" target=\"_blank\">You can check out some screenshots, and more of that here<\/a>.<br \/>\n<img decoding=\"async\" src=\"http:\/\/nathalielawhead.com\/sourcefiles\/Pandorabots_Flash\/I-am-I.png\" alt=\"\" \/><br \/>\nIt was intended to be part of <a href=\"http:\/\/bluesuburbia.com\" target=\"_blank\">BlueSuburbia<\/a>. At present it&#8217;s slipped to the back burner.<\/p>\n<p>The source files that are given with this tutorial are a completely built, fully done up, interface of the above&#8230; Preloaders, animations, and all.<br \/>\nI&#8217;ve simplified it, and the workings of it should be pretty self-explanatory.<br \/>\nIt should suffice in starting you out on your bot mastering, programing, and creating adventures! :D<\/p>\n<p><a href=\"http:\/\/nathalielawhead.com\/sourcefiles\/Pandorabots_Flash\/\" target=\"_blank\">** DOWNLOAD SOURCE FILES HERE<\/a>.<br \/>\n<a href=\"http:\/\/nathalielawhead.com\/sourcefiles\/Pandorabots_Flash\/pandorabots_I_AS3.fla\" target=\"_blank\">* ACTIONSCRIPT 3.0 VERSION<\/a><br \/>\n<a href=\"http:\/\/nathalielawhead.com\/sourcefiles\/Pandorabots_Flash\/pandorabots_I_AS2.fla\" target=\"_blank\">* ACTIONSCRIPT 2.0 VERSION<\/a><\/p>\n<p>I have an extensive, and more informative, tutorial on <a href=\"http:\/\/www.nathalielawhead.com\/candybox\/programe-e-alice-aiml-bot-using-flash-php-actionscript-walkthrough-source-files\" target=\"_blank\">setting up a Program E (php) bot here<\/a>.<br \/>\nIt is a lot more concise. I strongly recommend visiting that page as well.<br \/>\nIt features a very thorough introduction into the world of chatbots. <a href=\"http:\/\/www.nathalielawhead.com\/candybox\/programe-e-alice-aiml-bot-using-flash-php-actionscript-walkthrough-source-files\" target=\"_blank\">CLICK HERE<\/a>.<\/p>\n<p>To begin&#8230;<\/p>\n<p>You will need to <a href=\"http:\/\/pandorabots.com\" target=\"_blank\">start an account with Pandorabots<\/a>.<br \/>\nCreate your bot starting either from scratch, or with an already available AIML set.<br \/>\nI prefer to use <a href=\"http:\/\/www.alicebot.org\/aiml\/aaa\/\" target=\"_blank\">The Annotated A.L.I.C.E. AIML available here<\/a>.<br \/>\nThey are the simplest, and cleanest to start with.<br \/>\nAfter that is done go to the &#8220;<em>My Pandorabots<\/em>&#8221; page, then click on your <em>bot&#8217;s name<\/em>.<br \/>\nIt will give you the URL where your bot is published at. Copy and paste the botid (the numbers after <code>\"botid=\"<\/code>). You&#8217;ll need that later in the Flash code end.<br \/>\nLike so:<br \/>\n<img decoding=\"async\" src=\"http:\/\/nathalielawhead.com\/sourcefiles\/Pandorabots_Flash\/I-botID.jpg\" alt=\"\" \/><\/p>\n<p>Basically, all that is necessary in the Flash-end are two text fields.<\/p>\n<p>One set to <em>DYNAMIC<\/em> text for the bot&#8217;s responses, called:<br \/>\n<code>output_txt<\/code><br \/>\nOne set to <em>INPUT<\/em> for the user&#8217;s input, called:<br \/>\n<code>input_txt<\/code><\/p>\n<p>Everything else here is purely decorative treatment.<\/p>\n<p>Following is the send\/receive code.<br \/>\nComments explaining what&#8217;s what are in-line:<\/p>\n<p><!-- HTML generated using hilite.me --><\/p>\n<div style=\"background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%\"><span style=\"color: #008800; font-weight: bold\">function <\/span><span style=\"color: #0066BB; font-weight: bold\">submitReply<\/span><span style=\"color: #333333\">()<\/span>\r\n<span style=\"color: #333333\">{<\/span>\r\n\t<span style=\"color: #888888\">\/\/XML that is received, replies are received and parsed as XML<\/span>\r\n\t<span style=\"color: #008800; font-weight: bold\">var<\/span> botReply:<span style=\"color: #333399; font-weight: bold\">XML<\/span> <span style=\"color: #333333\">=<\/span> <span style=\"color: #008800; font-weight: bold\">new<\/span> <span style=\"color: #333399; font-weight: bold\">XML<\/span><span style=\"color: #333333\">();<\/span>\r\n\t<span style=\"color: #888888\">\/\/Load vars set up<\/span>\r\n\t<span style=\"color: #008800; font-weight: bold\">var<\/span> botURL:<span style=\"color: #333399; font-weight: bold\">URLRequest<\/span> <span style=\"color: #333333\">=<\/span> <span style=\"color: #008800; font-weight: bold\">new<\/span> <span style=\"color: #333399; font-weight: bold\">URLRequest<\/span><span style=\"color: #333333\">(<\/span><span style=\"background-color: #fff0f0\">&quot;http:\/\/www.pandorabots.com\/pandora\/talk-xml&quot;<\/span><span style=\"color: #333333\">);<\/span>\r\n\t<span style=\"color: #008800; font-weight: bold\">var<\/span> botLoad:<span style=\"color: #333399; font-weight: bold\">URLLoader<\/span> <span style=\"color: #333333\">=<\/span> <span style=\"color: #008800; font-weight: bold\">new<\/span> <span style=\"color: #333399; font-weight: bold\">URLLoader<\/span><span style=\"color: #333333\">();<\/span>\r\n\t<span style=\"color: #008800; font-weight: bold\">var<\/span> botSend:<span style=\"color: #333399; font-weight: bold\">URLVariables<\/span> <span style=\"color: #333333\">=<\/span> <span style=\"color: #008800; font-weight: bold\">new<\/span> <span style=\"color: #333399; font-weight: bold\">URLVariables<\/span><span style=\"color: #333333\">();<\/span>\r\n\tbotLoad<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">addEventListener<\/span><span style=\"color: #333333\">(<\/span>Event<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">COMPLETE<\/span><span style=\"color: #333333\">,<\/span> bot_onLoad<span style=\"color: #333333\">);<\/span>\r\n\tbotLoad<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">addEventListener<\/span><span style=\"color: #333333\">(<\/span>IOErrorEvent<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">IO_ERROR<\/span><span style=\"color: #333333\">,<\/span> bot_onLoadError<span style=\"color: #333333\">);<\/span>\r\n\t\r\n\t<span style=\"color: #888888\">\/\/supports a unique custid that you can send, <\/span>\r\n\t<span style=\"color: #888888\">\/\/In this case we wont support that and let Pandorabots take care of it...<\/span>\r\n\t<span style=\"color: #888888\">\/\/botSend.custid = String(loaderInfo.loaderURL);<\/span>\r\n\t<span style=\"color: #888888\">\/\/The bot ID. This is given to you from Pandorabot<\/span>\r\n\tbotSend<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">botid<\/span> <span style=\"color: #333333\">=<\/span> <span style=\"background-color: #fff0f0\">&quot;94118f788e36cd0b&quot;<\/span><span style=\"color: #333333\">;<\/span>\r\n\t<span style=\"color: #888888\">\/\/The user&#39;s input to send to the bot<\/span>\r\n\tbotSend<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">input<\/span> <span style=\"color: #333333\">=<\/span> input_txt<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">text<\/span><span style=\"color: #333333\">;<\/span>\r\n\t\r\n\t<span style=\"color: #888888\">\/\/send it over<\/span>\r\n\tbotURL<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">method<\/span> <span style=\"color: #333333\">=<\/span> URLRequestMethod<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">POST<\/span><span style=\"color: #333333\">;<\/span>\r\n\tbotURL<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">data<\/span> <span style=\"color: #333333\">=<\/span> botSend<span style=\"color: #333333\">;<\/span>\r\n\tbotLoad<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">load<\/span><span style=\"color: #333333\">(<\/span>botURL<span style=\"color: #333333\">);<\/span>\r\n\t\r\n\t<span style=\"color: #008800; font-weight: bold\">function <\/span><span style=\"color: #0066BB; font-weight: bold\">bot_onLoad<\/span><span style=\"color: #333333\">(<\/span>event<span style=\"color: #333333\">:<\/span><span style=\"color: #333399; font-weight: bold\">Event<\/span><span style=\"color: #333333\">):<\/span><span style=\"color: #333399; font-weight: bold\">void<\/span>\r\n\t<span style=\"color: #333333\">{<\/span>\r\n\t\t<span style=\"color: #888888\">\/\/capture the reply (botReply.that)<\/span>\r\n\t\t<span style=\"color: #888888\">\/\/and &quot;write it out&quot;<\/span>\r\n\t\tbotReply <span style=\"color: #333333\">=<\/span> XML<span style=\"color: #333333\">(<\/span>botLoad<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">data<\/span><span style=\"color: #333333\">);<\/span>\r\n\t\twriteText<span style=\"color: #333333\">(<\/span>botReply<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">that<\/span><span style=\"color: #333333\">);<\/span>\r\n\t<span style=\"color: #333333\">}<\/span>\r\n\t<span style=\"color: #008800; font-weight: bold\">function <\/span><span style=\"color: #0066BB; font-weight: bold\">bot_onLoadError<\/span><span style=\"color: #333333\">(<\/span>event<span style=\"color: #333333\">:<\/span><span style=\"color: #333399; font-weight: bold\">IOErrorEvent<\/span><span style=\"color: #333333\">):<\/span><span style=\"color: #333399; font-weight: bold\">void<\/span>\r\n\t<span style=\"color: #333333\">{<\/span>\r\n\t\twriteText<span style=\"color: #333333\">(<\/span><span style=\"background-color: #fff0f0\">&quot;There was an error in my system. Please contact: nathalie.lawhead@gmail.com&quot;<\/span><span style=\"color: #333333\">);<\/span>\r\n\t<span style=\"color: #333333\">}<\/span>\r\n\tinput_txt<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">text<\/span> <span style=\"color: #333333\">=<\/span> <span style=\"background-color: #fff0f0\">&quot;&quot;<\/span><span style=\"color: #333333\">;<\/span>\r\n<span style=\"color: #333333\">}<\/span>\r\n<\/pre>\n<\/div>\n<p>The code for &#8220;writing out&#8221; the bot&#8217;s reply is as follows\u2026<\/p>\n<p><!-- HTML generated using hilite.me --><\/p>\n<div style=\"background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%\"><span style=\"color: #888888\">\/\/TEXT:;<\/span>\r\n<span style=\"color: #008800; font-weight: bold\">var<\/span> writeInt:<span style=\"color: #333399; font-weight: bold\">Timer<\/span> <span style=\"color: #333333\">=<\/span> <span style=\"color: #008800; font-weight: bold\">new<\/span> <span style=\"color: #333399; font-weight: bold\">Timer<\/span><span style=\"color: #333333\">(<\/span><span style=\"color: #0000DD; font-weight: bold\">50<\/span><span style=\"color: #333333\">);<\/span>\r\n<span style=\"color: #008800; font-weight: bold\">var<\/span> writeCnt:<span style=\"color: #333399; font-weight: bold\">Number<\/span> <span style=\"color: #333333\">=<\/span> <span style=\"color: #0000DD; font-weight: bold\">0<\/span><span style=\"color: #333333\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold\">var<\/span> writeStr:<span style=\"color: #333399; font-weight: bold\">String<\/span> <span style=\"color: #333333\">=<\/span> <span style=\"background-color: #fff0f0\">&quot;&quot;<\/span><span style=\"color: #333333\">;\/\/<\/span>the string to write out\r\n<span style=\"color: #888888\">\/\/Write out text character by character<\/span>\r\n<span style=\"color: #008800; font-weight: bold\">function <\/span><span style=\"color: #0066BB; font-weight: bold\">write<\/span><span style=\"color: #333333\">(<\/span>event<span style=\"color: #333333\">:<\/span><span style=\"color: #333399; font-weight: bold\">TimerEvent<\/span><span style=\"color: #333333\">)<\/span>\r\n<span style=\"color: #333333\">{<\/span>\r\n\t<span style=\"color: #008800; font-weight: bold\">if<\/span> <span style=\"color: #333333\">(<\/span>writeCnt<span style=\"color: #333333\">&lt;<\/span> <span style=\"color: #333333\">=<\/span>writeStr<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">length<\/span><span style=\"color: #333333\">)<\/span>\r\n\t<span style=\"color: #333333\">{<\/span>\r\n\t\toutput_txt<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">htmlText<\/span> <span style=\"color: #333333\">=<\/span> writeStr<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">substr<\/span><span style=\"color: #333333\">(<\/span><span style=\"color: #0000DD; font-weight: bold\">0<\/span><span style=\"color: #333333\">,<\/span>writeCnt<span style=\"color: #333333\">)<\/span> <span style=\"color: #333333\">+<\/span> <span style=\"background-color: #fff0f0\">&quot;_&quot;<\/span><span style=\"color: #333333\">;<\/span>\r\n\t\toutput_txt<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">scrollH<\/span><span style=\"color: #333333\">++;<\/span>\r\n\t\twriteCnt <span style=\"color: #333333\">+=<\/span>  <span style=\"color: #0000DD; font-weight: bold\">1<\/span><span style=\"color: #333333\">;<\/span>\r\n\t<span style=\"color: #333333\">}<\/span>\r\n\t<span style=\"color: #008800; font-weight: bold\">else<\/span>\r\n\t<span style=\"color: #333333\">{<\/span>\r\n\t\t<span style=\"color: #888888\">\/\/trace(&quot;Timer stopped.&quot;);<\/span>\r\n\t\twriteInt<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">stop<\/span><span style=\"color: #333333\">();<\/span>\r\n\t\twriteInt<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">removeEventListener<\/span><span style=\"color: #333333\">(<\/span>TimerEvent<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">TIMER<\/span><span style=\"color: #333333\">,<\/span> write<span style=\"color: #333333\">);<\/span>\r\n\t<span style=\"color: #333333\">}<\/span>\r\n<span style=\"color: #333333\">}<\/span>\r\n<span style=\"color: #888888\">\/\/start writing - reset previous<\/span>\r\n<span style=\"color: #008800; font-weight: bold\">function <\/span><span style=\"color: #0066BB; font-weight: bold\">writeText<\/span><span style=\"color: #333333\">(<\/span>myText<span style=\"color: #333333\">:<\/span><span style=\"color: #333399; font-weight: bold\">String<\/span><span style=\"color: #333333\">)<\/span>\r\n<span style=\"color: #333333\">{<\/span>\r\n\twriteStr <span style=\"color: #333333\">=<\/span> myText<span style=\"color: #333333\">;<\/span>\r\n\toutput_txt<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">text<\/span> <span style=\"color: #333333\">=<\/span> <span style=\"background-color: #fff0f0\">&quot;&quot;<\/span><span style=\"color: #333333\">;<\/span>\r\n\twriteCnt <span style=\"color: #333333\">=<\/span> <span style=\"color: #0000DD; font-weight: bold\">0<\/span><span style=\"color: #333333\">;<\/span>\r\n\twriteInt<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">stop<\/span><span style=\"color: #333333\">();<\/span>\r\n\twriteInt<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">addEventListener<\/span><span style=\"color: #333333\">(<\/span>TimerEvent<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">TIMER<\/span><span style=\"color: #333333\">,<\/span> write<span style=\"color: #333333\">);<\/span>\r\n\twriteInt<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">start<\/span><span style=\"color: #333333\">();<\/span>\r\n<span style=\"color: #333333\">}<\/span>\r\n<\/pre>\n<\/div>\n<p>Update: An even better version of the above &#8220;writeText&#8221;&#8230;<br \/>\n<!-- HTML generated using hilite.me --><\/p>\n<div style=\"background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%\"><span style=\"color: #888888\">\/\/Write out text<\/span>\r\n<span style=\"color: #008800; font-weight: bold\">function <\/span><span style=\"color: #0066BB; font-weight: bold\">writeText<\/span><span style=\"color: #333333\">(<\/span>myText<span style=\"color: #333333\">:<\/span><span style=\"color: #333399; font-weight: bold\">String<\/span><span style=\"color: #333333\">,<\/span> myTextField<span style=\"color: #333333\">:<\/span><span style=\"color: #333399; font-weight: bold\">Object<\/span><span style=\"color: #333333\">)<\/span> <span style=\"color: #333333\">{<\/span>\r\n\t<span style=\"color: #008800; font-weight: bold\">var<\/span> i:<span style=\"color: #333399; font-weight: bold\">Number<\/span> <span style=\"color: #333333\">=<\/span> <span style=\"color: #0000DD; font-weight: bold\">0<\/span><span style=\"color: #333333\">;<\/span>\r\n\t<span style=\"color: #008800; font-weight: bold\">function <\/span><span style=\"color: #0066BB; font-weight: bold\">write<\/span><span style=\"color: #333333\">()<\/span> <span style=\"color: #333333\">{<\/span>\r\n\t\t<span style=\"color: #008800; font-weight: bold\">if<\/span> <span style=\"color: #333333\">(<\/span>i<span style=\"color: #333333\">&lt;<\/span> <span style=\"color: #333333\">=<\/span>myText<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">length<\/span><span style=\"color: #333333\">)<\/span> <span style=\"color: #333333\">{<\/span>\r\n\t\t\tmyTextField<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">htmlText<\/span> <span style=\"color: #333333\">=<\/span> myText<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">substr<\/span><span style=\"color: #333333\">(<\/span><span style=\"color: #0000DD; font-weight: bold\">0<\/span><span style=\"color: #333333\">,<\/span> i<span style=\"color: #333333\">)+<\/span><span style=\"background-color: #fff0f0\">&quot;_&quot;<\/span><span style=\"color: #333333\">;<\/span>\r\n\t\t\tmyTextField<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">scrollH<\/span><span style=\"color: #333333\">++;<\/span>\r\n\t\t\ti <span style=\"color: #333333\">=<\/span> i<span style=\"color: #333333\">+<\/span><span style=\"color: #0000DD; font-weight: bold\">1<\/span><span style=\"color: #333333\">;<\/span>\r\n\t\t\t<span style=\"color: #0066BB; font-weight: bold\">trace<\/span><span style=\"color: #333333\">(<\/span><span style=\"background-color: #fff0f0\">&quot;calling &quot;<\/span><span style=\"color: #333333\">+<\/span>myTextField<span style=\"color: #333333\">.<\/span><span style=\"color: #0000CC\">name<\/span><span style=\"color: #333333\">);<\/span>\r\n\t\t<span style=\"color: #333333\">}<\/span> <span style=\"color: #008800; font-weight: bold\">else<\/span> <span style=\"color: #333333\">{<\/span>\r\n\t\t\t<span style=\"color: #0066BB; font-weight: bold\">trace<\/span><span style=\"color: #333333\">(<\/span><span style=\"background-color: #fff0f0\">&quot;ended&quot;<\/span><span style=\"color: #333333\">);<\/span>\r\n\t\t\t<span style=\"color: #0066BB; font-weight: bold\">clearInterval<\/span><span style=\"color: #333333\">(<\/span>writeInt<span style=\"color: #333333\">);<\/span>\r\n\t\t<span style=\"color: #333333\">}<\/span>\r\n\t<span style=\"color: #333333\">}<\/span>\r\n\t<span style=\"color: #0066BB; font-weight: bold\">clearInterval<\/span><span style=\"color: #333333\">(<\/span>writeInt<span style=\"color: #333333\">);<\/span>\r\n\t<span style=\"color: #008800; font-weight: bold\">var<\/span> writeInt:<span style=\"color: #333399; font-weight: bold\">uint<\/span> <span style=\"color: #333333\">=<\/span> <span style=\"color: #0066BB; font-weight: bold\">setInterval<\/span><span style=\"color: #333333\">(<\/span>write<span style=\"color: #333333\">,<\/span> <span style=\"color: #0000DD; font-weight: bold\">40<\/span><span style=\"color: #333333\">);<\/span>\r\n<span style=\"color: #333333\">}<\/span>\r\n<span style=\"color: #888888\">\/\/Usage: writeText(&quot;Text to write out.&quot;, txt_test);<\/span>\r\n<\/pre>\n<\/div>\n<p>And that&#8217;s all that&#8217;s needed! Simple and sweet.<\/p>\n<p>Here&#8217;s the end result (you&#8217;ll have to turn him on first!) :<\/p>\n<p>[swfobj src=&#8221;http:\/\/nathalielawhead.com\/sourcefiles\/Pandorabots_Flash\/pandorabots_I_AS3.swf&#8221; height=&#8221;500&#8243; width=&#8221;800&#8243;]<br \/>\nTalk to him! <a href=\"http:\/\/nathalielawhead.com\/sourcefiles\/Pandorabots_Flash\/I.html\" target=\"_blank\">Click here for fullscreen. <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>As promised this is a tutorial for building a Flash interface for a Pandorabots chatbot. This is a portion of an unreleased game I was building where you are stuck inside of a giant maze. The maze is actually a machine. An artificial intelligence called &#8220;I&#8221;. You can talk to it throughout your journey, and it engages with you in existential conversations, often taunting you. You can check out some screenshots, and more of that here. It was intended to be part of BlueSuburbia. At present it&#8217;s slipped to the back burner. The source files that are given with this&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":4522,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[30,12],"tags":[],"class_list":["post-2600","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-games","category-resources"],"_links":{"self":[{"href":"https:\/\/www.nathalielawhead.com\/candybox\/wp-json\/wp\/v2\/posts\/2600","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.nathalielawhead.com\/candybox\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nathalielawhead.com\/candybox\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nathalielawhead.com\/candybox\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nathalielawhead.com\/candybox\/wp-json\/wp\/v2\/comments?post=2600"}],"version-history":[{"count":8,"href":"https:\/\/www.nathalielawhead.com\/candybox\/wp-json\/wp\/v2\/posts\/2600\/revisions"}],"predecessor-version":[{"id":3022,"href":"https:\/\/www.nathalielawhead.com\/candybox\/wp-json\/wp\/v2\/posts\/2600\/revisions\/3022"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.nathalielawhead.com\/candybox\/wp-json\/wp\/v2\/media\/4522"}],"wp:attachment":[{"href":"https:\/\/www.nathalielawhead.com\/candybox\/wp-json\/wp\/v2\/media?parent=2600"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nathalielawhead.com\/candybox\/wp-json\/wp\/v2\/categories?post=2600"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nathalielawhead.com\/candybox\/wp-json\/wp\/v2\/tags?post=2600"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}