Skip to content

Releases: nCine/nCine

2020.05

19 May 09:22
Compare
Choose a tag to compare

This is the third nCine release.

Manifest

Changelog

Breaking Changes

  • Removed flipX() and flipY() sprite methods
    • They have been superseded by setFlippedX() and setFlippedY()
  • Removed setOpaqueTexture() sprite method
    • You can achieve the same result with the general setBlendingEnabled(false)
  • The Matrix4x4<T>::scale() static method has been renamed to Matrix4x4<T>::scaling()
  • The dataPath() and savePath() methods of IFile have been moved to the new FileSystem class
    • The access() method of IFile have been superseded by the more powerful query methods of the FileSystem class
    • The nc.application.datapath() Lua function is now nc.fs.get_datapath()
  • The children() method of a SceneNode now returns a nctl::Array

New Features

  • Scene nodes support anchor points and non-uniform scaling
    • There is a new apptest_anchor application that shows all new node features
  • Drawable nodes support custom alpha blending factors
  • Nuklear integration for fully skinnable user interfaces
  • You can now embed the whole engine inside a Qt5 widget by choosing the Qt5 desktop backend
    • If the Qt Gamepad library is available it will be used for gamepad input events
  • Touch events are supported on desktop through the SDL2 and Qt5 backends
    • They now also provide information about touch pressure
  • The FileSystem class has been added to help you query and manipulate paths, files, and directories
    • It comes with a new apptest_filebrowser application that shows an ImGui based file browser
  • ImGui and Nuklear integrations support custom fonts loading
  • Added a new unclamped three channels ColorHdr class
  • The IAppEventHandler class now receives onSuspend() and onResume() events

Improvements

  • The logging system is initialized earlier and can be used inside onPreInit()
  • The Android asset manager is initialized earlier and can be used inside onPreInit()
  • Handling of windows resizing events has been fixed
  • Emscripten applications react to window resizing and fullscreen events
  • Emscripten applications can now load and save local files
  • Sprite flipping methods now take a status flag
  • The version of the integrated Tracy has gone from v0.5 to v0.6.3
  • The version of the integrated ImGui has gone from v1.73 to v1.76
  • Deletion of children scene nodes upon parent destruction has been made optional
  • The Matrix4x4<T> can now translate, rotate and scale in place, avoiding a full matrix multiplication
    • It can now also be multiplied on the right side of a vector
  • Automatic sprite batching is now available on Emscripten
    • You can choose the fixed batch size with a variable in the AppConfiguration class
  • Added support for Google ANGLE libraries on Windows
  • Sorting of render commands is now stable
    • If two commands have the same material sorting key then a secondary key based on node creation time is used
  • All kind of hashmap and hashset containers can now correctly use const char * as key type
  • Added two low-level classes to save textures as Png or WebP images
  • It is now possible to set the swap interval on all desktop backends with IGfxDevice::setSwapInterval()
  • The new String::append(const char *) overload will prevent allocating a string object when appending
  • Visiting the scenegraph should be faster as children are now stored in an array instead of a list
  • The new unordered remove methods of arrays will remove elements faster when preserving order is not required
  • The debug overlay interface has now a node inspector to query and modify nodes in the scene
  • Android Gradle Plugin, Build Tools, compileSDKVersion and targetSDKVersion have all been updated to newer versions

Fixes

  • The Emscripten port compiles with upstream LLVM WebAssembly backend
  • Some minor fixes in the color classes code
  • Culling of drawable nodes works with negative scaling factors
  • Scene nodes are now correctly transformed before children thus eliminating any update delay with nodes chains
  • Caching of TextNode boundaries does not introduce a one frame delay on update
  • The Lua stack is now cleaned after a failure in calling a function
    • Previously the stack would easily overflow if some callbacks were not defined
  • String lenght is now updated if a string is truncated when using a formatting method
  • Fixed OpenGL FBO wrapper class when dealing with reading and drawing buffers

Libraries

This release is packaged together with:

The Android libraries have been compiled with NDK r21b for armeabi-v7a, arm64-v8a and x86_64.

2019.10

20 Oct 22:48
Compare
Choose a tag to compare

This is the second nCine release.

Manifest

  • nCine-2019.10-Win64-VS2019.exe (md5: 8e505ffe0ec256688e85e00dbbe7ec17)
  • nCine-2019.10-Win64-VS2019.zip (md5: 63d93c1cdba532c002fd59b0094e1dd2)
  • nCine-2019.10-Win64-VS2017.exe (md5: 99d9fc5b22a51286fe76bf8634316390)
  • nCine-2019.10-Win64-VS2017.zip (md5: 1cff45df92503c773ca2dc1d2f31dc78)
  • nCine-2019.10-Darwin.dmg (md5: 1554b5a3d906d7c3bd62f50c53eb2f85)

Changelog

Breaking Changes

  • The Font constructor has now inverted parameters: fntFilename as first and texFilename as second
    • The reason for that is the new single parameter constructor
  • SceneNode::parentNode() getter has been renamed to just parent(), to be consistent with the new setParent() setter
  • The xResolution and yResolution fields of the AppConfiguration class have been replaced by a single 2D resolution vector
    • The setResolution() helper method has been removed as it is now possible to call resolution.set()
    • In Lua x_res and y_res have been replaced by the resolution 2D vector
  • The old non ImGui debug overlay has been deleted. If you need the debug overlay you also need to enable the ImGui integration
    • As part of this change the fontTexFilename and fontFntFilename strings in the AppConfiguration class have been deleted
  • The withProfilerGraphs and withInfoText flags in the AppConfiguration class has been unified into a single withDebugOverlay flag
    • You have to explicitely set the new flag to true to enable the debug overlay even when your application is compiled in debug mode
  • Many nctl::String::copy() methods have been turned into assign() methods in order to be more consistent with STL
  • The Timer::now() method has been removed, refer to the new TimeStamp class

