Skip to content

Releases: spheredev/neosphere

miniSphere 4.8.4

22 Aug 05:58
Compare
Choose a tag to compare

miniSphere 4.8.4 is a maintenance release in the 4.8 release series. This release fixes a bunch of issues and improves manifest handling in Cell.

What's Changed?

  • Improves Cell game manifest generation to produce an error if the file named
    by Sphere.Game.main doesn't exist at the end of a build.
  • Fixes an issue where running "Package Game" in Sphere Studio would build the
    game in $/.staging instead of the project's usual build directory.
  • Fixes an issue in which a shape isn't allowed to have a vertex buffer smaller
    than its index buffer.
  • Fixes a bug in Console which prevented the command line cursor from flashing.
  • Fixes a bug where throwing either null or undefined causes a segfault.
  • Fixes a bug where Transform#project3D() will accept negative or zero values
    for near and far parameters.
  • Fixes a bug where the dataReader and dataWriter modules can throw an
    exception, caused by a forgotten import.

miniSphere 4.8.3

19 Aug 06:41
Compare
Choose a tag to compare

miniSphere 4.8.3 is a maintenance release in the 4.8 release series. This release adds a new API function, FS.relativePath(), and fixes several bugs, including a few that can crash the engine.

Changes in This Version

  • Adds a new FS.relativePath() API for computing partial file and directory
    paths for debugging and display purposes.
  • Changes Transform#rotate() to use degrees instead of radians.
  • Improves game manifest validation by disallowing SphereFS prefixes other than
    @/ in the startup script path.
  • Improves the organization of the Sphere Runtime to avoid duplicating modules
    shared between miniSphere and Cell.
  • Fixes a bug where accessing Surface#transform can cause a segfault.
  • Fixes a bug where changes to a surface's projection matrix are sometimes
    ignored.
  • Fixes a bug where the screen's current projection matrix is used to display
    the fatal exception screen.
  • Fixes a bug where calling Shape#draw() with no arguments causes a segfault.
  • Fixes some bugs in the Sphere v1 implementation where a nonsensical relative
    pathname can be returned from certain API functions, e.g. GetCurrentMap().

Installing in Windows

Simply download and run miniSphereSetup-4.8.3.exe. The Inno Setup install wizard will walk you through the installation process.

Installing in Linux

For Ubuntu (14.04 and later), miniSphere is available via personal package archive (PPA) (latest version only guaranteed on current Ubuntu release):

Installing from a PPA is easy. Simply open Terminal and run the following commands:

  • sudo add-apt-repository ppa:fatcerberus/minisphere
  • sudo apt-get update
  • sudo apt-get install minisphere

You only need to do this once. The system will automatically notify you of future miniSphere updates.

Note: Users of other Linux distributions, or those using older versions of Ubuntu, can build the engine manually from the tarball (minisphere-4.8.3.tar.gz).

miniSphere 4.8.2

16 Aug 16:45
Compare
Choose a tag to compare

miniSphere 4.8.2 is a maintenance release in the 4.8 release series. This release fixes a long-standing SoundStream corruption bug which made SoundStreams with more than one channel useless.

Changes in This Version

  • Fixes a bug in the internal audio streaming logic which corrupted the output
    of SoundStreams with more than one channel and made them sound choppy.
  • Fixes a bug where legacy Spriteset#filename includes a SphereFS prefix.
  • Fixes a bug where Cell will write an invalid script path to game.sgm if the
    script filename includes the @/ prefix.

Installing in Windows

Simply download and run miniSphereSetup-4.8.2.exe. The Inno Setup install wizard will walk you through the installation process.

Installing in Linux

For Ubuntu (14.04 and later), miniSphere is available via personal package archive (PPA) (latest version only guaranteed on current Ubuntu release):

Installing from a PPA is easy. Simply open Terminal and run the following commands:

  • sudo add-apt-repository ppa:fatcerberus/minisphere
  • sudo apt-get update
  • sudo apt-get install minisphere

You only need to do this once. The system will automatically notify you of future miniSphere updates.

Note: Users of other Linux distributions, or those using older versions of Ubuntu, can build the engine manually from the tarball (minisphere-4.8.2.tar.gz).

miniSphere 4.8.1

14 Aug 05:14
Compare
Choose a tag to compare

miniSphere 4.8.1 is a maintenance release in the 4.8 release series. This release includes a few minor API tweaks and fixes the Windows installer to install Sphere Studio properly.

Changes in This Version

  • Adds DirectoryStream#dispose() to the API, for closing an open directory.
  • Renames SoundStream#buffer() to SoundStream#write().

Installing in Windows

