<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: bingkun zhao</title>
    <description>The latest articles on DEV Community by bingkun zhao (@bingkun_zhao_3a12f63f3f41).</description>
    <link>https://dev.to/bingkun_zhao_3a12f63f3f41</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4197925%2Ff512ea09-d371-43f8-8a6c-5d74d3fc4031.png</url>
      <title>DEV Community: bingkun zhao</title>
      <link>https://dev.to/bingkun_zhao_3a12f63f3f41</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bingkun_zhao_3a12f63f3f41"/>
    <language>en</language>
    <item>
      <title>Why Patch Labels Belong in the Data Model of a Game Guide</title>
      <dc:creator>bingkun zhao</dc:creator>
      <pubDate>Sun, 25 Oct 2026 06:17:44 +0000</pubDate>
      <link>https://dev.to/bingkun_zhao_3a12f63f3f41/why-patch-labels-belong-in-the-data-model-of-a-game-guide-514i</link>
      <guid>https://dev.to/bingkun_zhao_3a12f63f3f41/why-patch-labels-belong-in-the-data-model-of-a-game-guide-514i</guid>
      <description>&lt;p&gt;Game guides have a quiet data problem: a recommendation can be correct when it is written and misleading after the next patch.&lt;/p&gt;

&lt;p&gt;That is especially common in idle RPGs. A build may depend on a Rune effect, a stage reward, a chest table, or an event deadline. If one of those inputs changes, the headline can survive long after the reasoning underneath it has expired.&lt;/p&gt;

&lt;p&gt;While organizing Task Bar Hero Atlas, I started treating a patch label as part of the content model rather than a decorative note.&lt;/p&gt;

&lt;h2&gt;
  
  
  The smallest useful record
&lt;/h2&gt;

&lt;p&gt;For a build or farming route, the useful unit is not just a title and a list of items. It needs at least four pieces of context:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the game version;&lt;/li&gt;
&lt;li&gt;the job the route is meant to solve;&lt;/li&gt;
&lt;li&gt;the stage or progression range where it was checked;&lt;/li&gt;
&lt;li&gt;the evidence status of the claim.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The second field matters more than it first appears. “Best build” collapses several different questions into one ranking. A player trying to clear repeated waves has a different bottleneck from a player stuck on a single boss. Another player may simply be dying before a farming loop becomes stable.&lt;/p&gt;

&lt;p&gt;So the route should say whether it is aimed at clear speed, boss damage, or survival. That makes the recommendation testable. A player can change one route, repeat the same stage, and compare the result instead of copying an unexplained tier label.&lt;/p&gt;

&lt;h2&gt;
  
  
  Separate facts, observations, and plans
&lt;/h2&gt;

&lt;p&gt;Patch coverage also benefits from three different states:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Confirmed:&lt;/strong&gt; the current official notes say the feature or change is live.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Observed:&lt;/strong&gt; a repeatable player test supports the claim, but it is not an official number.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Planned:&lt;/strong&gt; a roadmap or announcement describes a future change.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Mixing these states creates false certainty. A relative drop improvement does not reveal the absolute drop chance. A roadmap date is not the same as a released feature. A community ranking is not a fixed property of the game.&lt;/p&gt;

&lt;p&gt;The practical rule is simple: keep the source, version, and confidence beside the claim they qualify. Do not bury them in a general disclaimer at the bottom of the site.&lt;/p&gt;

&lt;h2&gt;
  
  
  Navigation should follow the next decision
&lt;/h2&gt;

&lt;p&gt;I also found it more useful to organize the entry points around player intent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;choose a farming goal;&lt;/li&gt;
&lt;li&gt;identify the current bottleneck;&lt;/li&gt;
&lt;li&gt;select a Rune route;&lt;/li&gt;
&lt;li&gt;check the patch label;&lt;/li&gt;
&lt;li&gt;open the detailed source page only when needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why a small timer or route helper can be more useful on the homepage than another long encyclopedia list. The tool gives the player a next action, while the deeper pages hold the evidence and version history.&lt;/p&gt;

&lt;p&gt;The public implementation is &lt;a href="https://taskbarheroatlas.com/" rel="noopener noreferrer"&gt;Task Bar Hero Atlas&lt;/a&gt;, an independent wiki and tool project currently tracking Ver 1.3.0. It includes the intent-based Rune helper, a local chest timer, compact reference desks, and patch-aware guide pages.&lt;/p&gt;

&lt;p&gt;The larger lesson applies beyond one game: version labels are fields in your data model. Once you treat them that way, stale advice becomes easier to find, qualify, and replace.&lt;/p&gt;

