Repository files navigation

TerraNova

Latest ReleaseLicenseDiscordGitHub Stars

Offline design studio for Hytale World Generation V2. Visual node editor, live terrain preview, and validated JSON export — no server required.

Releases | Discord

TerraNova

Features

Node-Based Editor — Drag-and-drop all 200+ V2 types with category-colored nodes. Auto-layout via dagre, minimap navigation, node search, copy/paste, snap-to-grid, layout presets, and full undo/redo with descriptive history labels. SVG export for sharing node graphs.

Live Preview — Real-time 2D heatmaps with contour lines, cross-sections, and position overlays. 3D voxel heightfield preview with SSAO post-processing. Five colormaps (Blue-Red, Grayscale, Terrain, Viridis, Red-Black) with configurable bounds. Vertical split preview layout.

Comparison View — Side-by-side before/after preview for iterating on terrain changes. See exactly what your edits do without leaving the editor.

Biome Editor — Edit Terrain, Material, Pattern, Position, and Prop sections within a single biome file. Per-section undo history, noise range editor for biome boundaries, and a rich dashboard with material layer overview and prop summary. Atmosphere tab with sun angle, fog controls, tint providers, and weather resolution. Material autocomplete, one-click validation fixes, and biome browser search.

Weather Editor — Visual editor for weather files with preview, track summaries, cloud breakdowns, and collapsible preview drawers. Simple Controls and In-Depth Controls split for different levels of detail. Issue logging with suggested fixes.

Environment Editor — Edit environment files with forecast tools, parent-environment inference, weather forecast management, and environment delimiter validation.

Instance Editor — Edit instance files with WorldStructure discovery. Create new instances as folders with instance.bson inside.

Curve Editor — Interactive canvas with draggable control points for Manual curves. Read-only computed previews for all built-in types (SquareBump, InverseLerp, etc.). Snap-to-grid, interpolation modes, presets, and mini curve previews in node bodies.

Material Layers — Visual stack editor for material providers with layer ordering and full V2 SpaceAndDepth specification support. All layers preserved on import and export regardless of entry count.

JSON View Mode — CodeMirror-based JSON editor for all file types. Edit raw JSON directly and save changes back to the graph representation.

Template System — 5 bundled templates (Void, Forest Hills, Eldritch Spirelands, Shattered Archipelago, Tropical Pirate Islands) plus snippet templates for common node patterns. Create and share your own.

Schema Validation — Real-time diagnostics on type errors, missing fields, and invalid ranges. Error, warning, and info badges appear directly on nodes. Legacy node detection with suggested replacements.

Hytale Asset Sync — Sync assets from your Hytale installation with progress tracking, cancellation support, and staleness detection. Browse and reference assets directly from the editor.

Bridge Integration — Connect to a running Hytale server and push exported asset packs directly. Design offline, deploy in one click.

Full V2 Coverage — 68+ density types, 14+ material providers, 19 curves, plus patterns, positions, props, scanners, vectors, environments, assignments, tints, block masks, and world structures. Includes MultiMix, Queue, Offset, Framework nodes, and other recent V2 additions.

Session Restore and Instant Save — Session state persists across page reloads. Instant save (Ctrl+Shift+I) with debounce and status bar indicator.

Offline-First — No server, no internet, no telemetry. Under 15MB install. All data stays on your machine.

Quick Start

  1. Download the latest release from Releases
  2. Open TerraNova, pick a template or start from scratch
  3. Design your worldgen using the node editor and live preview
  4. Export and drop the JSON files in your server's mods/ folder
macOS: App Won't Open / "Unverified Developer"

TerraNova is not yet signed with an Apple Developer certificate. macOS may block the app on first launch. Use one of these methods:

Method 1 — Right-click Open (recommended)

  1. Right-click (or Control-click) TerraNova in Applications
  2. Select "Open" from the context menu
  3. Click "Open" in the dialog that appears

Method 2 — Terminal command

xattr -cr /Applications/TerraNova.app

Then launch normally.

Method 3 — System Settings

  1. Open System Settings → Privacy & Security
  2. Scroll to the Security section — you'll see a message about TerraNova being blocked
  3. Click "Open Anyway"

These steps are only needed once. Subsequent launches will work normally.

Keyboard Shortcuts

ShortcutAction
Ctrl+Z / Ctrl+YUndo / Redo
Ctrl+SSave
Ctrl+Shift+IInstant save
Ctrl+FSearch nodes
Ctrl+ASelect all
DeleteDelete selected
Ctrl+DDuplicate selected
Ctrl+LAuto-layout graph
Space (drag)Pan canvas
ScrollZoom
All shortcuts
ShortcutAction
Ctrl+NNew file
Ctrl+OOpen file
Ctrl+Shift+SSave as
Ctrl+EExport JSON
Ctrl+BToggle sidebar
Ctrl+PToggle preview
Ctrl+GToggle grid
Ctrl+MToggle minimap
EscapeDeselect / close dialog

Technology Stack

LayerTechnology
FrameworkTauri 2
FrontendReact 19 + TypeScript
Node Editor@xyflow/react (React Flow)
3D PreviewReact Three Fiber + Three.js
StateZustand
StylingTailwind CSS
BuildVite with code-split chunks
BackendRust
Noisefastnoise-lite

Performance

  • O(1) Node RenderingReact.memo with hoisted handle arrays, so only changed nodes re-render (not all 200)
  • Instant Undo/Redo — History snapshots restored by reference, under 1ms even at 200 nodes
  • Lazy 3D Loading — Three.js + post-processing (~1.1 MB) loaded on demand, keeping initial load at ~580 KB
  • Bounded Memory — History caps (50 global / 30 per-section) and LRU file cache eviction (10 files)
  • Chunk Splitting — Vite splits Three.js, ReactFlow, and dagre into separate chunks for parallel loading

TerraNova uses Tauri instead of Electron — baseline memory is ~80-120 MB (system WebView) vs ~300-500 MB (bundled Chromium).

System Requirements

Minimum

Basic editing: up to ~50 nodes, 2D heatmap preview, 1-2 files open

ComponentSpec
CPUDual-core, 2.0 GHz (Intel i3 8th gen / Ryzen 3 3200G / Apple M1)
RAM4 GB
GPUIntegrated with WebGL 2.0 (Intel UHD 620 / AMD Vega 3)
Storage200 MB free
Display1280x720
OSWindows 10 21H2+ / macOS 11+ / Ubuntu 22.04+

Recommended

Full workflow: 100-200 nodes, 3D voxel preview, split view, 5+ biome sections

ComponentSpec
CPUQuad-core, 3.0 GHz (Intel i5 10th gen / Ryzen 5 3600 / Apple M1)
RAM8 GB
GPUDedicated with 2GB VRAM or strong integrated (GTX 1050+ / Iris Xe / Apple M1)
StorageSSD
Display1920x1080

Development

Prerequisites & setup

Requirements:Node.js 20+, pnpm 9+, Rust 1.77+

# Install frontend dependencies
pnpm install
# Launch in development mode (opens app window with hot reload)
pnpm tauri dev

Build

# Build production bundle
pnpm tauri build
# Output: src-tauri/target/release/bundle/
Project structure
TerraNova/
├── src/ # React frontend (TypeScript)
│ ├── components/ # UI components (editor, preview, layout, home)
│ ├── nodes/ # React Flow node components per V2 category
│ │ ├── density/ # 68 density function node types
│ │ ├── material/ # 14 material provider node types
│ │ ├── curves/ # 19 curve node types
│ │ └── shared/ # BaseNode, handle registry, layout
│ ├── schema/ # TypeScript type definitions for V2 assets
│ ├── stores/ # Zustand state stores
│ ├── hooks/ # Custom React hooks
│ └── utils/ # Graph conversion, layout, colormaps
├── src-tauri/ # Tauri + Rust backend
│ └── src/
│ ├── commands/ # Tauri command handlers
│ ├── schema/ # Rust V2 schema types (serde)
│ ├── noise/ # Density function evaluator
│ └── io/ # Asset pack I/O and template system
├── templates/ # Bundled world generation templates
└── public/ # Static assets

Links

License

LGPL-2.1

Built with AI

TerraNova is developed with assistance from AI tooling. We believe in being upfront about how this project is built — read the full breakdown in our AI Transparency & Usage Disclaimer.


Part of the HyperSystems suite: HyperPerms | HyperHomes | HyperFactions | TerraNova

About

Offline design studio for Hytale World Generation V2

Resources

