Epoch Street GuideBoardsNewsDev blog 日本語

← All guides

Texture Pack Creation Guide (English)

Restyle the game with your own art: board squares, the numbers on them, Chance-card artwork, slot-machine symbols, and the High-Low playing cards. A texture pack is one .esskin file; packs can replace *everything* or just a single image — every image you don't include keeps its normal look.

Appearance settings — texture packs are loaded here
Appearance settings — texture packs are loaded here

*(日本語版はこちら → TEXTURE_GUIDE.ja.md)*


1. How packs work

2. The easy way — import one image at a time, in-game

No folders, no manifest.json.

  1. Open Settings → Display → 各種見た目変更 → マスなどの見た目 ("Appearance → Art for squares & more" — the 見た目の一覧 / Art list).
  2. Select the row you want to change (bank, chance, switch…) and press Enter. A file picker opens — choose one image (png / jpg / webp / …).
  3. It applies immediately, and the panel below shows now next to built-in so you can compare. Press Delete to put it back.
  4. Your imports collect into a pack called 「自分の画像」 (My images). N names it and P packages it into a shareable myskin.esskin in user://skins/ — hand that file to anyone. The appearance hub does the same from its 自分の画像をパックにする ("Package my images") row.

The rows that stand for a whole set — card artwork, slot symbols, trump faces, digits —take several files at once, and there the file name is the id (the part after the key's prefix): 12.png for chance.art.<id>.png, 0.png9.png for digits (digits only take effect once all ten are present).

Anything larger than 1024×1024 is scaled down, and every import is re-encoded as PNG.

2a. Drawing inside the game — the Piece / Texture Studio

You can draw the art inside the game, with no external editor — and with the original still on screen beside you, so "what did the bank square's frame look like again?" is answered while you draw rather than from memory.

The Piece / Texture Studio
The Piece / Texture Studio
  1. Open コマ/テクスチャ工房 (Piece / Texture Studio) from the mode list (a Developer-Mode entry).
  2. Under "◆ A texture pack", press Start a new texture pack and name it. To fix up a pack you already have, press Duplicate an installed pack instead — the duplicate is a *new* pack and the original is never edited in place.
  3. On the Which art tab, pick what you want to replace and press Draw this one.
  4. Draw on the Draw tab. The Compare column on the right shows three live samples of the key you are on — Draft / Now / Built-in — so you can check your work against the original at any moment.
  5. On the Pack info tab, fill in the name, author, version and description. Art style is either pixel art (crisp) or painted art (smooth).
  6. Make the pack writes an .esskin, installs it and switches it on, so you can use it right away. Share does that first and then goes on to the publish form (where the description and changelog are typed).

Drafts live in user://skins/studio/<name>/ and use the same key-as-file-path layout as §4, so you can start a pack in the Studio and finish it in an external pixel editor —save the PNG outside and the Studio notices and offers to reload it.

A draft folder never reaches a match. Nothing you are half-way through drawing can show up in a game until you press Make the pack.

Other controls

3. Building a pack from a folder (quick start)

  1. Create a folder user://skins/dev/MyPack/. On Windows that is %APPDATA%\EpochStreet\skins\dev\MyPack\.
  2. Put a manifest.json in it:
   { "format": 1, "name": "MyPack", "author": "you", "version": "1.0",
     "filter": "nearest" }

filter: "nearest" for crisp pixel art, "linear" for smooth painted art.

A pack may also say what the money in a match is called, so a themed pack can arrive already speaking its own currency:

   { "format": 1, "name": "Hyrule", "filter": "nearest",
     "currency": { "name": { "ja": "ルピー", "en": "Rupees" },
                   "unit": { "ja": "ルピー", "en": "R" } } }

name replaces the word "Cash" where it labels a figure; unit replaces the G after every number. Both are optional and independent (rename just the unit if you like), at most 10 and 6 characters. A player who set their own currency in Settings → Display → 各種見た目変更 → 通貨 outranks the pack.

A pack may name the shops and lot buildings too — replace only the pictures and the buildings go on being called "Custom image":

   { "format": 1, "name": "My High Street", "filter": "linear",
     "names": { "shopRank": { "3": { "en": "Silver Store" } },
                "lot":      { "tollbooth": { "en": "Checkpoint" } } } }

shopRank takes fee ranks "0""7"; lot takes tollbooth / inn / helipad / taxoffice / myhome / realestate / park (the amusement park has one picture per capital stage but only one name, so it is just park). At most 16 characters each. The language must match exactly — a name written only under "en" is shown only to players playing in English; everyone else sees the game's own name, so that nobody is handed a name they cannot read.

  1. Add images using the paths from the table below (start with one — e.g. square/shop.png). A ready-made example lives in the repo at docs/skin-template/ (one sample of each category) — copy it and replace the art.
  2. In-game: enable the pack in Settings → Display → 各種見た目変更 →テクスチャパックの重ね順 (Enter toggles the checkbox, ←→ moves a pack's priority). Press F5 any time — in the menu or mid-match — to see your latest saved edits instantly. The preview strip on that screen shows tiles, both digit sets, a card, a slot symbol and a trump card live.
  3. When happy, press P on your dev-folder row to package it into a shareable MyPack.esskin (written next to the installed packs in user://skins/).

4. Image paths (the full v1 list)

Sizes are the *design* sizes — other sizes are scaled to fit (keep the aspect ratio). PNG with transparency only.

Path in the packReplacesSize
square/<type>.png — type is one of: shop, vacant, bank, card_spade, card_heart, card_diamond, card_club, event, chance, casino, cannon, stockbroker, lucky, superlucky, changingmark, switch, rest, warp, dice, vehicle, door, doorexit, barrier, vehicleexit, vehicleempty, stairsup, stairsdownthat square type's tile art (stairsup / stairsdown are the up and down staircases, used on boards with floors)64×64
square/<type>/<colour>.png — colour 0-63; type is one of the squares that CARRY a colour: warp, door, doorexit, cannon, switch, vehicle, vehicleexit, vehicleempty, stairsup, stairsdownart for that colour only (e.g. square/warp/5.png = the warps whose colour is 5). A warp's colour is what pairs it with its destination, so it can have its own picture; a colour you do not cover falls through to the two rows below64×64
square/vacant.pngthe empty lot. If you supply this, the game draws nothing of its own on the square — no gold SALE tag, no grey owner band, no dashed parcel hint, only the two rings that say which area it belongs to. Saying 「for sale」 is your picture's job (a built-on lot is different: it keeps the owner's colour band)64×64
square/changingmark/<suit>.png — suit is spade, heart, diamond, clubone image per suit for the changing-mark square. It cycles while you play, so this is what lets your art say which mark it grants next. Ship none and your square/changingmark.png is used with the suit symbol drawn on top, so the square is never unreadable64×64
square/<vehicle type>/<style>.png — type is vehicle, vehicleexit, vehicleempty; style is plane, ship, car, train, minecartone image per vehicle style, so a board's ferry line and its train line still look different under your pack. Ship none and square/vehicle.png is used for every style64×64
square/tint/<type>.png — the same ten typesthe colour mask over square/<type>.png: where it is opaque, the tile wears that square's own colour (multiplied, so your shading survives). One image covers all 64 colours — ship this when you cannot know the board. Only the mask from the same pack as the art is used64×64
square/shop.owned.pngoptional variant for owned shops64×64
square/shop/building/<rank>.png — rank 07the shop-building pictogram per shopping-fee tier48×32
square/lot/<building>.pngtollbooth, helipad, taxoffice, myhome, realestate, inn, park0park5the developed-lot building pictograms (inn = 宿屋)48×32
board/background.pngthe backdrop behind the board (tiled)512×512
digits/board/0.png9.png, plus optional minus.png, g.pngthe numbers drawn on squares (prices/fees) — this set is used *only* there16×22 per digit
digits/payment/0.png9.png, minus.png, g.pngthe big payment/salary numbers — a separate texture set from the square digits, never shared24×34
chance/back.png, chance/front.pngChance-card back and face frame96×144
chance/art/<id>.png (id 0–109)the artwork of Chance card #id80×80
slot/frame.pngthe slot machine cabinet, drawn over the reels — keep the reel window (x 71–329, y 58–240) transparent400×372
slot/symbol/<n>.png1 slime, 2 stock, 3 warp, 4 wildcard, 8 sevenslot reel symbols48×48
square/event/<id>.png — id = a board-event id (1000+, spheres included)The event square's art, one image per EVENT ID. Every id is listed in 見た目の一覧 (e.g. square.event.1013square/event/1013.png); ids you do not name keep the event face from square/<type>.png64×64
casino/<motif>.pngcherries, warp, dokodemo, seven, coin, coins, loss, holiday, turnaround, shopup, stockdiv, ska, die, twodice, ticket, hat, belt, shoes, chest, trap, boostThe casino minigame pictograms (prizes, chests, jack-in-the-box, boost) — shared by Scratch, Lucky Panel, Rope, Tarot and both races64×64
casino/racer/bird.png, casino/racer/slime.pngThe race characters (bird = Legacy Race, slime = Modern Race). Tinted with the seat colour, so pale art keeps all four players distinct64×64
casino/tarot/who/<0-4>.png, casino/tarot/what/<0-7>.pngThe tarot faces (who = Wheel of Fortune, Emperor, Hanged Man, Judgement, World / what = Chariot, Magician, Lovers, Death, Strength, Star, Moon, Sun)64×64
trump/back.png, trump/<suit>/<rank>.png — suit spade, heart, diamond, club, rank 113 (1 = Ace, 11–13 = J/Q/K)the High-Low playing cards64×96
money/cash.pngthe coin beside every player's cash and in the payment burst32×32
money/stock.pnga mark beside the stock figure — replaces the built-in TURNIP (蕎 = 「かぶ」, the pun the mark is)32×32

Notes:

5. Finding a texture's name

The easy way: Settings → Display → 各種見た目変更 → マスなどの見た目 (the 見た目の一覧, "Art list"). Every replaceable image is listed kind by kind with its file path, how it looks now, how it looks built-in, and which pack replaced it. F narrows the list to what your pack actually replaced. No Debug Mode needed — and with nothing imported it still works as a plain "what does this square look like?" browser.

The appearance list — image paths and what currently replaces each
The appearance list — image paths and what currently replaces each

For a deeper trace, with Debug Mode on, open その他 → デバッグ → スキン監査 (Skin audit) during a match: it lists every texture path the game has requested this session and which pack answered (or "default"). Visit a screen (the board, a card, the slot…) and check the list — it's the fastest way to see what's left to cover.

6. Import, upload, download

An imported pack joins the list and is enabled straight away. Copying a file into the folder by hand does nothing — the set of enabled packs lives in skins.json, and only the import writes to it.

7. Limits (checked on import/publish)

LimitValue
Pack file sizeup to 8 MB
Single imageup to 1024×1024 px
Files per packup to 2000
FormatPNG (with alpha)
Nameup to 24 characters
Building name (names)up to 16 characters each

A failed import lists exactly which rule was broken and for which file.

7a. Sharing a whole shop design

The images you import and the names you type in Settings → Display → 各種見た目変更 →お店デザイン become one .esskin when you press P on that screen. Whoever receives it presses I on the texture-pack screen and picks the file: the art and the names arrive together (an imported pack is enabled and put on top for you).

To keep a pack's art but go back to the names you are used to, there are two ways:

8. Tips