# Stencyl

Stencyl is a video game development tool that allows users to create 2D video games for computers, mobile devices, and the web. The software is available for free, with select publishing options available for purchase. The software was originally called "StencylWorks" while in development and for the initial release but was later shortened to just "Stencyl".

## Features

Games created in Stencyl can be exported to the web via Adobe Flash Player or HTML5, and to personal computers as executable games, as well as onto various mobile devices as iOS and Android applications. Physics and collisions are managed by Box2D, which can be selectively or completely disabled to decrease any potential performance impact for games that don't require full physics simulation. Starting in version 3.0, projects in Stencyl use the Haxe programming language and OpenFL game framework to allow a flexible, write once, run anywhere style of game creation.

### IDE

Stencyl is an authoring tool and an IDE. The application includes several modules used to accomplish the necessary tasks to create games with the software.
* The Behavior Editor is used to create and edit code and game logic in modular pieces known as behaviors and events.
* The Tileset Editor is used to import and edit tilesets, including their collision shapes, appearance, and animations.
* The Actor Editor is used to create and edit game entities (Actors) and their settings, including behaviors, physics, and animations.
* The Scene Designer is used to create and edit levels and game states (Scenes) by using actors, tilesets, and behaviors.
Additional tools permit the user to import images for use as foregrounds and backgrounds in scenes, import and edit fonts, import sounds and music files (MP3 and OGG are supported, depending on the export target), and alter game settings such as player controls and game resolution. A library of common behaviors is included with Stencyl to reduce the need to recreate common game behaviors, and several game "kits" provide functional starting points for common 2D game genres.

### VPL

When creating a new behavior, the option is presented to create it either in Code Mode or Design Mode. Using Code Mode for a behavior permits the user to program logic in traditional textual form and optionally open the code in an external editor. Alternatively, Design Mode is a GUI that allows users to create modular game logic for actors and scenes using a visual programming language. The concept of Design Mode as a form of end-user development originated with MIT's Scratch computer language learning environment and was used with permission for Stencyl.
As it is a visual programming language, Design Mode users are not required to learn or type out a particular programming language, nor must they concern themselves with syntax. Rather, available actions are dragged and dropped from a palette of "code blocks". These blocks will snap in place together and nest within each other, permitting the creation of advanced logic from basic components. To avoid syntax errors during compilation, not all blocks will snap together. For example, a space that requires a Boolean value will not accept a block that represents a numeric value. The shapes of the block types are different to help represent this to the user as a behavior-shaping constraint. The number block could be used in conjunction with a comparison block - such as "(Number) equals (Number)" - to evaluate as a True/False statement for the needed Boolean.

### Cloud Storage

StencylForge is an integrated online storage and sharing service for Stencyl games and game assets. It can be used to back up projects and access projects from other computers when logged into Stencyl. User-uploaded content is private by default, but it can also be made public to share with other users. In addition to user-uploaded content, officially sanctioned content such as example games, game kits, behaviors, and art or sound assets are also available and prominently featured on StencylForge.

### Other

Integrated with Stencyl is the image editor Pixelitor. Its use in Stencyl is usually secondary, as images are typically imported directly from the computer after being created separately. Stencyl can alternatively be set up to use external image editors, such as Photoshop and GIMP, to modify images already loaded into a project.
Stencyl also supports user-created extensions to add functions to the software. For example, an extension could add new blocks for Design Mode use, such as a third-party API. Another example is an extensive dialogue scripting tool to easily add dialogue and tweak its settings for a game.