</description>
      <category>ux</category>
      <category>gamedev</category>
      <category>architecture</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How I Kept Two Different Fish Sort Games Out of One Guide</title>
      <dc:creator>bingkun zhao</dc:creator>
      <pubDate>Sat, 24 Oct 2026 17:24:51 +0000</pubDate>
      <link>https://dev.to/bingkun_zhao_3a12f63f3f41/how-i-kept-two-different-fish-sort-games-out-of-one-guide-4hk6</link>
      <guid>https://dev.to/bingkun_zhao_3a12f63f3f41/how-i-kept-two-different-fish-sort-games-out-of-one-guide-4hk6</guid>
      <description>&lt;p&gt;When a game title is generic, the hardest part of building a useful guide is often not writing the walkthrough. It is proving that every walkthrough belongs to the exact game and level the player has open.&lt;/p&gt;

&lt;p&gt;I ran into this problem while organizing Fish Sort Puzzle material. The name is used by more than one game. A browser version can have different boards and numbering from a mobile app with a similar title. If those sources are merged into one library, a page can look complete while sending players to an incompatible solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Treat the game identity as data
&lt;/h2&gt;

&lt;p&gt;The first step is to store the source game alongside every guide. A practical record can be as small as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"game"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Shycheese Android app"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"level"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;170&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"videoId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"verified YouTube id"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"visibleTitle"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Fish Sort Puzzle Level 170"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sourceChecked"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important field is not the level number. It is the combination of game identity, visible level title, and source identifier. Level 170 from one app is not automatically Level 170 from another.&lt;/p&gt;

&lt;p&gt;For the browser game, the safest approach is to label it separately and say who distributes it. That prevents visitors from assuming that the mobile walkthrough library matches the playable web build.&lt;/p&gt;

&lt;h2&gt;
  
  
  Validate the mapping before publishing
&lt;/h2&gt;

&lt;p&gt;For each walkthrough, I use a short checklist:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Confirm the level number appears in the source title.&lt;/li&gt;
&lt;li&gt;Save the source video ID, not only the full URL.&lt;/li&gt;
&lt;li&gt;Compare the opening board or visible landmarks when they are available.&lt;/li&gt;
&lt;li&gt;Keep the game or package identity with the record.&lt;/li&gt;
&lt;li&gt;Reject duplicate level numbers inside the same game library.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This catches the most damaging content errors: shifted numbering, duplicate videos, missing levels, and guides copied from the wrong game.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make uncertainty visible
&lt;/h2&gt;

&lt;p&gt;A guide should distinguish facts from advice. A verified source mapping is a fact about the page. A suggested opening order is strategy. Event rewards and economy values may change by version, so they need dates or version notes.&lt;/p&gt;

&lt;p&gt;That distinction also improves maintenance. When a source changes, the affected pages can be found and reviewed without rewriting every strategy article.&lt;/p&gt;

&lt;h2&gt;
  
  
  Help the player verify the page
&lt;/h2&gt;

&lt;p&gt;The page itself should give the player enough information to reject a mismatch quickly. Useful signals include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the exact level number;&lt;/li&gt;
&lt;li&gt;the game or app version covered;&lt;/li&gt;
&lt;li&gt;a visible opening-board description;&lt;/li&gt;
&lt;li&gt;the source video title and ID;&lt;/li&gt;
&lt;li&gt;a warning when the browser and mobile games differ.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The player should compare the first screen before copying any move. If the container count, top colors, or blocked stacks differ, the walkthrough is for another board.&lt;/p&gt;

&lt;h2&gt;
  
  
  Apply the same rule to downloads
&lt;/h2&gt;

&lt;p&gt;Generic game names also create download risk. A guide should link to the official store or developer page and identify the developer or package. Hosting copied APK files would remove the source information that players need to verify what they are installing.&lt;/p&gt;

&lt;p&gt;I used these rules while organizing &lt;a href="https://fishsortpuzzle.app/" rel="noopener noreferrer"&gt;Fish Sort Wiki&lt;/a&gt;, which keeps the playable YIGOT browser game separate from 156 walkthroughs mapped to the Shycheese mobile version. The useful part of the model is not the number of pages. It is the boundary that stops two similarly named games from becoming one unreliable dataset.&lt;/p&gt;

&lt;p&gt;If you are building guides for a game with clones, regional editions, or frequent updates, store the identity and evidence first. The walkthrough text is much easier to maintain once every page can answer: “Which exact game and source does this belong to?”&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>testing</category>
      <category>webdev</category>
      <category>seo</category>
    </item>
    <item>
      <title>Designing a Source-Labeled Wiki for an Early Access Game</title>
      <dc:creator>bingkun zhao</dc:creator>
      <pubDate>Sat, 24 Oct 2026 05:47:21 +0000</pubDate>
      <link>https://dev.to/bingkun_zhao_3a12f63f3f41/designing-a-source-labeled-wiki-for-an-early-access-game-1fm2</link>
      <guid>https://dev.to/bingkun_zhao_3a12f63f3f41/designing-a-source-labeled-wiki-for-an-early-access-game-1fm2</guid>
      <description>&lt;p&gt;Early Access game documentation has a versioning problem. A value that is correct today may change after the next patch, while an unverified player report can spread faster than an official explanation. When I started building an independent guide for Fatal Frontier 1869, the hard part was not producing more pages. It was deciding what each statement was allowed to claim.&lt;/p&gt;

