Case study
Associate Technical Artist
Riot Games

Riot Games
Associate Technical Artist
March 2010 – February 2013
Summary
Over nearly three years, I contributed to League of Legends, supporting Artists, Engineers, and Designers as the game expanded from 1.4 million monthly players to over 67 million by 2013. I joined Riot Games directly after graduation and within 90 days transitioned roles from Associate Game Artist to Associate Technical Artist. As the first Technical Artist on the game team, I helped establish foundational Technical Art workflows, built tools to improved iteration speed for artists, contributed to shader and environment development across multiple maps, and preformed performance optimization for global releases. My work strengthened the production pipeline, supporting the internal team and shipped multiple maps played by tens of millions of players.



Establishing the Technical Art Foundation
As the first dedicated Technical Artist on the League of Legends team, I helped define workflows and expectations for the emerging Technical Art discipline.
Key contributions:
- Participated in selecting and interviewing additional artists, including candidates who would later mentor and grow the department.
- Supported early development of cross-disciplinary production practices between art, engineering, and design.
- Helped establish consistent processes as the scale and frequency of content updates increased.
Tools, Pipelines & Workflow Automation
I focused on improving content creation efficiency by streamlining repetitive tasks and reducing sources of error in daily production. One key project was the development of a Photoshop extension that streamlined the texture export for Environment Artists.
Photoshop -> Engine
Texture Exporter with Perforce integration
This project delivered a polished artist-facing Photoshop extension that reduced manual steps and accelerated iteration across our art pipeline. Implemented using Photoshop scripting for in-app UI and a small, robust external worker for source-control operations, the tool bundles export automation, manifest generation, and one-click check-ins so artists never need to leave Photoshop or wrestle with other tooling. The integration uses a deterministic JSON-based handshake to perform add/edit/submit operations safely and reliably, plus installer scripts and structured logging to make deployment and troubleshooting straightforward. The net impact was faster polish cycles, fewer publish errors, and a cleaner source-control history for measurable productivity gains for both artists and engineers.
Under the hood the system keeps Photoshop automation and UX in the scripting layer while delegating system-level Perforce work to a lightweight Python worker invoked via system calls; the two sides communicate through timestamped JSON request/response files to guarantee deterministic outcomes. The scripting side standardizes exports (configured variants for DDS/PNG/JPEG), normalizes asset paths and naming, and emits manifest entries in the exact format downstream tools expect; the worker performs robust add/edit/submit steps and returns structured status and messages that the UI surfaces to the user. The architecture is modular and debuggable: per-request logs and JSON handshakes make it trivial to trace failures, new export types follow a clear pattern to add, and atomic temp-file semantics prevent races. For a Technical Artist this means reproducible outputs, safe automated check-ins, and a low-friction way to iterate many visual variants quickly while keeping asset and manifest hygiene intact. For a Texture Artist this reduces the complexity of iterating on a texture from minutes, to a single click.
Examples include:
- Building Maya and Python utilities that standardized environment asset preparation and eliminated time-consuming manual steps.
- Developing a Photoshop-to-game texture export tool using JavaScript, reducing a multi-minute workflow to seconds and integrating cleanly with Perforce.
- Creating pipeline scripts that enforced naming, organization, and asset integration rules across the environment art team.

Shader Development & Visual Contributions
Working alongside engineers, I developed to several shaders as part of the “Project Shiny” graphics upgrade effort, including terrain shaders, river shaders, and specular shaders elements used in early League of Legends environments. The project was reworked internally after an announcement in PC Gamer. The map was reworked into a hand painted style
Highlights:
- Terrain shader updates that improved gameplay clarity and material blending.
- Creating a specular shaderthat enhanced lighting consistency and surface readability.

Performance Optimization
To support League of Legends launching in China and across the global markets which included a higher percentage of lower-end computers, such as those used in cafés (PC bangs) in Asia. I optimized the map content and tested it to ensure would run smoothly across a wide variety of hardware. Creating visual levels of detail (LoDs) which hid assets, and verifying with Design that the changes did not impact player experience or gameplay.
Focus areas:
- Reducing unnecessary texture complexity and memory usage.
- Streamlining shader instructions to improve stability across hardware tiers.
- Adjusting environment assets and map layout to achieve reliable framerate performance.

League of Legends running across a PC Cafe.
Map & Feature Development Support
I supported environment art workflows across several major map and mode initiatives:
- Twisted Treeline
- Crystal Scar (Dominion)
- Magma Chamber (internal development)
- Summoner’s Rift updates and rework
My involvement included shader adjustments, environment asset integration, performance passes, and daily debugging support during active production cycles.

Production Support, Mentorship & Collaboration
In addition to technical contributions, I became a consistent point of contact for:
- Perforce version control guidance
- Debugging environment-related issues and production blockers
- Collaborating across art, engineering, and design to maintain production stability
This support played an essential role during periods of rapid iteration and frequent content updates.
Summary
My time at Riot Games formed the foundation of my technical art career. Over nearly three years, I contributed to tools, shaders, optimization practices, and production workflows that supported millions of players and helped the art team build maps and features efficiently and sustainably. These early experiences shaped how I approach technical challenges, pipeline design, and cross-disciplinary collaboration today.
Example image insert (page bundle):
Example inline image (from static/):

Example gallery usage (list filenames in front-matter gallery:):
- gallery-01.jpg
- gallery-02.jpg