Bark is a relational JSON editor geared towards game dialogue editing, built using Haxe and HaxeUI.
I've used a handful of dialogue editors in the past and found that they tend to be either too rigid in their structured output or they are flexible but lack a great UI/UX experience. I wanted to create a tool independent of any specific game engine where I could quickly define and save my own nodes to suit whatever project I'm working on.
This project uses Lime as its backend but can be very easily adapted to others.
This project is built and verified using the following version matrix. Ensure your environment matches or exceeds these requirements:
| Dependency | Version | Description |
|---|---|---|
| Haxe | 4.3.6 |
Language runtime |
| HaxeUI Core | 1.7.0 |
UI Framework Core |
| HaxeUI OpenFL | 1.7.0 |
OpenFL Backend Component |
| OpenFL | 9.5.0 |
Rendering framework |
| Lime | 8.3.0 |
Native backend layer |
| HashLink | git |
Target VM for Desktop builds |
⚠️ Note on Web (HTML5) Scaling: > Due to the way browsers handle high-DPI viewport scaling on hybrid touch devices (such as the Microsoft Surface Pro), the web version may appear artificially zoomed in. For the best, most pixel-accurate experience on these devices, we highly recommend running the native HashLink Desktop Build (lime test hl).
Ensure you have your Haxe libraries properly installed and set up via haxelib:
haxelib install openfl
haxelib install actuate
haxelib install haxeui-core
haxelib install haxeui-openflTo run the application locally using the HashLink VM for development:
lime test hlTo compile a release build without launching it immediately (outputs to build/openfl/hl):
lime build hl -dce fullTo spin up a local development server and test the application inside your browser:
lime test html5To compile a release build without launching it immediately (outputs to build/openfl/hl):
lime build html5 -dce full
.
├── assets
│ ├── components
│ ├── icons
│ ├── images
│ ├── main-view.xml
│ ├── nodes
│ │ └── builtin.json
│ ├── styles
│ │ └── style.css
│ └── views
├── templates
├── build
│ └── openfl
│ ├── hl
│ ├── html5
├── module.xml
├── Project.xml
├── README.md
├── src
│ ├── core
│ │ ├── commands
│ │ ├── EditorSession.hx
│ │ ├── Graph.hx
│ │ ├── GraphSerializer.hx
│ │ ├── History.hx
│ │ └── Workspace.hx
│ ├── data
│ │ ├── ConnectionData.hx
│ │ ├── GraphData.hx
│ │ ├── NodeData.hx
│ │ ├── PortData.hx
│ │ ├── SceneData.hx
│ │ └── WorkspaceData.hx
│ ├── Main.hx
│ ├── MainView.hx
│ ├── ui
│ │ ├── canvas
│ │ ├── components
│ │ ├── connectionEditor
│ │ ├── connections
│ │ ├── dialogs
│ │ ├── EditorBinder.hx
│ │ ├── menus
│ │ ├── nodeeditor
│ │ ├── nodes
│ │ ├── notifications
│ │ ├── palette
│ │ │ ├── NodePalette.hx
│ │ │ ├── Palette.hx
│ │ │ ├── ScenePalette.hx
│ │ │ └── schema
│ │ │ ├── menus
│ │ │ ├── SchemaEditor.hx
│ │ │ ├── SchemaEditorBinder.hx
│ │ │ └── SchemaEditorPalette.hx
│ │ └── toolbar
│ │ ├── SceneMenu.hx
│ │ ├── Toolbar.hx
│ │ └── WorkspaceMenu.hx
│ └── util
│ ├── ArrayUtils.hx
│ ├── ConnectionHelpers.hx
│ ├── DragUtil.hx
│ ├── KeyCodes.hx
│ ├── StressTest.hx
│ └── WorkspaceUtils.hx
