Skip to main content

Project Structure Overview

A Pokémon Essentials BES project has a well-organized folder structure. Understanding this organization is essential for effective game development.
Complete Project Structure
YourGame/
├── Audio/           # Sound effects and music
├── Data/            # Compiled game data and scripts
├── Fonts/           # Game fonts
├── Graphics/        # Sprites, tilesets, and UI graphics
├── PBS/             # Plain text database files
├── Tools/           # Development utilities
├── Temporal/        # Temporary files
├── Editor.exe       # RPG Maker XP Editor
├── Editor.ini       # Editor configuration
├── Game.exe         # Main game executable
├── Game.ini         # Game configuration
├── Game.rxproj      # RPG Maker project file
└── mkxp.json        # MKXP configuration (Linux/Mac)

Core Directories

Audio/

Contains all sound effects and music:
Audio Structure
Audio/
├── BGM/     # Background Music
│   ├── Battle.mid
│   ├── Route1.ogg
│   └── Title.mp3
├── BGS/     # Background Sounds (ambient)
│   ├── Rain.ogg
│   └── Cave.ogg
├── ME/      # Music Effects (jingles)
│   ├── Victory.mid
│   └── ItemGet.ogg
└── SE/      # Sound Effects
    ├── Choose.wav
    ├── Jump.wav
    └── BattleStart.ogg
Supported audio formats: MP3, OGG, WAV, MID (MIDI)

Data/

Stores compiled game data and scripts:
Data Structure
Data/
├── Scripts.rxdata           # Compiled Ruby scripts
├── EditorScripts/          # Source Ruby files
│   ├── 001_Debug_Settings.rb
│   ├── 016_PBMove.rb
│   ├── 031_PokeBattle_Pokemon.rb
│   └── ...
├── *.rxdata                # RPG Maker data files
│   ├── Actors.rxdata
│   ├── MapXXX.rxdata
│   └── System.rxdata
└── *.dat                   # Compiled PBS data
    ├── dexdata.dat
    ├── moves.dat
    ├── items.dat
    └── ...
Don’t edit .rxdata or .dat files directly. Use PBS files and RPG Maker XP instead.

Graphics/

All visual assets organized by category:
Graphics Structure
Graphics/
├── Animations/      # Battle animations
├── Autotiles/       # Animated map tiles
├── Battlebacks/     # Battle backgrounds
├── Battlers/        # Pokémon battle sprites
│   ├── 001.png      # Bulbasaur front
│   ├── 001b.png     # Bulbasaur back
│   └── 001s.png     # Bulbasaur shiny
├── Characters/      # Overworld sprites
├── Fogs/           # Weather effects
├── Icons/          # UI icons
├── Panoramas/      # Background images
├── Pictures/       # Event pictures
├── Tilesets/       # Map tilesets
├── Titles/         # Title screen images
├── Transitions/    # Scene transitions
└── Windowskins/    # UI window styles
All graphics should be in PNG format for best quality.

PBS/

Plain text database files:
PBS Structure
PBS/
├── pokemon.txt        # Pokémon species data
├── moves.txt          # Move definitions
├── abilities.txt      # Ability definitions
├── items.txt          # Item definitions
├── trainers.txt       # Trainer battles
├── trainertypes.txt   # Trainer classes
├── encounters.txt     # Wild encounters
├── metadata.txt       # Map metadata
├── tm.txt            # TM/HM compatibility
├── types.txt         # Type effectiveness
├── phone.txt         # Pokégear contacts
├── shadowmoves.txt   # Shadow Pokémon moves
└── ...

Tools/

Development utilities:
Tools Structure
Tools/
├── animmaker.exe         # Animation creator
├── animmaker.txt         # Animation docs
├── extendtext.exe        # Text extension tool
├── optipng.exe          # PNG optimizer
└── Extraer Importar Scripts/  # Script extraction tools
Keep the Tools/ folder during development but remove it before distribution.

Key Files

Game.exe / Game_Vanilla.exe

