Ned HellerandClaude Opus 4.5 83d3123a22 Implement 15-mission progression with weapon upgrades
Weapon Progression:
- Start with basic lightsaber (tile #18)
- After 5 missions: Yoda gives upgraded lightsaber (tile #510)
- After 10 missions: Yoda gives The Force (tile #511)
- After 15 missions: Victory screen, cycle complete

The Force:
- Added as ranged weapon (can attack from a distance)
- Uses same lightsaber animation for melee appearance
- Projectile spawns when attacking with The Force

Mission Flow:
- Each mission completion returns to Dagobah
- Yoda gives weapon upgrades at milestones (5, 10)
- Progress tracked as X/15 missions
- Press R to start next mission or new cycle

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 01:05:42 -08:00
2026-01-31 01:05:42 -08:00

Yoda Stories NG

A modern reimplementation of Star Wars: Yoda Stories (1997) built with C# and SDL2.

.NET 8 Platform License

About

Yoda Stories NG is a fan-made recreation of the classic LucasArts desktop adventure game. It parses the original game data files and reimplements the game engine from scratch.

Title Screen

Key Features

  • Complete data file parsing - Reads original .dta game assets
  • Procedural world generation - Each playthrough generates a unique 10x10 or 15x15 world map
  • 15 mission cycle - Full mission progression with item chains and NPC puzzles
  • Combat system - Melee and ranged weapons with NPC AI
  • Save/Load system - JSON-based save files with full game state
  • Widescreen UI - Modern layout with sidebar HUD
  • Xbox controller support - Full gamepad controls
  • Configurable graphics - 1x, 2x, and 4x scaling options
  • Automated Mission Bot - AI-powered gameplay with A* pathfinding

Screenshots

Gameplay

Gameplay

World Map Viewer

World Map

Script Editor

Script Editor

Asset Viewer

Asset Viewer

Requirements

  • .NET 8.0 SDK
  • Original Yoda Stories game files (yodesk.dta)
  • Windows, Linux, or macOS

Building

# Clone the repository
git clone https://github.com/yourusername/YodaStoriesNG.git
cd YodaStoriesNG

# Build the project
dotnet build src/YodaStoriesNG.Engine

# Run (make sure yodesk.dta is in the data folder)
dotnet run --project src/YodaStoriesNG.Engine

Controls

Keyboard

Key Action
WASD / Arrow Keys Move
Shift + Direction Pull blocks
Space Action / Talk / Attack
1-8 Select inventory slot
Tab Toggle weapon
O Show mission objective
X Travel (X-Wing)
R Restart game
M Toggle sound mute
Escape Quit

Debug Controls

Key Action
F1 Toggle Debug Overlay
F2 Toggle Map Viewer
F3 Toggle Script Editor
F4 Toggle Asset Viewer
B Toggle Mission Bot
I Inspect (console dump)
N/P Next/Previous zone
F Find zone with content

Xbox Controller

Button Action
Left Stick / D-Pad Move
A Action / Talk / Attack
B Cancel / Dismiss dialogue
X Travel (X-Wing)
Y Show mission objective
LB / RB Toggle weapon
Start Restart game
Back Quit

Menu System

File Menu

  • New Game: Small/Medium/Large/X-tra Large - Start new game with different world sizes
  • Save Game - Save current progress
  • Load Game - Load saved game
  • Exit - Quit the game

Debug Menu

  • Asset Viewer (F2) - Browse game tiles and characters
  • Script Editor (F3) - View and analyze IACT action scripts
  • Map Viewer (F4) - See the full world map with zone types
  • Enable/Disable Bot - Toggle automated gameplay

Config Menu

  • Graphics: 2x/4x Scale - Change window size and rendering scale
  • Keyboard Controls - View keyboard control mappings
  • Controller Controls - View Xbox controller mappings
  • Select Data File - Choose which .dta file to load

World Generation

The game generates procedural worlds using the original algorithm:

Size Grid Puzzles Description
Small 10x10 4-8 Quick adventure
Medium 10x10 6-12 Standard game
Large 10x10 8-16 Extended quest
X-tra Large 15x15 12-24 Epic journey

Each world includes:

  • Spaceport - Landing zone with X-Wing
  • Puzzle zones - Contain items and NPCs for trading
  • Blockades - Require specific items to pass
  • Travel zones - Vehicle connections to islands
  • Islands - Remote areas with special puzzles
  • The Force - Guaranteed weapon at distance 2 from start

Debug Tools

Map Viewer (F2/F4)

Shows the complete world grid with color-coded zones:

  • Player position highlighted with pulsing border
  • Zone types: Puzzle, Spaceport, Blockade, Travel, Island
  • Mission progress and current objective

Script Editor (F3)

Browse and analyze zone action scripts:

  • View IACT conditions and instructions
  • Click on referenced positions to highlight in-game
  • Teleport to zones for testing

Asset Viewer

Browse the complete tile atlas:

  • All 2000+ game tiles
  • Character frames and animations
  • Filter by tile type

Console Inspector (I)

Dumps detailed game state to console:

  • Current zone objects and NPCs
  • Tile data at player position
  • Full IACT script dump
  • Inventory and weapon status

Save System

Games are saved to %APPDATA%/YodaStoriesNG/saves/ in JSON format.

Save files include:

  • Player position, health, inventory
  • World map and zone connections
  • Mission progress and puzzle state
  • All game variables and flags

Mission Bot

The automated Mission Bot (press B) plays the game automatically:

  • A pathfinding* for optimal movement
  • Auto-combat with melee and ranged weapons
  • Item collection from crates and NPCs
  • Puzzle solving through item trading
  • Zone exploration to find objectives

The bot displays its current task in the HUD when active.

Project Structure

YodaStoriesNG/
├── src/
│   └── YodaStoriesNG.Engine/
│       ├── Audio/           # Sound playback
│       ├── Bot/             # Automated mission bot
│       │   ├── MissionBot.cs
│       │   ├── BotActions.cs
│       │   ├── MissionSolver.cs
│       │   └── Pathfinder.cs
│       ├── Data/            # Game data structures
│       ├── Debug/           # Debug tools
│       ├── Game/            # Core game logic
│       │   ├── GameEngine.cs
│       │   ├── GameState.cs
│       │   ├── WorldGenerator.cs
│       │   ├── MapGenerator.cs
│       │   ├── ActionExecutor.cs
│       │   ├── SaveGameManager.cs
│       │   └── NPC.cs
│       ├── Parsing/         # DTA file parser
│       ├── Rendering/       # SDL2 renderer
│       │   ├── GameRenderer.cs
│       │   ├── TileRenderer.cs
│       │   └── BitmapFont.cs
│       └── UI/              # UI components
│           ├── MenuBar.cs
│           ├── TitleScreen.cs
│           ├── ControlsWindow.cs
│           ├── DebugMapWindow.cs
│           ├── ScriptEditorWindow.cs
│           └── AssetViewerWindow.cs
└── README.md

Technical Details

Data Format

The game parses the proprietary .dta format:

Section Description
TILE 32x32 pixel tiles with palette indices
ZONE Map data with 3 tile layers (18x18 or 9x9)
CHAR Character definitions and walk frames
PUZ2 Puzzle definitions for quest chains
IACT Action scripts (conditions + instructions)
IZAX Zone auxiliary data (NPC spawns with items)
STUP Title screen image (288x288)

Action Scripts (IACT)

Zone behavior is driven by IACT scripts:

Conditions:

  • ZoneEnter - Triggered on zone entry
  • HasItem - Check if player has an item
  • NpcIs - Check NPC at position
  • TileAtIs - Check tile at layer/position
  • Counter - Check game counters

Instructions:

  • PlaceTile - Set tile at layer/position
  • AddItem - Give item to player
  • RemoveItem - Take item from player
  • SpeakNpc - Display dialogue
  • ChangeZone - Zone transition

Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.

This is a fan project and is not affiliated with or endorsed by LucasArts, Disney, or any related entities. Star Wars and Yoda Stories are trademarks of Lucasfilm Ltd.

You must own a legal copy of Star Wars: Yoda Stories to use this software.

Acknowledgments

  • WebFun.io - Yoda Stories file format documentation and reference implementation
  • The SDL2 team for the cross-platform multimedia library
  • LucasArts for creating the original game

May the Force be with you!

S
Description
No description provided
Readme
935 KiB
Languages
C# 100%