Skip to content

Version 0.5.0

Choose a tag to compare

@fedyfausto fedyfausto released this 28 Oct 22:48
· 2 commits to main since this release

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 are Callable and Signal values ($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() from add_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 $Path at 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.