v3.3 (rr101) 2013/06/21
Downloads
Changelog
enhancements:
- Added support for tiling textures, see ch11-resources.xml for more details.
- Images now let you specify a custom UV-range to control the texture offset.
- Added a fast mode to the texture composite function that skips alpha blending.
- skipScene() is now cancelable by pressing the text continue key.
- Improved analytics responsible for generating preloader.bin, handles multiple
  image loads generated from a single line better.
- Better error messages in case of syntax errors in loaded modules.
- Closing Build.jar will now show a warning if a build task is still running.
- The resource optimizer window has been integrated into its parent window.
- Android: Resource optimizer will only be re-run when necessary.
- Android: Added prefs-default-android.ini which allows preference overrides
  to be used for an Android port.
- Android: Added a GLES 2.0 rendering backend with support for bitmaptweens and
  shaders.
- Android: Support for JNG images.
  
bugfixes:
- setScale() erroneously stopped accepting non-positive values.
- Running in Java 7 could under specific circumstances result in an
  IllegalArgumentException.
- Newline characters in text commands weren't being handled properly.
- Built-in word count incorrectly counted punctuation as words.
- Changed the rendering implementation of TriangleGrid to avoid a potential GC
  in the middle of rendering.
- Retrieving the pixels for certain texture types didn't work.
- Fixed a possible OutOfMemory exception when using the skip mode on Java 7
  continuously for very long stretches of time.
- Android: Will not try to download an XAPK if no valid LVL key is specified.
v3.2 (r93) 2013/01/09
Downloads
Changelog
enhancements:
- Reduced latency when starting audio while another audio track is already
  playing by implementing a more fine-grained locking system.
- Reduced default fade-in/fade-out time when changing background music.
- Screenshot size for the save screen is now configurable through the
  vn.saveScreenshotWidth/vn.saveScreenshotHeight preferences.
- Added a chapter to the manual with the differences when running on Android.
- Large cleanup/restructuring of bundled tutorial scripts.
- Added setExitFunction() which allows you to override the default behavior
  of the exit confirmation dialog (whether activated by the window close
  button, exit menu item or the Lua exit function).

bugfixes:
- Playing video in an upscaled window while an FBO is used for rendering caused
  the video to be clipped (only lower-left rect visible).
- Screen didn't redraw when changing a textless TextDrawable.
- Improved error handling for the edit button in the build command panel.
- Image gallery script was broken.
- Anim.par() will no longer override its components's loop attribute.
- Incorrect return value for yielding Lua functions invoked from a Java
  function (in practice, that means call/dofile).
v3.1 (r86) 2012/12/08
Downloads
Changelog
enhancements:
- Update to JOGL-2.0-RC11. Should help with errors on Mac, freezes on Linux.
- Added option to show a splashscreen during startup.
- Added a script tab to the debug window. It includes a script info button to
  display the line/word count for each of the scripts.
- Added Game.addLuaInitializer() which makes it easier to make an interface in
  Lua for complex Java code. Use registerJavaClass() for simple Java objects.
- Added pushStyle/popStyle to make it easier to temporarily change the style
  within a line of text, then later change it back to the earlier style.
- Support for using soft-hyphens in words to indicate potential intra-word
  hyphenation points.
- Support for setting the default text direction to right-to-left (vn.rtl)
- Basic support for bidirectional text in TextDrawable/Button.
- TextDrawable.setAnchor()/ButtonDrawable.setTextAnchor() have been replaced
  by setVerticalAlign(). Set the horizontal align with the default text style.
- Using more aggressive coordinate rounding in text display code to make the
  text appear sharper.
- Added an optional volatile parameter to screenshot/screen2image functions
  which, when true, creates a screenshot which stores its pixels only on the
  GPU. This improves performance, but the pixels may be lost at any time.
- View CG menu option now prints a warning when it does nothing and uses a
  fade-in/fade-out effect.
- Changed behavior of 'stretch' for GridLayout, will now only increase sizes.
  Added a 'shrink' property to allow shrinking of components.
- Setting the text anchor to 0 lets the text alignment depend on the default
  directionality of the containing line of text.