&lt;p&gt;This article describes the content model I use for the project. It is useful for any small documentation site that covers a fast-changing product.&lt;/p&gt;

&lt;h2&gt;
  
  
  Treat confidence as data
&lt;/h2&gt;

&lt;p&gt;Every important claim belongs to one of four buckets:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Official&lt;/strong&gt; — stated by the developer, an official FAQ, Terms page, store listing, or patch note.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Observed&lt;/strong&gt; — reproduced in the current game build or confirmed through a repeatable check.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reported&lt;/strong&gt; — described by players, but not independently reproduced.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unknown&lt;/strong&gt; — a useful question whose answer is not yet supported.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The fourth state matters. Without it, an editor feels pressure to fill every empty field, and a guess quietly turns into documentation.&lt;/p&gt;

&lt;p&gt;A small record can represent the idea:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"claim"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"The route requires a specific supply threshold"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"reported"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"source"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"community discussion"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"checked_build"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"review_after"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"next patch"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The public page does not need to show raw JSON. It does need to expose the status in plain language. Readers should be able to tell whether they are looking at a rule, a test result, or a lead that still needs checking.&lt;/p&gt;

&lt;h2&gt;
  
  
  Separate durable guidance from volatile values
&lt;/h2&gt;

&lt;p&gt;Exact numbers are attractive search targets, but they are also the fastest part of a guide to decay. I split content into two layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Durable guidance&lt;/strong&gt; explains the decision: bring enough supplies for the return, choose one objective for a first run, and treat extraction as part of every prospecting decision.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Volatile data&lt;/strong&gt; records a cost, timer, threshold, eligibility rule, or build-specific behavior together with its source and verification date.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes updates smaller. A patch may invalidate one data record without forcing a rewrite of the whole beginner guide.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build pages around player tasks
&lt;/h2&gt;

&lt;p&gt;The site architecture follows questions a player asks during a run:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What should I do on my first expedition?&lt;/li&gt;
&lt;li&gt;Which Pioneer or system do I need to understand next?&lt;/li&gt;
&lt;li&gt;How does extraction work?&lt;/li&gt;
&lt;li&gt;What is known about gold, costs, eligibility, and withdrawals?&lt;/li&gt;
&lt;li&gt;Which statements come from official material, and which remain uncertain?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each page starts with a direct answer, then adds context, evidence, limitations, and links to the next likely task. That structure helps search discovery, but the more important result is that a player can use the page without reading the entire site.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make uncertainty visible in the interface
&lt;/h2&gt;

&lt;p&gt;Uncertainty should not be hidden in a footer. Put it next to the claim:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;show the source type;&lt;/li&gt;
&lt;li&gt;record the last check;&lt;/li&gt;
&lt;li&gt;name the game build when it matters;&lt;/li&gt;
&lt;li&gt;link to the primary source where possible;&lt;/li&gt;
&lt;li&gt;avoid converting a missing answer into a confident sentence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is especially important when a game includes an optional real-value layer. A description of a payout route is not a promise of profit, and current eligibility rules must come from the official Terms rather than from a guide writer's assumption.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep the site crawlable and maintainable
&lt;/h2&gt;

&lt;p&gt;For a focused guide, simple output is an advantage. Important answers should exist in the initial HTML, pages should use unique titles and descriptions, and the hierarchy should remain shallow enough that a player or crawler can reach every core guide from a hub.&lt;/p&gt;

&lt;p&gt;I also keep the editorial system separate from the presentation layer. The site can change its design without changing what “official,” “observed,” or “reported” means.&lt;/p&gt;

&lt;h2&gt;
  
  
  The result
&lt;/h2&gt;

&lt;p&gt;The working example is the independent &lt;a href="https://fatalfrontier1869.wiki/" rel="noopener noreferrer"&gt;Fatal Frontier 1869 Wiki&lt;/a&gt;. It covers beginner routes, Pioneers, survival systems, extraction, gold, costs, and evidence checks. It is not affiliated with Paydirt Games.&lt;/p&gt;

&lt;p&gt;The main lesson is simple: for fast-changing documentation, accuracy is not only a writing quality. It is a data model. If every claim carries its level of evidence, updates become safer and readers can make better decisions even when the product is still moving.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>webdev</category>
      <category>seo</category>
      <category>gamedev</category>
    </item>
  </channel>
</rss>
