Files
experiment-adventure-ai/plans/cutscene_generator_changes.md
2025-07-31 12:25:46 -07:00

3.5 KiB

CutsceneGenerator Changes for Resource Management Focus

Overview

This document describes the changes needed in CutsceneGenerator.gd to focus on resource management instead of code generation.

Current Issues

The current CutsceneGenerator.gd has several issues:

  1. Focuses on generating GDScript code rather than working with resources
  2. Has methods for generating code that are not needed
  3. Should focus on converting graph data to runtime actions
  4. Has some useful functionality for building action sequences that should be retained

Required Changes

1. Remove Code Generation Methods

Methods to remove:

  • generate_gdscript_code()
  • _generate_action_sequence_code()
  • _generate_action_code()
  • export_to_format() (or modify to only support resource formats)

2. Retain and Improve Resource-to-Action Conversion

Methods to keep and improve:

  • generate_cutscene() - This is the core method we want
  • _build_action_sequence() - Core logic for creating action sequences
  • _create_action_from_node() - Core logic for creating individual actions
  • _handle_parallel_group() - Logic for handling parallel actions

3. Update Data Access Methods

Current issues:

  • Uses old data structure access patterns
  • May need to access data differently with new structure

Changes needed:

  • Update to use new node structure with "id" instead of "name"
  • Update to use new connection structure
  • Remove any references to parallel_connections

4. Improve Action Creation

Current issues:

  • Action creation has placeholder values for character nodes
  • Needs better parameter handling

Changes needed:

  • Improve parameter mapping from node to action
  • Maintain flexibility for runtime character resolution

New Focus

The CutsceneGenerator should:

  1. Take a CutsceneResource and convert it to a CutsceneManager with properly configured actions
  2. Not generate any code
  3. Focus purely on the data transformation from editor format to runtime format
  4. Handle all node types and connection logic correctly

Implementation Plan

1. Remove Unnecessary Methods

  • Delete all code generation methods
  • Remove export functionality that generates code
  • Keep only the core resource-to-action conversion logic

2. Update Core Methods

  • generate_cutscene(): Ensure it works with new resource structure
  • _build_action_sequence(): Update to use new connection structure
  • _create_action_from_node(): Ensure parameter mapping is correct
  • _handle_parallel_group(): Update to work with new structure

3. Add Utility Methods

  • Add methods for validating resource data
  • Add methods for resolving character/action references
  • Add error handling for malformed resources

4. Improve Documentation

  • Update comments to reflect new purpose
  • Document the resource-to-action conversion process
  • Provide clear examples of usage

Specific Code Changes

In generate_cutscene:

# OLD - May have issues with new structure
for node_data in cutscene_resource.nodes:
    graph_nodes[node_data["name"]] = node_data

# NEW - Update to use new structure
for node_data in cutscene_resource.nodes:
    graph_nodes[node_data["id"]] = node_data

In _get_outgoing_connections:

# Should work the same but with new structure
# Just ensure it's using the right fields

In _create_action_from_node:

# This method is mostly correct but may need parameter updates
# Ensure all parameter access matches the new structure

New Method Structure

The refactored CutsceneGenerator should have:

  1. `generate_cutscene(cutscene