Simply download and run miniSphereSetup-4.8.1.exe. The Inno Setup install wizard will walk you through the installation process.

Installing in Linux

For Ubuntu (14.04 and later), miniSphere is available via personal package archive (PPA) (latest version only guaranteed on current Ubuntu release):

Installing from a PPA is easy. Simply open Terminal and run the following commands:

  • sudo add-apt-repository ppa:fatcerberus/minisphere
  • sudo apt-get update
  • sudo apt-get install minisphere

You only need to do this once. The system will automatically notify you of future miniSphere updates.

Note: Users of other Linux distributions, or those using older versions of Ubuntu, can build the engine manually from the tarball (minisphere-4.8.1.tar.gz).

miniSphere 4.8.0

12 Aug 03:49
Compare
Choose a tag to compare

miniSphere 4.8.0 is the eighth minor update in the miniSphere 4.x release series. This release adds a new SphereFS prefix, new DirectoryStream and Image classes, Sphere 1.x compatibility fixes, and more. As always, upgrading is highly recommended!

Important Considerations

  • The Core API includes a new class, DirectoryStream, which lets you game
    enumerate the contents of a directory, seek within the list, etc., much like
    you would read data from a file using FileStream. DirectoryStream objects
    are also compatible with the ES6 iterator protocol so you can use them in
    from() query. Refer to the API documentation for details.

  • SphereFS now supports a new prefix, $/, which maps to the directory
    containing the startup script. This should make importing local modules
    easier.

  • from() can now enumerate live ES6 iterator objects (i.e. with a compatible
    .next() method), not just those with a [Symbol.iterator] method.

  • The Music and Logger modules now have designated base directories and
    providing file extensions is optional. See the API documentation for more
    details.

  • A new Image class in the Sphere Runtime makes it easier to work directly
    with raster images, like you could in Sphere 1.x. For now only basic
    blitting (like Prim.blit()) is supported; more features will be added going
    forward.

  • The backbuffer is no longer cleared between frames during map engine
    processing, to improve compatibility with many Sphere 1.x games that relied
    on this bug. There may be unintended fallout (graphical glitches) from this,
    so keep an eye out.

Changes in This Version

  • Adds a new DirectoryStream built-in class which allows you to enumerate the
    contents of a directory. Works in both miniSphere and Cell!
  • Adds a new SphereFS prefix, $/, which resolves to the directory containing
    the startup script for miniSphere, or the root of the source tree for Cell.
  • Adds a new Image class to the Sphere Runtime which allows working directly
    with images, like in Sphere v1 code.
  • Adds FS.directoryExists() for checking whether a directory exists.
  • Adds support for enumerating live iterators in from.iterable().
  • Adds a new experimental Person class to the Sphere Runtime which makes it
    easier to work with map engine persons.
  • Improves windowed mode scaling behavior when miniSphere is run on a HiDPI/4K
    display.
  • Improves the Music and Logger modules by giving them default base directories
    (like in Sphere 1.x) and making the file extension optional.
  • Improves Sphere 1.x compatibility by avoiding clearing the backbuffer between
    frames during a MapEngine() call.
  • Improves the maintainability of the codebase with extensive refactoring. Any
    bugs, let me know!
  • Renames the analogue.js system script to persist.js to improve
    compatibility with Sphere 1.x.
  • Fixes several issues in the implementation of FS.rename() that could cause
    the function to behave destructively on some platforms.
  • Fixes a bug where Cell FS.writeFile() can accept a buffer object as input.
  • Fixes a bug in Cell FS.fileExists() where it returns true for directories.
  • Fixes a bug in which a path specified uplevel from a SphereFS prefix, e.g.
    @/../filename, is not correctly detected as a sandbox violation.

Installing in Windows

Simply download and run miniSphereSetup-4.8.0.exe. The Inno Setup install wizard will walk you through the installation process.

Installing in Linux

For Ubuntu (14.04 and later), miniSphere is available via personal package archive (PPA) (latest version only guaranteed on current Ubuntu release):

Installing from a PPA is easy. Simply open Terminal and run the following commands:

  • sudo add-apt-repository ppa:fatcerberus/minisphere
  • sudo apt-get update
  • sudo apt-get install minisphere

You only need to do this once. The system will automatically notify you of future miniSphere updates.

Note: Users of other Linux distributions, or those using older versions of Ubuntu, can build the engine manually from the tarball (minisphere-4.8.0.tar.gz).

miniSphere 4.7.2

28 Jul 03:55
Compare
Choose a tag to compare

miniSphere 4.7.2 is a maintenance release in the 4.7 release series. This release makes some tweaks to the API and fixes a fair number of bugs.

