โ† Back to ObjectStore

๐ŸŽจ Sprite Database

Visual browser for all Grudge Warlords game objects

Weapons: -
Armor: -
Skills: -
RPG Icons: -
Total Sprites: -

Loading weapons...

Loading materials...

Loading armor...

Loading consumables...

Loading enemies...

Loading bosses...

Loading skills...

Loading RPG icons...

Loading all sprites...

๐Ÿ”ง Developer Reference

Slugs, API endpoints, UUID system, and integration best practices for all Grudge Studio projects.

๐Ÿท๏ธ Slug Convention

Every game object has a URL-safe slug derived from its ID. Slugs are lowercase, hyphenated, and unique per category.

// Weapon slug pattern
{category}/{item-id} โ†’ swords/bloodfeud-blade
{category}/{item-id}/t{tier} โ†’ swords/bloodfeud-blade/t5

// Material slug pattern
materials/{category}/{item-id} โ†’ materials/ore/iron-ore

// Armor slug pattern
armor/{material}/{item-id} โ†’ armor/metal/helm-iron-sentinel

// Consumable slug pattern
consumables/{category}/{item-id} โ†’ consumables/redFoods/grilled-steak

// Enemy / Boss slug pattern
enemies/{category}/{item-id} โ†’ enemies/beasts/dire-wolf
bosses/{boss-id} โ†’ bosses/malachar-the-undying

Helper: Generate a slug from any name with toSlug(name) โ€” lowercases, replaces spaces/specials with hyphens.

๐Ÿ”— API Endpoints

All data is served as static JSON from GitHub Pages. No auth required. Base URL:

https://molochdagod.github.io/ObjectStore/api/v1/

๐Ÿ†” GRUDGE UUID System

Every game entity gets a deterministic GRUDGE UUID. This is the canonical identifier used across all Grudge Studio services.

// UUID Format
{PREFIX}-{TIMESTAMP}-{SEQUENCE}-{HASH}

// Prefixes by entity type
ITEM-20260225120000-000001-A1B2C3D4  โ† weapon / armor / consumable
MAT -20260225120000-000002-E5F6G7H8  โ† crafting material
HERO-20260225120000-000003-I9J0K1L2  โ† player hero
MOB -20260225120000-000004-M3N4O5P6  โ† enemy / boss
SKIL-20260225120000-000005-Q7R8S9T0  โ† ability / skill
SPRT-20260225120000-000006-U1V2W3X4  โ† sprite / icon asset
MISS-20260225120000-000007-Y5Z6A7B8  โ† mission / quest
// Generate UUID in code
import { generateGrudgeUUID } from '@grudgstudio/core';

const uuid = generateGrudgeUUID('ITEM');
// โ†’ ITEM-20260306080000-000001-F3A9C2E7

โšก Quick Integration

Browser / Vanilla JS

const BASE = 'https://molochdagod.github.io/ObjectStore';

// Fetch all swords
const weapons = await fetch(`${BASE}/api/v1/weapons.json`).then(r => r.json());
const swords = weapons.categories.swords.items;

// Get icon URL by slug
const iconUrl = `${BASE}/icons/weapons_full/Sword_01.png`;

// Resolve sprite from sprites.json
const sprites = await fetch(`${BASE}/api/v1/sprites.json`).then(r => r.json());
const armorIcons = sprites.categories.armor_full.sprites;

NPM / Node.js

import { initGrudgeStudio } from '@grudgstudio/core';

const api = await initGrudgeStudio({
  objectStoreUrl: 'https://molochdagod.github.io/ObjectStore'
});

// Search by name or slug
const results = await api.search('bloodfeud');

// Create tracked item with UUID
const item = api.createItem({
  type: 'weapon', name: 'Bloodfeud Blade', tier: 5
});
console.log(item.uuid); // ITEM-2026...-...-...
console.log(item.slug); // swords/bloodfeud-blade/t5

Unity C#

using GrudgeStudio;

var api = new GrudgeStudioAPI(
  "https://molochdagod.github.io/ObjectStore"
);

// Load weapon by slug
var sword = await api.GetWeapon("swords/bloodfeud-blade");
Debug.Log(sword.name); // Bloodfeud Blade

// Load sprite texture
var tex = await api.LoadIcon("weapons_full/Sword_01.png");
renderer.sprite = Sprite.Create(tex, ...);

GDevelop / HTML5 Game

// In GDevelop JavaScript event
const BASE = 'https://molochdagod.github.io/ObjectStore';

// Load enemy data for spawning
const enemies = await fetch(`${BASE}/api/v1/enemies.json`)
  .then(r => r.json());

// Get boss by slug
const boss = enemies.categories.dragons
  .items.find(e => e.id === 'fire-dragon');

// Use sprite path directly in Sprite object
const spriteSrc = `${BASE}/icons/weapons_full/Axe_03.png`;

๐Ÿ“‹ Best Practices for Grudge Studio Projects

โœ… Always use slugs as keys

Reference items by category/item-id slug, never by display name. Slugs are stable across data updates; names may change.

โœ… Cache API responses

JSON files are static and change only on repo pushes. Cache with localStorage or IndexedDB. Use If-None-Match headers to avoid re-downloading.

โœ… Use GRUDGE UUIDs for persistent entities

Player inventory, crafted items, and hero instances must use UUIDs. Slugs identify definitions; UUIDs identify instances.

โœ… Tier-aware icon loading

Weapon icons cycle through weapons_full/{Type}_{NN}.png. Use the iconBase and iconMax fields from each weapon category to resolve the correct icon file.

โœ… Sprites are pixelated โ€” use CSS

Always apply image-rendering: pixelated to all sprite <img> elements. In Unity, set Filter Mode to Point (no filter).

โŒ Don't hardcode icon paths

Icon paths may change when new sprites are added. Always resolve paths from sprites.json or use the SDK's icon resolver methods.

โŒ Don't fetch all endpoints on page load

Lazy-load data by category. Weapons alone is ~800+ items ร— 8 tiers. Use the SDK's search() to find specific items instead of loading entire catalogs.

๐Ÿ“Ž Cross-project slug registry

ObjectStore slugs are the single source of truth for item definitions across all 35+ Grudge Studio repos. When adding items to GRUDA-Wars, GDevelop games, or the Warlord Crafting Suite, always reference ObjectStore slugs.

๐Ÿ“ฆ Full Endpoint Reference