A cross-platform editor for Endless Online pub files (EIF, ENF, ESF, ECF) with integrated GFX preview and export capabilities. Built with Avalonia UI for .NET 9.
- Items (EIF) - Edit item properties including name, type, stats, requirements, and graphics
- NPCs (ENF) - Edit NPC properties including name, type, stats, drops, and graphics
- Spells (ESF) - Edit spell properties including name, type, damage, mana cost, and graphics
- Classes (ECF) - Edit class properties including name, base stats, and stat growth
- Visual Graphic Picker - Browse and select graphics from EGF files with live previews
- Equipment Graphics - Full support for armor, weapons, boots, hats, and shields
- NPC Animation Frames - View all 40 animation frames per NPC
- Spell Effects - View all 3 effect layers per spell
- Export to BMP - Export any graphic as a true 24-bit BMP file (all platforms)
- Import from BMP - Import custom BMP graphics into EGF files (Windows only)
- Batch Export - Export all frames for NPCs or all layers for spells at once
- Windows, macOS, or Linux (self-contained builds include .NET runtime)
- Endless Online GFX files (gfx001.egf - gfx025.egf)
- Pub files to edit (dat001.eif, dtn001.enf, dsl001.esf, dat001.ecf)
- .NET 9.0 SDK
- Any OS supported by .NET (Windows, macOS, Linux)
Note: GFX import (writing to EGF files) requires Windows PE API calls and is only available on Windows. All other features including pub editing, GFX preview, and GFX export work on all platforms.
- Download the latest release from the Releases page
- Extract to any folder
- Run
SOE_PubEditor.exe
- Download the latest release (arm64 for M1/M2/M3, x64 for Intel)
- Extract the
.appbundle from the zip - Important: macOS will block the unsigned app. To open it:
- Right-click the app → "Open" → click "Open" in the security dialog
- Or run in Terminal:
xattr -cr /path/to/EOPubGFX-arm64.app
- Drag the app to your Applications folder
- Download the latest release from the Releases page
- Extract to any folder
- Make executable:
chmod +x SOE_PubEditor - Run
./SOE_PubEditor
# Clone the repository
git clone https://github.com/Connor93/EOPubGFX.git
cd EOPubGFX
# Build for your current platform
dotnet build
# Run
dotnet run# Windows x64
dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o publish/win-x64
# macOS Apple Silicon (M1/M2/M3)
dotnet publish -c Release -r osx-arm64 --self-contained true -p:PublishSingleFile=true -o publish/osx-arm64
# macOS Intel
dotnet publish -c Release -r osx-x64 --self-contained true -p:PublishSingleFile=true -o publish/osx-x64
# Linux x64
dotnet publish -c Release -r linux-x64 --self-contained true -p:PublishSingleFile=true -o publish/linux-x64On first launch, you'll be prompted to configure your directories:
- Pub Directory - Folder containing your pub files (
.eif,.enf,.esf,.ecf) - GFX Directory - Folder containing your EGF graphics files (
.egf)
These settings are saved and can be changed later via File → Settings.
- Select a tab (Items, NPCs, Spells, or Classes)
- Click on a record in the list to view/edit its properties
- Modify values in the property panel on the right
- Use File → Save (or Ctrl+S) to save changes
- Select an item/NPC/spell record
- Click the graphic preview button (shows current graphic)
- Browse available graphics in the picker dialog
- Click a graphic to select it
- Select the record whose graphics you want to export
- Right-click the graphic preview or use the menu
- Select Export All Graphics...
- Choose an output folder
- Graphics are saved as BMP files
Note: GFX import requires Windows PE API calls and is not available on macOS or Linux.
- Prepare your BMP file (24-bit, any size)
- Right-click the graphic preview
- Select Import Graphic...
- Select your BMP file
- The graphic is embedded into the EGF file
| File | Contents |
|---|---|
| gfx001.egf | Map tiles |
| gfx002.egf | Map objects |
| gfx003.egf | Map walls |
| gfx004.egf | Map shadows/overlays |
| gfx005.egf | Map animations |
| gfx006.egf | Male hats |
| gfx007.egf | Female hats |
| gfx008.egf | Male armor |
| gfx009.egf | Female armor |
| gfx010.egf | Male boots |
| gfx011.egf | Female boots |
| gfx012.egf | Male weapons |
| gfx013.egf | Shields/back items |
| gfx014.egf | Shields/back items (female) |
| gfx015.egf | Item icons (inventory/ground) |
| gfx021.egf | NPC sprites |
| gfx022.egf | Character shadows |
| gfx023.egf | Spell icons |
| gfx024.egf | Spell effects |
| gfx025.egf | UI elements |
- Avalonia UI - Cross-platform UI framework
- CommunityToolkit.Mvvm - MVVM toolkit
- Moffat.EndlessOnline.SDK - EO data format library
- SkiaSharp - 2D graphics library
This project is provided as-is for the Endless Online community.
- The Endless Online community for documentation on file formats
- EOLib for reference implementations
- eolib-dotnet for the pub file SDK