The main executable files:
  • Game.exe: BES-specific executable with enhancements
  • Game_Vanilla.exe: Standard RPG Maker XP runtime

Game.ini

Game configuration file:
Game.ini
[Game]
RTP1=RPGVXAce
RTP2=
RTP3=
Library=RGSS104E.dll
Scripts=Data\Scripts.rxdata
Title=Pokemon Essentials BES

Game.rxproj

RPG Maker project identifier:
Game.rxproj
RPGXP 1.05

mkxp.json

Configuration for MKXP (cross-platform RPG Maker runtime):
mkxp.json
{
  "rgssVersion": 1,
  "enableReset": false,
  "midiSoundFont": "soundfont.sf2"
}

Compiled Data Files

When PBS files are compiled, they create .dat files:
PBS FileOutput DAT FileContents
pokemon.txtdexdata.datPokémon species data
moves.txtmoves.datMove definitions
abilities.txt(in messages.dat)Ability data
items.txtitems.datItem definitions
trainers.txttrainerlists.datTrainer battles
trainertypes.txttrainertypes.datTrainer classes
tm.txttm.datTM compatibility
types.txttypes.datType chart

Save Files

Player progress is stored in save files:
Save File Locations
Game_*.rxdata        # Main save files (slot 1-4)
Game_*.bak          # Backup save files
Never distribute your personal save files with your game!

Temporary Files

The game creates temporary files during gameplay:
Temporal Structure
Temporal/
└── (screenshot files for save game display)

Best Practices

Organization

Group Related Assets

Keep sprites, sounds, and data for features together

Use Descriptive Names

Name files clearly: trainer_blue.png not img001.png

Document Changes

Keep notes on modifications and custom additions

Version Control

Use Git to track changes to PBS and script files

File Management

1

Backup Regularly

Create backups before making major changes
2

Clean Unused Files

Remove unused graphics and audio to reduce size
3

Optimize Graphics

Use optipng.exe to compress PNG files
4

Test After Changes

Always test the game after modifying structure

Custom Content Locations

Where to put your custom content:

Custom Pokémon Sprites

Graphics/Battlers/
├── 9001.png        # Custom Pokémon #9001 front
├── 9001b.png       # Back sprite
├── 9001s.png       # Shiny front
└── 9001sb.png      # Shiny back

Custom Items

Graphics/Icons/
└── item999.png     # Custom item icon

PBS/
└── items.txt       # Define item data

Custom Music

Audio/BGM/
└── CustomRoute.ogg  # Your custom music file

Custom Scripts

Data/EditorScripts/
└── 999_YourCustomScript.rb
Use high numbers (900+) for custom content to avoid conflicts with base game.

Distribution Structure

When distributing your game, include:

Required Files

  • ✅ Game.exe
  • ✅ Game.ini
  • ✅ Audio/
  • ✅ Graphics/
  • ✅ Data/ (compiled .dat and .rxdata files)
  • ✅ Fonts/
  • ✅ RGSS DLL files

Optional for Distribution

  • ⚠️ PBS/ (not needed for players)
  • ⚠️ Tools/ (not needed for players)
  • ⚠️ Editor.exe (not needed for players)
  • ⚠️ Data/EditorScripts/ (scripts are in Scripts.rxdata)

Never Include

  • ❌ Your save files (Game_*.rxdata)
  • ❌ Personal notes
  • ❌ Backup files (.bak)

Checking Your Structure

Verify your project structure:
Script Check
# Check if essential directories exist
required_dirs = [
  "Audio/BGM",
  "Audio/SE",
  "Graphics/Battlers",
  "PBS",
  "Data"
]

required_dirs.each do |dir|
  if !FileTest.directory?(dir)
    puts "Missing directory: #{dir}"
  end
end

Next Steps

PBS System

Learn about editing PBS data files

Creating Pokémon

Start adding custom Pokémon

RPG Maker Integration

Using the map editor and events

Scripting

Understanding the script system

Build docs developers (and LLMs) love