- Various small improvements to the manual.
    
bugfixes:
- Choice buttons accidentally had their Z changed from -2000 to 0.
- Screenshots were taken in the wrong layer for layers containing sublayers.
- Buttons still appeared clickable in view CG mode.
- Notifications alignment was accidentally changed in v3.0
- Right-aligned text now behaves the same on the Android port.
- Incorrect decoding of Unicode code points outside the BMP in Lua.
- Lua functions didn't show up in stack traces for Java exceptions for certain
  types of errors.
- colorTex() didn't properly convert the given ARGB color to premultiplied form
- Clip rect calculation in BaseRenderer uses the rounded-to-int version.
  of the parent's clip rect as base. Repeated rounding errors could stack up.
- Errorneously included some unarchived .java files in the engine distribution.
- Removed trailing '&' in Linux launcher script, it causes the program not to
  run properly when using double-click -> run in terminal in some cases.
- Engine/project fields in Build.jar where clipped on Mac OS X.
- On some platforms, default textfield foreground is white, making the
  project/engine browse fields in Build.jar very hard to read.
v3.0 (r69) 2012/11/13
Downloads
Changelog
enhancements:
- Added better support for adding an embedded Java runtime (JRE). A 32-bit
  Windows JRE is included with NVList, enable the include-embedded-jre
  preference to add it to distributions.
- Rewrote how layers function. Layers now implement IDrawable and can be
  nested. All default layers are now created within a single root layer and
  Image.getLayers() was removed.
- Drawables can now be moved to another Layer than the one they're created in.
- Added a default 'overlay' layer which displays above any other default layer.
- Added setGlobal/getGlobal/incrGlobal/clearGlobals functions to ease working
  with the globals Java object from Lua.
- Implemented early culling in the rendering code using bounding box
  approximations for drawables (improves performance when there are many
  off-screen drawables).
- CD distributions now also include a .exe version of the installer.
- Installers included with CD distributions now extract directly from the
  no-installer .zip instead of requiring data be duplicated inside the installer
- Moved a number of layout/GUI related code from Lua to Java for increased
  performance. Moved System.(createSaveScreen/createLoadScreen/createChoice)
  to GUI.XXX  
- Removed TextButton Lua implementation, integrated functionality into IButton.
- Default choice screen now creates scroll bars when there are too many options
- Implemented a panel component for grouping and positioning images with a
  layout. The panel can also be given images to use for its background and
  edges/borders.
- Added a scrollable viewport component.
- Added a FlowLayout which positions items in rows aligned to a particular
  direction.
- Android version now uses an optional splash screen image during startup.
- Added Anim.fromFunction() which turns a Lua function into an Animator.
- Added getNextFreeSaveSlot() function which returns the index of an unused
  save slot.

bugfixes:
- Button rollover is now limited to their parent layer's clipping rect unless
  clipEnabled is false.
- ParallelAnimator looping now waits for each sub-animation to finish instead
  of looping each sub-animation separately and as fast as possible.
- NVL mode on Android now tries to fill at least half the screen before auto
  clearing the screen instead of always after each paragraph.
- Fixed a bug in blend quad rendering for the desktop version of NVList, didn't
  properly restore the previously active texture.
- Fixed a rare array bounds exception in LuaThreadGroup.
- Lua stacktraces got destroyed when tail-calling a Java function which calls
  a yielding Lua function.
- Lua evaluator in the debug tab now also accepts non-expression statements.
- CodeMirror syntax highlighter exited 'code' mode when encountering a ']'
- Lua tailcall optimization was broken for java functions resulting in a yield
  ('dofile' being the obvious one fitting that description).
v2.9 (r35) 2012/10/19
Downloads
Changelog
enhancements:
- Added screens.lua to default res folder in order to make it more
  straightforward to edit the save/load/choice/textlog screens. See also the
  custom special screens demo.
- Upgraded JOGL library to version 2.0-rc10
- Added optional size argument to ImageFx.composite to explicitly set the size
  of the output texture.