Code of conduct

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

TerraNova

Latest ReleaseLicenseDiscordGitHub Stars

Offline design studio for Hytale World Generation V2. Visual node editor, live terrain preview, and validated JSON export — no server required.

Releases | Discord

TerraNova

Features

Node-Based Editor — Drag-and-drop all 200+ V2 types with category-colored nodes. Auto-layout via dagre, minimap navigation, node search, copy/paste, snap-to-grid, layout presets, and full undo/redo with descriptive history labels. SVG export for sharing node graphs.

Live Preview — Real-time 2D heatmaps with contour lines, cross-sections, and position overlays. 3D voxel heightfield preview with SSAO post-processing. Five colormaps (Blue-Red, Grayscale, Terrain, Viridis, Red-Black) with configurable bounds. Vertical split preview layout.

Comparison View — Side-by-side before/after preview for iterating on terrain changes. See exactly what your edits do without leaving the editor.

Biome Editor — Edit Terrain, Material, Pattern, Position, and Prop sections within a single biome file. Per-section undo history, noise range editor for biome boundaries, and a rich dashboard with material layer overview and prop summary. Atmosphere tab with sun angle, fog controls, tint providers, and weather resolution. Material autocomplete, one-click validation fixes, and biome browser search.

Weather Editor — Visual editor for weather files with preview, track summaries, cloud breakdowns, and collapsible preview drawers. Simple Controls and In-Depth Controls split for different levels of detail. Issue logging with suggested fixes.

Environment Editor — Edit environment files with forecast tools, parent-environment inference, weather forecast management, and environment delimiter validation.

Instance Editor — Edit instance files with WorldStructure discovery. Create new instances as folders with instance.bson inside.

Curve Editor — Interactive canvas with draggable control points for Manual curves. Read-only computed previews for all built-in types (SquareBump, InverseLerp, etc.). Snap-to-grid, interpolation modes, presets, and mini curve previews in node bodies.

Material Layers — Visual stack editor for material providers with layer ordering and full V2 SpaceAndDepth specification support. All layers preserved on import and export regardless of entry count.

JSON View Mode — CodeMirror-based JSON editor for all file types. Edit raw JSON directly and save changes back to the graph representation.

Template System — 5 bundled templates (Void, Forest Hills, Eldritch Spirelands, Shattered Archipelago, Tropical Pirate Islands) plus snippet templates for common node patterns. Create and share your own.

Schema Validation — Real-time diagnostics on type errors, missing fields, and invalid ranges. Error, warning, and info badges appear directly on nodes. Legacy node detection with suggested replacements.

Hytale Asset Sync — Sync assets from your Hytale installation with progress tracking, cancellation support, and staleness detection. Browse and reference assets directly from the editor.

Bridge Integration — Connect to a running Hytale server and push exported asset packs directly. Design offline, deploy in one click.

Full V2 Coverage — 68+ density types, 14+ material providers, 19 curves, plus patterns, positions, props, scanners, vectors, environments, assignments, tints, block masks, and world structures. Includes MultiMix, Queue, Offset, Framework nodes, and other recent V2 additions.

Session Restore and Instant Save — Session state persists across page reloads. Instant save (Ctrl+Shift+I) with debounce and status bar indicator.

Offline-First — No server, no internet, no telemetry. Under 15MB install. All data stays on your machine.

Quick Start

  1. Download the latest release from Releases
  2. Open TerraNova, pick a template or start from scratch
  3. Design your worldgen using the node editor and live preview
  4. Export and drop the JSON files in your server's mods/ folder
macOS: App Won't Open / "Unverified Developer"

TerraNova is not yet signed with an Apple Developer certificate. macOS may block the app on first launch. Use one of these methods:

Method 1 — Right-click Open (recommended)

  1. Right-click (or Control-click) TerraNova in Applications
  2. Select "Open" from the context menu
  3. Click "Open" in the dialog that appears

Method 2 — Terminal command

xattr -cr /Applications/TerraNova.app

Then launch normally.

Method 3 — System Settings

  1. Open System Settings → Privacy & Security
  2. Scroll to the Security section — you'll see a message about TerraNova being blocked
  3. Click "Open Anyway"

These steps are only needed once. Subsequent launches will work normally.

Keyboard Shortcuts

ShortcutAction
Ctrl+Z / Ctrl+YUndo / Redo
Ctrl+SSave
Ctrl+Shift+IInstant save
Ctrl+FSearch nodes
Ctrl+ASelect all
DeleteDelete selected
Ctrl+DDuplicate selected
Ctrl+LAuto-layout graph
Space (drag)Pan canvas
ScrollZoom
All shortcuts
ShortcutAction
Ctrl+NNew file
Ctrl+OOpen file
Ctrl+Shift+SSave as
Ctrl+EExport JSON
Ctrl+BToggle sidebar
Ctrl+PToggle preview
Ctrl+GToggle grid
Ctrl+MToggle minimap
EscapeDeselect / close dialog

Technology Stack

LayerTechnology
FrameworkTauri 2
FrontendReact 19 + TypeScript
Node Editor@xyflow/react (React Flow)
3D PreviewReact Three Fiber + Three.js
StateZustand
StylingTailwind CSS
BuildVite with code-split chunks
BackendRust
Noisefastnoise-lite

Performance

  • O(1) Node RenderingReact.memo with hoisted handle arrays, so only changed nodes re-render (not all 200)
  • Instant Undo/Redo — History snapshots restored by reference, under 1ms even at 200 nodes
  • Lazy 3D Loading — Three.js + post-processing (~1.1 MB) loaded on demand, keeping initial load at ~580 KB
  • Bounded Memory — History caps (50 global / 30 per-section) and LRU file cache eviction (10 files)
  • Chunk Splitting — Vite splits Three.js, ReactFlow, and dagre into separate chunks for parallel loading

TerraNova uses Tauri instead of Electron — baseline memory is ~80-120 MB (system WebView) vs ~300-500 MB (bundled Chromium).

System Requirements

Minimum

Basic editing: up to ~50 nodes, 2D heatmap preview, 1-2 files open

ComponentSpec
CPUDual-core, 2.0 GHz (Intel i3 8th gen / Ryzen 3 3200G / Apple M1)
RAM4 GB
GPUIntegrated with WebGL 2.0 (Intel UHD 620 / AMD Vega 3)
Storage200 MB free
Display1280x720
OSWindows 10 21H2+ / macOS 11+ / Ubuntu 22.04+

Recommended

Full workflow: 100-200 nodes, 3D voxel preview, split view, 5+ biome sections

ComponentSpec
CPUQuad-core, 3.0 GHz (Intel i5 10th gen / Ryzen 5 3600 / Apple M1)
RAM8 GB
GPUDedicated with 2GB VRAM or strong integrated (GTX 1050+ / Iris Xe / Apple M1)
StorageSSD
Display1920x1080

Development

Prerequisites & setup

Requirements:Node.js 20+, pnpm 9+, Rust 1.77+

# Install frontend dependencies
pnpm install
# Launch in development mode (opens app window with hot reload)
pnpm tauri dev

Build

# Build production bundle
pnpm tauri build
# Output: src-tauri/target/release/bundle/
Project structure
TerraNova/
├── src/ # React frontend (TypeScript)
│ ├── components/ # UI components (editor, preview, layout, home)
│ ├── nodes/ # React Flow node components per V2 category
│ │ ├── density/ # 68 density function node types
│ │ ├── material/ # 14 material provider node types
│ │ ├── curves/ # 19 curve node types
│ │ └── shared/ # BaseNode, handle registry, layout
│ ├── schema/ # TypeScript type definitions for V2 assets
│ ├── stores/ # Zustand state stores
│ ├── hooks/ # Custom React hooks
│ └── utils/ # Graph conversion, layout, colormaps
├── src-tauri/ # Tauri + Rust backend
│ └── src/
│ ├── commands/ # Tauri command handlers
│ ├── schema/ # Rust V2 schema types (serde)
│ ├── noise/ # Density function evaluator
│ └── io/ # Asset pack I/O and template system
├── templates/ # Bundled world generation templates
└── public/ # Static assets

Links

License

LGPL-2.1

Built with AI

TerraNova is developed with assistance from AI tooling. We believe in being upfront about how this project is built — read the full breakdown in our AI Transparency & Usage Disclaimer.


Part of the HyperSystems suite: HyperPerms | HyperHomes | HyperFactions | TerraNova

About

Offline design studio for Hytale World Generation V2

Resources

