Bir oyuna deckbuilder tarafini kurar: kart cizimi, paket acma toreni, kart sanati eslemesi. ~/Projects/deckcraft paketini kullanir, oyunun veri modeline adapter ile baglar ve ise yarayan her bulguyu pakete geri yazar. Triggers: deckbuilder, kart tasarimi, kart cizimi, paket acma, pack opening, kart sistemi, deste sistemi, card frame, kart cercevesi, deckcraft.
Scanned 9/5/2026
Install to Claude Code
npx -y skills add SkyWalker2506/claude-config --skill deckcraft --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Deckcraft?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/skywalker2506-deckcraft)More formats (shields.io, HTML) on the badges page.
---
name: deckcraft
description: "Bir oyuna deckbuilder tarafini kurar: kart cizimi, paket acma toreni, kart sanati eslemesi. ~/Projects/deckcraft paketini kullanir, oyunun veri modeline adapter ile baglar ve ise yarayan her bulguyu pakete geri yazar. Triggers: deckbuilder, kart tasarimi, kart cizimi, paket acma, pack opening, kart sistemi, deste sistemi, card frame, kart cercevesi, deckcraft."
user-invocable: true
argument-hint: "[hedef: kart | toren | ikisi] (bos birakilirsa projeden cikarilir)"
---
# /deckcraft — deckbuilder tarafını kur
Kart çizimi ve paket açma töreni her oyunda sıfırdan yazılıyordu. `~/Projects/deckcraft`
o işin bir kez yapılmış hâli; bu skill onu **bu** oyuna bağlar ve bağlarken
öğrendiğini pakete geri yazar.
> Tek çizim · Ölçü tek nesnede · Paket oyunu bilmez
---
## Önce bilmen gereken: bu Three.js sahnesi değil
Paket **DOM + CSS**. Three.js kullanan oyunlarda `<canvas>`'ın ÜSTÜNDE ayrı bir
katman olarak çalışır, sahneyle aynı bağlamı paylaşmaz.
Bu bir eksiklik değil seçim, ve gerekçesi ölçülebilir: kartın gövdesi **metin**
— başlık, kural, etiket. DOM'da satır kırma, elipsis ve yazı tipi hinting'i
bedava; texture'a çizince her dil için yeniden ölçüp atlas üretmek gerekiyor.
Cozy'de kural metni 10px'te üç satır; bir piksel kayma kartı bozuyor.
Kâğıt bükülme efekti tek istisna: o zaten ham WebGL (`peel.js`), kendi
canvas'ında.
**Kullanıcı "Three.js mesh'i olsun" derse** bunu söyle, sonra istiyorsa yap —
ama metin ölçüsünün bedelini önceden yaz.
---
## Faz 1 — bağlan, yeniden yazma
Paketi kopyalama; **referansla** kullan. Oyunun build'ine `~/Projects/deckcraft/src/`
dosyalarını dahil et, sonra tek bağlantı noktasını doldur:
```js
deckcraft.init({
card: id => {
const c = OYUNUN_KART_TABLOSU[id];
return { name: c.n, rules: c.tx, cost: c.act, tag: c.tags[0],
tagColor: RENK[c.tags[0]], art: artKeyFor(c),
seal: rarityOf(c) && "Seal_" + MUHUR[rarityOf(c).id],
ingredient: c.ing };
},
art: key => ART[key],
fonts: { CozyDisplay: FONT.display, CozyLabel: FONT.label, CozyBody: FONT.body },
});
```
`card.art` bir ART anahtarı **ya da** doğrudan bir URL olabilir. Gömülü base64
kullanan oyun anahtar verir, dosyadan yükleyen yol verir; paket ikisini de kabul
eder ve hangisi olduğunu bilmez.
**Adapter dışında pakete dokunma.** Oyuna özel bir kural pakete sızarsa paket o
oyuna çivilenir ve üçüncü oyunda çatallanır.
## Faz 2 — ölçüleri oyuna göre ayarla
Bütün ölçüler `CARD_LOOK` içinde tek nesnede ve `applyCardLook()` onları CSS
özel değişkenlerine yazıyor. **CSS ve JS aynı sayıyı okuyor** — kartı bir tık
büyütmek tek satır.
Ayarlarken:
- Oran her yerde aynı kalır. Farklı yoğunluk gerekiyorsa **ölçek** değiştir
(`--k`), ikinci bir kart tasarlama.
- Kural metni 5–6 pikselin altına inerse kart işini yapmıyor demektir; oradan
aşağısı ölçek değil düzen sorunudur.
## Faz 3 — sanat eşlemesi
`artmap.js` kartın hangi resmi çizeceğini seçer: **önce kartın kendi adı**
(`"Night Baker"` → `Illustration_NightBaker`), sonra anahtar kelime kuralı.
Yeni illüstrasyon eklendiğinde tabloya satır yazmak gerekmiyor — ad eşleşmesi
onu kendiliğinden bulur. Bu yüzden **kart adında kesme işareti kullanma**:
`"Baker's Kid"` → `"BakerSKid"` üretir, dosya `BakersKid`'dir, eşleşme kaçar ve
kart sessizce başkasının resmini çizer.
Bunu bir kapıyla koru:
> Adından türeyen anahtar bir illüstrasyona denk gelen kart, o illüstrasyonu
> KULLANMAK zorundadır.
## Faz 4 — pakete geri yaz
Bu skill'in asıl işi burada. Oyunda bir şey **düzelttiğinde**, düzeltme oyuna
özelse oyunda kalır; **pakete aitse pakete taşınır**. Ayrımı şu soru verir:
> Bu hata ikinci bir oyunda da olur muydu?
Olurdu diyorsan `~/Projects/deckcraft`'e taşı ve **neden** olduğunu yanına yaz.
Sayıyı yazma, sebebi yaz — sonraki okuyan sayıyı zaten görüyor.
Pakete taşınmış, ölçülmüş tuzaklar (hepsi yaşandı):
- `border-image` dilimi **yüzde** olmalı. Piksel dilim kaynağın kanonik
ölçüsüne bağlanır; gömülü kopya yeniden ölçeklenince sol+sağ dilim kaynağın
genişliğini aşar ve ortadaki `fill` yaması **sıfıra düşer** — elemanın ortası
hiç çizilmez.
- **Dikey dilim sıfır olamaz**: `0 x fill` ile orta yamanın kaynak yüksekliği
sıfırdır. Aynı sonuç, farklı sebep.
- 9-slice dikişi genelde süslemenin yerinden değil, sprite'ın eni boyunca giden
**ışık geçişinden** gelir. Her sütunu merkez sütunla karşılaştır, farkın en
küçük olduğu yerden kes.
- **Şablon dizesi içindeki yorumda ters tırnak** dizeyi kapatır; hata satırlar
sonra patlar.
- WebGL'de `preserveDrawingBuffer` yokken `readPixels` **ölçüm için
kullanılamaz** — sunumdan sonra tampon temizlenir, "0 piksel çizildi" yalan
çıkar.
- Kart oranını iki yerde tanımlama. İkinci "yoğun" varyant, aynı kartı oyuncuya
iki nesne olarak gösterir.
## Yapma
- **Paketi kopyalayıp oyuna gömme.** İki kopya bir gün ayrışır; ayrıştığı gün
hangisinin doğru olduğunu kimse bilmez.
- **Adapter'ı atlayıp pakete oyunun tablolarını okutma.**
- **Sprite sheet üret diye kart animasyonu isteme** — bkz. `/animate`.
- **"Taşınabilir" deme.** Paket şu an tek oyundan çıkarıldı ve ikinci bir oyunda
denenmedi; bağımlılıkları kesilmiş durumda, kanıtlanmış değil. İkinci oyunda
çalıştığında bu satırı sil.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!