跳到正文
DEV Community· Ali Ahmad·· 2 小時前AI 評分44

我如何用 git 中的 CSV 檔案管理快速更新的 Roblox 遊戲粉絲維基

How I run a fan wiki for a fast-changing Roblox game from CSV files in git

AI 導讀

作者以 git 儲存 CSV 遊戲資料,為 Roblox 遊戲 Steal an Egg 維護粉絲網站 UpdateOtter;資料變更經 pull request 和自動檢查後部署,再由匯入器重建頁面。每個資料檔都有版本號,網站亦標示數據來源及驗證狀態,並讓玩家回報數字是否相符。

正文

Steal an Egg is a Roblox game that came out on 25 July 2026. It gets a big update about once a week, plus smaller fixes in between. Each update can add new pets, new eggs or a whole new biome. Right now the game has 265 pets, 148 eggs and 14 biomes.

I run UpdateOtter, a small fan-made helper site for the game. This post is about the boring part that keeps it working: where the data lives and how it gets to the site.

The problem

A game wiki like this has two kinds of content:

  • Pages people read (guides, explanations).
  • Tables people use (pets with their income, eggs with hatch times and spawn chances, mutations with multipliers).

The tables change every week. If I edited them by hand in a CMS admin panel, I would make mistakes, I would have no history, and I couldn't undo a bad update.

The setup: data as CSV files in git

The site runs on WordPress with a custom theme. The game data is not typed into WordPress at all. It lives as plain CSV files inside the theme's git repository:

  • pets.csv: name, rarity, base income, base weight, which egg it hatches from
  • eggs.csv: name, rarity, biome, hatch time, spawn chance
  • mutations.csv: name and income multiplier

When a change is merged into the main branch, the host deploys the theme automatically. After the deploy, an importer reads the CSV files and rebuilds the pet, egg and mutation pages. Every data file has a version number, which is printed on the pages, so a reader can see which data build they are looking at.

What this gives me:

  • History for free. Every change to a pet's income is a commit with a date.
  • Easy rollback. A bad import is one revert away.
  • Review before publish. A change goes through a pull request and automated checks before it is live.
  • No admin-panel typos. Nobody edits numbers in a text box.

Telling readers how sure we are

Most of the numbers come from the community wiki on Fandom, which is licensed CC BY-SA. I store facts, not copied text, and every page credits the wiki and keeps the same licence for our changes to the data.

The site also tells readers how sure it is about each number:

  • "Source: community wiki" on every row that comes from the wiki.
  • "Not tested in game yet" or "Partly tested in game" on mechanics we haven't fully checked ourselves.
  • A small "Do these numbers match your game? Yes / No" question on each pet page. When enough different players say yes over several days, the label changes to "Players confirm".

This matters more than it sounds. Game wikis are often a few hours behind an update, and players notice wrong numbers fast. Being honest about the source keeps trust when a value turns out to be wrong.

The calculator math

A pet's income per second is its base income times its mutation multiplier times a weight factor. The community wiki gives the weight rule: income grows with (weight / base weight) to the power 37/60, and more slowly (power 2/5) once a pet is more than 125 times its base weight.

A simplified version of the main part, for pets under that 125x point, looks like this:

function income(baseIncome, mutationMultiplier, weight, baseWeight) {
  const ratio = weight / baseWeight;
  return baseIncome * mutationMultiplier * Math.pow(ratio, 37 / 60);
}

For example, a Phoenix has a base income of 85M Cash per second. With a Rainbow mutation (x3.5) at its base weight, that's about 297.5M per second. Our one in-game reading fits the weight rule so far, but we still need more readings to confirm the exact power, and the site says so.

The calculator page also works without JavaScript. The server renders a correct example result, and JavaScript only makes the inputs live.

What I'd tell anyone building a game wiki

  1. Keep the data in plain files, not in the CMS. CSV is boring and that's the point.
  2. Version your data and show the version on the page.
  3. Label your confidence honestly. "Not tested yet" is better than a confident wrong number.
  4. Credit your sources and respect their licence.
  5. Automate the deploy, so updating data is a commit and not a chore.

If you play Steal an Egg, the calculator is here: https://updateotter.com/steal-an-egg/calculator/

UpdateOtter is a fan-made site and is not affiliated with Roblox or the game's developers.

Note: I used an AI assistant to help write this post. I checked the facts and numbers against the live site.

來源:DEV Community · dev.to