Code of conduct

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TerraNova

Latest ReleaseLicenseDiscordGitHub Stars

Offline design studio for Hytale World Generation V2. Visual node editor, live terrain preview, and validated JSON export — no server required.

Releases | Discord

TerraNova

Features

Node-Based Editor — Drag-and-drop all 200+ V2 types with category-colored nodes. Auto-layout via dagre, minimap navigation, node search, copy/paste, snap-to-grid, layout presets, and full undo/redo with descriptive history labels. SVG export for sharing node graphs.

Live Preview — Real-time 2D heatmaps with contour lines, cross-sections, and position overlays. 3D voxel heightfield preview with SSAO post-processing. Five colormaps (Blue-Red, Grayscale, Terrain, Viridis, Red-Black) with configurable bounds. Vertical split preview layout.

Comparison View — Side-by-side before/after preview for iterating on terrain changes. See exactly what your edits do without leaving the editor.

Biome Editor — Edit Terrain, Material, Pattern, Position, and Prop sections within a single biome file. Per-section undo history, noise range editor for biome boundaries, and a rich dashboard with material layer overview and prop summary. Atmosphere tab with sun angle, fog controls, tint providers, and weather resolution. Material autocomplete, one-click validation fixes, and biome browser search.

Weather Editor — Visual editor for weather files with preview, track summaries, cloud breakdowns, and collapsible preview drawers. Simple Controls and In-Depth Controls split for different levels of detail. Issue logging with suggested fixes.

Environment Editor — Edit environment files with forecast tools, parent-environment inference, weather forecast management, and environment delimiter validation.

Instance Editor — Edit instance files with WorldStructure discovery. Create new instances as folders with instance.bson inside.

Curve Editor — Interactive canvas with draggable control points for Manual curves. Read-only computed previews for all built-in types (SquareBump, InverseLerp, etc.). Snap-to-grid, interpolation modes, presets, and mini curve previews in node bodies.

Material Layers — Visual stack editor for material providers with layer ordering and full V2 SpaceAndDepth specification support. All layers preserved on import and export regardless of entry count.

JSON View Mode — CodeMirror-based JSON editor for all file types. Edit raw JSON directly and save changes back to the graph representation.

Template System — 5 bundled templates (Void, Forest Hills, Eldritch Spirelands, Shattered Archipelago, Tropical Pirate Islands) plus snippet templates for common node patterns. Create and share your own.

Schema Validation — Real-time diagnostics on type errors, missing fields, and invalid ranges. Error, warning, and info badges appear directly on nodes. Legacy node detection with suggested replacements.

Hytale Asset Sync — Sync assets from your Hytale installation with progress tracking, cancellation support, and staleness detection. Browse and reference assets directly from the editor.

Bridge Integration — Connect to a running Hytale server and push exported asset packs directly. Design offline, deploy in one click.

Full V2 Coverage — 68+ density types, 14+ material providers, 19 curves, plus patterns, positions, props, scanners, vectors, environments, assignments, tints, block masks, and world structures. Includes MultiMix, Queue, Offset, Framework nodes, and other recent V2 additions.

Session Restore and Instant Save — Session state persists across page reloads. Instant save (Ctrl+Shift+I) with debounce and status bar indicator.

Offline-First — No server, no internet, no telemetry. Under 15MB install. All data stays on your machine.

Quick Start

  1. Download the latest release from Releases
  2. Open TerraNova, pick a template or start from scratch
  3. Design your worldgen using the node editor and live preview
  4. Export and drop the JSON files in your server's mods/ folder
macOS: App Won't Open / "Unverified Developer"

TerraNova is not yet signed with an Apple Developer certificate. macOS may block the app on first launch. Use one of these methods:

Method 1 — Right-click Open (recommended)

  1. Right-click (or Control-click) TerraNova in Applications
  2. Select "Open" from the context menu
  3. Click "Open" in the dialog that appears

Method 2 — Terminal command

xattr -cr /Applications/TerraNova.app

Then launch normally.

Method 3 — System Settings

  1. Open System Settings → Privacy & Security
  2. Scroll to the Security section — you'll see a message about TerraNova being blocked
  3. Click "Open Anyway"

These steps are only needed once. Subsequent launches will work normally.

Keyboard Shortcuts

ShortcutAction
Ctrl+Z / Ctrl+YUndo / Redo
Ctrl+SSave
Ctrl+Shift+IInstant save
Ctrl+FSearch nodes
Ctrl+ASelect all
DeleteDelete selected
Ctrl+DDuplicate selected
Ctrl+LAuto-layout graph
Space (drag)Pan canvas
ScrollZoom
All shortcuts
ShortcutAction
Ctrl+NNew file
Ctrl+OOpen file
Ctrl+Shift+SSave as
Ctrl+EExport JSON
Ctrl+BToggle sidebar
Ctrl+PToggle preview
Ctrl+GToggle grid
Ctrl+MToggle minimap
EscapeDeselect / close dialog

Technology Stack

LayerTechnology
FrameworkTauri 2
FrontendReact 19 + TypeScript
Node Editor@xyflow/react (React Flow)
3D PreviewReact Three Fiber + Three.js
StateZustand
StylingTailwind CSS
BuildVite with code-split chunks
BackendRust
Noisefastnoise-lite

Performance

  • O(1) Node RenderingReact.memo with hoisted handle arrays, so only changed nodes re-render (not all 200)
  • Instant Undo/Redo — History snapshots restored by reference, under 1ms even at 200 nodes
  • Lazy 3D Loading — Three.js + post-processing (~1.1 MB) loaded on demand, keeping initial load at ~580 KB
  • Bounded Memory — History caps (50 global / 30 per-section) and LRU file cache eviction (10 files)
  • Chunk Splitting — Vite splits Three.js, ReactFlow, and dagre into separate chunks for parallel loading

TerraNova uses Tauri instead of Electron — baseline memory is ~80-120 MB (system WebView) vs ~300-500 MB (bundled Chromium).

System Requirements

Minimum

Basic editing: up to ~50 nodes, 2D heatmap preview, 1-2 files open

ComponentSpec
CPUDual-core, 2.0 GHz (Intel i3 8th gen / Ryzen 3 3200G / Apple M1)
RAM4 GB
GPUIntegrated with WebGL 2.0 (Intel UHD 620 / AMD Vega 3)
Storage200 MB free
Display1280x720
OSWindows 10 21H2+ / macOS 11+ / Ubuntu 22.04+

Recommended

Full workflow: 100-200 nodes, 3D voxel preview, split view, 5+ biome sections

ComponentSpec
CPUQuad-core, 3.0 GHz (Intel i5 10th gen / Ryzen 5 3600 / Apple M1)
RAM8 GB
GPUDedicated with 2GB VRAM or strong integrated (GTX 1050+ / Iris Xe / Apple M1)
StorageSSD
Display1920x1080

Development

Prerequisites & setup

Requirements:Node.js 20+, pnpm 9+, Rust 1.77+

# Install frontend dependencies
pnpm install
# Launch in development mode (opens app window with hot reload)
pnpm tauri dev

Build

# Build production bundle
pnpm tauri build
# Output: src-tauri/target/release/bundle/
Project structure
TerraNova/
├── src/ # React frontend (TypeScript)
│ ├── components/ # UI components (editor, preview, layout, home)
│ ├── nodes/ # React Flow node components per V2 category
│ │ ├── density/ # 68 density function node types
│ │ ├── material/ # 14 material provider node types
│ │ ├── curves/ # 19 curve node types
│ │ └── shared/ # BaseNode, handle registry, layout
│ ├── schema/ # TypeScript type definitions for V2 assets
│ ├── stores/ # Zustand state stores
│ ├── hooks/ # Custom React hooks
│ └── utils/ # Graph conversion, layout, colormaps
├── src-tauri/ # Tauri + Rust backend
│ └── src/
│ ├── commands/ # Tauri command handlers
│ ├── schema/ # Rust V2 schema types (serde)
│ ├── noise/ # Density function evaluator
│ └── io/ # Asset pack I/O and template system
├── templates/ # Bundled world generation templates
└── public/ # Static assets

Links

License

LGPL-2.1

Built with AI

TerraNova is developed with assistance from AI tooling. We believe in being upfront about how this project is built — read the full breakdown in our AI Transparency & Usage Disclaimer.


Part of the HyperSystems suite: HyperPerms | HyperHomes | HyperFactions | TerraNova

About

Offline design studio for Hytale World Generation V2

Resources

