Skip to main content
The game assets feature provides a comprehensive catalog of League of Legends in-game collectibles including summoner icons and emotes.

Overview

Heimerdinger.lol’s asset browser allows users to:
  • Browse all summoner icons with high-quality images
  • Filter icons by esports teams, regions, and events
  • Explore summoner emotes
  • View detailed information about each asset
  • Search through thousands of icons and emotes

Routes

The asset features use multiple routes defined in routes/web.php:50-58:
// Icons
Route::get('icons', static fn () => (new SummonerIconController)->index())->name('assets.icons.index');
Route::get('icon/{summonerIcon}', static fn (SummonerIcon $summonerIcon) => (new SummonerIconController)->show($summonerIcon))->name('assets.icons.show');

// Emotes
Route::get('emotes', static fn () => (new SummonerEmoteController)->index())->name('assets.emotes.index');

// Assets hub
Route::get('assets', static fn () => (new AssetsController)->index())->name('assets.index');

Summoner Icons

Summoner icons are profile pictures that players can display in League of Legends.

Icon Model

Icons are represented by the SummonerIcon model located at source/app/Models/SummonerIcon.php. Key properties include:
id
integer
Primary key
summoner_icon_id
integer
Riot Games API icon ID
title
string
Icon display name
image_url
string
CDN URL for the icon image
year_released
integer
default:"null"
Year the icon was released
is_legacy
boolean
Whether the icon is legacy (limited availability)

Esports Icons

Many summoner icons are tied to esports events and teams:
esports_team
string
default:"null"
Team abbreviation (e.g., “T1”, “G2”, “FNC”)
esports_region
string
default:"null"
Region code (e.g., “LCK”, “LEC”, “LCS”)
esports_event
string
default:"null"
Event name (e.g., “Worlds 2023”, “MSI 2024”)

Unique Identifiers

The SummonerIcon model uses two types of identifiers:
URL-friendly slug generated from the title
public function sluggable(): array
{
    return [
        'slug' => [
            'source' => ['title', 'sqid']
        ]
    ];
}
Example: t1-worlds-2023-abc123
The slug combines both the title and sqid to ensure uniqueness even for icons with identical titles.

Summoner Emotes

Emotes are animated expressions players can use in-game to communicate.

Emote Model

Emotes are represented by the SummonerEmote model located at source/app/Models/SummonerEmote.php:
class SummonerEmote extends Model
{
    use HasFactory;

    protected $fillable = [
        'emote_id',
        'emote_name',
        'inventory_icon',
    ];
}
emote_id
integer
Riot Games API emote ID
emote_name
string
Emote display name
inventory_icon
string
CDN URL for the emote image
The SummonerEmote model is minimal with no relationships, traits, or custom methods beyond basic fillable attributes.

Assets Hub

The assets hub (/assets) provides a central landing page for browsing all asset types:
  • Summoner Icons
  • Summoner Emotes
  • Navigation to champion skins
  • Links to other collectible features
The assets hub uses the AssetsController to aggregate and display links to all asset categories.

Image Sources

All asset images are served from the Community Dragon CDN:

Summoner Icons

High-resolution PNG images (typically 256x256)

Emotes

Animated or static images from inventory icons

Database Schema

Summoner Icons Table

Created by migration source/database/migrations/2023_11_15_105425_create_summoner_icons_table.php:
CREATE TABLE summoner_icons (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    summoner_icon_id INT NOT NULL,
    title VARCHAR(255),
    slug VARCHAR(255),
    image_url TEXT,
    year_released INT,
    is_legacy BOOLEAN,
    esports_team VARCHAR(255),
    esports_region VARCHAR(255),
    esports_event VARCHAR(255),
    created_at TIMESTAMP,
    updated_at TIMESTAMP
);

Summoner Emotes Table

Created by migration source/database/migrations/2023_11_26_175055_create_summoner_emotes_table.php:
CREATE TABLE summoner_emotes (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    emote_id INT NOT NULL,
    emote_name VARCHAR(255),
    inventory_icon TEXT,
    created_at TIMESTAMP,
    updated_at TIMESTAMP
);

Champions

Browse champion database

Skins

View champion skins and chromas

Icon Model

View the SummonerIcon model API reference

Emote Model

View the SummonerEmote model API reference

Build docs developers (and LLMs) love