<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="http://wiki.sharendipity.com/xsl/rss2html.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://wiki.sharendipity.com/scripts/wpcss/wiki/sharendipity/skin/spots/rss" type="text/css" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Sharendipity - Recently Updated Pages</title><link>http://wiki.sharendipity.com/pageSearch/updated</link><description>Recently Updated Pages on http://wiki.sharendipity.com</description><language>en-us</language><webMaster>info@wetpaint.com</webMaster><pubDate>Tue, 23 Feb 2010 13:22:33 CST</pubDate><lastBuildDate>Tue, 23 Feb 2010 13:22:33 CST</lastBuildDate><generator>wetpaint.com</generator><ttl>60</ttl><image><title>Sharendipity</title><url>http://image.wetpaint.com/image/2/0zbYHdzG5pd5wRP_Ry3QAw3778</url><link>http://wiki.sharendipity.com</link><description>A comprehensive guide to creating fun games and media applications in Sharendipity.</description></image><item><title>Sharendipity Home</title><link>http://wiki.sharendipity.com/page/Sharendipity+Home</link><author>greg.tracy</author><guid isPermaLink="false">http://wiki.sharendipity.com/page/Sharendipity+Home</guid><pubDate>Tue, 23 Feb 2010 13:22:33 CST</pubDate><description>&lt;table width=&quot;100%&quot;&gt;  &lt;tbody&gt;  &lt;tr&gt;  &lt;td&gt;  &lt;div class=&quot;WPC-edit-area&quot;&gt;  &lt;div align=&quot;left&quot;&gt;  &lt;/div&gt;  &lt;table align=&quot;bottom&quot; cellpadding=&quot;3&quot; class=&quot;WPC-edit-style-none WPC-edit-border-none WPC-edit-styleData-color1=%23ebded4&amp;color2=%23c7bcb4&quot; height=&quot;119&quot; width=&quot;849&quot;&gt;  &lt;tbody&gt;  &lt;tr&gt;  &lt;td width=&quot;50%&quot;&gt;  &lt;a href=&quot;http://wiki.sharendipity.com/page/Make+a+Game%21&quot; target=&quot;_self&quot;&gt;I Want To Make A Game!!!&lt;/a&gt; (jump right in!).&lt;/td&gt;  &lt;td width=&quot;50%&quot;&gt;  &lt;div class=&quot;WPC-edit-field WPC-edit-rss WPC-edit-rss-total-4&quot;&gt;&lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://widget.wetpaintserv.us/widget/wetpaintrss/c8bb940837a4352c88adaff2e4b8cd2948347ca1?wpo=&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt; &lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;b&gt;&lt;i&gt;Check it out!&lt;/i&gt;&lt;/b&gt; If you are creating behaviors for the first time, perhaps the best resource after the tutorials is the &lt;a href=&quot;http://wiki.sharendipity.com/page/Object+Referencing+Guidelines&quot; target=&quot;_self&quot;&gt;object referencing page&lt;/a&gt;. You&amp;#39;ll learn all about creating and modifying objects, and the most efficient way to do so.   &lt;br&gt;&lt;br&gt;&lt;h3&gt;  &lt;/h3&gt;  &lt;h3&gt;  &lt;a href=&quot;http://wiki.sharendipity.com/page/Getting+Started&quot; target=&quot;_self&quot;&gt;Getting Started&lt;/a&gt;&lt;/h3&gt;Our Getting Started guide introduces you to some of the basics of our unique casual game creator.   &lt;br&gt;&lt;br&gt;&lt;h3&gt;  &lt;a href=&quot;http://wiki.sharendipity.com/page/Resources&quot; target=&quot;_self&quot;&gt;Resources and Tutorials&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;  &lt;/h3&gt;Learn more about the Sharendipity tools through these tutorials and &lt;a href=&quot;http://wiki.sharendipity.com/page/Video+Tutorials&quot; target=&quot;_self&quot;&gt;videos&lt;/a&gt;, or find the answer to your question on our &lt;a href=&quot;http://wiki.sharendipity.com/page/FAQ&quot; target=&quot;_self&quot;&gt;FAQ page&lt;/a&gt;.   &lt;br&gt;&lt;br&gt;&lt;h3&gt;  &lt;a href=&quot;http://wiki.sharendipity.com/page/Documentation&quot; target=&quot;_self&quot;&gt;Documentation&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;  &lt;/h3&gt;&lt;font size=&quot;2&quot;&gt;Details on how to use the Sharendipity creation tools to build great content. We talk about all of the basic building blocks of the Sharendipity creation tool including the definition of object properties, behaviors of objects, and integrating web services.&lt;/font&gt;   &lt;br&gt;&lt;br&gt;&lt;h3&gt;  &lt;a href=&quot;http://wiki.sharendipity.com/page/Game+Elements&quot; target=&quot;_self&quot;&gt;Game Elements&lt;/a&gt;&lt;/h3&gt;Curious how to add scoring to your game? This page documents scoring and other common elements that go into the creation of a game.   &lt;br&gt;&lt;br&gt;&lt;h3&gt;  &lt;a href=&quot;http://wiki.sharendipity.com/page/Copyright+Information&quot; target=&quot;_self&quot;&gt;Copyright Information&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;  &lt;/h3&gt;Copyrights and credits for some of the components used in building Sharendipity.   &lt;/div&gt;&lt;/td&gt;  &lt;td width=&quot;14&quot;&gt;&lt;br&gt;&lt;/td&gt;  &lt;td width=&quot;260&quot;&gt;  &lt;div class=&quot;WPC-edit-area&quot;&gt;  &lt;div align=&quot;center&quot;&gt;  &lt;h3&gt;  Sharendipity Website&lt;br&gt;&lt;br&gt;&lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://games.sharendipity.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt; &lt;/a&gt;&lt;br&gt;&lt;br&gt;Featured Video&lt;/h3&gt;&lt;/div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>test</title><link>http://wiki.sharendipity.com/page/test</link><author>PcMan2010</author><guid isPermaLink="false">http://wiki.sharendipity.com/page/test</guid><pubDate>Sat, 23 Jan 2010 07:41:59 CST</pubDate><description> &lt;/embed&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Resources and Tutorials</title><link>http://wiki.sharendipity.com/page/Resources+and+Tutorials</link><author>triptych</author><guid isPermaLink="false">http://wiki.sharendipity.com/page/Resources+and+Tutorials</guid><comments>added google group</comments><pubDate>Wed, 02 Sep 2009 13:21:58 CDT</pubDate><description>&lt;h2&gt;  &lt;/h2&gt;&lt;h2&gt;  Video Tutorials&lt;/h2&gt;These &lt;a href=&quot;http://wiki.sharendipity.com/page/Video+Tutorials&quot; target=&quot;_self&quot;&gt;video tutorials&lt;/a&gt; provide great visual aids demonstrating the construction tools within Sharendipity.&lt;br&gt;&lt;br&gt;&lt;h2&gt;Links&lt;/h2&gt;&lt;br&gt;&lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://groups.google.com/group/sharendipity-dev&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Google group&lt;/a&gt; for sharendipity developers.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>FAQ</title><link>http://wiki.sharendipity.com/page/FAQ</link><author>greg.tracy</author><guid isPermaLink="false">http://wiki.sharendipity.com/page/FAQ</guid><comments>added mouse filter handling</comments><pubDate>Thu, 20 Aug 2009 15:14:47 CDT</pubDate><description>&lt;br&gt;This page is an on-going effort to collect the answers to frequently-asked questions about Sharendipity. If you can&amp;#39;t find an answer to your question, please send us a note at &lt;a href=&quot;http://wiki.sharendipity.commailto:alpha@sharendipity.com&quot; target=&quot;_self&quot;&gt;alpha@sharendipity.com&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h3&gt;Creation Tools&lt;/h3&gt;&lt;br&gt;&lt;b&gt;Can I access the mouse location inside a behavior?&lt;br&gt;&lt;br&gt;&lt;/b&gt;You can if you are operating inside a behavior that was triggered by a mouse event filter. Inside the behavior/method builder, go to the Values tab and select other. This provides access to the details of the event including x/y position. Just click on the Event button to get at the details. See the image below.&lt;br&gt;&lt;br&gt;More details to the &lt;a href=&quot;http://wiki.sharendipity.com/page/Filter+Definitions&quot; target=&quot;_self&quot;&gt;event filter page&lt;/a&gt;&lt;br&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;b&gt;Why does every box and circle I draw fall to the ground?&lt;br&gt;&lt;br&gt;&lt;/b&gt;Sharendipity has a built-in physics engine. The physics engine helps you with all kinds of interaction events including the management of collisions between objects, friction, elasticity, velocity, etc. One of the physics properties is gravity. You can turn it on/off as well as control the magnitude and direction of gravity (for instance, you could have some fun by flipping gravity upside down).&lt;br&gt; &lt;br&gt; There are two ways you can control how objects behave relative to gravity.&lt;br&gt; &lt;br&gt; 1. You can choose to disable gravity for the entire World. You&amp;#39;ll find this property by clicking on the astronaut character and selection &amp;quot;Properties...&amp;quot;&lt;br&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt; &lt;br&gt;&lt;br&gt;&lt;div align=&quot;left&quot;&gt; 2. You can choose to have individual objects ignore gravity as well. To do this, open the properties for the respective object(s) and toggle the &amp;#39;ignore gravity&amp;#39; flag.&lt;br&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;b&gt;What does the rewind button do? OR How do I restart my application?&lt;br&gt;&lt;/b&gt;The rewind button, located above the Director menu, will cause the application to reset to its initial state. Any object&amp;#39;s that were created dynamically will be removed and all properties will be reset to their initial values.&lt;br&gt;&lt;br&gt;&lt;b&gt;Where do I define global variables?&lt;br&gt;&lt;/b&gt;You can either add them to your Application by opening its class editor. Click the Director menu and choose &amp;quot;Edit Class...&amp;quot;. Then add new properties on the property tab.&lt;br&gt;&lt;br&gt;An alternative is to add the property to your World. The process is the same except you access your World class by clicking on the Astronaut.&lt;br&gt;&lt;br&gt;&lt;b&gt;How do I import sound into my game?&lt;br&gt;&lt;/b&gt;When you use the &amp;quot;play sound&amp;quot; action, double-click the argument box (that specifies the sound to play). This will launch the Explorer window. You can select &amp;quot;New...&amp;quot; in the lower right-hand corner to upload a new sound or select a sound in the community.&lt;br&gt;&lt;b&gt;&lt;br&gt;What sound formats do you support?&lt;/b&gt;&lt;br&gt;We support WAV and MP3 formats. We don&amp;#39;t recommend using files larger than 256k in your applications because they will have a negative impact on your user&amp;#39;s experience.&lt;br&gt;&lt;br&gt;&lt;b&gt;How do I add high scores to my game?&lt;br&gt;&lt;/b&gt;There is a special action, &amp;quot;set high score&amp;quot;, available in the behavior and method builders. You can pass in the integer value representing the score you&amp;#39;d like to save and it will be persisted to the server for your game. Check out the &lt;a href=&quot;http://wiki.sharendipity.com/page/Game+Elements&quot; target=&quot;_self&quot;&gt;Game Elements&lt;/a&gt; page for more information on how to track scores, display them, and set high scores.&lt;br&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;b&gt;Why don&amp;#39;t my high scores get saved when I&amp;#39;m creating my game?&lt;br&gt;&lt;/b&gt;Out of convenience and as a deterrent against cheating, we don&amp;#39;t save any high scores that come from editor.&lt;br&gt;&lt;br&gt;&lt;b&gt;How do I change the position of an object that is created within my behavior?&lt;/b&gt;&lt;br&gt;When you&amp;#39;ve created a new object, always use reference displayed (in orange) on the right hand side of the action. That reference provides access to every property and method for the new object. Simply click on it once and the values panel will refresh with that object&amp;#39;s details. Learn more about object referencing on our &lt;a href=&quot;http://wiki.sharendipity.com/page/Object+Referencing+Guidelines&quot; target=&quot;_self&quot;&gt;guidelines page&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;h3&gt;Running Sharendipity&lt;br&gt;&lt;/h3&gt;&lt;br&gt;&lt;b&gt;What browsers are supported?&lt;/b&gt;&lt;br&gt;We do know that Sharendipity runs well in both Firefox (2+) and Internet Explorer.&lt;br&gt;&lt;br&gt;&lt;h3&gt;Saving Applications&lt;/h3&gt;&lt;br&gt;&lt;b&gt;Can other users see and edit my work?&lt;/b&gt;&lt;br&gt;When you save your creations, you have the choice to mark the object as &amp;quot;publicly visible.&amp;quot; Choose this option if you want other people, including your friends, to be able to see what you&amp;#39;ve made. If another user with editing rights opens your creation, they will be able to save a copy of your object if they modify it. Otherwise, no, your creations can not be overwritten by other users. Long term, there will be much finer granularity for creation and editing.&lt;br&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Filter Definitions</title><link>http://wiki.sharendipity.com/page/Filter+Definitions</link><author>greg.tracy</author><guid isPermaLink="false">http://wiki.sharendipity.com/page/Filter+Definitions</guid><comments>added mouse event details and photos</comments><pubDate>Thu, 20 Aug 2009 15:08:43 CDT</pubDate><description>Define when a behavior&amp;#39;s actions are executed.&lt;br&gt;&lt;ul&gt;&lt;li&gt;Object Created&lt;/li&gt;&lt;li&gt;Object Destroyed&lt;/li&gt;&lt;li&gt;Key Event Filter&lt;/li&gt;&lt;li&gt;Timer&lt;/li&gt;&lt;li&gt;Collision Event&lt;/li&gt;&lt;li&gt;Object Modified&lt;/li&gt;&lt;li&gt;And/Or Filter&lt;/li&gt;&lt;li&gt;Mouse Event Filter&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;br&gt;&lt;/h3&gt;&lt;br&gt;&lt;h3&gt;Mouse Event Filter&lt;/h3&gt;When you use a mouse event filter - &amp;quot;when the mouse is [pressed on] []&amp;quot; - you will have access to the position of the mouse when it was clicked. This true for the other mouse event types as well.&lt;br&gt;&lt;br&gt;To access the position, choose the &amp;quot;&lt;b&gt;other&lt;/b&gt;&amp;quot; menu inside the &lt;b&gt;Values&lt;/b&gt; tab. The &lt;b&gt;other&lt;/b&gt; menu always contains the details of the event.&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;Mouse event details include... &lt;br&gt;&lt;ul&gt;&lt;li&gt;The actor under the mouse at the time the event fired&lt;/li&gt;&lt;li&gt;Whether or not the control key was pressed&lt;/li&gt;&lt;li&gt;Whether or not the shift key was pressed&lt;/li&gt;&lt;li&gt;The position vector in this World&lt;/li&gt;&lt;li&gt;The x position position&lt;/li&gt;&lt;li&gt;The y position&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Properties</title><link>http://wiki.sharendipity.com/page/Properties</link><author>greg.tracy</author><guid isPermaLink="false">http://wiki.sharendipity.com/page/Properties</guid><comments>filled in numerical values for text properties</comments><pubDate>Tue, 18 Aug 2009 10:27:23 CDT</pubDate><description>&lt;br&gt;There are two distinct views of your object properties and it&amp;#39;s important to understand the distinguishing factors. Each actor in your World is an instance of a particular class, and there are different sets of properties depending on whether or not you are editing the instance in the World or the class definition itself (which affects all of the instances).&lt;br&gt;&lt;br&gt;&lt;table align=&quot;bottom&quot; cellpadding=&quot;3&quot; class=&quot;WPC-edit-style-none WPC-edit-border-none WPC-edit-styleData-color1=%23ebded4&amp;color2=%23c7bcb4&quot; width=&quot;100%&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;&quot; width=&quot;50%&quot;&gt;&lt;ul&gt;&lt;li&gt;You can edit the instance&amp;#39;s properties on the actor&amp;#39;s primary menu.&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;td align=&quot;left&quot; class=&quot;&quot; width=&quot;50%&quot;&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;&quot; width=&quot;50%&quot;&gt;&lt;ul&gt;&lt;li&gt;You can edit the class&amp;#39;s properties by selecting the &amp;quot;Edit Class...&amp;quot; option found on the instance menu or by accessing the class directly via the Explorer dialog.&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;td class=&quot;&quot; width=&quot;50%&quot;&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br&gt;&lt;b&gt;Note that &lt;i&gt;most&lt;/i&gt; changes you make to the classes&amp;#39; properties will affect every instance in the World. However, it will not affect any instance properties that have been modified. For example, the position property is always unique for an instance and will not change when modified in the class editor.&lt;br&gt;&lt;/b&gt;&lt;br&gt;&lt;h2&gt;Properties Overview&lt;br&gt;&lt;/h2&gt;&lt;br&gt;&lt;br&gt;&lt;h3&gt;Custom Properties&lt;/h3&gt;Custom properties are the unique, custom attributes that you can define for any object in the system. Each new property has a type associated with it as well as an initial value (the value the property takes each time the application is rewound or loaded).&lt;br&gt;&lt;br&gt;&lt;i&gt;Note: Any time you change a property&amp;#39;s value by hand via the dialog (as opposed via a behavior), the value becomes the new initial state for the object. &lt;/i&gt;&lt;br&gt;&lt;h3&gt;Appearance&lt;/h3&gt;The appearance properties control general physical appearance as well as the object&amp;#39;s visibility relative to other objects in the World.&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;&lt;i&gt;draw_border&lt;/i&gt; - A boolean value that determines whether or not the border of the object is visible. This property overrides the actual color defined by &lt;i&gt;line_color.&lt;/i&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;true : draw the object&amp;#39;s border (default)&lt;/li&gt;&lt;li&gt;false : do not draw the border&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;&lt;br&gt;fill_color&lt;/i&gt; - An RGBA value describing the color used to fill the object. The value can be entered by hand using the text field, or the color chooser can be clicked to choose a color visually.&lt;br&gt;&lt;ul&gt;&lt;li&gt;the last number represents the transparencey of the color (the&lt;i&gt; alpha&lt;/i&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;&lt;br&gt;filled &lt;/i&gt;- A boolean value that determines whether or not the object&amp;#39;s fill color is applied.. This property overrides the actual color defined by &lt;i&gt;fill_color.&lt;/i&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;true : draw the object&amp;#39;s border (default)&lt;/li&gt;&lt;li&gt;false : do not draw the border&lt;/li&gt;&lt;/ul&gt; &lt;i&gt;&lt;br&gt;layer&lt;/i&gt; - An integer to describe the absolute positioning for the &amp;quot;painting&amp;quot; of an object. Object&amp;#39;s with higher layers are show to be &amp;quot;on top of&amp;quot; of other objects.&lt;br&gt;&lt;ul&gt;&lt;li&gt;By default, all object&amp;#39;s have a layer of zero.&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;&lt;br&gt;line_color&lt;/i&gt; - An RGBA value describing the color used to outline the object. The value can be entered by hand using the text field, or the color chooser can be clicked to choose a color visually.&lt;br&gt;&lt;ul&gt;&lt;li&gt;the last number represents the transparencey of the color (the&lt;i&gt; alpha&lt;/i&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;&lt;br&gt;text_color &lt;/i&gt;- An RGBA value describing the color used to outline the object. The value can be entered by hand using the text field, or the color chooser can be clicked to choose a color visually.&lt;br&gt; &lt;ul&gt;&lt;li&gt;the last number represents the transparencey of the color (the&lt;i&gt; alpha&lt;/i&gt;)&lt;/li&gt;&lt;/ul&gt; &lt;i&gt;&lt;br&gt;visible&lt;/i&gt; - A boolean describing whether or not the object is visible at all. &lt;i&gt;Note that you can still select non-visible objects with the mouse.&lt;/i&gt; &lt;br&gt;&lt;ul&gt;&lt;li&gt;This property is nice to use from a behavior when you want to temporarily hide the object without destroying it.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;h3&gt;Position&lt;/h3&gt;The position property controls the location and direction of the object within the World. &lt;i&gt;The best way to understand the coordinates is to simply experiment with locations.&lt;/i&gt;&lt;b&gt;&lt;br&gt;&lt;i&gt;&lt;br&gt;&lt;/i&gt;&lt;/b&gt;&lt;blockquote&gt;&lt;i&gt;orientation - &lt;/i&gt;The direction the object is pointed.&lt;br&gt;&lt;ul&gt;&lt;li&gt;The default is zero degrees which points straight right.&lt;/li&gt;&lt;li&gt;You can use positive and negative numbers. Positive degrees will rotate the object counter-clockwise...&lt;/li&gt;&lt;ul&gt;&lt;li&gt;90 degrees points up&lt;/li&gt;&lt;li&gt;180 degrees points left&lt;/li&gt;&lt;li&gt;270 degrees points down&lt;/li&gt;&lt;li&gt;360 degrees points right&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;i&gt;&lt;br&gt;position&lt;/i&gt; - The location of the object in the World represented by an &lt;i&gt;x and y&lt;/i&gt; vector coordinate system.&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;The center of the World always has a position of 0,0!&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;br&gt; 			&lt;h2&gt;Image&lt;br&gt;&lt;/h2&gt;Images can be applied directly to core components such as rectangles and circles by simply dragging them onto the object from your desktop. Images can also be dragged directly into the application gallery and they can be set and modified using behavior actions.&lt;br&gt;&lt;br&gt;The property dialog provides a browse button so you can search your file system for the image to be applied. The thumbnail preview window also acts as a drop target so images can be dragged directly into this property dialog.&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;&lt;i&gt;image_scaling_mode&lt;/i&gt; - Describes how the image is scaled within the object&lt;/blockquote&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;fit : will force the image to fit as best as possible without changing its aspect ratio (default)&lt;/li&gt;&lt;li&gt;stretch : will force the image size to be equal to the size of the object independent of aspect ratio&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;fit_width : will force the image&amp;#39;s width to be equal to that of the object regardless of the aspect ratio&lt;/li&gt;&lt;li&gt;fit_height : will force the image&amp;#39;s height to be equal to that of the object regardless of the aspect ratio&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;blockquote&gt;&lt;i&gt;hold_on_frame&lt;/i&gt; - Will freeze an animated image on a particular frame. If no frame is specified (the default), the animation will be active.&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;&lt;br&gt;flip_horizontally&lt;/i&gt; - Rotates the image 180 degrees left to right.&lt;br&gt;&lt;ul&gt;&lt;li&gt;false : no rotation applied (default)&lt;/li&gt;&lt;li&gt;true : apply rotation&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;blockquote&gt;&lt;i&gt;flip_vertically&lt;/i&gt; - Rotates the image 180 degrees top to bottom.&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;false : no rotation applied (default)&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;true : apply rotation&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt; &lt;blockquote&gt;&lt;i&gt;&lt;br&gt;image_anchor&lt;/i&gt; - Controls the location of the center of the image.&lt;/blockquote&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;center : vertical/horizontal center of object (default)&lt;/li&gt;&lt;li&gt;north : top of object&lt;/li&gt;&lt;li&gt;south : bottom of object&lt;/li&gt;&lt;li&gt;east : left hand side of object&lt;/li&gt;&lt;li&gt;west : right hand side of object&lt;/li&gt;&lt;li&gt;northeast : top right hand corner of object&lt;/li&gt;&lt;li&gt;northwest : top left hand corner of object&lt;/li&gt;&lt;li&gt;southeast : bottom right hand corner of object&lt;/li&gt;&lt;li&gt;southwest : bottom left hand corner of object&lt;/li&gt;&lt;/ul&gt; &lt;br&gt;&lt;/blockquote&gt; &lt;h3&gt;Text&lt;/h3&gt;The text properties allow you to modify text being displayed inside the object. &lt;i&gt;Note that if you&amp;#39;d like to use specific fonts, it is best to use graphic images since the specified font property may not be available on an end-user&amp;#39;s machine.&lt;/i&gt;&lt;br&gt;&lt;br&gt;This is a nice tool for testing, however. You can put all kinds of information in the text field to help explain how your application is running!&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;&lt;i&gt;font&lt;/i&gt; - The font used to display the characters in the object&amp;#39;s &lt;i&gt;text&lt;/i&gt; field. Format is:&lt;br&gt;&lt;blockquote&gt;&amp;lt;font name&amp;gt; , &amp;lt;weight&amp;gt;, &amp;lt;font size&amp;gt;&lt;br&gt;&lt;/blockquote&gt;&lt;i&gt;&lt;br&gt;text&lt;/i&gt; - Text field that contains the text to be displayed. It defaults to empty.&lt;br&gt;&lt;i&gt;&lt;br&gt;text_alignment&lt;/i&gt; - Alignment of the text relative to the object&amp;#39;s width. The property editor provides the following options. Note, however, that if you are dynamically changing the anchor from within a behavior or method, you need to assign the numerical value (shown in parens).&lt;ul&gt;&lt;li&gt;center : horizontaly aligned in the center. (2)&lt;br&gt;&lt;/li&gt;&lt;li&gt;left : left edge aligned. (0)&lt;br&gt;&lt;/li&gt;&lt;li&gt;right : right edge aligned. (1)&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;&lt;br&gt;text_anchor &lt;/i&gt;- Describes where the text starts within the object. The property editor provides the following options. Note, however, that if you are dynamically changing the anchor from within a behavior or method, you need to assign the numerical value (shown in parens).&lt;br&gt;&lt;ul&gt;&lt;li&gt;center : vertical/horizontal center of object (1)&lt;br&gt;&lt;/li&gt;&lt;li&gt;north : top of object (2)&lt;br&gt;&lt;/li&gt;&lt;li&gt;south : bottom of object (3)&lt;br&gt;&lt;/li&gt;&lt;li&gt;east : left hand side of object (4)&lt;br&gt;&lt;/li&gt;&lt;li&gt;west : right hand side of object (5)&lt;br&gt;&lt;/li&gt;&lt;li&gt;northeast : top right hand corner of object (6)&lt;br&gt;&lt;/li&gt;&lt;li&gt;northwest : top left hand corner of object (7)&lt;br&gt;&lt;/li&gt;&lt;li&gt;southeast : bottom right hand corner of object (8)&lt;br&gt;&lt;/li&gt;&lt;li&gt;southwest : bottom left hand corner of object (9)&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;i&gt;&lt;br&gt;wrap_text&lt;/i&gt; - boolean value describing whether or not the text will wrap and stayed contained within the object itself.&lt;br&gt;&lt;ul&gt;&lt;li&gt;true : wrap the text (default)&lt;/li&gt;&lt;li&gt;false : do&lt;i&gt;not&lt;/i&gt; wrap the text&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;h3&gt;Physics&lt;/h3&gt;These properties control the physical properties of the underlying object. Modifying these properties will have an effect on how the object interacts with other objects in the World.&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;&lt;i&gt;elasticity&lt;/i&gt; - determines the flexibility of the object when it collides with other objects. &lt;br&gt;&lt;ul&gt;&lt;li&gt;defaults to 0.8&lt;/li&gt;&lt;li&gt;1.0 has perfect elasticity&lt;/li&gt;&lt;li&gt;0.0 has no elasticity&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;&lt;br&gt;friction &lt;/i&gt;- the surface resistence for the object.&lt;br&gt;&lt;ul&gt;&lt;li&gt;defaults to 0.8&lt;/li&gt;&lt;li&gt;1.0 has absolute friction&lt;/li&gt;&lt;li&gt;0.0 has no friction&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;&lt;br&gt;ignore_collisions&lt;/i&gt; - determines whether or not the object will interact in a physical way to other objects in the World.&lt;br&gt;&lt;ul&gt;&lt;li&gt;false : the object bounces off any other object&lt;i&gt;that also&lt;/i&gt; has this property set to false (default).&lt;/li&gt;&lt;li&gt;true : the object will not collide with any other object in the system (it appears to pass right through it).&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;&lt;br&gt;mass&lt;/i&gt; - the weight of the object.&lt;br&gt;&lt;i&gt;&lt;br&gt;motion_constraint&lt;/i&gt; - a vector that controls the direction an object is allowed to move. the first value is the horizontal constraint, and the second value controls the vertical constraint.&lt;br&gt;&lt;ul&gt;&lt;li&gt;1.0, 1.0 means the object can move in any direction.&lt;/li&gt;&lt;li&gt;0.0, 1.0 means the object can only move in the vertical plane.&lt;/li&gt;&lt;li&gt;1.0, 0.0 means the object can only move in the horizontal plane.&lt;/li&gt;&lt;li&gt;0.0, 0.0 is equivalent to having the object pinned.&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;&lt;br&gt;orientation_constraint&lt;/i&gt; - a boolean flag the controls whether or not the object can rotate when it collides with other objects.&lt;br&gt;&lt;ul&gt;&lt;li&gt;false : freely rotate (default)&lt;/li&gt;&lt;li&gt;true : no rotation&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;&lt;br&gt;pinned -&lt;/i&gt; a boolean flag the controls wither or not the object can move &lt;i&gt;at all&lt;/i&gt;. For instance, if you don&amp;#39;t want an object to fall when gravity is enabled, &amp;quot;pin it&amp;quot; in place.&lt;br&gt;&lt;ul&gt;&lt;li&gt;false : position will be affected by colliding objects and the force of gravity (default).&lt;/li&gt;&lt;li&gt;true : object is stationary regardless of external forces.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;i&gt;rotational speed &lt;/i&gt;- determines how fast an object is rotating.  A positive value indicates a counter-clockwise motion (as the angle increases as you move counter-clocwise away from 0), and a negative value indivates a clockwise motion.&lt;br&gt;&lt;i&gt;&lt;br&gt;speed&lt;/i&gt; - determines how fast an object is moving. the direction is always in line with the orientation of the object.&lt;br&gt;&lt;i&gt;&lt;br&gt;velocity &lt;/i&gt;- the vector describing the direction and magnitude of the speed.&lt;br&gt;&lt;ul&gt;&lt;li&gt;Changing the speed will implictly change its velocity.&lt;/li&gt;&lt;li&gt;Changing the velocity will&lt;i&gt;not&lt;/i&gt; implicitly change its speed.&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;h3&gt;Geometry&lt;/h3&gt;Simple geometry of the underlying object. The actual properties available depend on the object type. All numbers are of type float, and use the global coordinate system of the World (for example, the default width of the World is 47.5).&lt;br&gt;&lt;br&gt;&lt;b&gt;Circle&lt;br&gt;&lt;/b&gt;&lt;blockquote&gt;&lt;i&gt;radius &lt;/i&gt;- The radius of the circle (there is no current support for ellipses).&lt;br&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;b&gt;Rectangle&lt;br&gt;&lt;/b&gt;&lt;blockquote&gt;&lt;i&gt;height&lt;/i&gt; - The height - in global coordinates - of the rectangle.&lt;br&gt;&lt;i&gt;&lt;br&gt;width - &lt;/i&gt;The width - in global coordinates - of the rectangle.&lt;br&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;b&gt;Line&lt;br&gt;&lt;/b&gt;&lt;blockquote&gt;&lt;i&gt;height&lt;/i&gt; - Ignored.&lt;br&gt;&lt;i&gt;&lt;br&gt;jointLine&lt;/i&gt; - Ignored.&lt;br&gt;&lt;i&gt;&lt;br&gt;width&lt;/i&gt; - The length of the line.&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;h3&gt;Interaction&lt;/h3&gt;This only includes one field at the moment - &lt;i&gt;grabbable &lt;/i&gt;- wich is a boolean and describes whether or not the user can select it with the mouse. &lt;br&gt;&lt;br&gt;This is useful if when you are creating game content that you do not want your players moving around with the mouse. It can also be useful when you are editing and have overlapping objects. It&amp;#39;s nice to make objects ungrabbable so you don&amp;#39;t pick them up by accident.&lt;br&gt;&lt;br&gt;&lt;b&gt;Important caveats about this field&lt;/b&gt;... The property is currently applying itself to other mouse events in the editor that you may not expect. For example:&lt;br&gt;&lt;ol&gt;&lt;li&gt;If an object is NOT grabbable, behaviors that filter mouse clicks on the object will be&lt;i&gt;ignored.&lt;/i&gt;&lt;/li&gt;&lt;li&gt;If an object is NOT grabbable, you cannot drop things on it. For example, you cannot drop images or behaviors from the search results like you normally would. You will have to use their specific editors to perform those actions.&lt;/li&gt;&lt;/ol&gt;&lt;br&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Web Service How-to</title><link>http://wiki.sharendipity.com/page/Web+Service+How-to</link><author>greg.tracy</author><guid isPermaLink="false">http://wiki.sharendipity.com/page/Web+Service+How-to</guid><comments>creation of page (port content from blog)</comments><pubDate>Wed, 12 Aug 2009 10:38:24 CDT</pubDate><description>Several web service interfaces have been built and shared within the Sharendipity community including services for &lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://blog.sharendipity.com/tag/facebook&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Facebook&lt;/a&gt;, Twitter, &lt;a href=&quot;http://wiki.sharendipity.com/page/Web+Services&quot; target=&quot;_self&quot;&gt;Flickr&lt;/a&gt;, &lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://www.gregtracy.com/more-posterous-goodies&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Posterous&lt;/a&gt;, and &lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://blog.sharendipity.com/how-to-accessing-your-google-spreadsheets&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Google Docs&lt;/a&gt;. Using these components you can quickly and easily access the data from these sites/services.&lt;br&gt; But what happens if you can&amp;rsquo;t find the service you&amp;rsquo;re looking for? Or if you want to improve on one of the existing services and make a better one yourself? This post is here to help. We&amp;rsquo;ll walk you through some of the basic elements for building a new component that interfaces with an external web service. To get started, first &lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://games.sharendipity.com/create&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;launch the Sharendipity editor&lt;/a&gt;. &lt;br&gt;&lt;h2&gt;Create new object type &lt;/h2&gt;Creating a new type provides you with the ability to define custom assets that perform a particular job or store specific data. They don&amp;rsquo;t necessarily have to be a displayable actor inside your World. The definitions for these new assets are entirely up to you.&lt;br&gt; In the case of a web service, you&amp;rsquo;ll define the location of the service, describe inputs, and then define custom actions that let the users of your service interact with it. &lt;br&gt;&lt;ol&gt;&lt;li&gt;Open the Explorer dialog and select New from the Types tab.  &lt;br&gt;&lt;/li&gt;&lt;li&gt;Name your new type. For example, &amp;ldquo;Twitter Service &amp;ndash; public timeline&amp;rdquo;&lt;/li&gt;&lt;li&gt;Declare that your new type &amp;ldquo;is a REST Web Service&amp;rdquo; by clicking the + sign next to its name, and selecting the is a button. You can find the REST Web Service type by selecting Other&amp;hellip; and navigating to the Local-&amp;gt;Types tab in the Explorer that is launched. The following diagram highlights this navigation.&lt;/li&gt;&lt;/ol&gt; &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;&lt;h2&gt;Default properties&lt;/h2&gt; Once you have the REST Web Service type defined, you must specify the details of your web service by initializing a couple of parameters. &lt;ul&gt;&lt;li&gt;URL : This property defines the location of the web service. You will need to consult the API documentation for the respective web service to find the URL for your respective web service type. &lt;ul&gt;&lt;li&gt;For example, Twitter&amp;rsquo;s public timeline is: http://twitter.com/statuses/public_timeline.xml &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;proxied : This property defines whether or not your web service calls will be routed through the Sharendipity server. You are required to turn this on for any web service that hasn&amp;rsquo;t granted domain access for your application. This is part of Flash&amp;rsquo;s security model, and you&amp;rsquo;ll find that some services like Flickr&amp;rsquo;s allow access, but others like Twitter do not.&lt;/li&gt;&lt;li&gt;result : This property is not intended to be initialized. When the web service is called, the data returned from the call will be placed in this property.&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;Custom properties&lt;/h2&gt; Many web services have optional and required parameters. For instance, the &lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://posterous.com/api/reading&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Posterous API&lt;/a&gt; lets you specify the subdomain of the site you are reading from. In order to define parameters, you must define custom properties in your type that are of type REST Input.&lt;br&gt; Each REST Input has a name and value pair. The name value should be the parameter name as defined by the web service API you are trying to access. In the Posterous example, the name field is &amp;lsquo;hostname&amp;rsquo;. The value field carries your parameter value. When the web service is invoked, each REST Input is automatically appended to the end of the URL property. &lt;br&gt;If you were to look at the full URL when the service is invoked, you&amp;rsquo;d see something like the following: &lt;br&gt;http://posterous.com/api/readposts?hostname=gregtracy &lt;br&gt;As you are making calls to the web service, you can simply manipulate the value parameter of the REST Input to change your query to the respective web service. &lt;h2&gt;Web service actions&lt;/h2&gt; By default, there is a single method defined for all web service types called invoke web service. This is the mechanism by which you initiate a call to your web service. It can be called internally as well as externally by users of your component. &lt;br&gt;Just like other objects in the system, you can create your own &lt;a href=&quot;http://wiki.sharendipity.com/page/Anatomy+of+a+Behavior&quot; target=&quot;_self&quot; title=&quot;Behaviors&quot;&gt;behaviors&lt;/a&gt;, methods, and &lt;a href=&quot;http://wiki.sharendipity.com/page/Properties&quot; target=&quot;_self&quot; title=&quot;Properties&quot;&gt;properties&lt;/a&gt; for your new type. For instance, you may want to create your own invoke method which takes parameters that are passed to the web service. For example, passing in a user ID to a Facebook web service to specify the user whose profile you would like to access. &lt;br&gt;&lt;h2&gt;Referencing the service &lt;/h2&gt;Once you&amp;rsquo;ve defined your web service type, you can share it with the rest of the community with the Save option found in the object builder. Otherwise, the web service will be saved along with the application you&amp;rsquo;ve defined it in. Whether or not you share it, the new type can now be accessed from anywhere else in the application. &lt;ul&gt;&lt;li&gt;If you drag it into your World and drop it, you will be prompted to create a new custom property for the World.&lt;/li&gt;&lt;li&gt;You can drag it into a behavior or method and drop it to create a local variable inside your logic.&lt;/li&gt;&lt;li&gt;It will also be accessible from the Other tab when you define new properties anywhere within your application.&lt;/li&gt;&lt;/ul&gt; Just remember that if you don&amp;rsquo;t save the service by itself, you can only access is from the Local tab of the Explorer within the current application. If you do save it, it will appear in the Types tab for everyone.&lt;br&gt;&lt;h2&gt; Tips for better reuse &lt;/h2&gt;Creating an abstraction of the web services call is a nice feature by itself. However, it becomes most useful when you provide really easy access to the data that is returned. For instance, rather than simply providing the invoke web service call and letting the callers parse the data returned, try creating methods that do that parsing for them. &lt;ul&gt;&lt;li&gt;The Twitter service has a method that returns an array of Twitter Status types.&lt;/li&gt;&lt;li&gt;The Posterous service has a method that returns an array of Posterous Blog Post types.&lt;/li&gt;&lt;li&gt;The Facebook User service has a method that returns an array of Facebook User types.&lt;/li&gt;&lt;/ul&gt; Each of these services define new methods that call the invoke web service method internally and parse the return data automatically. This way, users of the services don&amp;rsquo;t have to worry about how any of the data is formatted. &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Web Services</title><link>http://wiki.sharendipity.com/page/Web+Services</link><author>greg.tracy</author><guid isPermaLink="false">http://wiki.sharendipity.com/page/Web+Services</guid><comments>move web service how-to to its own page</comments><pubDate>Wed, 12 Aug 2009 10:27:27 CDT</pubDate><description>Sharendipity is a great platform for visualizing third-party data, and it can be done via our REST web services.. This provides an opportunity to access data from an outside source and include it within your application. For example, you can display photographs from your &lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://flickr.com&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Flickr&lt;/a&gt; account, access your &lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://www.facebook.com&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Facebook&lt;/a&gt; account, or access weather and stock data.&lt;br&gt;&lt;br&gt;&lt;h2&gt;Example Applications&lt;br&gt;&lt;/h2&gt;Here are some of the existing examples...&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://games.sharendipity.com/customize/?aid=2423&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Flickr Photo Slideshow Template&lt;/a&gt; (Flickr) : A customizable web widget that streams photos from Flickr based on a username and/or photo tags.&lt;br&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://games.sharendipity.com/assets/2437/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Flickr Scramble&lt;/a&gt; (Flickr) : A customizable puzzle game that uses a Flickr photo as the input to the puzzle.&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://apps.facebook.com/sharendipity/assets/2393/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Facebook Photo Browser&lt;/a&gt; (Facebook) : An application that lets you browse all of the photos in you entire Facebook social graph.&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://apps.facebook.com/sharendipity/assets/2458/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Facebook Photo Scramble&lt;/a&gt; (Facebook) : Like the Flickr example, this is a puzzle game except it uses a photo from your Facebook friends as the input to the puzzle.&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://apps.facebook.com/sharendipity/assets/2337/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Who Be Me?&lt;/a&gt; (Facebook) : This quiz game asks you to pair up random facts about your friends with the correct friend.&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://apps.facebook.com/sharendipity/assets/2918/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Facebook Photo Demo&lt;/a&gt; (Facebook) : A demo application that explains some of the integration points for the Facebook web services.&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://beta.sharendipity.com/customize/?aid=2441&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Posterous Photo Stream&lt;/a&gt; (Posterous) : A customizable web widget that streams photos from your Posterous blog.&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://apps.facebook.com/sharendipity/assets/2333/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;All City Food Drive&lt;/a&gt; (Google Docs) : A widget that displays data stored in a Google spreadsheet.&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;h2&gt;Documented Examples&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://wiki.sharendipity.com/page/Facebook+API&quot; target=&quot;_self&quot;&gt;Facebook API&lt;/a&gt; : details on the specific bindings between Sharendipity and Facebook&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://wiki.sharendipity.com/page/Google+Spreadsheets&quot; target=&quot;_self&quot;&gt;Google Docs&lt;/a&gt; : example components used to access Google spreadsheet data&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;h2&gt;Creating your own web service interface&lt;br&gt;&lt;/h2&gt;Interested in using web services yourself? You have one of two options...&lt;br&gt;&lt;br&gt;&lt;ol&gt;&lt;li&gt;Reuse and existing web service component created by other users. You&amp;#39;ll find examples from Facebook, Flickr, Google, Twitter, Posterous, and others. The above example applications are great starting points to learn how some of these are being used today.&lt;br&gt;&lt;/li&gt;&lt;li&gt;Create your own interface to your favorite web service. For step-by-step instructions, check out this how-to page.&lt;br&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt;&lt;blockquote&gt;&lt;div align=&quot;left&quot;&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Passing Parameters to an Application</title><link>http://wiki.sharendipity.com/page/Passing+Parameters+to+an+Application</link><author>dale.beermann</author><guid isPermaLink="false">http://wiki.sharendipity.com/page/Passing+Parameters+to+an+Application</guid><pubDate>Fri, 07 Aug 2009 11:30:30 CDT</pubDate><description>One of the really cool ways that you can integrate Sharendipity into your own web applications is by passing arguments into the Sharendipity player. This functionality allows you to incorporate data such as user session IDs or anything else managed by your own server into a running Sharendipity app. &lt;h2&gt;Accessing Application Parameters&lt;/h2&gt; Accessing the parameters to your application is actually really simple. There is a method on the Application called &amp;quot;Get Application Parameter.&amp;quot; Access the Application object by clicking on the &amp;quot;Actors&amp;quot; tab in the Values section of the &lt;a href=&quot;http://wiki.sharendipity.com/page/Anatomy+of+a+Behavior&quot; target=&quot;_self&quot;&gt;Behavior or Method Builder&lt;/a&gt;. Click on the object called &amp;quot;Application&amp;quot; and scroll down to the section where the methods are listed. Just drag the method into the right-hand panel and enter the name of the parameter that you want to access:&lt;br&gt;   &lt;h2&gt;Setting up the Embed Code&lt;/h2&gt; Now that you have your application set up, you just need to pass the application parameter to the embed code. For example, this is the embed code that is being used for the application we&amp;#39;re working on here:&lt;br&gt;&lt;font face=&quot;Courier&quot; size=&quot;2&quot;&gt;&amp;lt;object width=&amp;quot;300&amp;quot; height=&amp;quot;200&amp;quot; data=&amp;quot;http://static.sharendipity.com/player.swf?aid=3371&amp;amp;appParam=Sharendipity%20Rocks!!!&amp;quot; type=&amp;quot;application/x-shockwave-flash&amp;quot;&amp;gt;&lt;br&gt;&amp;lt;param name=&amp;quot;src&amp;quot; value=&amp;quot;http://static.sharendipity.com/player.swf?aid=3371&amp;amp;appParam=Sharendipity%20Rocks!!!&amp;quot; /&amp;gt;&lt;br&gt;&amp;lt;/object&amp;gt;&lt;/font&gt;&lt;br&gt;&lt;br&gt; When you publish your application, an embed code similar to the above one will be given to you so that you can put your application on your own site. The only difference between the code I would have been given and the code above is this section: &amp;quot;&amp;amp;appParam=Sharendipity%20Rocks!!!&amp;quot;&lt;br&gt; You can see that we&amp;#39;re already passing the application ID to the Sharendipity player (&amp;quot;aid=3371&amp;quot; in this case). All we&amp;#39;re doing is passing the Flash application another parameter as part of the querystring that can be accessed inside Sharendipity. This is the value that is pulled out when the &amp;quot;Get Application Parameter&amp;quot; method is called with &amp;quot;appParam&amp;quot; as the name of the parameter we want. If you&amp;#39;re running a web server, you can set up your pages to dynamically write whatever value you want into the embed code.&lt;br&gt;If you want to play around with the application, you can edit it and save your own here: &lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://games.sharendipity.com/create/?aid=3371&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://games.sharendipity.com/create/?aid=3371&lt;/a&gt;. &lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;mceItemTable&quot; width=&quot;100%&quot;&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td align=&quot;center&quot;&gt;&lt;br&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt;&lt;br&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Documentation</title><link>http://wiki.sharendipity.com/page/Documentation</link><author>dale.beermann</author><guid isPermaLink="false">http://wiki.sharendipity.com/page/Documentation</guid><comments>link</comments><pubDate>Wed, 05 Aug 2009 15:18:14 CDT</pubDate><description>&lt;h3&gt;&lt;a href=&quot;http://wiki.sharendipity.com/page/Applications&quot; target=&quot;_self&quot;&gt;Applications&lt;/a&gt;&lt;/h3&gt;Make something great today in Sharendipity! Whether it&amp;#39;s a game, a slide show, or ... ? You&amp;#39;re only limited by your creativity. Use this section to learn more about saving and distributing your next great application.&lt;br&gt;&lt;br&gt; 			&lt;h3&gt;&lt;a href=&quot;http://wiki.sharendipity.com/page/Behaviors&quot; target=&quot;_self&quot;&gt;Behaviors&lt;/a&gt;&lt;/h3&gt;Want to make an object move? Want to keep track of your game score? Behaviors define the actions that take place during well defined events in your application. Read on to learn more.&lt;br&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;h3&gt;&lt;a href=&quot;http://wiki.sharendipity.com/page/Properties&quot; target=&quot;_self&quot;&gt;Properties&lt;/a&gt;&lt;/h3&gt;Do you want to change the appearance of your object? Properties define the default and custom attributes of objects in your application.This includes attributes that define an object&amp;#39;s appearance as well as physical properties like friction and mass. Check this section for help understanding what&amp;#39;s available to you as a creator.&lt;br&gt;&lt;br&gt;&lt;h3&gt;&lt;a href=&quot;http://wiki.sharendipity.com/page/Tools&quot; target=&quot;_self&quot;&gt;Toolbox&lt;/a&gt;&lt;/h3&gt;At their most basic level, every object in the world is a simple drawing object. A rectangle, circle, or line. Many times they have images, behaviors, and unique properties, but underneath, they&amp;#39;re a simple shape. If you&amp;#39;re creating from scratch, all of the tools can be found by clicking on the Builder character.&lt;br&gt;&lt;br&gt; 			&lt;h3&gt;&lt;/h3&gt;&lt;h3&gt;&lt;a href=&quot;http://wiki.sharendipity.com/page/Web+Services&quot; target=&quot;_self&quot;&gt;Web Services&lt;/a&gt;&lt;/h3&gt;If you&amp;#39;d like to integrate information from other sources into your application, use our web services feature to access it. We&amp;#39;ve made it easy to access a wide variety of information from your Facebook network and other web services.&lt;br&gt;&lt;br&gt;&lt;h3&gt;&lt;a href=&quot;http://wiki.sharendipity.com/page/Achievements&quot; target=&quot;_self&quot;&gt;Achievements&lt;/a&gt;&lt;/h3&gt;Interested in adding custom achievements to your application? This sections shows you how to engage your user in fun new ways, by creating secondary goals for application usage.&lt;br&gt;&lt;br&gt;&lt;h2&gt;&lt;a href=&quot;http://wiki.sharendipity.com/page/Developer+Tools&quot; target=&quot;_self&quot;&gt;Developer Tools&lt;/a&gt;&lt;/h2&gt;Sharendipity provides a few advanced features for developers, including a Problem Viewer as well as debugging and performance tools.&lt;br&gt;&lt;br&gt;&lt;h2&gt;Configuration&lt;/h2&gt;Configuration is broken out into two separate sections:&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;h2&gt;&lt;a href=&quot;http://wiki.sharendipity.com/page/Application+Configuration&quot; target=&quot;_self&quot;&gt;Application Configuration&lt;/a&gt;&lt;/h2&gt;&lt;/li&gt;&lt;li&gt;&lt;h2&gt;&lt;a href=&quot;http://wiki.sharendipity.com/page/Component+Configuration&quot; target=&quot;_self&quot;&gt;Component Configuration&lt;/a&gt;&lt;/h2&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;br&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Developer Tools</title><link>http://wiki.sharendipity.com/page/Developer+Tools</link><author>dale.beermann</author><guid isPermaLink="false">http://wiki.sharendipity.com/page/Developer+Tools</guid><pubDate>Wed, 05 Aug 2009 15:17:35 CDT</pubDate><description>This page highlights the advanced developer tools that help make it easier to create and debug applications in Sharendipity.&lt;br&gt;&lt;br&gt;&lt;h2&gt;&lt;a href=&quot;http://wiki.sharendipity.com/page/Console+Viewer&quot; target=&quot;_self&quot;&gt;Console Viewer and Trace Statements&lt;/a&gt;&lt;/h2&gt;The Console Viewer provides a dialog that the developer can write to in his or her application for debugging purposes.&lt;br&gt;&lt;br&gt;&lt;h2&gt;&lt;a href=&quot;http://wiki.sharendipity.com/page/Problem+Viewer&quot; target=&quot;_self&quot;&gt;Problem Viewer&lt;/a&gt;&lt;/h2&gt;The Problem Viewer provides a rundown of the errors that are preventing parts of an application from running.&lt;br&gt;&lt;br&gt;&lt;h2&gt;&lt;a href=&quot;http://wiki.sharendipity.com/page/Performance+Measurement&quot; target=&quot;_self&quot;&gt;Performance Measurement&lt;/a&gt;&lt;/h2&gt;The Profiler provides low-level access to performance data for a running behavior or method in an application.&lt;br&gt;&lt;br&gt;&lt;h2&gt;&lt;a href=&quot;http://wiki.sharendipity.com/page/Breakpoints&quot; target=&quot;_self&quot;&gt;Breakpoints&lt;/a&gt;&lt;/h2&gt;Breakpoints provide a way to halt execution of a behavior or method to analyze property values.&lt;br&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Breakpoints</title><link>http://wiki.sharendipity.com/page/Breakpoints</link><author>dale.beermann</author><guid isPermaLink="false">http://wiki.sharendipity.com/page/Breakpoints</guid><pubDate>Wed, 05 Aug 2009 15:14:57 CDT</pubDate><description>Like most debugging tools, Sharendipity also offers a way to halt execution of a thread to examine the current variable data. The current implementation uses a &amp;quot;Breakpoint&amp;quot; statement. Under the hood, this throws an exception that will show up in the &lt;a href=&quot;http://wiki.sharendipity.com/page/Problem+Viewer&quot; target=&quot;_self&quot;&gt;Problem Viewer&lt;/a&gt;, preventing following statements in the &lt;a href=&quot;http://wiki.sharendipity.com/page/Behaviors&quot; target=&quot;_self&quot;&gt;behavior&lt;/a&gt; or method from running. Opening the problem viewer and double-clicking on the Breakpoint exception will bring you to the Behavior or Method where the breakpoint was hit. The really handy part is that now you can mouse over variables in the Method Builder or &lt;a href=&quot;http://wiki.sharendipity.com/page/Anatomy+of+a+Behavior&quot; target=&quot;_self&quot;&gt;Behavior Builder&lt;/a&gt; to see their values:&lt;br&gt;&lt;br&gt;  &lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Performance Measurement</title><link>http://wiki.sharendipity.com/page/Performance+Measurement</link><author>dale.beermann</author><guid isPermaLink="false">http://wiki.sharendipity.com/page/Performance+Measurement</guid><comments>formatting</comments><pubDate>Wed, 05 Aug 2009 15:13:12 CDT</pubDate><description> The Sharendipity editor also includes some new functionality that lets you analyze which parts of your application are taking longer to execute. Similar to the Console Window, the profiler can be accessed from the Director menu:&lt;br&gt;&lt;br&gt; Clicking on the Performance... item in the director menu will bring up the Performance Management dialog, which looks like this:&lt;br&gt;&lt;br&gt;  &lt;br&gt;&lt;br&gt; In this view, Profiling has already been enabled and data is being collected in the running application. From the menu you can view the current profiling data, and you can also clear the profiling data. Viewing the profiling data will give you a view similar to this:&lt;br&gt;&lt;br&gt;  &lt;br&gt;&lt;br&gt; Similar to the Problem Viewer, double-clicking on one of the rows in the Profiler will allow you to see exactly which calls are taking all of the time, including breakdowns by constructs such as &amp;quot;if&amp;quot; statements:&lt;br&gt;&lt;br&gt;  &lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Problem Viewer</title><link>http://wiki.sharendipity.com/page/Problem+Viewer</link><author>dale.beermann</author><guid isPermaLink="false">http://wiki.sharendipity.com/page/Problem+Viewer</guid><comments>formatting</comments><pubDate>Wed, 05 Aug 2009 15:12:49 CDT</pubDate><description>The Problem Viewer is a dialog that displays issues to the developer that prevent the application from running correctly. When there is a problem in an application, a red notifier saying &amp;quot;Problems&amp;quot; will appear in the top-left corner of the editor. Clicking on this will bring up the Problem Viewer.&lt;br&gt;&lt;br&gt; Both compilation issues and runtime issues are displayed in the Problem Viewer. What makes the Problem Viewer so helpful is that double-clicking on a row in the Problem Viewer will take you directly to the location of the problem. You don&amp;#39;t need to go searching around for the location of the error.&lt;br&gt;&lt;br&gt; Below is a view of the Problem Viewer in an application I set up to be broken intentionally. You can see that there are a lot of issues and the Problem Viewer allows me to see exactly which classes and methods they&amp;#39;re coming from.&lt;br&gt;&lt;br&gt; &lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Console Viewer</title><link>http://wiki.sharendipity.com/page/Console+Viewer</link><author>dale.beermann</author><guid isPermaLink="false">http://wiki.sharendipity.com/page/Console+Viewer</guid><comments>formatting</comments><pubDate>Wed, 05 Aug 2009 15:12:12 CDT</pubDate><description> One of the more basic debugging tools at the hands of the programmer using a traditional IDE is the console, combined with a way to print data to it. Sharendipity also has a Console Window that can receive text output from an application. The console can be accessed through the Director menu:&lt;br&gt;&lt;br&gt; This will bring up the console window, shown here with output from the &lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://beta.sharendipity.com/assets/2606/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot; title=&quot;Teslaformer&quot;&gt;Teslaformer&lt;/a&gt; game:&lt;br&gt;&lt;br&gt;  &lt;br&gt;&lt;br&gt; The console can be written to with Trace statements inside &lt;a href=&quot;http://wiki.sharendipity.com/page/Behaviors&quot; target=&quot;_self&quot;&gt;Behaviors&lt;/a&gt; or Methods of a class in Sharendipity. The trace statement can also take just about any type. You can even concatenate values together using the &amp;quot;+&amp;quot; operator as shown here:&lt;br&gt;&lt;br&gt;  &lt;br&gt;&lt;br&gt; The console can be very useful for tracking certain state in an application, especially when you want to see when behaviors are firing or certain property values.&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Application Configuration</title><link>http://wiki.sharendipity.com/page/Application+Configuration</link><author>dale.beermann</author><guid isPermaLink="false">http://wiki.sharendipity.com/page/Application+Configuration</guid><comments>more formatting</comments><pubDate>Wed, 29 Jul 2009 10:16:14 CDT</pubDate><description>One of the things that makes Sharendipity so unique is the ability for anyone in the community to become a producer of components that others can build on top of. This can include small elements like a game actor or a graphic, or perhaps a behavior that can be applied to certain classes of actors.&lt;br&gt;&lt;br&gt; But perhaps the best example of becoming a power builder is the ability to create entire application templates. These come in all shapes and sizes, but they allow anyone in the community to quickly and easily extend your work at the application level. This is best seen through our configurator feature. Examples include :&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;Swappers : &lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://games.sharendipity.com/get-started/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Simple games&lt;/a&gt; that let anyone swap out images and sounds to create custom versions of the game.&lt;/li&gt;&lt;li&gt;Application Kits : A collection of parts that can be assembled in any way to create a unique game or puzzle. For example... &lt;ul&gt;&lt;li&gt;The &lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://beta.sharendipity.com/customize/?aid=2244&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Puzzle Popper Creator&lt;/a&gt; lets you create your own Popper Puzzle from scratch using the various game elements.&lt;/li&gt;&lt;li&gt;The &lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://beta.sharendipity.com/customize/?aid=2303&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Match Template&lt;/a&gt; lets you quickly create interactive study guides.&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; Not everyone realizes this, but &lt;b&gt;&lt;i&gt;anyone&lt;/i&gt;&lt;/b&gt; can create one of these templates to be re-used by others. This post will walk you through the basics of creating a simple swapper template. &lt;h2&gt;Application Configuration&lt;/h2&gt;&lt;h2 align=&quot;right&quot;&gt; &lt;/h2&gt;    Once you&amp;#39;ve built a fully functional application, you have the opportunity to expose different elements to be configured. In order to configure an application to be customized, start by clicking on the Director (the character farthest to the left), and selecting &amp;quot;Edit Class...&amp;quot; as show in the image on the right. This will bring up the Object Builder for the Application class, as shown below. &lt;br&gt;&lt;br&gt;  &lt;br&gt;&lt;br&gt; Clicking on the Advanced menu, and selecting &amp;quot;Integration...&amp;quot; will pop up the &amp;quot;Integration Step Management&amp;quot; dialog. This dialog allows you to set up the individual steps that a user will walk through when they are customizing an application.&lt;br&gt;&lt;br&gt;  &lt;br&gt;&lt;br&gt; Right now there are three types of steps that you can add: Instructional, property modification, and actor placement. Instructional steps require no input from the user, they just allow the author to provide information about the configuration process. Property modification steps, listed as &amp;quot;Ask for one or more property values&amp;quot; in the step addition dialog, allow the user to specify a value for any property on any object. These may be used to set the number of enemies, firing rates, or really anything that the author has set up to be configured. Actor placement steps allow the author to specify certain actors that the user can drag into the world. This allows the configurator to function as a sort of level editor where the user is actually creating the layout of the game that they&amp;#39;re making.&lt;br&gt;&lt;br&gt; Above you can see the integration steps for &lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://beta.sharendipity.com/customize/?aid=3273&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Floater&lt;/a&gt;, one of our customizable games. You can see there are six steps. The first is simply an introduction to the configuration wizard from the standpoint of the Floater author:&lt;br&gt;&lt;br&gt;  &lt;br&gt;&lt;br&gt; The other steps allow the user to configure various properties of the application, including the image for the main character, the number of enemies (1 or 2 in this case), images for two different kinds of enemies, and the background image. When someone wants to configure the actual application, this is what they&amp;#39;ll see:&lt;br&gt;&lt;br&gt; &lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://beta.sharendipity.com/customize/?aid=3273&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt; &lt;/a&gt;&lt;br&gt;&lt;br&gt; Similarly, editing the second integration step for Floater lets us see how it is set up. The World property &amp;quot;character image&amp;quot; is the one being edited:&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;You can see allows us to provide some instructions for this step as well, but now user input is required to move on to the next step. Again, the corresponding dialog when the user is actually editing the application looks like this:&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;For an example of an actor placement step, we&amp;#39;ll take a look at the &lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://beta.sharendipity.com/customize/?aid=2244&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Puzzle Poppers Creator&lt;/a&gt;. This is a balloon popping game that has been set up so that the user can place balloons and walls to build their own levels for others to play. The integration step of interest looks like this:&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;And when the user is configuring the application, the dialog appears as such:&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Component Configuration</title><link>http://wiki.sharendipity.com/page/Component+Configuration</link><author>dale.beermann</author><guid isPermaLink="false">http://wiki.sharendipity.com/page/Component+Configuration</guid><comments>initial work for component configuration</comments><pubDate>Wed, 29 Jul 2009 10:12:11 CDT</pubDate><description>Component configuration is very similar to &lt;a href=&quot;http://wiki.sharendipity.com/page/Application+Configuration&quot; target=&quot;_self&quot;&gt;Application Configuration&lt;/a&gt;. The main difference is that you&amp;#39;re creating objects that others will configure as they&amp;#39;re building they&amp;#39;re own game. With application customization, the author is defining how the entire application is configured for someone to add their own twist.&lt;br&gt;&lt;br&gt;&lt;h2&gt;An Example: Creating a Flickr Widget&lt;/h2&gt;&lt;br&gt;A lot of this is similar to the steps in the &lt;a href=&quot;http://wiki.sharendipity.com/page/Application+Configuration&quot; target=&quot;_self&quot;&gt;Application Configuration&lt;/a&gt; page. However, all of the interaction with the customization dialogs happens within the &lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://beta.sharendipity.com/create/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Editor&lt;/a&gt;, rather than in the &lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://beta.sharendipity.com/get-started/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Customizer&lt;/a&gt;.&lt;br&gt;&lt;br&gt;Similar to creating customizable applications, customization of components happens from the Integration menu item in the Advanced section of the Object Builder:&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;This brings up the Integration Step Management dialog, where you can add, edit, and delete the integration steps.&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;Clicking on &amp;quot;Add&amp;quot; will let you create new integration steps. The only difference here between Application customization and Component customization is that the &amp;quot;Place Actors&amp;quot; step is invalid in the context of Component customization. In addition, adding integration steps that allow you to modify properties will only provide access to the properties of the component being customized, rather than the entire Application and its children. This is what the editor for the Flickr username property in this component looks like:&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;You can see that there are a set of instructions that control what happens when the component is consumed by another author, and the correct property being modified is listed.&lt;br&gt;&lt;br&gt;Once integration is set up for a component, when it is added to a new object by being dragged from the search results, the user will be prompted with a dialog to customize it to their needs:&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;Once configured, the component should be set up to operate correctly in your application.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Make a Game!</title><link>http://wiki.sharendipity.com/page/Make+a+Game%21</link><author>dale.beermann</author><guid isPermaLink="false">http://wiki.sharendipity.com/page/Make+a+Game%21</guid><comments>finishing initial work on creating a game from the template</comments><pubDate>Tue, 28 Jul 2009 17:50:31 CDT</pubDate><description>So you&amp;#39;re a little antsy and want to dive in. OK. Click &lt;font size=&quot;4&quot;&gt;&lt;b&gt;&lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://beta.sharendipity.com/create/?aid=3267&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;. The rest of this page will help explain what that template does if you need some help.&lt;br&gt;&lt;br&gt;&lt;h2&gt;The Editor&lt;/h2&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;When the editor first opens, you&amp;#39;ll see that there is a little bit of text telling you how to save the game so that you have your own copy. Once you save it, you will be working in your own new game.&lt;br&gt;&lt;br&gt;&lt;h2&gt;The &amp;quot;Click to Continue&amp;quot; Object&lt;/h2&gt;&lt;br&gt;When creating games, it&amp;#39;s very common that you want to keep track of whether or not the game is currently playing, or if it is in a &amp;quot;paused&amp;quot; state. The &amp;quot;Click to Continue&amp;quot; object controls this. When the player clicks on the world, this object will disappear, and the World&amp;#39;s &amp;quot;playing&amp;quot; property will be set to true.&lt;br&gt;&lt;br&gt;Defining Your Own Playing Logic&lt;br&gt;&lt;br&gt;Typically you don&amp;#39;t want to create game logic that runs when the game is in the &amp;quot;paused&amp;quot; state. To ensure this, when you are creating this type of logic, just use an &amp;quot;if&amp;quot; statement that checks whether or not the World&amp;#39;s playing property is set to true. So first create a new &lt;a href=&quot;http://wiki.sharendipity.com/page/Behaviors&quot; target=&quot;_self&quot;&gt;behavior&lt;/a&gt; (for this example, I just made on on a key press) and choose the right event trigger for your behavior. &lt;br&gt;&lt;br&gt;Click on the Logic tab. The &amp;quot;if&amp;quot; statement should be the first one. Drag it over to the right-hand panel:&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;Now click on the &amp;quot;actors&amp;quot; tab, and click on the &amp;quot;World&amp;quot; instance to get to the World properties:&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;Scroll down to the &amp;quot;playing&amp;quot; property and drag it into the &amp;quot;if&amp;quot; statement, where the &amp;quot;true&amp;quot; value currently is located:&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;Now any logic that you want to add should go into that if statement, and it will never run until the user clicks the mouse to start the game.&lt;br&gt;&lt;br&gt;&lt;h2&gt;Adding Objects&lt;/h2&gt;&lt;br&gt;You can either start by creating your own objects using the &lt;a href=&quot;http://wiki.sharendipity.com/page/Drawing+Tools&quot; target=&quot;_self&quot;&gt;tools&lt;/a&gt; on the Builder menu, or you can search the community from the Explorer menu (on the right) and dragging actors into your world. Or, you can create your own objects and use the Sharendipity community to find images, behaviors, etc. for your object.&lt;br&gt;&lt;br&gt;&lt;h2&gt;Setting the Score&lt;/h2&gt;&lt;br&gt;Once you&amp;#39;ve figured out how to control your gameplay, you&amp;#39;ll want to know how to set the score. It&amp;#39;s pretty simple really. All we need to do is modify the world&amp;#39;s score property. &lt;br&gt;&lt;br&gt;You&amp;#39;ll probably be adding to the score, so first click on the Logic tab, and then scroll down to the &amp;quot;add&amp;quot; statement. Drag that over into your right-hand panel. You can enter your own value into the add statement by dragging it into the location where the &amp;quot;1&amp;quot; is, or you can drag another &lt;a href=&quot;http://wiki.sharendipity.com/page/Object+Referencing+Guidelines&quot; target=&quot;_self&quot;&gt;property reference&lt;/a&gt; over there.&lt;br&gt; &lt;br&gt;Now navigate to the World properties like you did for your game logic by first clicking on the actors tab, and then clicking on the World instance:&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;Now scroll down to score and drag it into the right-hand side of the &amp;quot;add&amp;quot; statement and you should end up with this:&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;&lt;h2&gt;Ending the Game&lt;/h2&gt; &lt;br&gt;There is also a &amp;quot;lives&amp;quot; property on the World. Just create your own logic as before so that you can add -1 to the World&amp;#39;s &amp;quot;lives&amp;quot; property when you want to. When that value reaches zero, an animated &amp;quot;Game Over&amp;quot; object will pop up. &lt;br&gt;&lt;br&gt;The &amp;quot;Game Over&amp;quot; object takes care of using the World&amp;#39;s &amp;quot;score&amp;quot; property to submit the player&amp;#39;s score to the server. Then, after a second or two, the stock Sharendipity High Scores dialog will display signifying the end of the game. The player will be given the option to replay at that point. You don&amp;#39;t need to deal with any of the logic!&lt;br&gt;&lt;br&gt;&lt;h2&gt;Publish!&lt;/h2&gt;&lt;br&gt;Be sure to publish your game so that everyone can see it! Just click on the Director menu, and click on Profile:&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;The following dialog will display with your application&amp;#39;s information. Be sure to update the name and the description, and add an icon. Adding tags may help people find it easier too (is it a &amp;quot;shooter&amp;quot; style game? or a &amp;quot;puzzle&amp;quot; game?) Then check the box to make your application public and save it!&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Video Tutorials</title><link>http://wiki.sharendipity.com/page/Video+Tutorials</link><author>dale.beermann</author><guid isPermaLink="false">http://wiki.sharendipity.com/page/Video+Tutorials</guid><pubDate>Tue, 28 Jul 2009 10:37:21 CDT</pubDate><description>This page contains several video tutorials to help you make your own games in Sharendipity.&lt;br&gt;&lt;h2&gt;Create a Space Shooter in Less than 10 Minutes&lt;/h2&gt;This video shows the creation of a simple space shooter game. You can even edit the saved game &lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://games.sharendipity.com/assets/3204/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt; &lt;/div&gt;&lt;/div&gt;&lt;/embed&gt;&lt;/div&gt;&lt;br&gt;&lt;h2&gt;Creating a Flickr Photo Stream&lt;/h2&gt;This video shows in fast motion how a Flickr Stream was created. It uses a combination of homemade components as well as the re-use of some Flickr web services. You can find the fully customizable version of this application &lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://games.sharendipity.com/assets/2423/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt; &lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;h2&gt;Creating a Customizable Application&lt;/h2&gt;This video shows in fast motion how the above Flickr app was converted into a customizable application.&lt;br&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt; &lt;/div&gt;&lt;div align=&quot;center&quot;&gt;&lt;/div&gt;&lt;br&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item><item><title>Creating Bloomshine</title><link>http://wiki.sharendipity.com/page/Creating+Bloomshine</link><author>dale.beermann</author><guid isPermaLink="false">http://wiki.sharendipity.com/page/Creating+Bloomshine</guid><comments>add note about old editor</comments><pubDate>Fri, 24 Jul 2009 16:30:36 CDT</pubDate><description>NOTE: This tutorial was built in the old version of our editor. It is left here as it still provides a guide for creating a full application.&lt;br&gt;&lt;br&gt;&lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://apps.facebook.com/sharendipity/?hid=new&amp;aid=406&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Bloomshine&lt;/a&gt; is a Sharendipity-based version of&lt;a class=&quot;external&quot; href=&quot;http://wiki.sharendipity.comhttp://www.k2xl.com/games/boomshine/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt; Boomshine&lt;/a&gt;, a popular Flash-based casual game. The player is tasked with starting a chain reaction in an attempt to explode as many dots as needed to pass each of it&amp;#39;s increasingly difficult levels. The original Boomshine&amp;#39;s levels have been attempted more than 30,000,000 times by hundreds of thousands of players.&lt;br&gt;&lt;br&gt;Because of it&amp;#39;s straight-forward rules and collision-based gameplay, Boomshine is a perfect example of the type of game that can be easily created within Sharendipity.&lt;br&gt;&lt;br&gt;&lt;h2&gt;Elements of Gameplay&lt;/h2&gt;&lt;br&gt;Bloomshine uses a flower-theme when describing it&amp;#39;s gameplay:&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;A number of colorful &amp;#39;&amp;#39;seeds&amp;#39;&amp;#39;are randomly placed in the world. Each is given a random direction and speed. Seeds bounce off of each other as well as the edges of the world. &lt;/li&gt;&lt;li&gt;The player clicks anywhere within the world to initiate the blooming process. Blooms grow to a specific size and then wilt away - disappearing from the world. &lt;/li&gt;&lt;li&gt;Any seed that comes in contact with a bloom begins to bloom itself. On any given level, the player&amp;#39;s goal is to get a certain number of seeds to bloom off of their initial bloom. Each bloom counts toward the player&amp;#39;s total score.&lt;/li&gt;&lt;li&gt;If the player succeeds in blooming a minimum number of seeds, they move on to the next level where the number of seeds and difficulty increases. Otherwise, they must repeat the current level.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;Despite what the the length of this document suggests, Bloomshine is pretty simple. Before we can start on the main game logic, we need to prepare a couple of objects.&lt;br&gt;&lt;br&gt;&lt;h2&gt;Objects&lt;/h2&gt;&lt;h3&gt;Seed&lt;/h3&gt;The Seed is the small circle which briefly transform into colorful blooms and then wilt away. We&amp;#39;ll create the those behaviors later - for now it makes World configuration easier if the Seed is created and waiting in the gallery.&lt;br&gt;&lt;br&gt;Draw out a single circle and open it&amp;#39;s properties dialog. Name it &amp;quot;seed&amp;quot; and then configure it&amp;#39;s properties in the following way:&lt;br&gt;&lt;br&gt;&lt;b&gt;Custom Properties&lt;/b&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;WILTING (&amp;quot;boolean&amp;quot;) indicates that the seed has entered the wilting state and will be used later by the seed&amp;#39;s behaviors. It defaults to false.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;b&gt;Appearance&lt;br&gt;&lt;/b&gt;&lt;ul&gt;&lt;li&gt;DRAW_BORDER and DRAW_CIRCLE_AXIS are unchecked.&lt;/li&gt;&lt;li&gt;FILL_COLOR is set to &amp;quot;1, 1, 1, 1&amp;quot; which is pure white.&lt;/li&gt;&lt;li&gt;FILLED is checked.&lt;/li&gt;&lt;li&gt;LINE_COLOR does not matter because the DRAW_BORDER is disabled.&lt;/li&gt;&lt;li&gt;TEXT_COLOR is set to &amp;quot;1, 1, 1, 0.5&amp;quot; which is pure white.&lt;/li&gt;&lt;li&gt;VISIBLE is true.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;b&gt;Physics&lt;/b&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;ELASTICITY is &amp;quot;1.0&amp;quot; which ensures perfect bounce after each collision.&lt;/li&gt;&lt;li&gt;FRICTION is &amp;quot;0.0&amp;quot; ensuring that the seed will not slow down during a collision.&lt;/li&gt;&lt;li&gt;PINNED is unchecked.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;b&gt;Geometry&lt;/b&gt;&lt;br&gt;RADIUS is 0.6.&lt;br&gt;&lt;br&gt;&lt;b&gt;Interaction&lt;/b&gt;&lt;br&gt;GRABBABLE is unchecked. (This disables mouse interaction with the seed during play ensuring it does not interfere with the player&amp;#39;s click to create an initial bloom.)&lt;br&gt;&lt;br&gt;Once the seed&amp;#39;s properties have been configured, it should be put in the gallery. Because it is no longer GRABBABLE, you need to press the control key while clicking on it to bring up it&amp;#39;s menu. Then choose &amp;quot;Add to Gallery&amp;quot; to save the seed for use later.&lt;br&gt;&lt;br&gt;&lt;h3&gt;Announcement&lt;/h3&gt;The ANNOUNCEMENT object is responsible for displaying messags to the user. It is created by dragging out a PINNED BOX in the center of the world. It&amp;#39;s properties are configured in the following way:&lt;br&gt;&lt;br&gt;&lt;b&gt;Appearance&lt;/b&gt;&lt;ul&gt;&lt;li&gt;DRAW_BORDER and FILLED are unchecked.&lt;/li&gt;&lt;li&gt;TEXT_COLOR is &amp;quot;1,1,1,1&amp;quot; which is pure white.&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;b&gt;Text&lt;/b&gt;&lt;ul&gt;&lt;li&gt;FONT is set to &amp;quot;defaultEntity,32&amp;quot; which is an unfortunately complicated way of saying use the default font in 32-point size.&lt;/li&gt;&lt;li&gt;TEXT defaults to &amp;quot;Welcome to Bloomshine&amp;quot; which is the message it will display when the game starts.&lt;br&gt;&lt;/li&gt;&lt;li&gt;WRAP_TEXT is unchecked.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;b&gt;Physics&lt;/b&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;IGNORE_COLLISIONS is checked to ensure that nothing inadvertently collides with the message.&lt;/li&gt;&lt;li&gt;PINNED is checked.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;b&gt;Geometry&lt;/b&gt;&lt;br&gt;The height and width of the box is &amp;quot;6.0&amp;quot; and &amp;quot;54.0&amp;quot; respectively.&lt;br&gt;&lt;br&gt;&lt;b&gt;Position&lt;/b&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;ORIENTATION is &amp;quot;0.0&amp;quot;&lt;/li&gt;&lt;li&gt;POSITION is &amp;quot;0.0, 0.0&amp;quot; ensuring that the box is perfectly centered on the screen.&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;b&gt;Interaction&lt;/b&gt;&lt;br&gt;GRABBABLE is unchecked. Once we&amp;#39;ve configured it&amp;#39;s properties, we don&amp;#39;t want to inadvertently grab and move the announcement.&lt;br&gt;&lt;h3&gt;Score&lt;/h3&gt;The player&amp;#39;s score is displayed on a PINNED box in the upper-right corner called SCORE. Like ANNOUNCEMENT, it is configured to be ignored by the physics engine and useful in displaying the player&amp;#39;s score.&lt;br&gt;&lt;br&gt;&lt;b&gt;Appearance&lt;/b&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;DRAW_BORDER and FILLED are unchecked.&lt;/li&gt;&lt;li&gt;TEXT_COLOR is &amp;quot;1,1,1,1&amp;quot; which is pure white.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;b&gt;Text&lt;/b&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;FONT is &amp;quot;defaultEntity,18,bold&amp;quot; which, again, is an unfortunately complicated way of specifying the default font in bold and an 18-point size.&lt;/li&gt;&lt;li&gt;TEXT defaults to &amp;quot;0&amp;quot; which is the player&amp;#39;s score at the beginning of the game.&lt;/li&gt;&lt;li&gt;WRAP_TEXT is unchecked.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;b&gt;Physics&lt;/b&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;IGNORE_COLLISIONS and PINNED are checked.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;b&gt;Geometry&lt;/b&gt;&lt;br&gt;The height and width of the box is &amp;quot;3.0&amp;quot; and &amp;quot;9.0&amp;quot; respectively.&lt;br&gt;&lt;br&gt;&lt;b&gt;Interaction&lt;/b&gt;&lt;br&gt;GRABBABLE is unchecked. Once we&amp;#39;ve configured it&amp;#39;s properties, we don&amp;#39;t want to inadvertently grab and move the announcement. &lt;br&gt;&lt;br&gt;&lt;h3&gt;The &amp;quot;Press Space to Continue&amp;quot; Prompt&lt;/h3&gt;The final object needed by Bloomshine comes from the community. The &amp;quot;Press Space to Continue&amp;quot; object can be found by searching for it. This is a simple object that flashes a message until the user presses the space bar. Drag it from the search results into the world and then add it to your gallery by (since it isn&amp;#39;t grabbable) holding CONTROL while you click on it &lt;br&gt;&lt;br&gt;&lt;h2&gt;The World&lt;/h2&gt;&lt;h3&gt;Properties&lt;/h3&gt;The WORLD plays an important role in Bloomshine. It is responsible for managing the current state (such as the player&amp;#39;s current score, the total number of blooms needed in the current chain reaction to complete the level, etc.) and when appropriate, handles the transition to the next level or announces the end of the game.&lt;br&gt;&lt;br&gt;&lt;b&gt;Appearance&lt;/b&gt;&lt;br&gt;BACKGROUND COLOR is set to &amp;quot;63, 63, 48, 255&amp;quot; - this is a dark gray that will help the colorful blooms stand out during gameplay.&lt;br&gt;&lt;b&gt;&lt;br&gt;Geometry&lt;/b&gt;&lt;br&gt;The WIDTH and HEIGHT of the world are set to &amp;quot;64.6&amp;quot; and &amp;quot;56.5&amp;quot;, respectively. (The dimensions of the Sharendipity application are actually 646 x 565 pixels - so using these measurements ensure that the world exactly matches the size and aspect ratio of the applet.)&lt;br&gt;&lt;br&gt;&lt;b&gt;World Boundaries&lt;/b&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;BOUNDRY MODE defaults to&amp;quot;Bounce&amp;quot; which is perfect because we don&amp;#39;t want the randomly moving seeds to fall off the edges of the world. &lt;/li&gt;&lt;li&gt;VISIBLE is unchecked.&lt;/li&gt;&lt;li&gt;FRICTION is set to &amp;quot;0.0&amp;quot; so that when objects bounce off the walls, they do not slow down.&lt;/li&gt;&lt;li&gt;ELASTICITY is set to &amp;quot;1.0&amp;quot; which is also necessary to ensure a perfect bounce.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;b&gt;Physics&lt;/b&gt; &lt;br&gt;APPLY GRAVITY is unchecked.&lt;br&gt;&lt;br&gt;&lt;b&gt;Custom Properties&lt;/b&gt;&lt;br&gt;The world has a number of custom properties that manage the game&amp;#39;s state at all times. These properties are:&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;BLOOMS (&amp;#39;&amp;#39;integer&amp;#39;&amp;#39;) will be used to keep track of the number of seeds that are currently blooming. Each time a seed begins the blooming process, this value is incremented. When the bloom &amp;quot;pops&amp;quot;, the value is decremented. At any given moment, it reflects the number of active blooms in the world.&lt;/li&gt;&lt;li&gt;BLOOMS_MAX (&amp;#39;&amp;#39;integer&amp;#39;&amp;#39;) will count the total number of blooms resulting from the player&amp;#39;s chain reaction. Like BLOOMS, each time a seed starts blooming, this value will be incremented. Unlike BLOOMS, however, this value does not decrement when a bloom pops. The player completes a level when, after all blooms have popped, the BLOOMS_MAX value is greater than or equal to the BLOOMS_MIN value.&lt;/li&gt;&lt;li&gt;BLOOMS_MIN (&amp;#39;&amp;#39;integer&amp;#39;&amp;#39;) holds the minimum number of blooms required to pass the level. For the first level, this defaults to &amp;quot;2&amp;quot;. As the levels progress, this value will be calculated based on the current DIFFICULTY value multiplied by SEEDS_MAX.&lt;/li&gt;&lt;li&gt;DIFFICULTY (&amp;#39;&amp;#39;float&amp;#39;&amp;#39;) represents the percentage of seeds that must be bloomed in this level. It defaults to 30% (&amp;quot;0.3&amp;quot;) and each time the player advances a level, it is increased by 10% (&amp;quot;0.1&amp;quot;).&lt;/li&gt;&lt;li&gt;IN_PLAY (&amp;#39;&amp;#39;boolean&amp;#39;&amp;#39;) indicates whether or not the current level is in-play. When &amp;quot;False&amp;quot; the world is poised to begin a new level. When &amp;quot;True&amp;quot; the game is waiting for the player to start the chain reaction or for it to die off.&lt;br&gt;&lt;/li&gt;&lt;li&gt;LEVEL (&amp;#39;&amp;#39;integer&amp;#39;&amp;#39;) represents the current level number. The default value is &amp;quot;1&amp;quot; because the game begins on the first level. Each time the player completes a level, this value will be incremented.&lt;br&gt;&lt;/li&gt;&lt;li&gt;SCORE (&amp;#39;&amp;#39;integer&amp;#39;&amp;#39;) represents the player&amp;#39;s total score for each level the player has successfully beaten during this game. The player earns score each time they pass a level. Their score is incremented by the total number of blooms they created during that level.&lt;/li&gt;&lt;li&gt;SEEDS (&amp;#39;&amp;#39;integer&amp;#39;&amp;#39;) tracks the number of seeds that will be released at the beginning of the level. For the first level, this defaults to &amp;quot;5&amp;quot;. This will be incremented each time the player advances a level.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;Here&amp;#39;s a screenshot showing what the world&amp;#39;s custom properties look like at the beginning of the game:&lt;br&gt;&lt;br&gt;&lt;div align=&quot;center&quot;&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div align=&quot;left&quot;&gt; &lt;/div&gt;&lt;/blockquote&gt;&lt;h3&gt;Behaviors&lt;/h3&gt;The world is responsible for initializing each new level, spawing the seeds that bounce randomly around the world and, upon the final bloom popping, determining whether or not the player has succeeded.&lt;br&gt;&lt;br&gt;&lt;b&gt;Beginning the Level&lt;br&gt;&lt;/b&gt;This behavior responds to the spacebar being pressed and either starts a new level or restarts the current one (if the player was unable to pass it previously). To that end, we setup a new KEY EVENT FILTER:&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;&lt;div align=&quot;left&quot;&gt; &lt;/div&gt;&lt;/blockquote&gt;&lt;br&gt;Here&amp;#39;s some pseudo code to illustrate the overall behavior:&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;When the player presses the Space bar...&lt;br&gt;&lt;blockquote&gt;If the World is not already IN_PLAY...&lt;br&gt;&lt;blockquote&gt;Set the World&amp;#39;s state to IN_PLAY&lt;br&gt;Randomly create new seeds&lt;br&gt;Reset the number of total number of blooms&lt;br&gt;Notify the player of the current goal&lt;br&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;br&gt;Here are the step-by-step instructions for building the behavior:&lt;br&gt;&lt;br&gt;&lt;ol&gt;&lt;li&gt;The first step is to verify that the World is not in the IN_PLAY state. Pressing the Space bar should have no effect while the game is playing. If it is not IN_PLAY then immediately change the state.&lt;br&gt;&lt;br&gt;&lt;div align=&quot;left&quot;&gt; &lt;/div&gt;&lt;/li&gt;&lt;li&gt;The next step is to create the requisite number of seeds for the current level. Each will be given a random position, color and direction.&lt;br&gt;&lt;br&gt;&lt;div align=&quot;left&quot;&gt; &lt;/div&gt;&lt;br&gt;These steps will be repeated for as many SEEDs are required on this level. Each pass through this loop a new SEED is created. It&amp;#39;s POSITION, FILL_COLOR and ORIENTATION are set randomly. Then it is given an initial SPEED which sets the SEED in motion along it&amp;#39;s ORIENTATION. Because the World&amp;#39;s borders are enabled, these SEEDs automatically bounce when they hit the edges.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;Lastly, the counter which keeps track of the number of blooms created by the player during the level (BLOOMS_MAX) is reset to zero and a message is created which tells the player which level they are on and the number of blooms they need to create.&lt;/li&gt;&lt;/ol&gt;&lt;br&gt;The completed behavior looks like this:&lt;br&gt;&lt;br&gt;&lt;blockquote&gt; &lt;br&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;b&gt;When the Player Clicks&lt;/b&gt;&lt;br&gt;These actions define how the world behaves when the player clicks somewhere. Assuming the world is IN_PLAY, the player&amp;#39;s click creates the bloom that will hopefully cause a chain reaction large enough to complete the level. To achieve this, we create a new MOUSE EVENT FILTER:&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;&lt;div align=&quot;left&quot;&gt; &lt;/div&gt;&lt;/blockquote&gt;&lt;br&gt;Here&amp;#39;s the pseudo code for this behavior:&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;When the mouse is pressed anywhere in the World...&lt;br&gt;&lt;blockquote&gt;If the game is IN_PLAY and no other blooms exist...&lt;br&gt;&lt;blockquote&gt;Create the first bloom at the mouse position&lt;br&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;Here are the step-by-step instructions for building this behavior:&lt;br&gt;&lt;br&gt;&lt;ol&gt;&lt;li&gt;The first thing the action needs to do is verify that the game is in a state to accept the mouse click. Once the player has clicked, they can not click again. This is achieved by verifying that the world is IN_PLAY and that there are no BLOOMS already in existence.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;Next the total number of BLOOMS is set to one. This represents the player&amp;#39;s initial bloom but does not count toward their score.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;Lastly, a SEED is created and it&amp;#39;s POSITION is set to the MOUSE POSITION. By setting it&amp;#39;s PINNED flag is set to true which is necessary for it to begin blooming.&lt;/li&gt;&lt;/ol&gt;&lt;br&gt;The completed behavior looks like this:&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;&lt;div align=&quot;left&quot;&gt; &lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;b&gt;When the Number of Blooms Changes&lt;/b&gt;&lt;br&gt;The World&amp;#39;s last behavior is one that is invoked each time the number of blooms in the world changes. Of primary interest is when the last bloom disappears and the number of BLOOMS returns to zero. When this happens, the world is no longer IN_PLAY, all remaining SEEDS are destroyed and the results are displayed to the user. To achieve this, we start with an OBJECT MODIFIED FILTER:&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;&lt;div align=&quot;left&quot;&gt; &lt;/div&gt;&lt;/blockquote&gt;&lt;br&gt;Here&amp;#39;s the pseudo code for this behavior:&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;When the number of BLOOMS in the World changes...&lt;br&gt;&lt;blockquote&gt;If the World is in the IN_PLAY state and there are no remaining BLOOMS...&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;Change out of the IN_PLAY state.&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote&gt;Destroy all remaining SEEDs&lt;br&gt;If the required number of blooms was created...&lt;br&gt;&lt;blockquote&gt;Advance to the next level&lt;br&gt;Increment the player&amp;#39;s score&lt;br&gt;Notify the player that the level is complete&lt;br&gt;&lt;/blockquote&gt;Otherwise&lt;br&gt;&lt;blockquote&gt;Encourage the player to try again&lt;br&gt;&lt;/blockquote&gt;Save the player&amp;#39;s score to the server&lt;br&gt;Ask the player to press Space to continue&lt;br&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;br&gt;Here are the step-by-step instructions for building this behavior:&lt;br&gt;&lt;br&gt;&lt;ol&gt;&lt;li&gt;The first step is to verify that the world is both IN_PLAY and that there are no remaining blooms. (This event is processed each time the number of BLOOMS changes and we&amp;#39;re only interested in the case where the last bloom has wilted away.) If this is the case, it resets the state back to not IN_PLAY.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;Next, each of the remaining SEEDs (those that were not bloomed by the player&amp;#39;s chain reaction will still be bouncing around the world) are destroyed.&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;The EXECUTE ACTIONS ON EACH control runs a set of child actions on each of the objects of that type in the world. Each pass through the loop, ACTIVE OBJECT is set to the next object of that type. That&amp;#39;s why we destroy the ACTIVE OBJECT rather than a SEED.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;Next, we&amp;#39;ll check to see if the player has passed the level. If the total number of blooms created (BLOOMS_MAX) is greater than or equal to the number required to pass the level (BLOOMS_MIN) then the player has won the level.&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;Advancing to the next level involves several steps. First, the World&amp;#39;s LEVEL is incremented. Second, the number of SEEDS is incremented by &amp;quot;5&amp;quot; ensuring the next level has more seeds than the previous one. DIFFICULTY is also updated as long as it never goes above 90%. Lastly, the minimum number of blooms needed to pass the next level (BLOOMS_MIN) is calculated by taking the number of SEEDS and multiplying it by the DIFFICULTY.&lt;br&gt;&lt;br&gt;Since the player just completed a level, the final step is to add the number of blooms they created (BLOOMS_MAX) to their total SCORE.&lt;br&gt;&lt;br&gt;If the player did not pass the level, they are encouraged to try again.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;Lastly, regardless of whether or not the player has won the level, their current score is sent to the server. Since Bloomshine does not have an end, by sending the score during each level, the number of plays count will reflect the number of levels that have been attempted.&lt;br&gt;&lt;br&gt;Afterwards a &amp;quot;Continue&amp;quot; object is created which will prompt the user to press the Space key to continue.&lt;br&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br&gt;The complete behavior looks like this:&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;&lt;div align=&quot;left&quot;&gt; &lt;/div&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;h2&gt;Seed Behaviors&lt;/h2&gt;&lt;br&gt;While the World plays an important role in managing the game&amp;#39;s overall state, the individual SEED objects need to manage their own blooming and wilting effects. These behaviors are added to the SEED instance in Bloomshine&amp;#39;s gallery.&lt;br&gt;&lt;br&gt;&lt;h3&gt;When a Seed Collides with a Bloom&lt;br&gt;&lt;/h3&gt;This behavior is triggered when a SEED collides with another SEED that is in the blooming state. The blooming state is signified by a SEED that has been PINNED. This COLLISION EVENT trigger will enable the chain reaction we desire.&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;&lt;div align=&quot;left&quot;&gt; &lt;/div&gt;&lt;/blockquote&gt;&lt;br&gt;The pseudo-code for this action is:&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;When a SEED collides with another SEED...&lt;blockquote&gt;If one of the SEEDs is PINNED...&lt;blockquote&gt;Pin the appropriate SEED&lt;br&gt;Increment the number of active bloomsIncrement the total number of blooms achievedNumber the SEED visually&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;br&gt;Here are the step-by-step instructions for building this behavior:&lt;br&gt;&lt;br&gt;&lt;ol&gt;&lt;li&gt;The first step is to determine if an free-floating SEED has collided with a PINNED SEED. PINNED SEEDs will never generate collision events so this action only tests to see if the second collision body&amp;#39;s PINNED flag is true and for sanity verifies that the ACTIVE OBJECT is not already PINNED. Otherwise, the event is ignored.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;Now the number of active blooms and the total number involved in the chain reaction are incremented. When the bloom eventually wilts, the number of active blooms is decremented.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;As a courtesy to the user, the final step positions the newly blooming SEED on the highest layer and set&amp;#39;s it&amp;#39;s TEXT to the bloom count giving the player a hint on their progress through the level.&lt;/li&gt;&lt;/ol&gt;&lt;br&gt;The complete behavior logic looks like this:&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;&lt;div align=&quot;left&quot;&gt; &lt;/div&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;h3&gt;Blooming Behavior&lt;/h3&gt;Once any seed has been PINNED, it starts blooming. When it reaches a certain size, it immediately and rapidly wilts. This behavior is controlled by an EVERY N-STEPS filter:&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;&lt;div align=&quot;left&quot;&gt; &lt;/div&gt;&lt;/blockquote&gt;&lt;br&gt;The pseudo-code for this behavior is:&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;Every frame...&lt;br&gt;&lt;blockquote&gt;If this seed is WILTING...&lt;br&gt;&lt;blockquote&gt;Decrement the seed&amp;#39;s RADIUS&lt;br&gt;If the seed is too small to see...&lt;br&gt;&lt;blockquote&gt;Decrement the number of remaining blooms&lt;br&gt;Destroy this seed.&lt;br&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;Otherwise if the seed is PINNED&lt;br&gt;&lt;blockquote&gt;Increment the seed&amp;#39;s radius&lt;br&gt;If the seed&amp;#39;s RADIUS has reached it&amp;#39;s maximum size....&lt;br&gt;&lt;blockquote&gt;Begin WILTING&lt;br&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;Here are the step-by-step instructions for assembling this behavior:&lt;br&gt;&lt;br&gt;&lt;ol&gt;&lt;li&gt;First we need to see if this SEED is WILTING. This is accomplished by testing if the SEED&amp;#39;s WILTING property is set to true. The wilting process involves reducing the SEED&amp;#39;s RADIUS by a large amount. Once the SEED reaches a specific size, the number of active blooms is decremented and the SEED is destroyed.&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;Otherwise, if the SEED has been PINNED (set in the previous behavior as a result of colliding with another blooming SEED) it&amp;#39;s RADIUS is increased. If it reaches a maximum size, WILTING begins by setting the custom property to &amp;quot;True&amp;quot;&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;Because fonts render strangely and jump around when the object they&amp;#39;re on becomes too small, the text of the SEED (which was set when it started to bloom) is cleared as wilting begins.&lt;br&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br&gt;The complete behavior pieces these two sections together:&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;&lt;div align=&quot;left&quot;&gt; &lt;/div&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;&lt;h2&gt;Next Steps&lt;/h2&gt;&lt;br&gt;Building Bloomshine is a great way to get started in Sharendipity. You&amp;#39;ve seen how custom properties can be used to track game state and created a variety of behaviors that each handle a different aspect of of the game&amp;#39;s play. Try loading Bloomshine from the community search, choose Edit from the Professor menu and you can start exploring the properties and behaviors discussed in this article. What&amp;#39;s really exciting is the enhancement possibilities that Bloomshine offers.&lt;br&gt;&lt;br&gt;&lt;h3&gt;Difficulty&lt;/h3&gt;Bloomshine&amp;#39;s difficulty is derived from several simple components. It&amp;#39;s fun to change one or more of these aspects and immediately see the imact on gameplay. Small tweaks can make Bloomshine much easier or much harder!&lt;br&gt;&lt;br&gt;&lt;ol&gt;&lt;li&gt;In the World&amp;#39;s &amp;quot;When Space is pressed&amp;quot; behavior, the initial SPEED given to new SEEDs seems to have a big impact on the average number of blooms a player will achieve on any given level. The faster the seeds, the more likely that they&amp;#39;ll reach the chain reaction area before it wilts.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;In the Seed&amp;#39;s &amp;quot;Every 1 step(s)&amp;quot; behavior, the maximum RADIUS of the SEED&amp;#39;s bloom also has a big impact on how easy it is to complete a level. Larger blooms fill the screen with color and make the levels easier. It doesn&amp;#39;t take a big adjustment to the maximum radius to have a big effect.&lt;br&gt;&lt;/li&gt;&lt;br&gt;&lt;li&gt;Also in the Seed&amp;#39;s &amp;quot;Every 1 step(s)&amp;quot; behavior, the speed at which the SEED blooms (or wilts) has interesting results. Slow the blooming or wilting process down and the levels get a lot easier.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;The World&amp;#39;s DIFFICULTY property controls the percentage of seeds that need to be bloomed during each level. Modifying it&amp;#39;s default value can make the first few levels much easier to harder.&lt;br&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br&gt;Try experimenting with these values and see how it affects game play. Since Sharendipity is a live environment, your changes take effect each time a level begins - so it&amp;#39;s easy to fine tune gameplay.&lt;br&gt;&lt;br&gt;Another consideration would be to incorporate behaviors that modify these parameters over time. Perhaps the maximum bloom size should shrink as the levels get harder or the seeds get random speeds when the level starts.&lt;br&gt;&lt;br&gt;&lt;h3&gt;Graphics &amp;amp; Sound&lt;/h3&gt;While it&amp;#39;s bright colors are attractive, Bloomshine lacks for graphics and sound. It&amp;#39;s easy to add media to a Sharendipity application so try adding some nice tones or ringing when blooms are created. Or put a nice texture on the actual bloom.&lt;br&gt;&lt;br&gt;To see an example of how Bloomshine&amp;#39;s look and feel can be upgraded, check out Bloomshine 2 which takes the garden theme to a whole new level.&lt;br&gt;&lt;ol&gt;&lt;br&gt;&lt;br&gt;&lt;/ol&gt;&lt;br&gt;&lt;hr size=&quot;1&quot;&gt;&lt;br/&gt;</description></item></channel></rss>