Code of conduct

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TerraNova

Latest ReleaseLicenseDiscordGitHub Stars

Offline design studio for Hytale World Generation V2. Visual node editor, live terrain preview, and validated JSON export — no server required.

Releases | Discord

TerraNova

Features

Node-Based Editor — Drag-and-drop all 200+ V2 types with category-colored nodes. Auto-layout via dagre, minimap navigation, node search, copy/paste, snap-to-grid, layout presets, and full undo/redo with descriptive history labels. SVG export for sharing node graphs.

Live Preview — Real-time 2D heatmaps with contour lines, cross-sections, and position overlays. 3D voxel heightfield preview with SSAO post-processing. Five colormaps (Blue-Red, Grayscale, Terrain, Viridis, Red-Black) with configurable bounds. Vertical split preview layout.

Comparison View — Side-by-side before/after preview for iterating on terrain changes. See exactly what your edits do without leaving the editor.

Biome Editor — Edit Terrain, Material, Pattern, Position, and Prop sections within a single biome file. Per-section undo history, noise range editor for biome boundaries, and a rich dashboard with material layer overview and prop summary. Atmosphere tab with sun angle, fog controls, tint providers, and weather resolution. Material autocomplete, one-click validation fixes, and biome browser search.

Weather Editor — Visual editor for weather files with preview, track summaries, cloud breakdowns, and collapsible preview drawers. Simple Controls and In-Depth Controls split for different levels of detail. Issue logging with suggested fixes.

Environment Editor — Edit environment files with forecast tools, parent-environment inference, weather forecast management, and environment delimiter validation.

Instance Editor — Edit instance files with WorldStructure discovery. Create new instances as folders with instance.bson inside.

Curve Editor — Interactive canvas with draggable control points for Manual curves. Read-only computed previews for all built-in types (SquareBump, InverseLerp, etc.). Snap-to-grid, interpolation modes, presets, and mini curve previews in node bodies.

Material Layers — Visual stack editor for material providers with layer ordering and full V2 SpaceAndDepth specification support. All layers preserved on import and export regardless of entry count.

JSON View Mode — CodeMirror-based JSON editor for all file types. Edit raw JSON directly and save changes back to the graph representation.

Template System — 5 bundled templates (Void, Forest Hills, Eldritch Spirelands, Shattered Archipelago, Tropical Pirate Islands) plus snippet templates for common node patterns. Create and share your own.

Schema Validation — Real-time diagnostics on type errors, missing fields, and invalid ranges. Error, warning, and info badges appear directly on nodes. Legacy node detection with suggested replacements.

Hytale Asset Sync — Sync assets from your Hytale installation with progress tracking, cancellation support, and staleness detection. Browse and reference assets directly from the editor.

Bridge Integration — Connect to a running Hytale server and push exported asset packs directly. Design offline, deploy in one click.

Full V2 Coverage — 68+ density types, 14+ material providers, 19 curves, plus patterns, positions, props, scanners, vectors, environments, assignments, tints, block masks, and world structures. Includes MultiMix, Queue, Offset, Framework nodes, and other recent V2 additions.

Session Restore and Instant Save — Session state persists across page reloads. Instant save (Ctrl+Shift+I) with debounce and status bar indicator.

Offline-First — No server, no internet, no telemetry. Under 15MB install. All data stays on your machine.

Quick Start

  1. Download the latest release from Releases
  2. Open TerraNova, pick a template or start from scratch
  3. Design your worldgen using the node editor and live preview
  4. Export and drop the JSON files in your server's mods/ folder
macOS: App Won't Open / "Unverified Developer"

TerraNova is not yet signed with an Apple Developer certificate. macOS may block the app on first launch. Use one of these methods:

Method 1 — Right-click Open (recommended)

  1. Right-click (or Control-click) TerraNova in Applications
  2. Select "Open" from the context menu
  3. Click "Open" in the dialog that appears

Method 2 — Terminal command

xattr -cr /Applications/TerraNova.app

Then launch normally.

Method 3 — System Settings

  1. Open System Settings → Privacy & Security
  2. Scroll to the Security section — you'll see a message about TerraNova being blocked
  3. Click "Open Anyway"

These steps are only needed once. Subsequent launches will work normally.

Keyboard Shortcuts

ShortcutAction
Ctrl+Z / Ctrl+YUndo / Redo
Ctrl+SSave
Ctrl+Shift+IInstant save
Ctrl+FSearch nodes
Ctrl+ASelect all
DeleteDelete selected
Ctrl+DDuplicate selected
Ctrl+LAuto-layout graph
Space (drag)Pan canvas
ScrollZoom
All shortcuts
ShortcutAction
Ctrl+NNew file
Ctrl+OOpen file
Ctrl+Shift+SSave as
Ctrl+EExport JSON
Ctrl+BToggle sidebar
Ctrl+PToggle preview
Ctrl+GToggle grid
Ctrl+MToggle minimap
EscapeDeselect / close dialog

Technology Stack

LayerTechnology
FrameworkTauri 2
FrontendReact 19 + TypeScript
Node Editor@xyflow/react (React Flow)
3D PreviewReact Three Fiber + Three.js
StateZustand
StylingTailwind CSS
BuildVite with code-split chunks
BackendRust
Noisefastnoise-lite

Performance

  • O(1) Node RenderingReact.memo with hoisted handle arrays, so only changed nodes re-render (not all 200)
  • Instant Undo/Redo — History snapshots restored by reference, under 1ms even at 200 nodes
  • Lazy 3D Loading — Three.js + post-processing (~1.1 MB) loaded on demand, keeping initial load at ~580 KB
  • Bounded Memory — History caps (50 global / 30 per-section) and LRU file cache eviction (10 files)
  • Chunk Splitting — Vite splits Three.js, ReactFlow, and dagre into separate chunks for parallel loading

TerraNova uses Tauri instead of Electron — baseline memory is ~80-120 MB (system WebView) vs ~300-500 MB (bundled Chromium).

System Requirements

Minimum

Basic editing: up to ~50 nodes, 2D heatmap preview, 1-2 files open

ComponentSpec
CPUDual-core, 2.0 GHz (Intel i3 8th gen / Ryzen 3 3200G / Apple M1)
RAM4 GB
GPUIntegrated with WebGL 2.0 (Intel UHD 620 / AMD Vega 3)
Storage200 MB free
Display1280x720
OSWindows 10 21H2+ / macOS 11+ / Ubuntu 22.04+

Recommended

Full workflow: 100-200 nodes, 3D voxel preview, split view, 5+ biome sections

ComponentSpec
CPUQuad-core, 3.0 GHz (Intel i5 10th gen / Ryzen 5 3600 / Apple M1)
RAM8 GB
GPUDedicated with 2GB VRAM or strong integrated (GTX 1050+ / Iris Xe / Apple M1)
StorageSSD
Display1920x1080

Development

Prerequisites & setup

Requirements:Node.js 20+, pnpm 9+, Rust 1.77+

# Install frontend dependencies
pnpm install
# Launch in development mode (opens app window with hot reload)
pnpm tauri dev

Build

# Build production bundle
pnpm tauri build
# Output: src-tauri/target/release/bundle/
Project structure
TerraNova/
├── src/ # React frontend (TypeScript)
│ ├── components/ # UI components (editor, preview, layout, home)
│ ├── nodes/ # React Flow node components per V2 category
│ │ ├── density/ # 68 density function node types
│ │ ├── material/ # 14 material provider node types
│ │ ├── curves/ # 19 curve node types
│ │ └── shared/ # BaseNode, handle registry, layout
│ ├── schema/ # TypeScript type definitions for V2 assets
│ ├── stores/ # Zustand state stores
│ ├── hooks/ # Custom React hooks
│ └── utils/ # Graph conversion, layout, colormaps
├── src-tauri/ # Tauri + Rust backend
│ └── src/
│ ├── commands/ # Tauri command handlers
│ ├── schema/ # Rust V2 schema types (serde)
│ ├── noise/ # Density function evaluator
│ └── io/ # Asset pack I/O and template system
├── templates/ # Bundled world generation templates
└── public/ # Static assets

Links

License

LGPL-2.1

Built with AI

TerraNova is developed with assistance from AI tooling. We believe in being upfront about how this project is built — read the full breakdown in our AI Transparency & Usage Disclaimer.


Part of the HyperSystems suite: HyperPerms | HyperHomes | HyperFactions | TerraNova

About

Offline design studio for Hytale World Generation V2

Resources

Code of conduct

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

