Skip to content

This is the codebase for the HYTOPIA world editor, available at https://build.hytopia.com - Anyone can fork this repository and submit pull requests to be considered for release! Also, make sure to check out our paid bug & feature bounties!

Notifications You must be signed in to change notification settings

hytopiagg/world-editor

Repository files navigation

HYTOPIA World Editor - 3D Voxel Game Building Tool

HYTOPIA World Editor - 3D Voxel Builder Interface

About HYTOPIA World Editor

The HYTOPIA World Editor is a powerful 3D voxel building tool available at https://build.hytopia.com. Similar to Minecraft's creative mode but designed specifically for HYTOPIA, our editor allows you to create immersive 3D worlds using voxel blocks, custom textures, and interactive elements.

This repository is open-sourced to enable community contributions. We encourage you to fork this repository and submit new features or bug fixes via pull requests. All accepted pull requests will be deployed to https://build.hytopia.com for the community to use.

Key Features

  • Intuitive 3D voxel building interface
  • Block/GLTF placement and manipulation tools
  • Custom texture support
  • AI generation (textures & structures)
  • Automatic terrain generation
  • Minecraft 1.21 map conversion
  • Persistent data
  • Map import and export

Get Paid To Add Features And Fix Bugs! (OFFICIAL PAID BOUNTY SYSTEM)

Bounties are requests for bug fixes, refactors, or feature additions that meet certain criteria and are submitted as a pull request. The HYTOPIA team will review your PR relative to the bounty you're submitting it for, and if your PR is accepted, the designated bounty for the request will be awarded.

Additionally! If you have found a bug, issue with the world editor, or believe a specific feature would be valuable, you can submit it via a Github issue here.

If your issue, request or bug is escalated by our team to become a bounty, you will be included in the official bounty issue, and receive 10% of the total bounty amount after you or another developer submits a pull request we deem acceptable to fulfill the bounty. That means, if a bounty is escalated and has a $500 reward, you as the submitter would receive $50, the developer whos PR is accepted for the bounty would receive $500. Bounty payments are distributed by the HYTOPIA team via PayPal.

You can find a list of available bug, feature and refactor bounties that will be paid to the first participant to submit an accepted PR here

Getting Started

Prerequisites

  • Bun installed on your system
  • Basic knowledge of React and TypeScript
  • Understanding of 3D concepts and voxel-based building

Available Scripts

In the project directory, you can run:

bun start

Runs the app in the development mode.
Open http://localhost:3000 to view it in your browser.

The page will reload when you make changes.
You may also see any lint errors in the console.

bun test

Launches the test runner in the interactive watch mode.

bun run build

Builds the app for production to the build folder.
It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.
Your app is ready to be deployed!

bun run eject

Note: this is a one-way operation. Once you eject, you can't go back!

If you aren't satisfied with the build tool and configuration choices, you can eject at any time. This command will remove the single build dependency from your project.

Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except eject will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.

You don't have to ever use eject. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature.

Desktop App (Electron)

The HYTOPIA World Editor is also available as a desktop app powered by Electron for improved performance, native windowing and GPU acceleration.

Download

  • macOS, Windows, Linux builds are generated with electron-builder. Until automated releases are set up, build locally using the commands below.

Development

  • Install dependencies: bun install (or npm install)
  • Start the desktop app in dev mode:
    • bun run electron:dev
    • This runs the web app at http://localhost:3000 and launches Electron to load it.

Production build

  • Build the web bundle for Electron (file:// safe paths):
    • bun run build:electron
  • Create distributables:
    • bun run electron:dist
    • Outputs installers in the dist/ directory for your OS.

Notes

  • The desktop build sets PUBLIC_URL=./ so assets resolve under file://.
  • Web Workers created via new URL('...worker.js', import.meta.url) continue to function under Electron.
  • External links open in your default browser from the Electron app.

Block Manifest System

The editor uses a block manifest system to ensure stable block IDs across deployments. This prevents existing builds from breaking when new blocks are added.

How It Works

  • Block Manifest File: Located at src/js/blocks/block-manifest.json, this file maps block names to their stable IDs
  • Stable IDs: Default blocks maintain their IDs even when new blocks are added
  • Baseline Commit: The manifest is based on commit 0a88ccc511213ad550d47d915b0bf71acdfed1a7 to ensure all blocks that existed at that point have stable IDs
  • New Blocks: When new blocks are discovered, they're assigned IDs starting from the highest ID in the manifest + 1
  • Warnings: The system will warn you in the console if new blocks are found that aren't in the manifest

Initial Setup

The manifest was generated from commit 0a88ccc511213ad550d47d915b0bf71acdfed1a7 to establish the baseline. To regenerate from a different commit:

node scripts/generate-manifest-from-commit.js <commit-hash>

This script will:

  • Checkout blocks from the specified commit
  • Generate manifest with IDs 1-N for those blocks
  • Restore current blocks
  • Extend the manifest with any new blocks found in current state

Updating the Manifest

When you add new block textures to public/assets/blocks/, run:

node scripts/update-block-manifest.js

This script will:

  • Discover all blocks in the assets directory
  • Add any new blocks to the manifest with appropriate IDs (starting from the highest existing ID + 1)
  • Remove blocks that no longer exist
  • Sort the manifest by ID for readability

Adding New Blocks

  1. Add your block texture files to public/assets/blocks/
  2. Run node scripts/update-block-manifest.js to update the manifest
  3. Commit both the new block files and the updated manifest

This ensures that:

  • Existing builds continue to work (their block IDs don't change)
  • New blocks get stable IDs that won't shift
  • The manifest serves as documentation of all available blocks

Related Links

Keywords

voxel editor, 3D world builder, HYTOPIA, Minecraft alternative, game development tool, voxel game, 3D modeling, world creation, game design, voxel art


© 2025 HYTOPIA. All rights reserved.

About

This is the codebase for the HYTOPIA world editor, available at https://build.hytopia.com - Anyone can fork this repository and submit pull requests to be considered for release! Also, make sure to check out our paid bug & feature bounties!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6