- ImageFx.applyColorMatrix now accepts 4x5 matrices instead of just 4x4.
- More helpful error message when trying to run NVList on a non-existent or
  otherwise unreadable folder.
- Added 1024x600 by default when running the resource optimizer for Android.

bugfixes:
- AndroidProjectCompiler didn't set XAPK size property correctly.
- Fixed SequentialAnimator to call update on the same frame as start like all
  other Animators.
- [Android] Use of embedded fonts was broken.
- Fixed a bug in GridLayout when using more than one row and the cells need to
  be centered horizontally.
v2.8 (r34) 2012/08/26
Downloads
Changelog
enhancements:
- Added the Android port for NVList, see chapter 4.4 in the manual.
- Added a warning message when running on OpenGL version < 1.3
- Renamed resource optimizer result from "_optimized" to "res-optimized".
  Optimized resources are now automatically used by Build.jar, with detection
  if they're outdated and a suggestion to run the optimizer when useful.
- Resource optimizer now defaults to the "size" preset and adds 1280x720,
  1024x576 target resolutions.
- Added a utility function for creating filmstrip animations
  (Anim.createFilmstrip). See image/animation tutorial for example code.
    
bugfixes:
- Fixed an error on OpenGL 1.1 cards: GL_CLAMP_TO_EDGE doesn't exist.
- Error in videoclip conversion to mp4 for some versions of FFmpeg (unknown
  encoder libfaac).
- Project creation dialog's progress bar now actually works...
- Resource optimizer didn't pad with edge pixels properly for subimages.
v2.7 (r32) 2012/08/11
Downloads
Changelog
enhancements:
- The $syntax for inserting variables into text now supports local variables.
- Added a sayLine function that automatically resets the speaker at the end of
  the paragraph.
- Added a registerSpeaker function that registers a stringifier function and
  companion global say_XXX function to change the current speaker. See
  documentation (ch 3.1) and text/basics tutorial for more details. 
- Added a new chunk to the save format, containing a savepoint-like IStorage
  object. This object can contain user-supplied metadata for the save file.
- The most recently saved slot is now marked as 'new' on the save/load screen.
- Last used page on the save/load screen is now persisted.
- New DistortGS shader that renders images using a distorted uniform grid.
- BlurGS is now instantiable from within Lua code.
- Added a tutorial demonstrating the use of IGeometryShader/IPixelShader
- Renamed systemVars to sharedGlobals. The old systemVar functions are still
  available for VNs targeting NVList version 2.6 or earlier.
- Added support for using the mouse wheel to scroll the text log.
- Implemented auto cursor scaling based on the default text style's font size.
- Added ImageFx.crop()/ImageFx.composite() functions to combine sprites at
  runtime. This allows you to use 
- Added support for image sequences (for example, event CG variants) to the
  image gallery, see script/gui/gallery.lua for more information.
    
bugfixes:
- Name tags in NVL mode were accidentally being styled with the current
  speaker's text style as well. Fixed to only use the name style.
- Fixed unintended brightness decrease when using BlendGS in combination with
  drawables with alpha less than one.
- Build.jar was supposed to update prefs.ini, but instead wrote prefs.ini.txt
- Fixed an off-by-one error for the cropping in the blur function.    
- Auto read mode broke when a line doesn't fit on the screen and a panic line
  wrap is necessary.
- Image optimizer now pads resized subimages with a scaled version of its
  former neighbor pixels instead of always with transparent pixels, thereby
  maintaining the same edge behavior when rendered with linear interpolation.
- Create project button (and some others) in Build.jar are now disabled at
  times when using them could potentially cause problems.
- Spurious error in build-game.xml:301 when no default video folder exists.
- Under rare circumstances, a repaint would not be issued after resizing,
  leading to image corruption.
- Fixed a bug in BaseImageTween that would replace the imageAlignY with
  imageAlignX if no specific anchor/imageAlignXY set.
v2.6 (r27) 2012/07/06
Downloads
Changelog
enhancements:
- Added a matrix color tint function to ImageFX. Can be used for grayscale
  effects, changing saturation, etc.
