Repository navigation
Releases: fedyfausto/JetStudio
Releases · fedyfausto/JetStudio
Release list
Version 0.7.0
Jet Studio 0.7.0
Export your projects again: packages from 0.6.0 no longer load.
New
- Depth fog on
WorldEnvironment(Fog: Enabled, Depth Begin, Depth End): distant geometry fades into the background. - Visibility Range on
MeshInstance3DandSprite3D(GeometryInstance3D, as in Godot): nodes are hidden or faded by their distance from the camera, and skipped entirely outside the range. - New boards: classic ESP32 (WROVER-E N8R8), ESP32-C3 SuperMini and ESP32-C6 SuperMini. The firmware now also runs on one-core chips and on chips without PSRAM.
- Windows x86_64 package. : New Windows support! This must be tested!
Fixes
- A signal without arguments connected to a method that needs one (e.g.
timeout→apply_central_impulse) crashed the game. - Scripts:
slice()with a huge step,"".repeat()with a huge count,%*dwidths andColor.to_html()with out-of-range values. - Damaged or hand-made
.jetpackfiles are rejected by the bytecode loader instead of running. - The compiler gives clear errors for very long constant chains and too deeply nested constants, and compiles very long lines fast.
- Edge cases with huge sizes, scales or non-finite values in sprites, textures, OBJ import, tweens and animations.
- STM32 firmware: display DMA timing, low-RAM handling and a fallback when the DMA can not start.
- Windows serial port names and errors in UTF-8; compressed images in the editor.
- ESP32 boards get the right flash size in their image.
Version 0.6.0
Jet Studio 0.6.0
New
- Tweens (Godot 4 API):
create_tween(),tween_property(also one component,"position:x"),
tween_interval,tween_callback,tween_method, parallel steps,chain(), loops,as_relative(),from(), delays, Godot's 12 transitions and 4 eases,finished/step_finished/loop_finished. They cost nothing when there are none. - AnimationPlayer node: property tracks (linear or nearest, per-key easing), single-component tracks, script-variable tracks and Call Method tracks with arguments; No Loop / Loop / Ping-Pong, autoplay,
speed_scale;play(),play_backwards(),stop(),pause(),seek(),animation_started/animation_finished. Runs on the boards. - Animation panel (bottom tab, as in Godot): create, rename, duplicate and remove animations, add tracks, insert/move/delete keys on a timeline, edit a key's value, easing or method call, scrub to preview the pose without changing the scene. While it is open, the Inspector shows key icons to key any animatable property at the current time.
- 2D gizmos in the 2D view: Select (Q), Move (W) with X/Y axis arrows, Rotate (E) with a ring, Scale (S) with X/Y and uniform handles; resize handles on ColorRect and TextureRect; size, radius and height handles on CollisionShape2D; rotated sprite frames; snapping with Y or by holding Ctrl (8 px, 15°, 10%); arrow keys nudge by 1 px (Shift: 8); the value is shown while dragging.
Fixed
- Every scene showed unsaved changes
(*)right after opening. - Dragging a 2D node whose parent is rotated or scaled now follows the cursor.
- Making an animation shorter no longer makes the scene invalid (keys past the end are ignored).
Notes
- Not supported yet: blending and the RESET animation; keying
@exportvariables from the Inspector.
Version 0.5.0
Jet Studio 0.5.0
Added
- Signals (Godot 4) in JetScript:
signal hit(damage),hit.emit(3),emit_signal(),connect(),disconnect(),is_connected(),has_signal(),CONNECT_ONE_SHOT. Methods and signals named without calling them areCallableandSignalvalues ($Timer.timeout.connect($Door.hide),callable.call()). New constants:OK,FAILED,ERR_CANT_OPEN,ERR_INVALID_PARAMETER,CONNECT_*. - Engine signals:
body_entered/body_exited/area_entered/area_exited(areas),timeout(Timer),animation_finished(AnimatedSprite2D),finished(one-shot CPUParticles3D). - Signals tab (Godot's Node dock) and the Connect dialog: pick the receiver, keep Godot's method name (
_on_wave_timer_timeout), One Shot. A missing method is added to the receiver's script. Nodes without a script can use their engine methods. Connections are saved in the scene, follow undo, Duplicate and Delete, travel in the package and are made before_ready(). A signal icon in the Scene dock and a slot icon in the script gutter mark them. - Timer node:
wait_time,one_shot,autostart,paused,time_left,start(),stop(),is_stopped(). - 2D physics:
StaticBody2D,CharacterBody2D,RigidBody2D,Area2D,CollisionShape2D(Rectangle, Circle, Capsule) with one-way platforms. Areas also detect other areas, in 2D and 3D. Shapes are outlined in the editor. - 2D screen, as in Godot's 2D editor: the canvas alone, with pan and zoom, a grid, the game's screen rectangle and each Camera2D's view. Click to select, drag to move. 2D and UI scenes open there (Ctrl+F1).
- New Scene asks for the root: 2D Scene, 3D Scene, User Interface or Other Node.
- Change Type... in the Scene dock's context menu.
- Jet Blaster uses Area2D hits, Timers and signals connected in the editor, and explosions without a script.
Changed
- Package format v16 (scene connections) and bytecode format 2: export projects again. Build and Flash rebuild the firmware.
- Particles: each emitter keeps only its own particles (about 40 bytes each), with one shared Jet drawer. An emitter with 8 particles takes ~320 bytes instead of ~8 KB.
- Live nodes are stored in blocks of 8 (~4 KB), so spawning never needs one big free piece of RAM.
- Script editor highlighting rewritten, token by token, with Godot's colours.
- Script callbacks nested inside other calls (signals,
_ready()fromadd_child()) use a smaller VM stack (−3 KB per level).
Fixed
- Nucleo-F746ZG: Jet Blaster ran out of memory after ~27 s.
- Script editor: after a
$Pathat the end of a line, the following lines were coloured green. - ESP32: particle pools and the first
connect()no longer take the internal RAM that drawing needs.
Performance
- Signals cost nothing until something is connected.
- Nano ESP32: physics_demo 20.5 ms per frame (0.4.0: 20.4), Jet Blaster 16.2 ms.
- Nucleo-F746ZG: Jet Blaster 12.0 ms, stable with 30+ KB free.
Version 0.3.1
Jet Studio 0.3.1
Faster displays and much less RAM on STM32 boards. Projects don't need to be exported again
(the package format is still v14). Flash the firmware again to get the changes.
New
- Display DMA on STM32: the display gets each field through DMA in the background while the
next one is drawn, with SPI up to 54 MHz. On a Nucleo-F746ZG with an ILI9341,textured_boxes
went from 29.5 to 12 ms per frame (83 fps). - JetRun on the Nucleo-F746ZG: the OutRun-style demo now fits in 320 KB of RAM and runs at
about 25 ms per frame. - B1 USER button: the blue button of the Nucleo-144 boards (F722ZE, F746ZG, F767ZI) can be
used in the Input Map, for example to start a game. - D11 as MOSI on the Nucleo-F746ZG/F767ZI: remove jumper JP6 to disconnect it from the Ethernet.
Improved
- Nodes use about 43% less RAM (860 → 488 bytes each on ARM). The fields of the less common
node types (2D, camera, light, environment, physics, particles) are only kept by the nodes that
use them. Nothing changes in how scenes behave, and frames are identical to before. - STM32: textures stay in flash. Palette textures are read straight from the package instead
of being copied to RAM (about 300 KB saved in JetRun). - Jet's triangle queues are sized once per scene instead of doubling while drawing, which
briefly needed the old and the new buffer at once. - STM32: running out of RAM:
- the firmware first gives up the second field buffer and keeps running (drawing then waits
for the DMA); - if that's not enough, the log says "Out of memory", with the size requested and the RAM
left, instead of crashing.
- the firmware first gives up the second field buffer and keeps running (drawing then waits
- The serial log shows how much RAM the scene's nodes use when it loads.
- The Arduino Nano ESP32 runs as fast as in 0.3.0.
Fixed
- STM32F7: LovyanGFX's display DMA hung (no interrupt handler for SPI1's DMA stream, data
cache not written back). Our fix is intools/patches/LovyanGFX-stm32-dma.patch.
For developers
./jet-studio setupnow applies our fixes to the dependencies fromtools/patches/
(LovyanGFX STM32 DMA, JetScene::reserveTriangles). It removes them before moving to
another revision.
Known issues
- On the F746, JetRun runs with a single field buffer, so drawing waits for the DMA.
Version 0.3.0
Jet Studio 0.3.0
New
- Sprite3D node: shows a PNG, or one frame of a sprite sheet, in the 3D world (
hframes,vframes,frame). It also hasflip_h/flip_v,pixel_size,modulateand an optional billboard, and is unlit and double-sided. Scripts animate it by changingframe. In the editor it has an Inspector, an icon and a selection box, and you can drop PNGs onto it. - Control node: a plain container for 2D nodes, such as a HUD. Its children are placed relative to it, hidden with it, and fade with its opacity.
- JetRun example: an OutRun-style race.
- An endless road with curves and hills, palms, signs and rival cars made with Sprite3D.
- A title screen and a start gate with lights.
- The car always accelerates and two buttons steer.
- One script per node: game, track, player, traffic, camera and HUD.
- Runs at about 60 fps on the Arduino Nano ESP32.
- STM32:
- The Nucleo-F746ZG with an ILI9341 display is now tested on hardware.
- The display's SCK and MOSI can go on any pin through software SPI, which is about as fast as hardware SPI.
- The Nucleo-F722ZE, F746ZG and F767ZI boards gain the D0, D1 and D12 pins.
Improved
- Shared meshes: identical meshes share one copy in memory, like Godot's shared resources.
A node gets its own copy only when a script changes its scale or UV. - Scenes on demand: the firmware and the desktop player keep the package in flash and decode a scene only when it starts, so scenes that are not playing no longer use RAM.
- Less RAM per scene: on a desktop measurement, the physics demo drops from about 605 KB to 358 KB.
- Faster JetScript: arithmetic on numbers that fit in 32 bits is faster (the ESP32-S3 has a single-precision FPU).
- Editor: 2D nodes now also have the visibility toggle (eye) in the Scene tree.
Fixed
- STM32F7: the display no longer hangs at startup. LovyanGFX's DMA interrupt has no handler
on the F7, so rows are now sent by polling.
Compatibility
- Package format v14: export your projects again and re-flash the firmware. Older
.jetpackfiles are refused. - 2D opacity: 2D nodes now inherit opacity from their parent Controls, like Godot's
modulate.
Translucent nested Controls can look more transparent than before.
Version 0.2.1
Added new Compression system for OBJ and Textures
Added new building system to release the editor
Added video demo
Fixed inputs lag