How do I work with Sequences?

Can I work with Sequences just like I do with Shots? Launch maya, publish, that sort of thing?

1 comment

  • 0
    Manne Öhrström

    It is actually possible to publish to Sequences or any entity in Shotgun, but the default configuration doesn't include a Sequence configuration, just Shots and Assets. This has started to come up through Support with some clients who publish to custom entities (ex. CustomEntyt01 = TV Episode, say).

    1: Make sure that your new entity (Sequence in this case) has the "Enable Pipeline Toolkit/File Publishes on this entity" checkbox checked in the Shotgun Site Preferences. I am pretty sure Sequence has this on by default, but you should double check this on your site.

    2: Create a folder schema for the new entity in your configuration. For Sequence, this probably amounts to adding the work/publish directories, at least compared with the folder structure in our default configuration.

    3: Create templates for your new entity in your configuration in templates.yml.

    4: Create a shotgun_sequence.yml environment configuration in the 'env' folder of your pipeline configuration. You can probably start by just copying one of the other entities' yml files if you are using the default configuration because that will basically just include the launchers. This should give you menu options in Shotgun. The 'shotgun_*' prefix is a convention we use to denote the context menu options that should appear in the Shotgun browser view, documented here:


    5: Create a full environment configuration for the new entity in your configuration (i.e. something along the lines of sequence.yml and sequence_step.yml that matches up to, say shot.yml and shot_step.yml in the default configuration). You can probably start by copying one of the existing environment configurations and changing all of the templates to the ones you created for the new entity, along with some of the display names where relevant.

    6: Update the pick_environment.py core hook so that it recognizes your new entity and routes the user to the new environment configuration for it. This is a pretty simple script, but you'll end up doing something like this starting at line 35 (of the default hook):

    if context.entity and context.step is None:
        # we have an entity but no step!
        if context.entity["type"] == "Shot":
            return "shot"
        if context.entity["type"] == "Asset":
            return "asset"            
        if context.entity["type"] == "Sequence":
            return "sequence"
    if context.entity and context.step:
        # we have a step and an entity
        if context.entity["type"] == "Shot":
            return "shot_step"
        if context.entity["type"] == "Asset":
            return "asset_step"
        if context.entity["type"] == "Sequence":
            return "sequence_step"

    Then follow the instructions here on overriding a core hook:


Please sign in to leave a comment.