< Back to the full list of 2D engines and editors
|
|
Scripting and playing |
Editing collision shape |
Download the minigame source (Note: if File > Import Game doesn't work, try unzipping the file into the stencylworks/games
directory)
Play the exported Flash minigame
Summary
Stencyl expands on the snapping block programming style of Scratch with a wider range of block types plus two ways to package complicated block stacks into reusable pieces (Behaviors and Custom blocks). Stencyl's drag-and-drop programming has a decent number of features, and the free version doesn't restrict complexity like GameMaker: Studio or Construct 2. Even so I still prefer textual programming. Stencyl does offer textual (ActionScript 3.0) scripting, but I haven't yet compared that to libraries like Flixel or Flashpunk. The exported SWF works fine under Ubuntu or the stand-alone Flash Player 10.3, but in recent versions of the Flash plug-in for Windows 7 Firefox, the arrow keys send lots of extra stuck-key
key presses.
Pluses
- Advantages compared to Scratch's visual block programming:
- More blocks, allowing a wider variety of solutions
- The block categories are further organized into sub-tabs
- Search box for the block Palette
- Being able to divide scripts among Events, and package Events within Behaviors makes larger programs more manageable.
- Undo works on block movements
- Custom blocks (though Scratch 2.0 beta has something similar)
- Offers ActionScript 3.0 as an alternative to the visual blocks, but maybe straight Flixel or Flashpunk is just as good?
- Includes just enough (about 9.5 MB) of Flex to compile games to SWFs on Windows, Mac, and Linux.
- Comparatively many keyboard shortcuts
Minuses
- Game compile time is slower than the other integrated tools.
- Opening and closing tabs in the editor feels a little sluggish.
- Disadvantages vs. Scratch:
- No live playfield while programming
- More blocks than Scratch, permitting more complicated solutions
- Issues with the Scratch-style programming blocks:
- Difficult to change inner items in deeply nested blocks
- Long lines of blocks are unpleasant to move, requiring careful clicking and dragging (being able to fold or collapse stacks of blocks might help)
- Have to create a brand new Custom block to change the number or names of arguments
- As usual, no
diff
or grep
- No way to drag-select groups of blocks
- Box2D performance seems lower in Stencyl's Flash exports compared to the exports from Construct 2 or GameMaker: Studio.
- Configuring Box2D collisions was trickier than in Construct 2 or GameMaker: Studio. Tip: each Actor needs to have at least one Animation to enable collisions. The animation can be empty, but it's less confusing if the animation contains images.
- Eats up more and more memory after each export on Linux
- I couldn't get Export and Import to work on Linux, but it's easy enough to zip the game directory and change the extension to
.stencyl
by hand.
- Stencyl only opens and saves projects in the automatically managed
[user directory]/AppData/Roaming/Stencyl/stencylworks/games/
directory.
- It's difficult to share block scripts among projects without uploading to StencylForge. Tip: copy–paste works, but only for one event at a time. Copy an event, close the game, open a different game, and paste the event.
- Arrow keys produce extra erroneous key presses in Flash plug-in on Windows 7 Firefox (32 bit).
Hints
- Keep in mind that the Events tab for an Actor places blocks and attributes into a Behavior called something like
ActorEvents0
. So attributes and events always live in a Behavior.
- You can access attributes from other behaviors of the same actor using the Behavior > Attributes blocks (more details) or by wrapping them in Custom blocks (roll your own getters and setters).
- If the Scene contains only one instance of another actor, you can access attributes from behaviors of that actor, in a different actor using the Scene > Actor blocks (as mentioned in the comments).
- If the menus are behaving strangely on Linux, try using the OpenJDK 6 JRE.
- Pencyl prefers the x86 OpenJDK 6 JRE over the x86_64 version
- Refer to the Box2D manual to learn more about static, dynamic, and kinematic bodies, sensors, and continuous collision detection.
- Switching animations is costly. Switching frames is cheap, but animations can't be paused, so I ended up using a custom Draw event to switch the colors of the map squares.
- By default, blocks in the Draw event use actor-relative coordinates.
- Right-clicking to copy and paste events is helpful. Right click in the scripting area or on an existing event to paste. Add at least one event first to activate the scripting area.
- If you really want to use just one empty frame for the animation and still do collisions, it's a good idea to create the frame by importing a transparent image with dimensions at least as large as the collision shape.
Links
- < Back to the full list of 2D engines and editors
Updates
29 Jun 2013 |
Added summary from full list |
04 Apr 2013 |
Moved out from the full list onto this separate page |
03 Mar 2013 |
Posted |