TerraNova

Latest ReleaseLicenseDiscordGitHub Stars

Offline design studio for Hytale World Generation V2. Visual node editor, live terrain preview, and validated JSON export — no server required.

Releases | Discord

TerraNova

Features

Node-Based Editor — Drag-and-drop all 200+ V2 types with category-colored nodes. Auto-layout via dagre, minimap navigation, node search, copy/paste, snap-to-grid, layout presets, and full undo/redo with descriptive history labels. SVG export for sharing node graphs.

Live Preview — Real-time 2D heatmaps with contour lines, cross-sections, and position overlays. 3D voxel heightfield preview with SSAO post-processing. Five colormaps (Blue-Red, Grayscale, Terrain, Viridis, Red-Black) with configurable bounds. Vertical split preview layout.

Comparison View — Side-by-side before/after preview for iterating on terrain changes. See exactly what your edits do without leaving the editor.

Biome Editor — Edit Terrain, Material, Pattern, Position, and Prop sections within a single biome file. Per-section undo history, noise range editor for biome boundaries, and a rich dashboard with material layer overview and prop summary. Atmosphere tab with sun angle, fog controls, tint providers, and weather resolution. Material autocomplete, one-click validation fixes, and biome browser search.

Weather Editor — Visual editor for weather files with preview, track summaries, cloud breakdowns, and collapsible preview drawers. Simple Controls and In-Depth Controls split for different levels of detail. Issue logging with suggested fixes.

Environment Editor — Edit environment files with forecast tools, parent-environment inference, weather forecast management, and environment delimiter validation.

Instance Editor — Edit instance files with WorldStructure discovery. Create new instances as folders with instance.bson inside.

Curve Editor — Interactive canvas with draggable control points for Manual curves. Read-only computed previews for all built-in types (SquareBump, InverseLerp, etc.). Snap-to-grid, interpolation modes, presets, and mini curve previews in node bodies.

Material Layers — Visual stack editor for material providers with layer ordering and full V2 SpaceAndDepth specification support. All layers preserved on import and export regardless of entry count.

JSON View Mode — CodeMirror-based JSON editor for all file types. Edit raw JSON directly and save changes back to the graph representation.

Template System — 5 bundled templates (Void, Forest Hills, Eldritch Spirelands, Shattered Archipelago, Tropical Pirate Islands) plus snippet templates for common node patterns. Create and share your own.

Schema Validation — Real-time diagnostics on type errors, missing fields, and invalid ranges. Error, warning, and info badges appear directly on nodes. Legacy node detection with suggested replacements.

Hytale Asset Sync — Sync assets from your Hytale installation with progress tracking, cancellation support, and staleness detection. Browse and reference assets directly from the editor.

Bridge Integration — Connect to a running Hytale server and push exported asset packs directly. Design offline, deploy in one click.

Full V2 Coverage — 68+ density types, 14+ material providers, 19 curves, plus patterns, positions, props, scanners, vectors, environments, assignments, tints, block masks, and world structures. Includes MultiMix, Queue, Offset, Framework nodes, and other recent V2 additions.

Session Restore and Instant Save — Session state persists across page reloads. Instant save (Ctrl+Shift+I) with debounce and status bar indicator.

Offline-First — No server, no internet, no telemetry. Under 15MB install. All data stays on your machine.

Quick Start

  1. Download the latest release from Releases
  2. Open TerraNova, pick a template or start from scratch
  3. Design your worldgen using the node editor and live preview
  4. Export and drop the JSON files in your server's mods/ folder
macOS: App Won't Open / "Unverified Developer"

TerraNova is not yet signed with an Apple Developer certificate. macOS may block the app on first launch. Use one of these methods:

Method 1 — Right-click Open (recommended)

  1. Right-click (or Control-click) TerraNova in Applications
  2. Select "Open" from the context menu
  3. Click "Open" in the dialog that appears

Method 2 — Terminal command

xattr -cr /Applications/TerraNova.app

Then launch normally.

Method 3 — System Settings

  1. Open System Settings → Privacy & Security
  2. Scroll to the Security section — you'll see a message about TerraNova being blocked
  3. Click "Open Anyway"

These steps are only needed once. Subsequent launches will work normally.

Keyboard Shortcuts

ShortcutAction
Ctrl+Z / Ctrl+YUndo / Redo
Ctrl+SSave
Ctrl+Shift+IInstant save
Ctrl+FSearch nodes
Ctrl+ASelect all
DeleteDelete selected
Ctrl+DDuplicate selected
Ctrl+LAuto-layout graph
Space (drag)Pan canvas
ScrollZoom
All shortcuts
ShortcutAction
Ctrl+NNew file
Ctrl+OOpen file
Ctrl+Shift+SSave as
Ctrl+EExport JSON
Ctrl+BToggle sidebar
Ctrl+PToggle preview
Ctrl+GToggle grid
Ctrl+MToggle minimap
EscapeDeselect / close dialog

Technology Stack

LayerTechnology
FrameworkTauri 2
FrontendReact 19 + TypeScript
Node Editor@xyflow/react (React Flow)
3D PreviewReact Three Fiber + Three.js
StateZustand
StylingTailwind CSS
BuildVite with code-split chunks
BackendRust
Noisefastnoise-lite

Performance

  • O(1) Node RenderingReact.memo with hoisted handle arrays, so only changed nodes re-render (not all 200)
  • Instant Undo/Redo — History snapshots restored by reference, under 1ms even at 200 nodes
  • Lazy 3D Loading — Three.js + post-processing (~1.1 MB) loaded on demand, keeping initial load at ~580 KB
  • Bounded Memory — History caps (50 global / 30 per-section) and LRU file cache eviction (10 files)
  • Chunk Splitting — Vite splits Three.js, ReactFlow, and dagre into separate chunks for parallel loading

TerraNova uses Tauri instead of Electron — baseline memory is ~80-120 MB (system WebView) vs ~300-500 MB (bundled Chromium).

System Requirements

Minimum

Basic editing: up to ~50 nodes, 2D heatmap preview, 1-2 files open

ComponentSpec
CPUDual-core, 2.0 GHz (Intel i3 8th gen / Ryzen 3 3200G / Apple M1)
RAM4 GB
GPUIntegrated with WebGL 2.0 (Intel UHD 620 / AMD Vega 3)
Storage200 MB free
Display1280x720
OSWindows 10 21H2+ / macOS 11+ / Ubuntu 22.04+

Recommended

Full workflow: 100-200 nodes, 3D voxel preview, split view, 5+ biome sections

ComponentSpec
CPUQuad-core, 3.0 GHz (Intel i5 10th gen / Ryzen 5 3600 / Apple M1)
RAM8 GB
GPUDedicated with 2GB VRAM or strong integrated (GTX 1050+ / Iris Xe / Apple M1)
StorageSSD
Display1920x1080

Development

Prerequisites & setup

Requirements:Node.js 20+, pnpm 9+, Rust 1.77+

# Install frontend dependencies
pnpm install
# Launch in development mode (opens app window with hot reload)
pnpm tauri dev

Build

# Build production bundle
pnpm tauri build
# Output: src-tauri/target/release/bundle/
Project structure
TerraNova/
├── src/ # React frontend (TypeScript)
│ ├── components/ # UI components (editor, preview, layout, home)
│ ├── nodes/ # React Flow node components per V2 category
│ │ ├── density/ # 68 density function node types
│ │ ├── material/ # 14 material provider node types
│ │ ├── curves/ # 19 curve node types
│ │ └── shared/ # BaseNode, handle registry, layout
│ ├── schema/ # TypeScript type definitions for V2 assets
│ ├── stores/ # Zustand state stores
│ ├── hooks/ # Custom React hooks
│ └── utils/ # Graph conversion, layout, colormaps
├── src-tauri/ # Tauri + Rust backend
│ └── src/
│ ├── commands/ # Tauri command handlers
│ ├── schema/ # Rust V2 schema types (serde)
│ ├── noise/ # Density function evaluator
│ └── io/ # Asset pack I/O and template system
├── templates/ # Bundled world generation templates
└── public/ # Static assets

Links

License

LGPL-2.1

Built with AI

TerraNova is developed with assistance from AI tooling. We believe in being upfront about how this project is built — read the full breakdown in our AI Transparency & Usage Disclaimer.


Part of the HyperSystems suite: HyperPerms | HyperHomes | HyperFactions | TerraNova

About

Offline design studio for Hytale World Generation V2

Resources