Changes in This Version

  • Adds a new cell-runtime master module for use in ES6 Cellscripts, as an
    analogue to sphere-runtime.
  • Renames FS.resolve() to FS.fullPath() and adds relative path support.
  • Renames FS.exists() to FS.fileExists() since the function doesn't work
    for directories.
  • Renames FileStream#size to FileStream#fileSize.
  • Fixes some inconsistencies between modules in the Cell Runtime and their
    Sphere Runtime equivalents.
  • Fixes an issue where chaining Dispatch.now() causes the engine to get stuck
    in an infinite loop of processing newly added jobs.
  • Fixes a bug where require() doesn't canonicalize module filenames properly,
    causing SSj Blue to sometimes not be able to find the source file.
  • Fixes a bug where building a large project in Sphere Studio can hang Cell.
  • Fixes a bug where SoundStream streams are always created in mono mode.
  • Fixes a bug where DataReader and DataWriter can't be imported by either
    require() or import.
  • Fixes a bug where constructors can be called without using new.
  • Fixes a bug where stepping over a Dispatch.now() with SSj sometimes locks
    up the engine and prevents it from responding to further debugger commands.

Installing in Windows

Simply download and run miniSphereSetup-4.7.2.exe. The Inno Setup install wizard will walk you through the installation process.

Installing in Linux

For Ubuntu (14.04 and later), miniSphere is available via personal package archive (PPA) (latest version only guaranteed on current Ubuntu release):

Installing from a PPA is easy. Simply open Terminal and run the following commands:

  • sudo add-apt-repository ppa:fatcerberus/minisphere
  • sudo apt-get update
  • sudo apt-get install minisphere

You only need to do this once. The system will automatically notify you of future miniSphere updates.

Note: Users of other Linux distributions, or those using older versions of Ubuntu, can build the engine manually from the tarball (minisphere-4.7.2.tar.gz).

miniSphere 4.7.1

24 Jul 06:43
Compare
Choose a tag to compare

miniSphere 4.7.1 is a maintenance release in the 4.7 release series. This release fixes a few bugs, including a long-standing debugger lockout bug.

Changes in This Version

  • Fixes a long-standing bug where getting caught in an infinite loop prevents
    the engine from responding to debugger commands.
  • Fixes a bug where delays, including those from normal frame rate limiting,
    cause actively playing SoundStreams to starve, leading to stuttering.
  • Fixes a bug where reading Shape#texture from a shape with no assigned
    texture is not handled properly and may cause the engine to crash.

Installing in Windows

Simply download and run miniSphereSetup-4.7.1.exe. The Inno Setup install wizard will walk you through the installation process.

Installing in Linux

For Ubuntu (14.04 and later), miniSphere is available via personal package archive (PPA) (latest version only guaranteed on current Ubuntu release):

Installing from a PPA is easy. Simply open Terminal and run the following commands:

  • sudo add-apt-repository ppa:fatcerberus/minisphere
  • sudo apt-get update
  • sudo apt-get install minisphere

You only need to do this once. The system will automatically notify you of future miniSphere updates.

Note: Users of other Linux distributions, or those using older versions of Ubuntu, can build the engine manually from the tarball (minisphere-4.7.0.tar.gz).

miniSphere 4.7.0

21 Jul 01:33
Compare
Choose a tag to compare

miniSphere 4.7.0 is the seventh minor update in the miniSphere 4.x release series and brings new API features, further refines backward compatibility, and improves rendering performance. Upgrading is highly recommended.

Important Considerations

  • The value of Sphere.Platform now includes the version number of the engine,
    while Sphere.Version has been redefined to return the version of the Sphere
    API, e.g. 2. Sphere.APIVersion has been removed as it is now redundant.

  • The Shape object has been completely overhauled to better support GPU-side
    vertex and index lists. Rather than these lists being maintained internally,
    they are now exposed to JavaScript code via the new .vertexList and
    .indexList properties. A few breaking changes were made to the API in
    order to support this; refer to the API documentation for more information.

  • Games can now assign a Transform object to a surface's transform property
    to change the projection matrix. To create projection matrices, there are
    two new Transform methods: .project2D() for orthographic projection, and
    .project3D() for perspective projection.

  • Clipping is now supported for all surfaces, not just the screen. Your game
    can now call .clipTo() on any Sphere v2 surface object to set its clipping
    box, just like you can do with screen.

  • Socket objects can now be reused by simply calling the new .connectTo()
    method to reestablish a connection. This even works for already-connected
    sockets; the existing connection will be closed in that case.

  • For convenience, FS.readFile() and FS.writeFile() now work directly with
    strings instead of buffer objects. This makes them unsuitable for use with
    binary data due to the UTF-8 processing involved. Going forward, games that
    must work with binary files should use a FileStream object instead.

  • miniSphere will no longer run on computers without a shader-capable GPU. If
    you must continue supporting such hardware, you'll have to stick to v4.5.11
    or earlier.

