[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-92784":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":14,"stars30d":15,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":16,"rankGlobal":9,"rankLanguage":9,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":18,"hasPages":18,"topics":20,"createdAt":9,"pushedAt":9,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":14,"starSnapshotCount":14,"syncStatus":24,"lastSyncTime":25,"discoverSource":26},92784,"TileMakerDOT","andrei-voia\u002FTileMakerDOT","andrei-voia","Map Creation Tool designed for 2D Game Development",null,"Java",54,7,1,0,3,43.01,"MIT License",false,"main",[],"2026-07-22 04:02:07","# TileMaker DOT Application\n\n***\n\n## 🌟 Overview\n\n**TileMaker DOT** is a custom map creation application designed for game developers who need a **fast, efficient, and user-friendly tool**. It provides a unique, streamlined workflow and flexible asset management system, allowing you to focus purely on map design.\n\n**Created by:** Andrei Voia\n\n***\n\n## 💻 Platform Support\n\n**TileMaker DOT** is a cross-platform application. To ensure maximum performance and portability, specific versions of the Java Runtime are included for each system.\n\n**Windows** Fully supported (x64)\n\n**Linux** Fully supported (Ubuntu, Mint, Debian, etc.)\n\n**macOS** Fully supported (Intel x64 & Apple Silicon via Rosetta)\n\n***\n\n## 📥 Download\nGet the latest version of TileMaker DOT on Itch.io:\n[**Download on Itch.io**](https:\u002F\u002Fcrytek22.itch.io\u002Ftilemakerdot)\n\n***\n\n## ✨ Key Features & Benefits\n\nTileMaker DOT addresses common limitations found in traditional map editors by offering:\n\n| Feature Category         | TileMaker DOT Benefit | Competitive Advantage |\n| ---                      | ---                   | ---                   |\n| **Multi-Platform**       | Native Launchers for Windows\u002FMac\u002FLinux.                                                     | Runs anywhere without needing a system-wide Java installation. |\n| **Personalization & UI** | **Light and Dark Themes** Optimized for long dev sessions and better visibility in different environments. | Features a modern and professional aesthetic. |\n| **Export Control**       | Universal Compatibility: Supports **CSV, XML, JSON, TMX (Tiled), TMJ, and .LVL** formats.   | Provides granular control over the final file structure and appearance. |\n| **Asset Management**     | Images can be modified and added later without altering the unique ID of existing textures. | Avoids \"breaking\" existing map data when updating visual assets. |\n| **Hot-Reloading**        | Re-scans folders and updates textures without restarting.                                   | Dramatically speeds up the art pipeline by allowing \"Live Edits.\" |\n| **Animation System**     | **Frame-Based Sync** Automatically detects frames and synchronizes them globally.           | Ensures all animated world objects (torches, water) flicker in perfect unison. |\n| **Auto-ID Assistant**    | **Intelligent Prefixing** Automatically assigns unique IDs to textures missing them.        | Eliminates the tedious manual task of naming files, preventing ID conflicts automatically. |\n| **Chunk Selection**      | Drag-and-drop mass manipulation for copying, moving, or exporting map sections.             | Simplifies modular map design by allowing users to save and reuse \"chunks\" (houses, rooms). |\n| **Random Brush**         | **Scatter Painting** Select multiple IDs to paint randomized variations automatically.      | Breaks up visual repetition in natural environments like forests or grasslands. |\n| **Texture Organization** | Allows the user to define custom IDs for all used textures.                                 | Ensures map data aligns perfectly with your game's object structure, rather than adapting to randomly assigned editor IDs. |\n| **Layer Simplicity**     | Uses a single layer for each map type (`tiles`, `objects`, `npcs`), with automatic visual depth sorting(front-to-back sorting). This sorting is determined by analyzing the object's bottom-most non-transparent pixels. | Eliminates the complex \"Photoshop-style\" management of multiple layers just for depth sorting. By using pixel analysis, it provides pixel-perfect visual layering without manual configuration. |\n| **Dynamic Resizing**     | Provides powerful quick-action tools for map expansion and resizing.                        | Allows easy modification of the map canvas size after creation, offering flexibility for evolving project needs. |\n| **User Experience**      | Reduces the learning curve and speeds up map creation for the end-user.                     | A streamlined and intuitive interface makes the application significantly easier to use than similar complex tools. |\n| **Asset Filtering**      | Selective ID Loading: Only imports assets defined in a specific whitelist file.             | Prevents workspace clutter and memory overhead by excluding unused or legacy textures without needing to delete files. |\n| **Spritesheet Slicer**   | Import a full sheet and cut it into individual assets without leaving the app.              | Eliminates the need for external image editors and automatically handles file saving and ID assignment in one workflow. |\n| **Annotated Notes**      | Place persistent, color-coded pins directly onto map tiles to leave design memos, boundary and script reminders, or map out level design notes. | Keeps level design ideas, collaboration notes, and scripting instructions attached directly to the map canvas, scaling perfectly during meetings and game development. |\n***\n\n***\n\n## 🎮 Game Engine Compatibility\n\nTileMaker DOT provides multiple export options to fit different professional and custom workflows.\n\n### 🛠️ Industry Standard (Godot, Unity, Tiled)\nThe **Export to Tiled (.tmx\u002F.tsx)** feature generates industry-standard files that allow you to move your level design into major game engines instantly.\n* **Tiled Map Editor:** Native support. Files can be opened, edited, and refined directly in Tiled.\n* **Godot Engine:** Fully compatible using the [**YATI**](https:\u002F\u002Fgithub.com\u002FKiamo2\u002FYATI) plugin from the Godot Asset Library.\n* **Unity:** Fully compatible using the [**SuperTiled2Unity**](https:\u002F\u002Fseanba.itch.io\u002Fsupertiled2unity) package.\n* **General Support:** Any framework or engine (like LibGDX) that supports the XML-based TMX format can read TileMaker DOT maps.\n\n### 🕹️ Custom Scripting & GameMaker\nThe **JSON Export** is optimized for developers who want total control over their loading logic:\n* **GameMaker (GMS2):** Clean JSON structure perfect for `json_parse()`. Map TileMaker IDs directly to GML sprites or objects using custom scripts.\n* **Web Engines:** Ideal for JavaScript\u002FPhaser frameworks due to the lightweight, native JSON format.\n* **Direct IDs:** Unlike TMX, the JSON export uses your **internal texture IDs** directly, making it easier to sync map data with your game code logic.\n\n### 📊 Performance & Retro Formats\n* **.CSV:** Universal plain-text grid of IDs. Perfect for spreadsheet analysis or retro-engine parsers.\n* **.LVL:** An ultra-lightweight, zero-bloat version of CSV designed for maximum loading speed in custom C++\u002FC# frameworks.\n\n> **Pro-Tip:** For the best experience in Unity and Godot, always use the **relative path (`assets`)** at startup. This ensures the game engine can find your textures even if you move the project folder.\n\n***\n\n## 🚀 Getting Started\n\n### Running the Application\n**TileMaker DOT** is portable and includes its own environment. Use the launcher specific to your operating system:\n\n`Windows`: Double-click TileMakerLauncher.exe\n\n`macOS`: Double-click TileMakerDOT_macOS_Launcher.command\n Note: If blocked by security, Right-click > Open, or allow in System Settings > Privacy & Security.\n\n`Linux \u002F Mint`: Run TileMakerDOT_Linux_Launcher.sh\n Note: Ensure the file has \"Allow executing as program\" enabled in file properties.\n\n> **⚠️ Important Path Note:** The path you enter or browse for in the **\"Asset Base Path\"** field at startup determines your export behavior:\n> * **Relative Path:** If you keep it as `assets` (or a relative subfolder), the exported `.tmx` and `.tsx` files will use relative paths. This is recommended for moving projects between different computers or sharing with a team.\n> * **Absolute Path:** If you use the \"Browse\" button to select a full path (e.g., `C:\\Users\\Name\\Desktop\\assets`), the exported files will hardcode that absolute path.\n\n### Core Asset Requirements\n\nAll custom assets must adhere to the following naming and structure rules:\n\n| Asset Type            | Requirement | Example |\n| ---                   | ---         | ---    |\n| **Image Format**      | Must be a **PNG** image. | `2_dark_grass_texture.png` |\n| **Content**           | Each PNG must contain only a single item (tile, object, or NPC). | Tip: Use the Spritesheet Importer to slice composite sheets into single files. |\n| **ID Requirement**    | Every asset name must start with its unique ID followed by an underscore (`ID_`). | `101_lightDirt.png`, `1044_villagerWithHighPants.png` |\n| **Animated Asset**    | Use the suffix **`_f`** followed by the frame number. | `10_water_f1.png`, `10_water_f2.png` |\n| **Unique IDs**        | All items within a map type (tiles, objects, or NPCs) must have a unique ID to avoid errors. |\n| **Folder Naming**     | Add **`#hidden`** to the end of any asset subfolder name (`tiles`, `objects`, or `npcs`). | `houses#hidden`, `unreleased_items#hidden` |\n| **Visibility Effect** | Assets in `#hidden` folders are **not shown** in the asset selection UI but **remain visible** in the application map view. |\n| **Rendering Layer**   | Add `#B` at the end or `#b#` anywhere in the asset name (both lowercase and uppercase work) to force the object to render under all others. Add `#A` at the end or `#a#` anywhere in the asset name to force the object to render above all others. | `121_rug_round#b.png`, `200_rug#A#round.png` |\n\n### Object and NPC Placement\n\nObjects and NPCs are placed based on the **top-left corner** of the image. When placing an item, the top-left pixel of that item will align with the cursor's location on the map grid.\n\nWhen hovering over any asset in the asset selection UI view, a concise tooltip provides immediate details, including the asset's name, unique ID, and its exact size in tiles (for Objects and NPCs).\n\n## 🛠️ Advanced Toolset\n\n### 🖌️ Random Scatter Brush\nSelect multiple items in the palette to activate **Brush Mode**. The editor will randomly cycle through your selection as you paint, creating natural, non-repetitive landscapes instantly.\n**Cleanup:** Use `Tools > Cleanup Brush Selection` to reset your selection.\n\n### 📦 Chunk Selection Tool\nEnable the **Chunk Tool** to click and drag a rectangle over the canvas. \n* **Export:** Save the selected area as a standalone `.tmdot` file.\n* **Import:** \"Stamp\" a saved chunk into any other map.\n\n### 🤖 Auto-ID Assistant\nPress **F4** to trigger the ID Assistant. It automatically scans your asset folders for files missing numeric prefixes and assigns them the next available unique ID based on your project structure.\n\n### 🖼️ Spritesheet Importer\nAccess via `File > Import Spritesheet`. This tool allows you to take a large composite image (like a 1024x1024 sheet) and slice it into individual PNGs directly into your project folders.\n* **Smart History:** Previously imported areas are highlighted in **Green**, so you never export the same sprite twice.\n* **Auto-ID:** The tool automatically suggests the next available ID for the chosen folder (Tiles, Objects, or NPCs).\n* **Navigation:**\n\t* `Right Click + Drag` to Pan.\n    * `Mouse Wheel` to Zoom.\n    * `Left Click + Drag` to select your crop area.\n\n### 🧩 Autotile Configuration\nTo enable autotiling for a set of textures, place the texture image in the `assets\u002Ftiles\u002Fautotiles\u002F` folder and name it according to this format:\n\n`IDtile1_IDtile2_IDautotile_textureName.png`\n\n* **IDtile1:** The ID of the primary tile.\n* **IDtile2:** The ID of the secondary tile.\n* **IDautotile:** The starting ID for all generated subtiles (range: `IDautotile` to `IDautotile + 15`).\n\n**Example:** `1_3_500_grassDark_with_grassNormal.png` means the primary tile is `1`, the secondary is `3`, and the generated subtile IDs will range from `500` to `515`.\n\n## 🎨 User Experience: Adaptive Dark Mode\nTileMaker DOT features a fully integrated **Light Mode** and **Dark Mode** implementation. \n**Dynamic Theming:** The interface, including the **Legend** and **About** tabs, automatically adapts its color palette to reduce eye strain.\n**Smart Persistence:** Your theme preference is saved locally. If you switch to Dark Mode, the app will remember your choice the next time you launch.\n\n## 📝 Annotated Notes Layer\nActivate the **Annotated Notes Tool** from the `Tools > Annotated Notes Tool` to place custom color-coded map markers with custom descriptions directly on the map grid.\n* **Persistent Reminders:** Perfect for flagging collision boundaries, writing scripting memos, or planning out area specific level design notes.\n* **Smart Zoom Scaling:** Notes calculate their position dynamically relative to your pan offsets and keep a consistent pixel size so they remain perfectly readable no matter how far you zoom in or out.\n* **Color Customization:** Use the pop-up configuration panel to select custom enum based label colors with automatic UI live previews.\n\n***\n\n## ⚙️ Configuration Files\n\nThe **`settings\u002F`** folder contains text files used to modify default application values:\n\n| File Name                       | Description | Example\u002FNotes |\n| ---                             | ---         | ---           |\n| `default_assets_path.txt`       | Defines the location of the assets folder. By default, it uses a relative path (`.\u002Fassets`). Can be changed to an **absolute path** for custom setups. | `C:\\Users\\User\\MyGame\\Assets` |\n| `default_dark_mode.txt`         | Sets the initial theme (0 for Light, 1 for Dark). | `1` (Dark Mode) |\n| `default_frame_ms_duration.txt` | Sets the global animation speed (in milliseconds). | `200` (Lower is faster) |\n| `default_grids.txt`             | Used to add quick-select buttons for common starting map sizes (in tiles). The first size listed is used as the default. | `50x50, 100x100` |\n| `default_tile_size.txt`         | Sets the pixel size of a single tile. Objects and NPCs will be scaled proportional to this size. | A 128x128px house on a 64px tile map will occupy 2x2 tiles. |\n| `default_used_ids_list.txt`     | Whitelist Filter: A list of specific IDs the application is allowed to load. Useful for large asset folders where you only need a subset of items for a specific map. | Use the **Export Used IDs List** option in the app to automatically generate this file based on your current map. |\n\n***\n\n## ⚙️ Smart Configuration & Persistence\n\nTileMaker DOT features a **Live-Sync Settings System**. While you can manually edit the files in the `settings\u002F` folder, the application automatically updates these files whenever you make changes through the **Startup UI** or **In-App Menus**. \n\n| Configuration File              | Controlled Via UI              | Auto-Saves? |\n| ---                             | ---                            | ---         |\n| `default_assets_path.txt`       | Startup \"Browse\" or Path Field | ✅ Yes      |\n| `default_dark_mode.txt`         | Menu Toggle                    | ✅ Yes      |\n| `default_frame_ms_duration.txt` | Startup Animation Field        | ✅ Yes      |\n| `default_grids.txt`             | Startup Grid Size Field        | ❌ No       |\n| `default_tile_size.txt`         | Startup Tile Size Field        | ✅ Yes      |\n| `default_used_ids_list.txt`     | Manual File Edit Only          | ❌ No       |\n\n### How it works:\n1. **Startup:** The app reads these files to configure your workspace.\n2. **Session:** You change a setting (like switching to Dark Mode or picking a new Assets folder).\n3. **Instant Save:** TileMaker DOT overwrites the corresponding `.txt` file immediately.\n4. **Persistence:** Next time you launch, your previous session's environment is perfectly restored.\n\n***\n\n✨ Tip: Instead of manually typing ID numbers into `default_used_ids_list.txt`, simply build your map first, then go to `File` > `Export Used IDs List...`. Move that exported file into the `settings\u002F` folder to ensure only those assets load next time.\n\n## 📂 Application Structure\n\nThe application requires a strict file structure to function correctly:\n\n```text\nTileMaker DOT\u002F\n├── assets\u002F\n│   ├── tiles\u002F\n│   │   ├── autotiles\u002F                   (Autotile textures go here)\n│   │   └── subfolders...                (Regular tile textures go here)\n│   │\n│   ├── objects\u002F\n│   │   └── subfolders...                (Object textures go here)\n│   │\n│   ├── npcs\u002F\n│   │   └── subfolders...                (NPC textures go here)\n│   │\n│   └── settings\u002F                        (Configuration files are located here)\n│       ├── default_assets_path.txt\n│       ├── default_dark_mode.txt\n│       ├── default_frame_ms_duration.txt\n│       ├── default_grids.txt\n│       ├── default_tile_size.txt\n│       └── default_used_ids_list.txt\n│\n├── jdk-16.0.2\u002F                          (Required for Windows)\n├── jdk-macOS\u002F                           (Required for macOS)\n├── jdk-Linux\u002F                           (Required for Linux\u002FMint)\n│\n├── TileMakerDOT.jar                     (The Universal Application Core)\n│\n├── TileMakerLauncher.exe                (Windows Launcher)\n├── TileMakerDOT_macOS_Launcher.command  (macOS Launcher)\n└── TileMakerDOT_Linux_Launcher.sh       (Linux Launcher)\n```\n\n***\n\n## 💻 Building from Source\n\nIf you want to modify the code or contribute to TileMaker DOT, follow these steps to set up the workspace.\n\n### Prerequisites\n* **Java Development Kit (JDK):** Version 16 or higher.\n* **IDE:** Eclipse (my personal choice), IntelliJ IDEA, or VS Code.\n\n### IDE Setup (Manual Dependency Management)\nThis project manages dependencies manually rather than using a build tool like Maven or Gradle. You must link the required UI library to your build path.\n\n**Eclipse Instructions:**\n1. Clone the repository to your local machine\n2. Open Eclipse and navigate to `File` > `Open Projects from File System` > `Directory`\n3. Select the cloned repository folder\n4. Add the FlatLaf UI library to your classpath:\n   * Right-click the project in the Package Explorer > `Build Path` > `Configure Build Path...`\n   * Go to the **Libraries** tab.\n   * Select **Classpath** > **Add JARs...** \n   * Navigate to the project's `lib\u002F` folder and select `flatlaf-3.5.4.jar`.\n5. Run the main class to launch the editor.\n\n***\n\n## 📺 Learning Resources\n\nIf you prefer visual learning, check out the official TileMaker DOT tutorial series on YouTube. These videos cover everything from basic placement to advanced autotiling and export workflows.\n\n* [**Part 1: Getting Started with TileMaker DOT**](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=Y0J-ezoVUCw&list=PLmIeW9QZsW_M4BuJoOmxTR5y6rK-N7W3D)\n* [**Part 2: World Building & Performance**](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=atrQ6VdNxC0&list=PLmIeW9QZsW_M4BuJoOmxTR5y6rK-N7W3D&index=2)\n* [**Part 3: DarkMode & Dynamic Brushes**](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=3fiajGU32Jg&list=PLmIeW9QZsW_M4BuJoOmxTR5y6rK-N7W3D&index=3)\n\n***\n\n## ❓ Support & Feedback\n\nFor detailed explanations of every button and shortcut, please refer to the **Help** tab located within the application's interface. If you encounter bugs or have feature requests, please reach out via the Itch.io community page or open an issue in this repository.\n","TileMaker DOT 是一款面向2D游戏开发的专用地图编辑工具，支持跨平台运行并内置Java运行时。其核心功能包括多格式导出（CSV、JSON、TMX等）、热重载纹理、帧同步动画系统、智能ID自动分配、随机画笔与区块拖拽操作，显著提升地图制作效率与资产迭代灵活性。适用于独立游戏开发者、像素艺术团队及需要快速构建模块化关卡的工作流场景。",2,"2026-07-10 02:30:27","CREATED_QUERY"]