- Added an Image FX tutorial demonstrating blur, brighten, color matrix.
- Improved runtime performance of the debug window's image tab. It would cause
  lag when viewed during heavy particle effects.
- Changed some code related to tweens, removing anything that changed the
  texture anchor (image alignment) without explicit action from the user.
    
bugfixes:
- Fixed a bug in customTextBox that could cause a crash when not passing
  explicit bounds
v2.5 (r26) 2012/06/18
Downloads
Changelog
enhancements:
- F5 can now be used as a hotkey to restart when debug mode is turned on.
- Replaced IDrawable.getColor with getColorRGB/getColorARGB to work better with
  Anim.* functions.
- Added an example usage of sprite tinting using IDrawable.setColor() to the
  image/basics tutorial.
- Moved Anim.* functions to a separate module (vn.anim)
- Added Anim.seq(), Anim.par() for sequential/parallel chaining of Animators.
- Added Anim.createWait() for adding pauses to chained Animators.
- Added Anim.waitFor() that blocks until the Animators passed as arguments
  have finished.
- Added loops parameter to Animator.start() to let the animation loop a specific
  number of times (or infinitely by using -1).
- Added example usage for Anim.* functions to the image/animations tutorial.
- Added vn.enableProofreaderTools preference that, when enabled, adds a report
  bug/typo button to the menu bar. This button automatically adds info about the
  current script location and merges bug reports into a single file.
- Changed the interfaces of the Camera object to be compatible with the new
  Anim.* functions. See camera tutorial for details.
- Added the ability to customize the text continue cursor image using the
  customTextBox function.
- Added a second parameter to TextDrawable.setCursor() to be able to turn off
  the automatic positioning. This makes a fixed position cursor possible.
- Added a textbox customization tutorial demonstrating setCustomTextBox
- Added vn.engineTargetVersion preference to allow you to specify which NVList
  version your VN was created for. This allows built-in functions to change
  their implementation but continue to function the same way for VNs targeting
  the old NVList version.
- Added an example image gallery script as a GUI tutorial.
    
bugfixes:
- JNG images were erroneously saved with premultiplied alpha by the optimizer.
- Fixed resource optimizer stripping start/end attributes from snd.xml
v2.4 (r25) 2012/05/25
Downloads
Changelog
enhancements:
- Made fog effect much more customizable.
- Added documentation to stdlib.lua and vn/gui.lua
- Added a changeVolume function to (gradually) change the volume of sound or
  music after they've started playing.
- Moved code related to the default titlescreen into its own file
  (titlescreen.lua), added a lot of code comments to it and main.lua
- Screenshot menu item now has the ability to save screenshots as JPEG
- Create new project button added to Build.jar, creating a new project now
  triggers an automatic rebuild. 
- Added Anim.* function for easily interpolating (animating) between two
  property values (for example color, or scale). Background animations also
  benefit; the new system saves a bit of typing.
    
bugfixes:
- Wipe tween ignored sprite transform (position, scale and rotation).
- Changes to the color or alpha of a name box would disappear after switching
  back and forth between ADV and NVL text modes
- Fixed a runtime exception when loading a 16-bit RGB image without alpha.
- Paragraphs longer than a few hundred characters could, under specific
  conditions, trigger a program crash on ATI graphics cards.
- Setting texture parameters on a GLSL object didn't force their
  initialization, making the textures appear transparent.
- Resource optimizer was broken, gave an error message when attempting to use.
- The return to title menu item accidentally reset the window size/position.
- Text (sub)lines consisting of only whitespace were eaten by the parser.
v2.3 (r23) 2012/05/01
Downloads
Changelog
enhancements:
- Implemented a basic auto-updater menu item (experimental, see game.ini)
  JVM running NVList must be closed before library files can be overwritten.
- Added a menu for setting the window size to a XX pct of the preferred size
- Camera.add() now returns an ICameraImage which can be used to change the
  image's depth after adding it to the Camera.

bugfixes:
- Generated installer splash screen was corrupted for images with alpha
- Launch4j PPC binaries (windres/ld) replaced with PPC/x64 universal binaries
  This should fix builds on Mac OS X Lion