Changes in This Version

  • Adds support for creating 2D (orthographic) and 3D (perspective) projection
    matrices.
  • Adds support for setting a clipping rectangle when rendering to a Surface.
  • Adds new VertexList and IndexList objects, used to store vertices and
    indices, respectively, directly on the GPU for fast access at render time.
  • Adds a new .transform property to Surface which allows changing the
    surface's projection matrix.
  • Adds new methods to Model for setting shader uniforms: .setBoolean(),
    .setFloatArray(), and .setIntArray().
  • Adds Socket#connectTo() which allows the same socket object to be used for
    multiple sessions.
  • Adds the engine version number to the string returned by Sphere.Platform.
  • Adds support for the Sphere v1 CreateSpriteset() and Spriteset#save()
    functions.
  • Changes the signature of the Shape constructor in order to support vertex
    and index lists and make it easier to use.
  • Changes FS.readFile() and FS.writeFile() to work directly with strings
    instead of ArrayBuffers.
  • Removes support for GPUs without shader support. If the engine can't create
    a shader-capable display, it will now simply fail to start rather than trying
    to fall back on the fixed-function pipeline.
  • Renames SSJ to SSj, with a lowercase J, to make the name more recognizable.
  • Renames Sphere.APIVersion to Sphere.Version.
  • Fixes several limitations in the internal handling of spritesets which were
    preventing full Sphere 1.x compatibility.
  • Fixes several bugs in internal Dispatch job management, including one that
    can cause the engine to crash with a segfault.
  • Fixes a bug where setting the clipping box out of bounds has no effect.
  • Fixes excessive OpenGL state changes in the internal rendering logic, vastly
    improving performance for games using the Sphere v2 graphics API.

Installing in Windows

Simply download and run miniSphereSetup-4.7.0.exe. The Inno Setup install wizard will walk you through the installation process.

Installing in Linux

For Ubuntu (14.04 and later), miniSphere is available via personal package archive (PPA) (latest version only guaranteed on current Ubuntu release):

Installing from a PPA is easy. Simply open Terminal and run the following commands:

  • sudo add-apt-repository ppa:fatcerberus/minisphere
  • sudo apt-get update
  • sudo apt-get install minisphere

You only need to do this once. The system will automatically notify you of future miniSphere updates.

Note: Users of other Linux distributions, or those using older versions of Ubuntu, can build the engine manually from the tarball (minisphere-4.7.0.tar.gz).

miniSphere 4.6.0

05 Jul 03:24
Compare
Choose a tag to compare

miniSphere 4.6.0 is the sixth minor update in the miniSphere 4.x release series and brings many improvements to the Sphere v2 API as well as greatly enhanced Sphere 1.x compatibility. It also reinvents miniRT as the new Sphere Runtime, now an official part of the Sphere v2 platform!

Important Considerations

  • When using standard JavaScript modules (.mjs), the main module of a
    Sphere v2 game can now optionally use export default to export a class.
    The exported class should implement, at the very least, a start() method
    to be called by the engine on startup. If the startup class derives from
    Thread, you need only implement the on_update() and on_render()
    handlers and miniSphere will kick off your main thread for you!

  • Several Sphere Runtime modules have been removed or renamed. Pact is no
    longer available, and term has been renamed to Console. All CommonJS modules
    making up the Sphere Runtime now also match the object they export. For
    instance, require('scene') returns the standard Scene object.

  • Most Prim methods have been renamed to make them more self-documenting and
    to make it more obvious that these represent immediate-mode drawing. For
    example, Prim.line() is now called Prim.drawLine(). Refer to the API
    documentation for the full list.

  • The Sphere v2 Core API now includes a Sample class which allows a single
    loaded sound to be played multiple times simultaneously, on any mixer. This
    is great for sound effects.

  • describe() has been removed from the Cellscript API and Cellscripts must
    now manipulate the contents of Sphere.Game directly. If desired, you can
    use ES6 Object.assign() to get semantics similar to describe().

  • SSJ.log() and SSJ.trace() have returned and allow logging text to the
    attached debugger. SSJ.log() output will also be visible in the terminal,
    while SSJ.trace() output will not.

  • You must now call Console.initialize() to enable the debug console for your
    game. Loading the console module with require() will no longer enable it
    automatically.