Code of conduct

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TerraNova

Latest ReleaseLicenseDiscordGitHub Stars

Offline design studio for Hytale World Generation V2. Visual node editor, live terrain preview, and validated JSON export — no server required.

Releases | Discord

TerraNova

Features

Node-Based Editor — Drag-and-drop all 200+ V2 types with category-colored nodes. Auto-layout via dagre, minimap navigation, node search, copy/paste, snap-to-grid, layout presets, and full undo/redo with descriptive history labels. SVG export for sharing node graphs.

Live Preview — Real-time 2D heatmaps with contour lines, cross-sections, and position overlays. 3D voxel heightfield preview with SSAO post-processing. Five colormaps (Blue-Red, Grayscale, Terrain, Viridis, Red-Black) with configurable bounds. Vertical split preview layout.

Comparison View — Side-by-side before/after preview for iterating on terrain changes. See exactly what your edits do without leaving the editor.

Biome Editor — Edit Terrain, Material, Pattern, Position, and Prop sections within a single biome file. Per-section undo history, noise range editor for biome boundaries, and a rich dashboard with material layer overview and prop summary. Atmosphere tab with sun angle, fog controls, tint providers, and weather resolution. Material autocomplete, one-click validation fixes, and biome browser search.

Weather Editor — Visual editor for weather files with preview, track summaries, cloud breakdowns, and collapsible preview drawers. Simple Controls and In-Depth Controls split for different levels of detail. Issue logging with suggested fixes.

Environment Editor — Edit environment files with forecast tools, parent-environment inference, weather forecast management, and environment delimiter validation.

Instance Editor — Edit instance files with WorldStructure discovery. Create new instances as folders with instance.bson inside.

Curve Editor — Interactive canvas with draggable control points for Manual curves. Read-only computed previews for all built-in types (SquareBump, InverseLerp, etc.). Snap-to-grid, interpolation modes, presets, and mini curve previews in node bodies.

Material Layers — Visual stack editor for material providers with layer ordering and full V2 SpaceAndDepth specification support. All layers preserved on import and export regardless of entry count.

JSON View Mode — CodeMirror-based JSON editor for all file types. Edit raw JSON directly and save changes back to the graph representation.

Template System — 5 bundled templates (Void, Forest Hills, Eldritch Spirelands, Shattered Archipelago, Tropical Pirate Islands) plus snippet templates for common node patterns. Create and share your own.

Schema Validation — Real-time diagnostics on type errors, missing fields, and invalid ranges. Error, warning, and info badges appear directly on nodes. Legacy node detection with suggested replacements.

Hytale Asset Sync — Sync assets from your Hytale installation with progress tracking, cancellation support, and staleness detection. Browse and reference assets directly from the editor.

Bridge Integration — Connect to a running Hytale server and push exported asset packs directly. Design offline, deploy in one click.

Full V2 Coverage — 68+ density types, 14+ material providers, 19 curves, plus patterns, positions, props, scanners, vectors, environments, assignments, tints, block masks, and world structures. Includes MultiMix, Queue, Offset, Framework nodes, and other recent V2 additions.

Session Restore and Instant Save — Session state persists across page reloads. Instant save (Ctrl+Shift+I) with debounce and status bar indicator.

Offline-First — No server, no internet, no telemetry. Under 15MB install. All data stays on your machine.

Quick Start

  1. Download the latest release from Releases
  2. Open TerraNova, pick a template or start from scratch
  3. Design your worldgen using the node editor and live preview
  4. Export and drop the JSON files in your server's mods/ folder
macOS: App Won't Open / "Unverified Developer"

TerraNova is not yet signed with an Apple Developer certificate. macOS may block the app on first launch. Use one of these methods:

Method 1 — Right-click Open (recommended)

  1. Right-click (or Control-click) TerraNova in Applications
  2. Select "Open" from the context menu
  3. Click "Open" in the dialog that appears

Method 2 — Terminal command

xattr -cr /Applications/TerraNova.app

Then launch normally.

Method 3 — System Settings

  1. Open System Settings → Privacy & Security
  2. Scroll to the Security section — you'll see a message about TerraNova being blocked
  3. Click "Open Anyway"

These steps are only needed once. Subsequent launches will work normally.

Keyboard Shortcuts

ShortcutAction
Ctrl+Z / Ctrl+YUndo / Redo
Ctrl+SSave
Ctrl+Shift+IInstant save
Ctrl+FSearch nodes
Ctrl+ASelect all
DeleteDelete selected
Ctrl+DDuplicate selected
Ctrl+LAuto-layout graph
Space (drag)Pan canvas
ScrollZoom
All shortcuts
ShortcutAction
Ctrl+NNew file
Ctrl+OOpen file
Ctrl+Shift+SSave as
Ctrl+EExport JSON
Ctrl+BToggle sidebar
Ctrl+PToggle preview
Ctrl+GToggle grid
Ctrl+MToggle minimap
EscapeDeselect / close dialog

Technology Stack

LayerTechnology
FrameworkTauri 2
FrontendReact 19 + TypeScript
Node Editor@xyflow/react (React Flow)
3D PreviewReact Three Fiber + Three.js
StateZustand
StylingTailwind CSS
BuildVite with code-split chunks
BackendRust
Noisefastnoise-lite

Performance

  • O(1) Node RenderingReact.memo with hoisted handle arrays, so only changed nodes re-render (not all 200)
  • Instant Undo/Redo — History snapshots restored by reference, under 1ms even at 200 nodes
  • Lazy 3D Loading — Three.js + post-processing (~1.1 MB) loaded on demand, keeping initial load at ~580 KB
  • Bounded Memory — History caps (50 global / 30 per-section) and LRU file cache eviction (10 files)
  • Chunk Splitting — Vite splits Three.js, ReactFlow, and dagre into separate chunks for parallel loading

TerraNova uses Tauri instead of Electron — baseline memory is ~80-120 MB (system WebView) vs ~300-500 MB (bundled Chromium).

System Requirements

Minimum

Basic editing: up to ~50 nodes, 2D heatmap preview, 1-2 files open

ComponentSpec
CPUDual-core, 2.0 GHz (Intel i3 8th gen / Ryzen 3 3200G / Apple M1)
RAM4 GB
GPUIntegrated with WebGL 2.0 (Intel UHD 620 / AMD Vega 3)
Storage200 MB free
Display1280x720
OSWindows 10 21H2+ / macOS 11+ / Ubuntu 22.04+

Recommended

Full workflow: 100-200 nodes, 3D voxel preview, split view, 5+ biome sections

ComponentSpec
CPUQuad-core, 3.0 GHz (Intel i5 10th gen / Ryzen 5 3600 / Apple M1)
RAM8 GB
GPUDedicated with 2GB VRAM or strong integrated (GTX 1050+ / Iris Xe / Apple M1)
StorageSSD
Display1920x1080

Development

Prerequisites & setup

Requirements:Node.js 20+, pnpm 9+, Rust 1.77+

# Install frontend dependencies
pnpm install
# Launch in development mode (opens app window with hot reload)
pnpm tauri dev

Build

# Build production bundle
pnpm tauri build
# Output: src-tauri/target/release/bundle/
Project structure
TerraNova/
├── src/ # React frontend (TypeScript)
│ ├── components/ # UI components (editor, preview, layout, home)
│ ├── nodes/ # React Flow node components per V2 category
│ │ ├── density/ # 68 density function node types
│ │ ├── material/ # 14 material provider node types
│ │ ├── curves/ # 19 curve node types
│ │ └── shared/ # BaseNode, handle registry, layout
│ ├── schema/ # TypeScript type definitions for V2 assets
│ ├── stores/ # Zustand state stores
│ ├── hooks/ # Custom React hooks
│ └── utils/ # Graph conversion, layout, colormaps
├── src-tauri/ # Tauri + Rust backend
│ └── src/
│ ├── commands/ # Tauri command handlers
│ ├── schema/ # Rust V2 schema types (serde)
│ ├── noise/ # Density function evaluator
│ └── io/ # Asset pack I/O and template system
├── templates/ # Bundled world generation templates
└── public/ # Static assets

Links

License

LGPL-2.1

Built with AI

TerraNova is developed with assistance from AI tooling. We believe in being upfront about how this project is built — read the full breakdown in our AI Transparency & Usage Disclaimer.


Part of the HyperSystems suite: HyperPerms | HyperHomes | HyperFactions | TerraNova

About

Offline design studio for Hytale World Generation V2

Resources

Code of conduct

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

