Skip to Content
Blender add-onThe jfg64 add-on

The jfg64 Blender add-on

jfg64  is a Blender add-on (Blender 3.5 or newer) for making level geometry for JFG-Studio. It makes the common steps quick and shows the game’s budgets while you model. It writes nothing Studio can’t also read from a plain glTF export, so it’s optional: Modelling a level covers doing it all by hand.

Install

Get the zip

Download jfg64.zip from the add-on’s Releases  page. Or clone VibinToast/jfg64-blender  and zip its jfg64 folder yourself, so the zip holds jfg64/__init__.py. GitHub’s green “Download ZIP” button gives a jfg64-blender-main folder, which Blender can’t load as an add-on.

Install it in Blender

Edit › Preferences › Add-ons › Install…, pick the zip, and tick jfg64: Jet Force Gemini levels.

Open the panel

In the 3D View press N for the sidebar and pick the JFG tab.

The panel

A diagram of the panel’s layout (the numbers are an example scene).

Surface

Makes the active object’s active material one kind of surface. It puts the surface’s word in the material’s name and sets the custom properties the game’s track importer reads:

ButtonThe gameMaterial
SolidGround and wallsOpaque
WaterA water surface: the hero swims below it. Make it a flat face at the water’s height, with alpha in the textureSee-through
LavaA damage floor: pushes the hero and hurtsOpaque
KillA pit floor that kills, below a dropOpaque
ColliderInvisible but solid: walls that block without being drawnOpaque
NocollideDrawn but not solid: grass tufts, decorationOpaque

The line above the buttons shows the active material and the surface it is now.

Vertex light

The game lights its levels with vertex colours. Bake vertex light writes a sun and an ambient colour into the selected meshes’ vertex colours (a Col byte colour attribute on face corners): each face gets ambient plus sun × how much it faces the sun. A Sun lamp in the scene sets the direction; without one, Sun direction does. Bake again after you change the model.

Budgets

Counted live over the visible objects:

  • triangles in the level;
  • images: each new image becomes a new 3D texture, and the game’s table has room for about three. The count turns red past that. Reuse images between materials;
  • farthest vertex from the origin: the game takes up to 32767 units. Red past that;
  • the surfaces in use.

Markers

Empties at the 3D cursor that Studio turns into objects when it makes the first level from the file:

MarkerBecomesDefault fields
StartpointA start point; its arrow is the facingplayer 0, startPoint 0
ExitAn exit (set where it leads in Studio)radius 60
HealthA health pickupamount 0
RegionpointA navigation region cornerregion 1, corner 0
OtherAny type: set Type to stock:objtype/0x…

With a marker selected, Type and Fields (JSON) are editable in the panel, e.g. {"startPoint": 1} for a second start point.

Markers are read when Studio makes a level from a new file (File › New project with the .glb, or the first Import geometry into an empty project). Re-exporting later updates the geometry, not the objects: place further objects in Studio.

Export for JFG-Studio

Writes a .glb of the visible objects with the settings Studio needs: +Y up, custom properties, modifiers applied, vertex colours, no animation, cameras or lights. It refuses to export if a vertex is past 32767 and reports the triangle and image counts.

Into Studio

  • First time: File › New project… with the .glb as Geometry, or File › Import geometry… into a project.
  • After changes: export over the file in the project’s geometry/ folder (or import it again). The Scene reloads it.
  • Read the check in Studio’s Console: segments, batches, triangles, textures and new images, whether it fits the game’s track buffer, and which special surfaces it found.
Last updated on