Skip to content
This repository has been archived by the owner on Mar 5, 2021. It is now read-only.

v0.15.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@elisee elisee released this 04 Jan 01:13
· 737 commits to master since this release

Massive 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 as Behaviour 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 and SupCore.data.base has been fixed to SupCore.Data and SupCore.Data.Base.
  • The SupAPI.js file is gone. SupAPI.registerPlugin is now SupCore.system.api.registerPlugin.
  • SupCore.data.register* is now SupCore.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.