TerraNova

Latest ReleaseLicenseDiscordGitHub Stars

Offline design studio for Hytale World Generation V2. Visual node editor, live terrain preview, and validated JSON export — no server required.

Releases | Discord

TerraNova

Features

Node-Based Editor — Drag-and-drop all 200+ V2 types with category-colored nodes. Auto-layout via dagre, minimap navigation, node search, copy/paste, snap-to-grid, layout presets, and full undo/redo with descriptive history labels. SVG export for sharing node graphs.

Live Preview — Real-time 2D heatmaps with contour lines, cross-sections, and position overlays. 3D voxel heightfield preview with SSAO post-processing. Five colormaps (Blue-Red, Grayscale, Terrain, Viridis, Red-Black) with configurable bounds. Vertical split preview layout.

Comparison View — Side-by-side before/after preview for iterating on terrain changes. See exactly what your edits do without leaving the editor.

Biome Editor — Edit Terrain, Material, Pattern, Position, and Prop sections within a single biome file. Per-section undo history, noise range editor for biome boundaries, and a rich dashboard with material layer overview and prop summary. Atmosphere tab with sun angle, fog controls, tint providers, and weather resolution. Material autocomplete, one-click validation fixes, and biome browser search.

Weather Editor — Visual editor for weather files with preview, track summaries, cloud breakdowns, and collapsible preview drawers. Simple Controls and In-Depth Controls split for different levels of detail. Issue logging with suggested fixes.

Environment Editor — Edit environment files with forecast tools, parent-environment inference, weather forecast management, and environment delimiter validation.

Instance Editor — Edit instance files with WorldStructure discovery. Create new instances as folders with instance.bson inside.

Curve Editor — Interactive canvas with draggable control points for Manual curves. Read-only computed previews for all built-in types (SquareBump, InverseLerp, etc.). Snap-to-grid, interpolation modes, presets, and mini curve previews in node bodies.

Material Layers — Visual stack editor for material providers with layer ordering and full V2 SpaceAndDepth specification support. All layers preserved on import and export regardless of entry count.

JSON View Mode — CodeMirror-based JSON editor for all file types. Edit raw JSON directly and save changes back to the graph representation.

Template System — 5 bundled templates (Void, Forest Hills, Eldritch Spirelands, Shattered Archipelago, Tropical Pirate Islands) plus snippet templates for common node patterns. Create and share your own.

Schema Validation — Real-time diagnostics on type errors, missing fields, and invalid ranges. Error, warning, and info badges appear directly on nodes. Legacy node detection with suggested replacements.

Hytale Asset Sync — Sync assets from your Hytale installation with progress tracking, cancellation support, and staleness detection. Browse and reference assets directly from the editor.

Bridge Integration — Connect to a running Hytale server and push exported asset packs directly. Design offline, deploy in one click.

Full V2 Coverage — 68+ density types, 14+ material providers, 19 curves, plus patterns, positions, props, scanners, vectors, environments, assignments, tints, block masks, and world structures. Includes MultiMix, Queue, Offset, Framework nodes, and other recent V2 additions.

Session Restore and Instant Save — Session state persists across page reloads. Instant save (Ctrl+Shift+I) with debounce and status bar indicator.

Offline-First — No server, no internet, no telemetry. Under 15MB install. All data stays on your machine.

Quick Start

  1. Download the latest release from Releases
  2. Open TerraNova, pick a template or start from scratch
  3. Design your worldgen using the node editor and live preview
  4. Export and drop the JSON files in your server's mods/ folder
macOS: App Won't Open / "Unverified Developer"

TerraNova is not yet signed with an Apple Developer certificate. macOS may block the app on first launch. Use one of these methods:

Method 1 — Right-click Open (recommended)

  1. Right-click (or Control-click) TerraNova in Applications
  2. Select "Open" from the context menu
  3. Click "Open" in the dialog that appears

Method 2 — Terminal command

xattr -cr /Applications/TerraNova.app

Then launch normally.

Method 3 — System Settings

  1. Open System Settings → Privacy & Security
  2. Scroll to the Security section — you'll see a message about TerraNova being blocked
  3. Click "Open Anyway"

These steps are only needed once. Subsequent launches will work normally.

Keyboard Shortcuts

ShortcutAction
Ctrl+Z / Ctrl+YUndo / Redo
Ctrl+SSave
Ctrl+Shift+IInstant save
Ctrl+FSearch nodes
Ctrl+ASelect all
DeleteDelete selected
Ctrl+DDuplicate selected
Ctrl+LAuto-layout graph
Space (drag)Pan canvas
ScrollZoom
All shortcuts
ShortcutAction
Ctrl+NNew file
Ctrl+OOpen file
Ctrl+Shift+SSave as
Ctrl+EExport JSON
Ctrl+BToggle sidebar
Ctrl+PToggle preview
Ctrl+GToggle grid
Ctrl+MToggle minimap
EscapeDeselect / close dialog

Technology Stack

LayerTechnology
FrameworkTauri 2
FrontendReact 19 + TypeScript
Node Editor@xyflow/react (React Flow)
3D PreviewReact Three Fiber + Three.js
StateZustand
StylingTailwind CSS
BuildVite with code-split chunks
BackendRust
Noisefastnoise-lite

Performance

  • O(1) Node RenderingReact.memo with hoisted handle arrays, so only changed nodes re-render (not all 200)
  • Instant Undo/Redo — History snapshots restored by reference, under 1ms even at 200 nodes
  • Lazy 3D Loading — Three.js + post-processing (~1.1 MB) loaded on demand, keeping initial load at ~580 KB
  • Bounded Memory — History caps (50 global / 30 per-section) and LRU file cache eviction (10 files)
  • Chunk Splitting — Vite splits Three.js, ReactFlow, and dagre into separate chunks for parallel loading

TerraNova uses Tauri instead of Electron — baseline memory is ~80-120 MB (system WebView) vs ~300-500 MB (bundled Chromium).

System Requirements

Minimum

Basic editing: up to ~50 nodes, 2D heatmap preview, 1-2 files open

ComponentSpec
CPUDual-core, 2.0 GHz (Intel i3 8th gen / Ryzen 3 3200G / Apple M1)
RAM4 GB
GPUIntegrated with WebGL 2.0 (Intel UHD 620 / AMD Vega 3)
Storage200 MB free
Display1280x720
OSWindows 10 21H2+ / macOS 11+ / Ubuntu 22.04+

Recommended

Full workflow: 100-200 nodes, 3D voxel preview, split view, 5+ biome sections

ComponentSpec
CPUQuad-core, 3.0 GHz (Intel i5 10th gen / Ryzen 5 3600 / Apple M1)
RAM8 GB
GPUDedicated with 2GB VRAM or strong integrated (GTX 1050+ / Iris Xe / Apple M1)
StorageSSD
Display1920x1080

Development

Prerequisites & setup

Requirements:Node.js 20+, pnpm 9+, Rust 1.77+

# Install frontend dependencies
pnpm install
# Launch in development mode (opens app window with hot reload)
pnpm tauri dev

Build

# Build production bundle
pnpm tauri build
# Output: src-tauri/target/release/bundle/
Project structure
TerraNova/
├── src/ # React frontend (TypeScript)
│ ├── components/ # UI components (editor, preview, layout, home)
│ ├── nodes/ # React Flow node components per V2 category
│ │ ├── density/ # 68 density function node types
│ │ ├── material/ # 14 material provider node types
│ │ ├── curves/ # 19 curve node types
│ │ └── shared/ # BaseNode, handle registry, layout
│ ├── schema/ # TypeScript type definitions for V2 assets
│ ├── stores/ # Zustand state stores
│ ├── hooks/ # Custom React hooks
│ └── utils/ # Graph conversion, layout, colormaps
├── src-tauri/ # Tauri + Rust backend
│ └── src/
│ ├── commands/ # Tauri command handlers
│ ├── schema/ # Rust V2 schema types (serde)
│ ├── noise/ # Density function evaluator
│ └── io/ # Asset pack I/O and template system
├── templates/ # Bundled world generation templates
└── public/ # Static assets

Links

License

LGPL-2.1

Built with AI

TerraNova is developed with assistance from AI tooling. We believe in being upfront about how this project is built — read the full breakdown in our AI Transparency & Usage Disclaimer.


Part of the HyperSystems suite: HyperPerms | HyperHomes | HyperFactions | TerraNova

About

Offline design studio for Hytale World Generation V2

Resources

Code of conduct

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

