Skip to content

Releases: spheredev/neosphere

miniSphere 5.2.7

20 May 16:07
Compare
Choose a tag to compare

miniSphere 5.2.7 is a maintenance release in the 5.2 series.

What's Changed?

  • Improves JavaScript performance by enabling idle processing in ChakraCore.
  • Fixes an issue where errors for failed mJS module imports don't include the filename of the importing module.
  • Fixes a bug where Cell doesn't show the offending script filename when a build fails due to a JavaScript syntax error.

miniSphere 5.2.6

14 May 05:16
Compare
Choose a tag to compare

miniSphere 5.2.6 is a maintenance release in the 5.2 series.

What's Changed?

  • Fixes a bug where specifying a nonexistent module ID for import sometimes produces a nondescript SyntaxError instead of the proper error message.

miniSphere 5.2.5

12 May 06:17
Compare
Choose a tag to compare

miniSphere 5.2.5 is a maintenance release in the 5.2 series.

What's Changed?

  • Fixes a bug in which the engine refuses to run a bare .js or .mjs file citing an API level mismatch.

miniSphere 5.2.4

11 May 06:06
Compare
Choose a tag to compare

miniSphere 5.2.4 is a maintenance release in the 5.2 series.

What's Changed?

  • Adds back support for index.mjs when running at API level 1.
  • Changes the API level check on startup to only accept games targeting the current stable API level, to avoid a forward compatibility issue.
  • Changes the maximum advertised API level back to 1.
  • Changes the API level of Color.PurwaBlue and Color.RebeccaPurple to 2.
  • Removes the Cell warning for index.mjs when targeting API level 1.

miniSphere 5.1.4

11 May 06:04
Compare
Choose a tag to compare

miniSphere 5.1.4 is a maintenance release in the 5.1 series.

What's Changed?

  • Adds support for passing command-line arguments to a game's main().
  • Adds an error message when attempting to run a game targeting a higher API level than the engine supports.
  • Adds print() as an alias for SSj.log().
  • Changes the value of Sphere.APILevel back to 1.

miniSphere 5.0.2

11 May 06:01
Compare
Choose a tag to compare

miniSphere 5.0.2 is a maintenance release in the 5.0 series.

What's Changed?

  • Adds index.mjs to the list of filenames recognized by the module loader.
  • Adds print() as an alias for SSj.log().
  • Adds support for passing command-line arguments to a game's main().
  • Adds support for Promise#finally() from ES2018.
  • Adds support for SPK packages with a packaged #/ directory.
  • Adds an error message when attempting to run a game targeting a higher API level than the engine supports.
  • Cell will now package the entire #/ directory when making an SPK package.
  • Removes experimental Color.PurwaBlue and Color.RebeccaPurple colors.
  • Fixes an issue where using an async function as the main entry point (export default from main module) will cause the game to crash on startup with a TypeError.

miniSphere 5.2.3

04 May 15:16
Compare
Choose a tag to compare

miniSphere 5.2.3 is a maintenance release.

What's Changed?

  • Adds a warning when a Cell build produces any output files named index.mjs and targets API level 1.
  • Changes the API level to 3 of all APIs introduced in miniSphere 5.2.
  • Fixes an issue where SPK packages built using Cell 5.2.0 through 5.2.2 won't run under miniSphere 5.1.

miniSphere 5.2.2

01 May 04:48
Compare
Choose a tag to compare

miniSphere 5.2.2 is a maintenance release. This version fixes a regression in miniSphere 5.2.0 which prevents the redistributable engine (minisphere executable) from starting unless it's explicitly given a game path on the command line.

What's Changed?

  • Fixes a regression in 5.2.0 which causes miniSphere to crash or otherwise misbehave when run with no command-line arguments.
  • Fixes a segfault when stopping a sound at verbosity level 3 or higher.

miniSphere 5.2.1

29 Apr 04:59
Compare
Choose a tag to compare

miniSphere 5.2.1 is a maintenance release. This release adds warnings to Cell to catch compatibility/interop issues and fixes bugs.

What's Changed?

  • Adds a warning to Sphere v1 Cell builds for which the main script has a .mjs extension, since it will not run as module code.
  • Adds a warning to Cell builds targeting the still-experimental API L2.
  • Fixes apiLevel in a Sphere v1 build causing an error rather than a warning.
  • Fixes a bug that causes miniSphere to crash on startup when a game's main script file doesn't exist.

miniSphere 5.2.0

27 Apr 16:01
Compare
Choose a tag to compare

miniSphere 5.2.0 is the third minor release in the miniSphere 5.x series. This version brings a ton of new API functions, lots of under-the-hood performance optimizations, profiling support in SpheRun, a zlib-based data compression API, PNG image manipulation in Cell, support for targeting a specific minimum API level, and much more--plus a ton of smaller enhancements and bug fixes.

Important Considerations

  • SpheRun now supports profiling! Call SSj.profile() and pass it an object along with the name of a method and all subsequent calls to that method will be profiled. Then simply run your game with spherun --profile and When the engine shuts down, a table showing the profiling results will be printed to the terminal!

  • Using the new Dispatch.onExit() API, or Thread#on_shutDown(), your game can set up cleanup code which will run before the engine closes. This makes it easier to implement autosave systems, for example, and can be used in both Sphere v1 and Sphere v2 codebases.

  • Data compression is now supported as a first-class citizen of Sphere v2: Z.deflate and Z.inflate use the zlib DEFLATE compression algorithm, the same one historically used for Sphere v1's DeflateByteArray. These APIs are also available for use in Cellscripts!

  • You can now read and write PNG images in a Cellscript, and even work directly at the pixel level, using the new Image API. Images are loaded as 32-bit RGBA to keep manipulation of individual pixels simple.

  • Surface is now a proper subclass of Texture, allowing a surface to be used anywhere a texture is expected. This opens the door for awesome render-to-texture effects and avoids the cost of making a copy incurred by calling .toTexture.

  • Textures can now be manipulated directly at the pixel level using the new Texture#download and Texture#upload methods. Keep in mind that these are both incredibly expensive so you probably don't want to call them every frame.

  • Shape.drawImmediate has been added: this gives games the ability to draw vectorized primitives on-the-fly without the overhead of creating VertexList and Shape objects each time.

  • The image module has been removed from the Sphere Runtime. Games currently depending on the Image class should switch to using Prim.blit instead.

Changes in This Version

  • Adds support for passing command-line arguments to a game's main().
  • Adds profiling support to SpheRun; call SSj.profile() and pass an object and method name to have all subsequent calls to that function timed and included in a detailed Performance Report on shutdown.
  • Adds Image to the Cellscript API for manipulating PNG images at build time.
  • Adds an apiLevel field to the JSON manifest format which allows you to specify the minimum Sphere v2 API level supported by your game.
  • Adds a command-line option, --retro, used to emulate older API levels.
  • Adds new APIs for data compression, accessible through the Z namespace and available to both Sphere games and Cellscripts.
  • Adds Shape.drawImmediate() function which avoids the overhead of creating VertexList and Shape objects for immediate-mode drawing.
  • Adds an experimental Surface#blendOp property for setting the blending mode for objects drawn to a surface, à la Sphere v1 surfaces.
  • Adds Dispatch.onExit(), which lets you run code after the event loop exits.
  • Adds Texture#upload() and Texture#download() to allow direct manipulation of a texture's RGBA bitmap.
  • Adds Thread#on_shutDown() for running code when a thread terminates.
  • Adds Pact#toPromise() for cases where you don't want to allow outside code to prematurely resolve a pact.
  • Adds print() as an alias for SSj.log().
  • Adds SSj.now() for getting microsecond-accurate timestamps under SpheRun.
  • Adds the ability to use Surface objects as textures, without the need to call .toTexture() first.
  • Adds long-overdue support for all Sphere 1.x Surface blend modes.
  • Adds [Symbol.toStringTag] and .constructor for Sphere v2 objects.
  • Improves font handling so that the default font can be loaded from an SPK package, avoiding the need to distribute the physical system/ directory.
  • Improves the overall performance of all API functions and constructors.
  • Improves performance for all Prim drawing functions.
  • Renames the --performance command-line option to --profile to reflect its new purpose.
  • Removes the pointless --no-sleep command-line option.
  • Removes the Sphere Runtime Image class from the API.
  • Fixes an internal memory leak mostly affecting Dispatch job execution.
  • Fixes a bug in which calling FlipScreen(), DoEvents(), or MapEngine() after entering the event loop leads to a segmentation fault.
  • Fixes a bug in which calling DoEvents() doesn't run promise reaction jobs.
  • Fixes a bug where Sphere v1 Font#drawTextBox output isn't properly clipped.
  • Fixes a bug where calling Sphere v1 exit functions or closing the game window can prevent promise reactions from running.
  • Fixes a bug where the Sphere v1 Font#setCharacterImage() API fails to recalculate the font metrics after changing the image, causing text to be rendered incorrectly afterwards.
  • Fixes a bug where repeating a list command in SSj could show some of the same lines again.