Changes in This Version

  • When using ES6 modules (.mjs), the main module can now export default a
    class and miniSphere will automatically instantiate it and call its start()
    method. This mirrors how Sphere v1 engines call the global game() function
    on startup.
  • Adds a new Sample class which works like Sound but loads the sound into
    memory instead of streaming it and allows multiple instances to be played at
    the same time.
  • Adds methods to Model for setting vector-valued shader uniforms.
  • Adds Transform#matrix, allowing direct access to the individual matrix
    cells of a transformation.
  • Adds back the SSJ object, to allow sending text to the attached debugger
    (and optionally, to standard output).
  • Adds Prim.blitSection(), to allow drawing only part of an image.
  • Adds Console.initialize() which must now be called manually to enable the
    debug console. Simply doing require('console') is no longer enough.
  • Adds a new module, sphere-runtime, which brings together all the standard
    modules and allows multiple symbols to be imported simultaneously by using
    import {}.
  • Adds support for Sphere.Game in Cellscripts, allowing the data in the JSON
    manifest to be manipulated directly.
  • Adds more missing Sphere v1 API functions, further improving compatibility.
  • Renames several standard modules, e.g. term becomes console.
  • Renames Prim functions to better reflect their immediate nature and improve
    code readability, at the expense of some extra verbosity. For example,
    Prim.line() becomes Prim.drawLine().
  • Renames defScenelet() to Scene.defineAction().
  • Removes the console object from the Core API, as it turned out to be easily
    confused with the standard console module.
  • Removes the pact module from the standard library.
  • Removes the minify module from Cell's standard library.
  • Removes describe() from the Cellscript API.
  • Updates the internal graphics framework to use a pixel-perfect backbuffer,
    which improves screenshots and fixes several rendering-related bugs.
  • Updates the Sphere Studio project template with code to illustrate the use of
    ES6 class syntax as well as better showcasing the standard library.
  • Fixes a crash that happens when using SetTileImage() or SetTileSurface().
  • Fixes a bug where an error thrown during execution of a Console command will
    crash the game with a JavaScript error.
  • Fixes a bug where Cell will sometimes not detect a filename conflict.
  • Fixes a bug where Dispatch.onRender() jobs are processed in reverse order
    following a call to Dispatch.onUpdate(), and vice versa.
  • Fixes a bug where miniSphere calls the render script before the update script
    on map engine startup, leading to compatibility issues.
  • Fixes a bug in LineSeries() and PointSeries() that made them always throw
    a "two or more vertices required" error.
  • Fixes a bug where Sphere v1 Surface#cloneSection() and Surface#rotate()
    could introduce graphical artifacts on some platforms.
  • Fixes a bug where Sphere v2 Sound#pan range is treated as [-255,+255]
    instead of the documented range of [-1.0,+1.0].

Installing in Windows

Simply download and run miniSphereSetup-4.6.0.exe. The Inno Setup install wizard will walk you through the installation process.

Installing in Linux

For Ubuntu (14.04 and later), miniSphere is available via personal package archive (PPA):

Installing from a PPA is easy. Simply open Terminal and run the following commands:

  • sudo add-apt-repository ppa:fatcerberus/minisphere
  • sudo apt-get update
  • sudo apt-get install minisphere

You only need to do this once. The system will automatically notify you of future miniSphere updates.

Note: Users of Linux distributions other than Ubuntu will need to build the engine manually from the tarball (minisphere-4.6.0.tar.gz).

miniSphere 4.5.11

27 Apr 05:46
Compare
Choose a tag to compare

miniSphere 4.5.11 is a maintenance release in the 4.5.x release series. This release updates Cell to use TypeScript instead of Babel when compiling ES2015 Cellscripts.

Changes in This Version

  • Now uses TypeScript to transpile Cellscripts, improving build times a bit.
  • Fixes a bug where SSJ repeats the previous action after an invalid command.
  • Fixes a bug where regular expressions containing an octal escape (e.g. \3)
    cause a SyntaxError.

Installing in Windows

Simply download and run miniSphereSetup-4.5.11.exe. The Inno Setup install wizard will walk you through the installation process.

Installing in Linux

For Ubuntu (14.04 and later), miniSphere is available via personal package archive (PPA):

Installing from a PPA is easy. Simply open Terminal and run the following commands (you only need to do this once, Ubuntu will keep it updated automatically from then on):

  • sudo add-apt-repository ppa:fatcerberus/minisphere
  • sudo apt-get update
  • sudo apt-get install minisphere

Users of Linux distributions other than Ubuntu will need to build the engine manually from the tarball (minisphere-4.5.11.tar.gz).