All posts
Releases

Natiny 0.11.0

Natiny now runs on Android, with Lua and Native bundles, multi-touch, screen rotation, and installable APKs.

Natiny 0.11.0

Natiny 0.11.0 adds Android support for both Lua and Native projects. The release also brings multi-touch, screen orientation control, window states, and predictable nested render targets.

Natiny now runs on Android

The Android bundles support Vulkan devices running Android 7.0 or newer. Use android-arm64 on most phones and tablets or android-amd64 in an x86_64 emulator. The Lua bundle includes a ready-to-install APK and a packer for your own project. The Native SDK lets you build your own shared library and package it into an APK.

Scripts and assets keep the same data/... paths as on desktop. Saved files go to the app's private storage. Packaged apps start fullscreen, survive switching away and back, and can use their own name, icon, orientation, version, and signing key.

Follow the Lua Android guide or the Native Android guide to build and install an APK.

Multi-touch and rotation

Android and touch-enabled web builds now report all fingers in the current frame. Each touch has a stable identifier and exposes its pressed, held, and released state, position, and movement speed. The first finger is still reported as the left mouse button, so existing mouse controls continue to work.

On Android, set_orientation can lock the screen to portrait or landscape or allow it to rotate. After a turn, the picture uses the new dimensions and is no longer rotated or stretched incorrectly. See the natiny.window.set_orientation and natiny_window_set_orientation references.

Control the window state

The new window state API switches between normal, minimized, maximized, and fullscreen modes. It also reports the state that is actually visible after the user minimizes a window or leaves fullscreen. Desktop supports all four states; web and Android support normal and fullscreen.

Render targets restore what was underneath

Previously, unbinding a surface could discard the targets below it and return straight to the window. It now returns to the previous surface or window and restores that target's camera, material, colours, coordinate system, and scissor state.

Surface colour and depth still persist between binds and frames. Clear them explicitly when starting a new image. Camera and material bindings no longer nest on their own: binding replaces the current value, and unbind means “none.” Only target binds save and restore them. The bind stack guide covers the exact rules.

Natiny 0.11.0 bundles and the Android APK are on the download page.

More posts