TerraNova

Latest ReleaseLicenseDiscordGitHub Stars

Offline design studio for Hytale World Generation V2. Visual node editor, live terrain preview, and validated JSON export — no server required.

Releases | Discord

TerraNova

Features

Node-Based Editor — Drag-and-drop all 200+ V2 types with category-colored nodes. Auto-layout via dagre, minimap navigation, node search, copy/paste, snap-to-grid, layout presets, and full undo/redo with descriptive history labels. SVG export for sharing node graphs.

Live Preview — Real-time 2D heatmaps with contour lines, cross-sections, and position overlays. 3D voxel heightfield preview with SSAO post-processing. Five colormaps (Blue-Red, Grayscale, Terrain, Viridis, Red-Black) with configurable bounds. Vertical split preview layout.

Comparison View — Side-by-side before/after preview for iterating on terrain changes. See exactly what your edits do without leaving the editor.

Biome Editor — Edit Terrain, Material, Pattern, Position, and Prop sections within a single biome file. Per-section undo history, noise range editor for biome boundaries, and a rich dashboard with material layer overview and prop summary. Atmosphere tab with sun angle, fog controls, tint providers, and weather resolution. Material autocomplete, one-click validation fixes, and biome browser search.

Weather Editor — Visual editor for weather files with preview, track summaries, cloud breakdowns, and collapsible preview drawers. Simple Controls and In-Depth Controls split for different levels of detail. Issue logging with suggested fixes.

Environment Editor — Edit environment files with forecast tools, parent-environment inference, weather forecast management, and environment delimiter validation.

Instance Editor — Edit instance files with WorldStructure discovery. Create new instances as folders with instance.bson inside.

Curve Editor — Interactive canvas with draggable control points for Manual curves. Read-only computed previews for all built-in types (SquareBump, InverseLerp, etc.). Snap-to-grid, interpolation modes, presets, and mini curve previews in node bodies.

Material Layers — Visual stack editor for material providers with layer ordering and full V2 SpaceAndDepth specification support. All layers preserved on import and export regardless of entry count.

JSON View Mode — CodeMirror-based JSON editor for all file types. Edit raw JSON directly and save changes back to the graph representation.

Template System — 5 bundled templates (Void, Forest Hills, Eldritch Spirelands, Shattered Archipelago, Tropical Pirate Islands) plus snippet templates for common node patterns. Create and share your own.

Schema Validation — Real-time diagnostics on type errors, missing fields, and invalid ranges. Error, warning, and info badges appear directly on nodes. Legacy node detection with suggested replacements.

Hytale Asset Sync — Sync assets from your Hytale installation with progress tracking, cancellation support, and staleness detection. Browse and reference assets directly from the editor.

Bridge Integration — Connect to a running Hytale server and push exported asset packs directly. Design offline, deploy in one click.

Full V2 Coverage — 68+ density types, 14+ material providers, 19 curves, plus patterns, positions, props, scanners, vectors, environments, assignments, tints, block masks, and world structures. Includes MultiMix, Queue, Offset, Framework nodes, and other recent V2 additions.

Session Restore and Instant Save — Session state persists across page reloads. Instant save (Ctrl+Shift+I) with debounce and status bar indicator.

Offline-First — No server, no internet, no telemetry. Under 15MB install. All data stays on your machine.

Quick Start

  1. Download the latest release from Releases
  2. Open TerraNova, pick a template or start from scratch
  3. Design your worldgen using the node editor and live preview
  4. Export and drop the JSON files in your server's mods/ folder
macOS: App Won't Open / "Unverified Developer"

TerraNova is not yet signed with an Apple Developer certificate. macOS may block the app on first launch. Use one of these methods:

Method 1 — Right-click Open (recommended)

  1. Right-click (or Control-click) TerraNova in Applications
  2. Select "Open" from the context menu
  3. Click "Open" in the dialog that appears

Method 2 — Terminal command

xattr -cr /Applications/TerraNova.app

Then launch normally.

Method 3 — System Settings

  1. Open System Settings → Privacy & Security
  2. Scroll to the Security section — you'll see a message about TerraNova being blocked
  3. Click "Open Anyway"

These steps are only needed once. Subsequent launches will work normally.

Keyboard Shortcuts

ShortcutAction
Ctrl+Z / Ctrl+YUndo / Redo
Ctrl+SSave
Ctrl+Shift+IInstant save
Ctrl+FSearch nodes
Ctrl+ASelect all
DeleteDelete selected
Ctrl+DDuplicate selected
Ctrl+LAuto-layout graph
Space (drag)Pan canvas
ScrollZoom
All shortcuts
ShortcutAction
Ctrl+NNew file
Ctrl+OOpen file
Ctrl+Shift+SSave as
Ctrl+EExport JSON
Ctrl+BToggle sidebar
Ctrl+PToggle preview
Ctrl+GToggle grid
Ctrl+MToggle minimap
EscapeDeselect / close dialog

Technology Stack

LayerTechnology
FrameworkTauri 2
FrontendReact 19 + TypeScript
Node Editor@xyflow/react (React Flow)
3D PreviewReact Three Fiber + Three.js
StateZustand
StylingTailwind CSS
BuildVite with code-split chunks
BackendRust
Noisefastnoise-lite

Performance

  • O(1) Node RenderingReact.memo with hoisted handle arrays, so only changed nodes re-render (not all 200)
  • Instant Undo/Redo — History snapshots restored by reference, under 1ms even at 200 nodes
  • Lazy 3D Loading — Three.js + post-processing (~1.1 MB) loaded on demand, keeping initial load at ~580 KB
  • Bounded Memory — History caps (50 global / 30 per-section) and LRU file cache eviction (10 files)
  • Chunk Splitting — Vite splits Three.js, ReactFlow, and dagre into separate chunks for parallel loading

TerraNova uses Tauri instead of Electron — baseline memory is ~80-120 MB (system WebView) vs ~300-500 MB (bundled Chromium).

System Requirements

Minimum

Basic editing: up to ~50 nodes, 2D heatmap preview, 1-2 files open

ComponentSpec
CPUDual-core, 2.0 GHz (Intel i3 8th gen / Ryzen 3 3200G / Apple M1)
RAM4 GB
GPUIntegrated with WebGL 2.0 (Intel UHD 620 / AMD Vega 3)
Storage200 MB free
Display1280x720
OSWindows 10 21H2+ / macOS 11+ / Ubuntu 22.04+

Recommended

Full workflow: 100-200 nodes, 3D voxel preview, split view, 5+ biome sections

ComponentSpec
CPUQuad-core, 3.0 GHz (Intel i5 10th gen / Ryzen 5 3600 / Apple M1)
RAM8 GB
GPUDedicated with 2GB VRAM or strong integrated (GTX 1050+ / Iris Xe / Apple M1)
StorageSSD
Display1920x1080

Development

Prerequisites & setup

Requirements:Node.js 20+, pnpm 9+, Rust 1.77+

# Install frontend dependencies
pnpm install
# Launch in development mode (opens app window with hot reload)
pnpm tauri dev

Build

# Build production bundle
pnpm tauri build
# Output: src-tauri/target/release/bundle/
Project structure
TerraNova/
├── src/ # React frontend (TypeScript)
│ ├── components/ # UI components (editor, preview, layout, home)
│ ├── nodes/ # React Flow node components per V2 category
│ │ ├── density/ # 68 density function node types
│ │ ├── material/ # 14 material provider node types
│ │ ├── curves/ # 19 curve node types
│ │ └── shared/ # BaseNode, handle registry, layout
│ ├── schema/ # TypeScript type definitions for V2 assets
│ ├── stores/ # Zustand state stores
│ ├── hooks/ # Custom React hooks
│ └── utils/ # Graph conversion, layout, colormaps
├── src-tauri/ # Tauri + Rust backend
│ └── src/
│ ├── commands/ # Tauri command handlers
│ ├── schema/ # Rust V2 schema types (serde)
│ ├── noise/ # Density function evaluator
│ └── io/ # Asset pack I/O and template system
├── templates/ # Bundled world generation templates
└── public/ # Static assets

Links

License

LGPL-2.1

Built with AI

TerraNova is developed with assistance from AI tooling. We believe in being upfront about how this project is built — read the full breakdown in our AI Transparency & Usage Disclaimer.


Part of the HyperSystems suite: HyperPerms | HyperHomes | HyperFactions | TerraNova

About

Offline design studio for Hytale World Generation V2

Resources

Code of conduct

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages