Example of custom tools developed for use in Unity Editor.

Work showcases custom editor window-based tools, but I have experience also developing custom editors scripts and other utilities.

Tool 1:

Level Asset Placement Tool

Purpose:

  • Place objects on Terrain without use of Terrain System’s Tree/Decorator systems

  • Organize prefabs into collections according to directory hierarchy

  • Support familiar workflow to Unity’s native workflow with features to further optimize workflow

  • Organize instances in scene according to level design systems’ conventions and requirements

Reasons:

  • Optimization - Unity’s Terrain component-based Tree-Decorator systems is very resource intensive

  • Custom Feature Support - Custom object placement tool allows for custom placement workflows (specifics below)

  • Bespoke Workflow - Support placement features that better aligns with specific game design’s level design needs

Features:

  • Simple backend workflow to support new collections categories

  • Automatic collection inventory and previews

  • Automatic (policy-based) instance markups (name, hierarchy, extra components, component configuration, tags, layers, etc.)

  • In-Scene placement preview

  • Fully supports default undo/redo hotkeys

  • Nuanced placement configuration

    • Randomize seed after each placement

    • Orientation Options: upright, normal to surface, and orientationless

    • Scaling Options: maintain proportions, independent axes scaling

    • Randomized scaling bracketing

    • Instances per placement

    • Radius

    • Roundness/Squareness

    • Placement Depth/Offset

  • Input overrides

    • Uses editor input events to allow for modifier + mouse wheel inputs to change most common parameters

    • Maintains expected zoom functionality by default

    • Right-click to exit “placement mode”

  • Automatically tracks previously used assets

Tool 2:

Scene Camera Controller

Purpose:

  • Place objects on Terrain without use of Terrain System’s Tree/Decorator systems

  • Organize prefabs into collections according to directory hierarchy

  • Support familiar workflow to Unity’s native workflow with features to further optimize workflow

  • Organize instances in scene according to level design systems’ conventions and requirements

Reasons:

  • Optimization - Unity’s Terrain component-based Tree-Decorator systems is very resource intensive

  • Custom Feature Support - Custom object placement tool allows for custom placement workflows (specifics below)

  • Bespoke Workflow - Support placement features that better aligns with specific game design’s level design needs

Tool 3:

Level Design Support Tools

Purpose:

  • Create a centralized palette of tools for level designers

  • Integrate QC / System requirement aids

Reason:

  • Designers unfamiliar with Unity’s new navigation tool set required support in configuring and baking nav meshes for testing

  • Based on level designer work, several excessive and repeated operations were identified that could be eliminated with editor instructions

  • Based on systems designer feedback, errors in object conventions were a consistent source of bugs

Features:

  • Quick lighting controls to aid level design decision making across different lighting conditions

    • Control main directional light (realtime GI source and lighting source)

    • Create/manage spotlight configured like character flashlights

  • Initialize and configure new level settings

    • Adjust GI, environmental lighting, and fog settings

    • Adjust camera settings including FOV, clear flags, and various markups

  • One-button Nav Mesh creation/configuration/baking

    • Tracks which operations are required so designers can just spam a single button

  • Advanced Navigation Component configuration (Unity’s Navigation Package component features)

  • QA button 

    • Checks scene to make sure that expected objects exist

    • Existing object follow markup conventions and have expected components and configurations

    • Identifies procedural objects that have yet to be baked

    • Validates minimum expected components are present for level to be playable (systems policies)