New Features

  • Emscripten is now supported as a target platform, meaning you can now use the nCine for web games! 🕸️
  • The user can now query the available fullscreen video modes on PC and choose one
    • The IGfxDevice interface has been enriched with methods to query the current video mode, the list of available ones and to set a new mode
  • A new deferShaderQueries flag has been added to the AppConfiguration classes
    • When it is set to true all the shader error checks and introspection queries are deferred upon the first use of the shader, if it is ever used.
    • The option allows for decreased starting time at the expense of possible stutters when the shader is first used in a frame
  • New methods have been added to the audio classes to query their state
    • They were used in the new Audio Players section of the ImGui debug overlay interface
  • If you use the nCine compiled as a static library you have now access to more functionalities in the OpenGL classes
    • You can now create PBOs and TBOs.
    • You can now use GL_SAMPLER_1D and GL_SAMPLER_3D types in shaders
    • A new GLCullFace class has been added to track OpenGL face culling state
  • The Font class now relies on FntParser class to extract all the data from a FNT file
    • More checks are now performed to ensure the text can be properly rendered
    • More glyph channel configurations are now supported and rendered correctly
    • The Font class can be constructed with a single parameter: the FNT file. The texture will be loaded according to the file specified in the first page tag.
  • When you compile the engine you can now choose to disable the support for various dependency libraries and features
    • You can disable threads support, Lua bindings, Png or WebP image loading, Ogg Vorbis sound loading or audio altogether

Improvements

  • The version of the integrated Tracy has gone from v0.4.1 to v0.5
    • It is now easier to use Tracy in custom nCine projects, including on Android
    • Threads can be named so that they can be tracked in the Tracy profiler
    • You can now also retrieve current thread priority or set a new one
    • All log entries are written out as coloured Tracy messages
    • Threads id are invalidated on join and cancel so that they can be reused
  • The version of the integrated ImGui has gone from v1.70 to v1.73
  • The GameController mapping database has been updated from the one included in SDL 2.0.9 to the one in SDL 2.0.10
  • The SceneNode classes has seen the addition of long awaited helper methods in the shape of setParent(), alpha() and absAlpha()
    • The first one makes it easy and intuitive to set a node parent without going the opposite way by calling parent->addChildNode(this)
    • The alpha related methods should make it easier to query for a node alpha value
    • There are also new Lua methods for scene nodes: set_parent(), get_alpha() and set_alpha()
  • The new TimeStamp class can be used to collect timestamps at the full precision of the internal clock
    • The Time class has been enhanced with stop() and totalTime() methods to aggregate multiple time spans
    • Most methods of the TimeStamp class are also accessible through the Lua API
  • It is now possible to assign() a certain numbers of characters from a C string to an nctl::String object
  • You can now enable the ImGui debug overlay even when the scenegraph is disabled
    • In this case be sure to track OpenGL states using GLBlending, GLDepthTest and the new GLCullFace class
  • The Font class has a new query method, numKernings(), to retrieve the number of kerning pairs in a font (it is called num_kernings() in Lua)
  • You can access the array of animations in an AnimatedSprite and the array of rectangles in a RectAnimation
  • On Windows the executables use the Windows subsystem instead of the console one
    • They will also expose version properties thanks to the VERSIONINFO file
  • The Android Gradle plugin version has been updated from 3.4.0 to 3.4.1 and Android build tools from 28.0.3 to 29.0.2
    • The changes have been reflected in the template project as well

Fixes

  • Compiler warnings related with nctl::UniquePtr wrapping forward declared classes have been fixed. They could have sometimes led to incorrect object deletions and possible leaks. 😨
  • The OpenAL implementation has been rewritten and many bugs that were lurking in the code should have been squashed 🐛
  • Some changes dictated by the layout of the new ncTemplate project
    • The CMake scripts now expect a nCine-data/icons/icon.ico file instead of the old nCine.ico
    • Installers are now built with the CPACK_PACKAGE_VENDOR and CPACK_PACKAGE_HOMEPAGE_URL variables correctly set
  • The returned value for GL_MAX_UNIFORM_BLOCK_SIZE is now clamped to 64kB because some OpenGL drivers might return very big numbers

Libraries

This release is packaged together with:

The Android libraries have been compiled with NDK r20 for armeabi-v7a, arm64-v8a and x86_64.

2019.05

12 Aug 23:58
Compare
Choose a tag to compare

nCine 2019.05

This is the first release of the project and it is based on the source code initially published at the end of May 2019.

Manifest

  • nCine-2019.05-VS2019.exe (md5: e080f1573e0796e7c46932aca12f3164)
  • nCine-2019.05-VS2019.zip (md5: bfec0f3d9915d251c3615bd94cdb1cf2)
  • nCine-2019.05-VS2017.exe (md5: 3d27b7eca1ea9fa831c66e470f614baa)
  • nCine-2019.05-VS2017.zip (md5: ced631b0d69e11f3190c0026871ecbea)
  • nCine-2019.05-Darwin.dmg (md5: 58abb3a9bffc619b789363aa0c123c8b)

Libraries

This release is packaged together with:

The Android libraries have been compiled with NDK r20 for armeabi-v7a, arm64-v8a and x86_64.