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.
{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.
{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
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.