- getPlayTime() function was broken.
v2.2 (r21) 2012/04/16
Downloads
Changelog
enchancements:
- Script errors printed on-screen now try to include a filename+line.
- Clicking to instantly display the entire paragraph now works properly for
  text with [bracketed] Lua code in it.
- When using the img/imgf functions with a sprite slot, the y parameter can
  now be used to change the baseline y. 
- The OSD (toggle with F7), now displays much more information.
- Added a quickload(slot) function
- text/appendText functions now support StyledText objects as their text args.
- waitForTextVisible function now takes an optional TextDrawable to wait for.
- The createStyledText function can now be called with a StyledText arg.
- Added a createLayer(name) function that calls imageState.createLayer()
- Image cache size can now be specified in pages. A page is the amount of
  memory required to store a full screen RGBA8 texture.
- Debug window got a line in the VRAM graph indicating the image cache limit.
- Added a vn.system module with lua wrappers for SystemLib functions.
- Added a website() function that opens a webpage in an external browser.
- Tuned the scale factor at which the main FBO starts mipmapping.
- The Lua tab in the debug window now contains a print stack trace button.
- Parse errors related to img.xml are now displayed on screen.
- Added BlurGS class that provides a scalable blur.
- Preferences starting with vn. can now be accessed through the prefs Lua table
- Implemented depth-of-field/perspective for the Camera object.
- Reduces mach banding of wipe tween (WipeGS).
- Changing the text layer constructor now triggers text layer recreation.
- quicksave/quickload now display a success message on screen.
- Added support for reading precomputed mipmaps from KTX files.
- Added prefs for readTextStyle, textLogStyle, choiceStyle, selectedChoiceStyle
- Added registerJavaClass() function for importing Java code from Lua.
- No longer requires separate executables for 32/64 bit Java.
- Building a release now creates a .exe version of the generated installer.
- Improved perceived startup time by showing an empty window early during init.
- Significantly improved image load times on slow singlecore processors.
- Reduced processor usage for sound playback, especially on slow singlecores.
- Game update stops when the window is minimized. 
- Video capture function (F8) now forces continuous repainting to reduce video
  stuttering.
- Added mouse wheel down as a text continue key.
- Changed Build.jar to automatically do a rebuild when necessary.
- Changed main.lua to act as a template for a standard VN titlescreen.

bugfixes:
- Rewrote the way OpenGL resources are managed internally. This should fix a
  memory leak occurring when the texture cache becomes full.
- Fixed mapping of linear volume dB gain. Previous implementation could raise
  output levels over their natural maximum.
- Text style property editor used by Build.jar now applies any pending edits
  when closing the popup dialog.
- Editing a preference in Build.jar now also updates save/prefs.ini
- Silently crashed if gluegen-rt was not in the library path.
- Keyconfig only read the first key specified for each line.
- Increased default minimum heap size to improve performance in situations
  with high garbage generation (like particle effects).
- When running on hardware incapable of NPOT textures that also doesn't support
  large textures, the just-in-time resize could cause a data alignment error. 
- ARGB screenshots were shifted up by 1 pixel in some instances.
- Improved support for escaped \$, \[ in text lines for syntax highlighters.
- Events enqueued with edt.addEvent() now wait while the main thread is blocked
- Saving could change the result of == for Lua userdata objects.
- Using alt+enter to return to windows mode from full screen advanced the text.
- Up key accidentally opened the text log even during a choice.
- Show text log menu item was broken.
- On some graphics cards, the menu bar popups were overlapped by the screen.
- Crash on UniChrome GPU for glReadPixels(type=GL_UNSIGNED_INT_8_8_8_8_REV)
- Drawing blended quads used wrong UV coords when NPOT textures unsupported.
- screen2image aspect ratio was wrong when FBOs turned off and the physical
  window didn't match the aspect ratio of the VN's virtual resolution.
- Setting the FBO preference to true, now really always forces the FBO on.
- Updated JOGL to 2012-02-28 build to fix compatibility with Mac OS X 10.5
v2.1 (r15) 2012/03/02
Downloads
Changelog
- Initial release