Releases: superpowers/superpowers-core
v0.8.0
User interface improvements
Most panes are now resizable to your heart's content by dragging their edge.
The asset tree widget gained a proper icon for the "Open in new window" button, and very long names are now properly ellipsed.
Dialogs now support client-side validation so you'll be greeted with a nice informative message before the dialog closes rather than afterwards.
Resigned game splash screen
The default game splash screen has been redesigned to feature our mascott, Leonard. The screen resizes automatically based on the viewport width so it should look great both on desktops as well as mobile phones, even in portrait mode.
If your game can't be loaded for any reason, an informative message will now be displayed, be it because the build wasn't found, there was a script compilation error or even if WebGL couldn't be initialized.
Script editor improvements
When hovering code, a tooltip will now appear providing useful type information about whatever your cursor is pointing at.
We merged the workers responsible for auto-completion and error reporting (for lower memory usage) and made them persistent for faster error reporting and auto-completion.
The auto-completion popup doesn't blink anymore and it provides type and signature information about the choices it offers.
Debugging, restored!
We're using source maps to let you debug using the original TypeScript code of your scripts even though they are compiled to JavaScript (ES5) when running the browser. Sadly, this was broken in Chrome 43 because source maps can no longer be loaded from blob URLs. so we switched to data URLs.
It's actually a little nicer since the scripts will now appear in a folder bearing the name of your game rather than in a (no domain)
node.
Builds are served on a separate port
Serving builds on the same port as the client led to funny things like Sup.Storage.clear()
clearing your server authentication settings. So the builds are now served on port 4238 by default. You can configure this in the launcher settings.
Color picker
When tinting sprites, models or text renderers, you'll now be presented with a native color picker rather than a simple text field.
Camera ordering and layers
When working with multiple cameras, you can now explicitely define their rendering order (which one appears on top) with the depth setting and correspondig API methods. Previously, the cameras were ordered by their position in the actor tree, but this isn't very convenient.
A rendering layer system has been added. Each actor now belongs to a layer and you will soon be able to customize which layers a camera should render (Elisée wasn't able to finish that part in time). This will be particularly useful for rendering your game's user interface with a separate camera without having to move the related actors far away from the in-game actors.
Mouse picking in the scene editor
You can now (finally!) select actors by clicking on them in the scene editor. Transform handles to move, rotate and scale things around are coming very soon!
glTF import fixed and improved
It turns out the glTF animated 3D model importer was broken in the latest release.
Apparently no one uses it at the moment since no one complained ;).
The long-standing 90° rotation work-around for animations has been removed and replaced with support for any Y-axis orientation. Any existing glTF model will need to be reimported (or it'll have a -90° rotation around the X axis). Sorry about that, we try to minimize breakage when possible but hey, this is early access!
Prefabs didn't make the cut, sorry!
A prefab (scene-in-scene) system has been implemented but we've decided to disable it at the last minute because of concerns about the approach. They are implemented as a special component rather than an actor setting, which after some thought might come back and bite us later.
This issue should be dealt with in time for the next release.
Under the hood
As with each release, we're continuing to brush up the codebase and try to avoid accumulating technical debt. It may not look like much but all those clean ups add up and help us keep Superpowers stable and fun to hack on. With our open source release drawing closer, this is even more important :)
Most editors have been split in multiple files for easier navigation.
While all of the code in the three main repositories of Superpowers had been ported to TypeScript, we still had a few CoffeeScript dependencies. perfect-resize
, tab-strip
, dnd-tree-view
and operational-transform
have now been ported too, so we were able to remove coffeeify
entirely.
All editors using the game engine now update and play animations in a framerate-independent fashion.
v0.7.0
New light plugin
The light plugin adds ambient, directional, spot, point lights and shadow casting. Sprite and model renderers now let you choose between basic and phong materials.
Download the aircraft demo project
This is all very new and experimental so there are some limitations. Please report any issues you encounter. Support for writing custom shaders or doing postprocessing effects will come later.
Tile map editor improvements
The tile map editor gained a flood fill tool as well as various fixes and network performance improvements.
New project and scene settings
You can now define a startup scene for your game in the settings.
And you can choose the default camera mode (3D or 2D) for the scene editor.
Error reporting in the script editor
The script editor gained a much-improved, resizable error pane that doesn't jump up and down like the old one used to do.
It presents errors in a nice table and you can click on individual errors to jump to the offending line.
Model import improvements
The model importers now report warnings and errors in a resizable pane.
Non-triangle or non-quad faces are now properly ignored in the OBJ importer, rather than stopping the export altogether.
Improvements to the sprite editor
The spritesheet preview area can now be scrolled, it features a grid and provides better feedback for selecting an animation's start and end frames. The animation preview area is now resizable, too.
Measuring text and camera settings
You can use now Sup.Font.getTextWidth(text: string)
to measure some rendered text.
The camera viewport can now be configured in the scene editor.
New API functions Sup.Camera.set{Near,Far}ClippingPlane
allow controlling the camera's clipping planes at runtime.
v0.6.1
v0.6.0
Highlights for this update
- The Arcade Physics 2D plugin now supports collisions with tile map
- The Arcade Physics 2D plugin API and default settings has been tweaked:
- Gravity is now zero by default
- The default minimum / maximum velocities are now infinite by default
setVelocityMultiplier
doesn't expect percentages anymore- A new
type
parameter has been added to the body constructor (to support tile maps)
- Added multi-line support in TextRenderer
- Unified all plugin settings in a single Settings tool
- Added button to vacuum trashed asset folders from server's disk (Settings -> Project)
- Fixed Ctrl+Tab to switch to next tab
- Fixed layout issues and engine startup bug with Safari 8
- Actors can be shown/hidden in the scene editor (doesn't affect the game)
- Copying/pasting text with the usual hotkeys now works on Mac in the script editor
- Superpowers is officially decaffeinated! All of our CoffeeScript codebase has been ported to TypeScript.
- Miscellaneous bugfixes
v0.5.2
v0.5.1
A quick update to fix a few issues with the 0.5.0 release as well as a few improvements.
- Fixed game export
- Allow customizing inherited behavior properties in behavior editor
- Merged the asset creation dialog into a single one and added option to open asset right after creating it
- The active line in the script editor is now highlighted
- Fixed new windows not being focused right away
- Allow opening devtools in the Superpowers app with F12
- Added links to forums / subreddits
- Fixed various bugs with the font plugin
- Fixed various bugs with tile maps in scenes
- Delayed triggering of auto-completion and error reporting to a few hundred milliseconds after the last keystroke in the script editor
- Fixed some weird focus / selection behaviors in input fields in scenes
- Ported launcher to TypeScript
v0.5.0
Highlights for this update:
- Context-sensitive auto-completion in the script editor!
- Real-time error reporting in the script editor
- You can now use TypeScript 1.5 features including block-scoped
let
,const
andfor(let ITERATOR of ARRAY) ...
- New text rendering plugin, supports both vector fonts and bitmap fonts
- You can now remove servers from the launcher's server list
- Better error reporting in the launcher
- 14 out of 16 modules have been ported from CoffeeScript to TypeScript. We're almost done!
- New
EventEmitter
API plugin, lets you emit and listen for events - Many bugfixes (and probably a few new ones, let's be honest, we ported a lot of code :D)
Plugin development
Component editors
The arguments passed to a component editor class constructor have changed (the first one was removed, it was just a copy of SupClient which is a global):
class MyComponentEditor {
constructor(tbody: HTMLDivElement, config: any, projectClient: SupClient.ProjectClient, editConfig: any) {
// ...
}
}
Component updaters
Component updater classes should have a destroy() method (no arguments). It will be called when a component is destroyed.
If your component editor has subscribed to asset(s) or resource(s), make sure to unsubscribe within your destroy method.
v0.4.1
A quick update to fix a few issues with the 0.4.0 release.
- Fixed game export
- Removed unnecessary *.ts files
- Fixed issues with
Sup.Input.getScreenSize()
on first frame because of screen ratio - TypeScript editor: Fixed context menu position in NW.js
- Fixed size of game/sprite/tile map settings table
v0.4.0
Highlights for this update:
- New "Export game" button lets you export your game in a couple of clicks
See http://docs.sparklinlabs.com/en/publishing-your-game for more info - New global game settings let you customize FPS and screen ratio
- You can now customize the default settings for sprites and tile maps in your project
- The default port for Superpowers server is now 4237, since Linux and OS X have permission issues with port 80
- We added a bunch of shortcuts for working with the asset tree:
- Create asset (Ctrl+N), folder (Ctrl+Shift+N)
- Rename (F2), trash (Delete), duplicate (Ctrl+D)
- Initial work on auto-completion (it uses a simple list of words, not very smart for now)
- Added back Ctrl+Y to redo changes works in the script editor
- New socket.io plugin lets you make multiplayer games (You'll need to write the server code separately though)
- A lot more of Superpowers has been ported to TypeScript, including a couple plugins
- Fix various bugs with asset dependencies, multitouch API, script compilation, etc.