v0.15.0
Pre-releaseMassive changes under the hood
We always envisioned Superpowers as a platform for collaborative creative work. With that in mind, we designed it so that one day, it could support multiple project types, not just games. This release finally brings this vision to reality.
The Superpowers game engine, which used to be found in the system
folder, now lives in systems/supGame
. Other systems can be added alongside it and the Superpowers server will automatically load them all. The plugins
folder has been moved inside systems/supGame
too, since those plugins are system-specific.
At this time, there are no other systems available. Now that the dust is settling, we'll be working on documentation for building your own systems and plugins.
Redesigned project hub
Your server's project hub should be all about your projects! We gave them more space, made the project titles bigger and added the ability to upload icons.
Projects are now ordered alphabetically, too. We plan to add search / filtering capabilities later for bigger servers.
The project creation popup got a makeover too:
Project navigation improvements
Hitting backspace accidentally won't redirect you back anymore, loosing all your open tabs. Oh and there's now a button in the top-left corner of a project's window to navigate back to the server's projects list.
Trashed assets and project upgrades
Trashed asset files are now moved to their own trashedAssets
folder in your projects, rather than being kept in the same folder as other assets.
We setup a proper migration system for projects, for upgrading your projects to a newer version of Superpowers. Each project's manifest.json
now contains a format version number and the migration code has been moved to its own file.
We'll be doing the same for assets and resources moving forward, using format versions instead of detecting old formats by looking at the data itself. This should help make upgrades smoother and mor reliable.
Finally, whenever an asset or resource is upgraded, the changes will be written to disk even if they aren't otherwise modified. This will avoid doing the upgrade work again and again when your server starts.
API browser improvements
Previously, you had to rely on the browser's search function to find your way through the API and it only worked for the current page. You can now use the new search field to sift through the whole API, even when running the app!
We've added highlight.js to make the API a bit easier on the eyes.
The Sup.Behavior class has been split in its own page, and documentation for the various overridable methods has been added (awake
, start
, update
and onDestroy
).
Cubic model editor and Electron migration
The cubic model editor has progressed nicely. It now features basic texture painting as well as copy / paste. The runtime and API bits for cubic models have also been written.
Sadly, the current version of NW.js runs an older version of the Chrome runtime and the cubic model editor won't work there, so we had to postpone its release.
Good news though: we're almost done porting Superpowers from NW.js to Electron which sports a more recent Chrome, supports all the stuff we need and is an all-around cleaner way of doing Web apps on the desktop!
3D model importer update
The glTF importer now supports version 1.0 of the spec.
glTF is a runtime 3D asset format for WebGL, developed by the Khronos Group.
They provide an easy-to-use COLLADA converter. It supports animations.
See Working with 3D models in Superpowers.
Noteworthy fixes and improvements
- The way textures are loaded has been revamped, fixing some intermittent issues in the scene editor and other places.
- When failing to connect to a server, Superpowers will now correctly display an error message instead of a blank window.
- The
Sup.Audio.SoundPlayer
class gained new.isPlaying()
and.getState()
methods. - Spelling
Behavior
asBehaviour
is now handled correctly when creating a new script, to accommodate our British friends. - The game settings now store the startup scene's ID rather than its name, so that it doesn't break if the scene is renamed.
- The "Getting started guide" links were renamed to "Documentation".
Plugin development
Multiple systems support changed a lot of things.
Path changes and system name
Plugins are now stored inside the system's folder (for instance, systems/SYSTEM_NAME/plugins/AUTHOR/YOUR_PLUGIN
). You'll probably need to update various relative paths accordingly.
Use relative paths to load your system's scripts (SupEngine.js
, for instance) from your plugin's HTML files. It looks ugly but it's the right approach.
You shouldn't reference the system name directly in your plugins, since people might rename or reuse your plugin in another system. Once connected with SupClient.connect
and after the welcome
event has been received, you can use SupCore.system.name
in your editor code.
API changes
- Capitalization of
SupCore.data
andSupCore.data.base
has been fixed toSupCore.Data
andSupCore.Data.Base
. - The
SupAPI.js
file is gone.SupAPI.registerPlugin
is nowSupCore.system.api.registerPlugin
. SupCore.data.register*
is nowSupCore.system.data.register*
.
Plugin manifest
The tool's title or asset type name has been moved from YOUR_PLUGIN/locales/en/main.json
to YOUR_PLUGIN/manifest.json
.