<?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: Dingiu Liao</title>
    <description>The latest articles on DEV Community by Dingiu Liao (@alex_liao).</description>
    <link>https://dev.to/alex_liao</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%2F4051447%2F1e379743-5326-4a0f-80c9-3e400dd60cb8.png</url>
      <title>DEV Community: Dingiu Liao</title>
      <link>https://dev.to/alex_liao</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alex_liao"/>
    <language>en</language>
    <item>
      <title>How I Built a 170-Page Game Database with Vanilla HTML, CSS, and Structured Data</title>
      <dc:creator>Dingiu Liao</dc:creator>
      <pubDate>Sun, 02 Aug 2026 06:15:39 +0000</pubDate>
      <link>https://dev.to/alex_liao/how-i-built-a-170-page-game-database-with-vanilla-html-css-and-structured-data-h22</link>
      <guid>https://dev.to/alex_liao/how-i-built-a-170-page-game-database-with-vanilla-html-css-and-structured-data-h22</guid>
      <description>&lt;h1&gt;
  
  
  How I Built a 170-Page Wuthering Waves Database with Vanilla HTML, CSS, and Structured Data
&lt;/h1&gt;

&lt;p&gt;No frameworks. No build step. No CMS. Here's the architecture behind WutZone — a statically-generated game database that competes with wiki sites for Google rankings.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Wuthering Waves has dozens of characters, weapons, and Echoes. Each one deserves its own page. That's 170+ pages of structured data — character stats, weapon rankings, team synergies, upgrade materials.&lt;/p&gt;

&lt;p&gt;Game wiki sites (Fandom, game8, Prydwen) dominate the search results. To compete, you need:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Fast load times&lt;/strong&gt; — Google ranks on Core Web Vitals&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rich structured data&lt;/strong&gt; — Schema.org markup for rich snippets&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Entity relationships&lt;/strong&gt; — internal links that form a knowledge graph&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content that answers real search queries&lt;/strong&gt; — not just data dumps&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here's how I built the Rover character page as a case study.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Stack (It's Simple)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTML            —  static pages, one per entity
CSS             —  shared.css + per-page overrides
JavaScript      —  nav, theme toggle, GA4, Clarity
JSON-LD         —  Schema.org structured data
Cloudflare Pages — auto-deploy from GitHub main branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No React. No Astro. No Hugo. When every page follows the same template pattern, a static HTML approach works fine — and ships zero JavaScript overhead to the client for content rendering.&lt;/p&gt;




&lt;h2&gt;
  
  
  Design System: Color-Coded by Element
&lt;/h2&gt;

&lt;p&gt;Each character has an element (Havoc, Spectro, Glacio, Fusion, Aero, Electro). Rather than a flat design, the Rover page uses &lt;strong&gt;element-specific accent colors&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* Havoc = purple, Spectro = gold */&lt;/span&gt;
&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--havoc&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#a855f7&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--spectro&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#facc15&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.cd-section.havoc&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;border-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#a855f7&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.cd-section.spectro&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;border-left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#facc15&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The comparison table between Havoc and Spectro forms uses column headers with matching colors — users visually know which column they're reading without checking the label.&lt;/p&gt;

&lt;p&gt;This pattern scales to all 57 character pages: swap the accent color variable, and the entire page themes itself.&lt;/p&gt;




&lt;h2&gt;
  
  
  The "Quick Reference" Pattern
&lt;/h2&gt;

&lt;p&gt;Most users don't read a build page. They scan for answers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Best Form? → Havoc
Best Weapon? → Emerald of Genesis
Best Echo? → Dreamless
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of a wall of text, we put three &lt;strong&gt;highlight cards&lt;/strong&gt; at the top:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"qr-grid"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"qr-card primary"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Best Form → Havoc Rover&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"qr-card"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Best Weapon → Emerald of Genesis&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"qr-card"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Best Echo → Dreamless&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each card answers one question. No scrolling required. Google also extracts this for featured snippets when the data is well-structured.&lt;/p&gt;




&lt;h2&gt;
  
  
  Structured Data: Beyond Basic SEO
&lt;/h2&gt;

&lt;p&gt;Every page has two JSON-LD blocks:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FAQ Schema&lt;/strong&gt; — Google shows these as expandable Q&amp;amp;As in search results:&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;"@type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"FAQPage"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mainEntity"&lt;/span&gt;&lt;span class="p"&gt;:&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;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"@type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Question"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Is Rover worth building?"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"@type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Question"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Male or Female Rover — what's the difference?"&lt;/span&gt;&lt;span class="p"&gt;}&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;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;&lt;strong&gt;BreadcrumbList Schema&lt;/strong&gt; — helps Google understand site hierarchy:&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;"@type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"BreadcrumbList"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"itemListElement"&lt;/span&gt;&lt;span class="p"&gt;:&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;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"WutZone"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"item"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://wutzone.com/"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Characters"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"item"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://wutzone.com/characters/"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Rover"&lt;/span&gt;&lt;span class="p"&gt;}&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;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 combination of both schemas on a single page significantly improves the SERP appearance — breadcrumbs show the navigation path, and FAQ accordions push competitors further down the page.&lt;/p&gt;




&lt;h2&gt;
  
  
  Internal Linking as a Knowledge Graph
&lt;/h2&gt;

&lt;p&gt;Each character page links to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Their &lt;strong&gt;weapons&lt;/strong&gt; (&lt;code&gt;/weapons/emerald-of-genesis/&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Their &lt;strong&gt;Echoes&lt;/strong&gt; (&lt;code&gt;/echos/dreamless/&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Their &lt;strong&gt;teammates&lt;/strong&gt; (&lt;code&gt;/characters/sanhua/&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database indexes&lt;/strong&gt; (&lt;code&gt;/weapons/&lt;/code&gt;, &lt;code&gt;/echos/&lt;/code&gt;, &lt;code&gt;/items/&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This creates a web of entity relationships that Google treats as a knowledge graph. A user who lands on the Rover page can navigate to every related entity without hitting the navigation bar.&lt;/p&gt;

&lt;p&gt;From an SEO perspective, internal links distribute PageRank across the site — the tier list page linking to Rover, Rover linking to weapons, weapons linking back to other characters. It's a self-reinforcing structure.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Keyword Strategy
&lt;/h2&gt;

&lt;p&gt;Rather than stuffing exact-match keywords, the page answers &lt;strong&gt;the questions people actually type into Google&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Search Intent&lt;/th&gt;
&lt;th&gt;How the Page Answers&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;"rover best weapon"&lt;/td&gt;
&lt;td&gt;FAQ: "What is Rover's best weapon?" + ranked weapon table&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"rover havoc vs spectro"&lt;/td&gt;
&lt;td&gt;Dedicated comparison section with table&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"rover s6 free"&lt;/td&gt;
&lt;td&gt;FAQ: "How do I get Rover's S6 for free?"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"rover male or female"&lt;/td&gt;
&lt;td&gt;FAQ: "Male or Female Rover — what's the difference?"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Each FAQ question is a real search query with volume behind it (sourced from Reddit trending topics and Google Trends data). Schema markup ensures Google can surface these as Featured Snippets.&lt;/p&gt;




&lt;h2&gt;
  
  
  Mobile-First Details
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FAQ accordions&lt;/strong&gt; use native &lt;code&gt;&amp;lt;details&amp;gt;&lt;/code&gt; elements — zero JavaScript, works on every browser&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Echo Cost visualization&lt;/strong&gt; uses colored chips (&lt;code&gt;4→3→3→1→1&lt;/code&gt;) instead of a text description — scannable at a glance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team cards&lt;/strong&gt; collapse to a single column on mobile via CSS Grid &lt;code&gt;auto-fit&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No media query hacks. No separate mobile templates.&lt;/p&gt;




&lt;h2&gt;
  
  
  Results (So Far)
&lt;/h2&gt;

&lt;p&gt;The site is live at &lt;a href="https://wutzone.com" rel="noopener noreferrer"&gt;wutzone.com&lt;/a&gt;. After launching with these patterns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google indexed 80+ pages&lt;/li&gt;
&lt;li&gt;Bing indexed 87 pages (53% character page coverage)&lt;/li&gt;
&lt;li&gt;FAQ Schema generates rich results on individual character searches&lt;/li&gt;
&lt;li&gt;Zero ad spend — all traffic is organic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The template now scales to any character page: change the data, swap the accent color, and the page is production-ready.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Full Code
&lt;/h2&gt;

&lt;p&gt;The entire site is open source:&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;&lt;a href="https://github.com/liaodingjiu/wuthering-guide" rel="noopener noreferrer"&gt;github.com/liaodingjiu/wuthering-guide&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Or check out the Rover page directly:&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;&lt;a href="https://wutzone.com/characters/rover/" rel="noopener noreferrer"&gt;wutzone.com/characters/rover/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built with vanilla HTML/CSS/JS · Deployed on Cloudflare Pages · Last updated: August 2026&lt;/em&gt;&lt;/p&gt;

</description>
      <category>html</category>
      <category>css</category>
      <category>seo</category>
    </item>
    <item>
      <title>I Compiled the Best Palworld Server Settings — 4 Presets for PvE, PvP &amp; Co-Op</title>
      <dc:creator>Dingiu Liao</dc:creator>
      <pubDate>Sat, 01 Aug 2026 11:16:01 +0000</pubDate>
      <link>https://dev.to/alex_liao/co-op-4o4l</link>
      <guid>https://dev.to/alex_liao/co-op-4o4l</guid>
      <description>&lt;h1&gt;
  
  
  I Compiled the Best Palworld Server Settings — 4 Presets for PvE, PvP &amp;amp; Co-Op
&lt;/h1&gt;

&lt;p&gt;After managing Palworld servers across SteamCMD, GPortal, and self-hosted setups, I got tired of guessing which settings actually matter. So I put together battle-tested presets based on real server data and community feedback.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Each preset is a complete PalWorldSettings.ini configuration&lt;/strong&gt; — copy the values and you're done.&lt;/p&gt;




&lt;h2&gt;
  
  
  Preset 1: Casual Friends Server
&lt;/h2&gt;

&lt;p&gt;For 2–8 players who play weekly and don't want to grind.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Setting&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ExpRate&lt;/td&gt;
&lt;td&gt;2.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PalCaptureRate&lt;/td&gt;
&lt;td&gt;1.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GatherRate&lt;/td&gt;
&lt;td&gt;2.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PalEggDefaultHatchingTime&lt;/td&gt;
&lt;td&gt;2.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeathPenalty&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;StaminaRate&lt;/td&gt;
&lt;td&gt;1.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HungerRate&lt;/td&gt;
&lt;td&gt;0.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;bEnableInvaderEnemy&lt;/td&gt;
&lt;td&gt;False&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;StructureDamageRate&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;Double XP and gather speed. No death penalty. No raids.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Preset 2: Official+ Experience
&lt;/h2&gt;

&lt;p&gt;For 4–16 players who want vanilla difficulty with less grinding.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Setting&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ExpRate&lt;/td&gt;
&lt;td&gt;1.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PalCaptureRate&lt;/td&gt;
&lt;td&gt;1.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GatherRate&lt;/td&gt;
&lt;td&gt;1.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PalEggDefaultHatchingTime&lt;/td&gt;
&lt;td&gt;6.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeathPenalty&lt;/td&gt;
&lt;td&gt;Item&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;StaminaRate&lt;/td&gt;
&lt;td&gt;1.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HungerRate&lt;/td&gt;
&lt;td&gt;1.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;bEnableInvaderEnemy&lt;/td&gt;
&lt;td&gt;True&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;StructureDamageRate&lt;/td&gt;
&lt;td&gt;1.0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;Slightly boosted rates. Raids stay on. Feels like official servers with QoL tweaks.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Preset 3: Hardcore Survival
&lt;/h2&gt;

&lt;p&gt;For 2–12 players who want a long-term challenge or PvP.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Setting&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ExpRate&lt;/td&gt;
&lt;td&gt;0.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PalCaptureRate&lt;/td&gt;
&lt;td&gt;0.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GatherRate&lt;/td&gt;
&lt;td&gt;0.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PalEggDefaultHatchingTime&lt;/td&gt;
&lt;td&gt;24.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeathPenalty&lt;/td&gt;
&lt;td&gt;ItemAndEquipment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DamagePlayerMultiplier&lt;/td&gt;
&lt;td&gt;0.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;StaminaRate&lt;/td&gt;
&lt;td&gt;0.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HungerRate&lt;/td&gt;
&lt;td&gt;1.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;bEnableInvaderEnemy&lt;/td&gt;
&lt;td&gt;True&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;Everything is harder. Resources matter. Death has real stakes.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Preset 4: Breeding Focus Server
&lt;/h2&gt;

&lt;p&gt;For Pal collectors and perfect passive breeders.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Setting&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ExpRate&lt;/td&gt;
&lt;td&gt;2.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PalCaptureRate&lt;/td&gt;
&lt;td&gt;1.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GatherRate&lt;/td&gt;
&lt;td&gt;2.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PalEggDefaultHatchingTime&lt;/td&gt;
&lt;td&gt;1.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeathPenalty&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;StaminaRate&lt;/td&gt;
&lt;td&gt;1.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HungerRate&lt;/td&gt;
&lt;td&gt;0.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;bEnableInvaderEnemy&lt;/td&gt;
&lt;td&gt;False&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;StructureDamageRate&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;1-hour egg hatch time (down from default 72!). No raids means your breeding stock is safe.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  How to Apply These Settings
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to &lt;code&gt;Pal/Saved/Config/WindowsServer/&lt;/code&gt; (or &lt;code&gt;LinuxServer/&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Open &lt;code&gt;PalWorldSettings.ini&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Replace the values&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Restart the server&lt;/strong&gt; — settings don't apply live&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If settings don't apply after restart, delete &lt;code&gt;WorldOptions.sav&lt;/code&gt;. It caches old values and overrides your INI.&lt;/p&gt;




&lt;h2&gt;
  
  
  5 Settings That Matter Most
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;PalEggDefaultHatchingTime&lt;/strong&gt; — Default 72h is brutal. Set to 2–6h.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PalCaptureRate&lt;/strong&gt; — 1.2–1.5x makes endgame legendaries achievable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ExpRate&lt;/strong&gt; — Multiplayer shares XP. 1.5–2.0x keeps groups at solo pace.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DeathPenalty&lt;/strong&gt; — In multiplayer, corpse-running wastes everyone's time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GatherRate&lt;/strong&gt; — On 6+ player servers, resources deplete fast. 1.5–2.0x fixes it.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Settings not applying?&lt;/strong&gt; You didn't restart the server. If you did, delete WorldOptions.sav.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I change settings later?&lt;/strong&gt; Yes. Edit, restart. World data is preserved.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance impact?&lt;/strong&gt; Three CPU-heavy settings: raids (disable on weak hardware), spawn density (lower to 0.8), base workers (cap at 10). Also schedule restarts every 6–12h — the server has a memory leak.&lt;/p&gt;




&lt;p&gt;For a complete settings table with 27+ parameters, INI editing walkthrough, and 10 more FAQ:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://palworldguides.com/server-settings.html" rel="noopener noreferrer"&gt;Palworld Server Settings Guide&lt;/a&gt;&lt;/p&gt;

</description>
      <category>palworld</category>
      <category>server</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>I Built a Breeding Calculator for 299 Pals — Here's How the Math Works</title>
      <dc:creator>Dingiu Liao</dc:creator>
      <pubDate>Sat, 01 Aug 2026 01:11:01 +0000</pubDate>
      <link>https://dev.to/alex_liao/i-built-a-breeding-calculator-for-299-pals-heres-how-the-math-works-487c</link>
      <guid>https://dev.to/alex_liao/i-built-a-breeding-calculator-for-299-pals-heres-how-the-math-works-487c</guid>
      <description>&lt;p&gt;Child = closest_match((Parent_A_BP + Parent_B_BP) / 2)&lt;/p&gt;

&lt;p&gt;Every Pal has a hidden Breeding Power from 10 to 1500. That's it. No RNG on species.&lt;/p&gt;




&lt;p&gt;Why I Built This&lt;/p&gt;

&lt;p&gt;Most breeding calculators only go one direction: A + B → C. But players usually have the opposite problem — they know what they want and need to figure out the easiest way to get there with what's in their Palbox.&lt;/p&gt;

&lt;p&gt;So I built three modes into one tool:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Calculator — A + B → C (44K+ combos for all 299 Pals)&lt;/li&gt;
&lt;li&gt;Finder — "I want Anubis. Show me every parent pair, ranked easiest first"&lt;/li&gt;
&lt;li&gt;Shortest Path — multi-generation chains (Shadowbeak starting from only Chikipi)&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;The Data Layer&lt;/p&gt;

&lt;p&gt;The entire tool is static HTML + vanilla JS, powered by a 248-Pal JSON dataset scraped from wiki.gg. Each Pal entry includes breeding power, elements, skills, work suitability — everything needed for lookup and ranking.&lt;/p&gt;

&lt;p&gt;The finder algorithm:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Take the target's BP&lt;/li&gt;
&lt;li&gt;Calculate the required BP sum: target_BP × 2&lt;/li&gt;
&lt;li&gt;Loop through all 299×299 pairs, filter by sum proximity&lt;/li&gt;
&lt;li&gt;Rank by parent availability score (lower BP = harder to get)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No server, no API calls, loads in under 200ms.&lt;/p&gt;




&lt;p&gt;What I'd Do Differently&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;BP data validation — wiki numbers had 3 errors I caught manually. Should've built a sanity checker first.&lt;/li&gt;
&lt;li&gt;Mobile UX — the breeding tree graph is unusable on phone screens. Still figuring this one out.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Live tool: &lt;a href="https://palworldguides.com/breeding-calculator/" rel="noopener noreferrer"&gt;https://palworldguides.com/breeding-calculator/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>palworld</category>
      <category>javascript</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>3 Months at Zero — How My 172-Page Site Finally Got Into Google (And What Actually Worked)</title>
      <dc:creator>Dingiu Liao</dc:creator>
      <pubDate>Wed, 29 Jul 2026 16:08:42 +0000</pubDate>
      <link>https://dev.to/alex_liao/3-months-at-zero-how-my-172-page-site-finally-got-into-google-and-what-actually-worked-485h</link>
      <guid>https://dev.to/alex_liao/3-months-at-zero-how-my-172-page-site-finally-got-into-google-and-what-actually-worked-485h</guid>
      <description>&lt;p&gt;In my last post (#), I talked about the SEO mistakes that kept my game database site stuck at zero Google indexing for three months.&lt;/p&gt;

&lt;p&gt;Here's what happened next — and the exact steps that took it from 0 to 81 indexed pages in about 10 days.&lt;/p&gt;




&lt;p&gt;The Starting Point: Absolutely Nothing&lt;/p&gt;

&lt;p&gt;After deploying WutZone (&lt;a href="https://wutzone.com/" rel="noopener noreferrer"&gt;https://wutzone.com/&lt;/a&gt;) — a 172-page Wuthering Waves database — Google Search Console showed beautiful, consistent data:&lt;/p&gt;

&lt;p&gt;┌─────────┬───────────────┐&lt;br&gt;
│  Date   │ Pages Indexed │&lt;br&gt;
├─────────┼───────────────┤&lt;br&gt;
│ July 12 │ 3             │&lt;br&gt;
├─────────┼───────────────┤&lt;br&gt;
│ July 15 │ 2             │&lt;br&gt;
├─────────┼───────────────┤&lt;br&gt;
│ July 17 │ 1             │&lt;br&gt;
├─────────┼───────────────┤&lt;br&gt;
│ July 19 │ 0             │&lt;br&gt;
└─────────┴───────────────┘&lt;/p&gt;

&lt;p&gt;Not "growing slowly." Not "waiting to be indexed." Actively trending down. Google was crawling pages and then deliberately removing them from the index.&lt;/p&gt;

&lt;p&gt;No manual actions. No security flags. Just a new domain being treated like a suspect.&lt;/p&gt;




&lt;p&gt;What I Fixed (Reality Check)&lt;/p&gt;

&lt;p&gt;Everyone tells you "just build great content and Google will find you." That's true — if you have 6-12 months and an existing backlink profile. For the rest of us, here's what actually moved the needle:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Stupid Stuff First&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;noindex on 49 out of 57 character pages. Removed it. Allow: / in robots.txt causing parser confusion. Removed it. Two lines of code, three months of zero visibility. Check this stuff before you launch.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Structured Data Everywhere&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I added JSON-LD structured data to 97% of pages — FAQPage, BreadcrumbList, Article, Organization, WebSite. Not because schema directly boosts rankings (it doesn't), but because it signals to Google "this is a real site with organized data, not an auto-generated scraper."&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;External Links (Even Nofollow Ones)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Posted on Reddit, Medium, YouTube comments, Steam Community. Within 24 hours of the first Reddit post, Google's crawl rate more than doubled.&lt;/p&gt;

&lt;p&gt;Does a nofollow Reddit link pass PageRank? No. Does it tell Google "this domain exists and people are talking about it"? Absolutely yes.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;IndexNow + Manual Submission&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;IndexNow API for Bing/Yandex. Manual GSC submission for the 20 highest-value pages.&lt;/p&gt;




&lt;p&gt;The Recovery Timeline&lt;/p&gt;

&lt;p&gt;┌────────────┬───────────────┬─────────────────────────┐&lt;br&gt;
│    Date    │ Pages Indexed │      What Happened      │&lt;br&gt;
├────────────┼───────────────┼─────────────────────────┤&lt;br&gt;
│ July 19    │ 0             │ robots.txt fix deployed │&lt;br&gt;
├────────────┼───────────────┼─────────────────────────┤&lt;br&gt;
│ July 20-21 │ ~10           │ First pages appear      │&lt;br&gt;
├────────────┼───────────────┼─────────────────────────┤&lt;br&gt;
│ July 22-25 │ ~40           │ Snowball effect         │&lt;br&gt;
├────────────┼───────────────┼─────────────────────────┤&lt;br&gt;
│ July 26-29 │ 81 (peak ~90) │ Bulk indexed            │&lt;br&gt;
└────────────┴───────────────┴─────────────────────────┘&lt;/p&gt;

&lt;p&gt;Once Google decided to trust the site, it indexed pages in batches. The "sandbox" wasn't a gradual release — it was a switch.&lt;/p&gt;




&lt;p&gt;Indexed ≠ Traffic: The Next Wall&lt;/p&gt;

&lt;p&gt;Here's the part nobody tells you.&lt;/p&gt;

&lt;p&gt;81 pages indexed. Zero clicks.&lt;/p&gt;

&lt;p&gt;Getting into Google's index is like getting your foot in the door. You're in the building, but you're standing in the lobby. Nobody's searching for "wutzone.com" — they're searching for "Wuthering Waves tier list" and clicking on Game8, Prydwen, and IGN. Sites with years of backlinks and millions of clicks of authority.&lt;/p&gt;

&lt;p&gt;I'm competing against domains that have been around since before my domain existed. Even with perfect on-page SEO, a new site simply does not outrank established gaming wikis on competitive keywords. Not in week one. Probably not in month one.&lt;/p&gt;

&lt;p&gt;What this feels like: You fix the noindex bug. You fix robots.txt. You add structured data. You submit to GSC. You wait. Finally — pages appear in the index. You refresh GSC expecting even a handful of clicks. Nothing. You wait another week. Still nothing.&lt;/p&gt;

&lt;p&gt;This is the second wall. The first was "Google won't even look at my site." The second is "Google sees my site but doesn't think anyone should click on it."&lt;/p&gt;

&lt;p&gt;What I'm doing about it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Continuing external links from Reddit, YouTube, Steam, Discord — not for direct traffic, but to build domain authority&lt;/li&gt;
&lt;li&gt;Writing these dev.to posts — articles here rank well on Google and drive referral traffic&lt;/li&gt;
&lt;li&gt;Targeting long-tail keywords where competition is lower (specific character comparisons, niche guides)&lt;/li&gt;
&lt;li&gt;Not checking GSC every day. This is a months-long game now.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The honest situation: I don't know when the first organic click will come. Could be next week, could be next month. What I do know is that every external mention, every helpful comment, every piece of unique content makes that moment closer.&lt;/p&gt;

&lt;p&gt;Indexing is not the finish line. It's the starting line.&lt;/p&gt;




&lt;p&gt;What I Wouldn't Bother With Again&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Refreshing GSC 40 times a day. Nothing changes in 20 minutes.&lt;/li&gt;
&lt;li&gt;Submitting every single URL manually. Do the top 20-30, let Google discover the rest.&lt;/li&gt;
&lt;li&gt;Chasing backlinks from irrelevant sites. One Reddit thread &amp;gt; 50 link directories.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;The Numbers&lt;/p&gt;

&lt;p&gt;┌────────────────────┬────────┬────────────┐&lt;br&gt;
│       Metric       │ Before │   After    │&lt;br&gt;
├────────────────────┼────────┼────────────┤&lt;br&gt;
│ Pages indexed      │ 0      │ 81         │&lt;br&gt;
├────────────────────┼────────┼────────────┤&lt;br&gt;
│ Peak indexed       │ —      │ ~90        │&lt;br&gt;
├────────────────────┼────────┼────────────┤&lt;br&gt;
│ Clicks from Google │ 0      │ 0 (so far) │&lt;br&gt;
├────────────────────┼────────┼────────────┤&lt;br&gt;
│ Schema coverage    │ ~65%   │ 97%        │&lt;br&gt;
├────────────────────┼────────┼────────────┤&lt;br&gt;
│ Months at zero     │ 3      │ —          │&lt;br&gt;
├────────────────────┼────────┼────────────┤&lt;br&gt;
│ Time from 0 to 81  │ —      │ ~10 days   │&lt;br&gt;
└────────────────────┴────────┴────────────┘&lt;/p&gt;




&lt;p&gt;The Uncomfortable Truth&lt;/p&gt;

&lt;p&gt;Google won't tell you why it's not indexing your site. It also won't tell you when it'll start sending traffic. You fix everything, get indexed, and then... wait. Again.&lt;/p&gt;

&lt;p&gt;The fastest way through both walls? Get other sites to mention yours. Real people on real platforms linking to your site because it's actually useful.&lt;/p&gt;




&lt;p&gt;WutZone is at wutzone.com (&lt;a href="https://wutzone.com/" rel="noopener noreferrer"&gt;https://wutzone.com/&lt;/a&gt;). No ads, no paywalls. Just a guy who wanted a better game wiki.&lt;/p&gt;

&lt;p&gt;If you're stuck at 0 indexing or 0 clicks — drop a comment with your site. Happy to tell you what I'd check.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>seo</category>
    </item>
    <item>
      <title>I Built a 172-Page Game Database With Zero Frameworks — Here Are the SEO Mistakes That Cost Me 3 Months</title>
      <dc:creator>Dingiu Liao</dc:creator>
      <pubDate>Wed, 29 Jul 2026 15:40:18 +0000</pubDate>
      <link>https://dev.to/alex_liao/i-built-a-172-page-game-database-with-zero-frameworks-here-are-the-seo-mistakes-that-cost-me-3-13d3</link>
      <guid>https://dev.to/alex_liao/i-built-a-172-page-game-database-with-zero-frameworks-here-are-the-seo-mistakes-that-cost-me-3-13d3</guid>
      <description>&lt;p&gt;I play Wuthering Waves. I got tired of bouncing between 5 different wikis to check character stats, weapon comparisons, and echo sets. So I built my own: WutZone (&lt;a href="https://wutzone.com/" rel="noopener noreferrer"&gt;https://wutzone.com/&lt;/a&gt;) — 172 static pages, one 20KB CSS file, deployed on Cloudflare Pages.&lt;/p&gt;

&lt;p&gt;The site itself took about two weeks. Getting Google to index it? Three months of pain.&lt;/p&gt;

&lt;p&gt;Here's what went wrong, what fixed it, and what I'd do differently.&lt;/p&gt;




&lt;p&gt;The Stack: Deliberately Boring&lt;/p&gt;

&lt;p&gt;Plain HTML, one shared CSS file, vanilla JavaScript for the interactive bits (build planner, map, tier list filters). No React, no Next.js, no build step. Wrangler pushes to Cloudflare Pages on git push.&lt;/p&gt;

&lt;p&gt;Why no framework? I wasn't building an app. It's a database. 172 mostly-static pages where the "dynamic" part is a couple of JSON fetches for character comparisons. A framework would have been overhead with zero upside.&lt;/p&gt;

&lt;p&gt;The one thing I didn't skip: structured data. Every page has JSON-LD — FAQPage on the guide, BreadcrumbList on character pages, Article on news. If Google's going to show rich results, I want my pages in them.&lt;/p&gt;




&lt;p&gt;Mistake #1: noindex on Half My Pages&lt;/p&gt;

&lt;p&gt;Two weeks after deploying, Google Search Console showed 0 indexed pages. I checked robots.txt — fine. Checked canonical tags — fine. Checked page content — fine.&lt;/p&gt;

&lt;p&gt;Turns out 49 out of 57 character pages had  baked into the template from an early draft. I'd set it while testing, forgot, and shipped.&lt;/p&gt;

&lt;p&gt;One grep fixed it. Six weeks of wondering why Google ignored my site, solved in 3 seconds.&lt;/p&gt;

&lt;p&gt;Lesson: grep -rl "noindex" . belongs in every pre-launch checklist.&lt;/p&gt;




&lt;p&gt;Mistake #2: Allow: / in robots.txt&lt;/p&gt;

&lt;p&gt;After removing noindex, GSC still showed the homepage blocked by robots.txt. The file looked innocent:&lt;/p&gt;

&lt;p&gt;User-agent: *&lt;br&gt;
Allow: /&lt;br&gt;
Disallow: /build-planner/editor.html&lt;/p&gt;

&lt;p&gt;Allow: / is redundant. But Google's parser had cached an older interpretation where this combo caused confusion. And when Google thinks your homepage is blocked, it doesn't trust the rest of the site either.&lt;/p&gt;

&lt;p&gt;Removed one line. That was the fix.&lt;/p&gt;

&lt;p&gt;Lesson: robots.txt should be boring. Every extra line is a chance for a parser to get confused.&lt;/p&gt;




&lt;p&gt;Mistake #3: The Google Sandbox&lt;/p&gt;

&lt;p&gt;Even after fixing both issues, GSC showed tively removed from the index:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;July 12: 3 pages indexed&lt;/li&gt;
&lt;li&gt;July 15: 2 pages&lt;/li&gt;
&lt;li&gt;July 17: 1 page&lt;/li&gt;
&lt;li&gt;July 19: zero&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No manual actions. No security issues. Just a new domain in the gaming niche being treated with extreme&lt;br&gt;
suspicion.&lt;/p&gt;

&lt;p&gt;What helped: manually submitting core URLstion in GSC, getting the first externallinks from Reddit and Medium.&lt;/p&gt;

&lt;p&gt;What didn't help: refreshing GSC 40 times a day.&lt;/p&gt;




&lt;p&gt;What Actually Worked&lt;/p&gt;

&lt;p&gt;Structured data everywhere. JSON-LD on eveage from ~65% to ~97%. It signals "this is a real site, not a scraper."&lt;/p&gt;

&lt;p&gt;IndexNow API. Bing indexes new URLs within hours. And Bing feeds DuckDuckGo, ChatGPT, and Copilot. One API call&lt;br&gt;
after each deploy.&lt;/p&gt;

&lt;p&gt;External links, even nofollow ones. A singingWavesGuide brought more crawler activityin 24 hours than the previous two weeks combined.&lt;/p&gt;

&lt;p&gt;Content that doesn't look templated. Pure data pages are thin. Unique write-ups — F2P pull breakdown, echo&lt;br&gt;
farming guide, character comparisons — gavndexing.&lt;/p&gt;




&lt;p&gt;What I'd Do Differently&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;GSC verification on day zero. Register domain, submit sitemap, verify robots.txt before writing any code.&lt;/li&gt;
&lt;li&gt;Ship with 5 pillar pages that aren't tens, news — anything with 500+ words ofunique text.&lt;/li&gt;
&lt;li&gt;Get external links before asking Google beats 20 manual GSC submissions.&lt;/li&gt;
&lt;li&gt;grep noindex as a launch step. Next to checking canonicals, mobile layout, and sitemap. Cheapest thing that
can ruin everything.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F16me0qnjgcdsi5kwxrjo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F16me0qnjgcdsi5kwxrjo.png" alt=" " width="799" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not a startup. Not a SaaS. Just a game wiki that I wanted to exist. Turns out the hard part isn't building it — it's convincing Google it deserves to be seen.&lt;/p&gt;

&lt;p&gt;Check it out at wutzone.com (&lt;a href="https://wutzone.com/" rel="noopener noreferrer"&gt;https://wutzone.com/&lt;/a&gt;). Happy to answer questions in the comments — especially about Cloudflare Pages quirks, structured data gotchas, or why you probably don't need a framework for a 200-page site.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; │
├──────────────────────┼─────────────────────────────────────────────────────────────┤
│ Months at 0 indexing │ 3                                 │
├──────────────────────┼─────────────────────────────────────────────────────────────┤
│ Schema types         │ 5 (WebSite, FAQPae, Organization) │
└──────────────────────┴─────────────────────────────────────────────────────────────┘&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Not a startup. Not a SaaS. Just a game wikTurns out the hard part isn't building it —it's convincing Google it deserves to be seen.&lt;/p&gt;

&lt;p&gt;Check it out at wutzone.com (&lt;a href="https://wutzone.com/" rel="noopener noreferrer"&gt;https://wutzone.com/&lt;/a&gt;). Happy to answer questions in the comments — especially about&lt;br&gt;
Cloudflare Pages quirks, structured data gy don't need a framework for a 200-pagesite.&lt;/p&gt;

</description>
      <category>web</category>
      <category>webdev</category>
      <category>gamedev</category>
      <category>seo</category>
    </item>
    <item>
      <title>Building a Palworld Data Site: 299 Pals, 1.0 Chaos &amp; Google Hell</title>
      <dc:creator>Dingiu Liao</dc:creator>
      <pubDate>Wed, 29 Jul 2026 13:16:47 +0000</pubDate>
      <link>https://dev.to/alex_liao/building-a-palworld-data-site-299-pals-10-chaos-google-hell-4342</link>
      <guid>https://dev.to/alex_liao/building-a-palworld-data-site-299-pals-10-chaos-google-hell-4342</guid>
      <description>&lt;p&gt;Palworld 1.0 dropped on July 10, 2026. I had a static site with 215 Pal pages, a breeding calculator, and a clean sitemap. Within 48 hours, everything broke.&lt;/p&gt;

&lt;p&gt;This is the story of what happened, what I fixed, and what six months of solo-building a gaming data site actually looks like.&lt;/p&gt;

&lt;p&gt;The Stack (Spoiler: It's Just HTML)&lt;/p&gt;

&lt;p&gt;No React. No Next.js. No database.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Static HTML — each of 299 Pal pages is a pre-rendered .html file&lt;/li&gt;
&lt;li&gt;One build.js — reads JSON data files, generates pages, sitemap, and component CSS&lt;/li&gt;
&lt;li&gt;Cloudflare Pages — deploy on git push&lt;/li&gt;
&lt;li&gt;Vanilla CSS — custom properties, dark mode toggle, zero frameworks&lt;/li&gt;
&lt;li&gt;No analytics bloat — just Microsoft Clarity for heatmaps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why? Because a Pal database doesn't need client-side rendering. Every millisecond of latency costs you users who just want to look up whether Anubis has Handiwork 4 (it does).&lt;/p&gt;

&lt;p&gt;Total page weight: ~30KB per Pal page, including images. Lighthouse score: 98-100 across the board.&lt;/p&gt;

&lt;p&gt;Then 1.0 Happened&lt;/p&gt;

&lt;p&gt;July 10. Palworld exits early access. And here's what changed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;97.7% of breeding recipes — silently changed. Penking + Bushi used to make something else. Now it makes Anubis. Almost every pair shifted.&lt;/li&gt;
&lt;li&gt;Paldeck renumbering — internal IDs didn't change, but display numbers did. If your tool matched by Paldeck # instead of internal name, it was lying to users.&lt;/li&gt;
&lt;li&gt;New Pals — 215 →&amp;nbsp;299. That's 84 new Pals, each needing a data file, a generated page, breeding combinations, and a sitemap entry.&lt;/li&gt;
&lt;li&gt;Breeding Power values — shifted across the board. Pre-1.0 calculators were showing wrong results for nearly every combination.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wrote a data validation script and ran ies. The result: 97.7% mismatch rate.Essentially, every breeding page on the site needed regeneration.&lt;/p&gt;

&lt;p&gt;So I rebuilt the data pipeline:&lt;/p&gt;

&lt;p&gt;Raw game data (wiki.gg, community datamines)&lt;br&gt;
  → JSON data files (one per Pal)&lt;br&gt;
    → build.js (validate, cross-reference, generate)&lt;br&gt;
      → 299 static pages + breeding tables&lt;/p&gt;

&lt;p&gt;Took about three days of solid work. The b hardest part — 35,000+ combinations, eachneeding verification against 1.0 data.&lt;/p&gt;

&lt;p&gt;Google Indexing Hell&lt;/p&gt;

&lt;p&gt;Here's where it gets painful.&lt;/p&gt;

&lt;p&gt;The site launched July 9. By July 20, Google had indexed 28 out of 260 URLs — about 11%. The rest wer"Crawled - not indexed" or "Discovered - n&lt;br&gt;
                                                                                                     The diagnosis:&lt;br&gt;
                                                                                                     ┌────────────────────┬────────────────────&lt;br&gt;
│      Problem       │      Pages affected       │                                                   ├────────────────────┼────────────────────&lt;br&gt;
│ Content too thin   │ 8 pages flat-out rejected │                                                   ├────────────────────┼────────────────────&lt;br&gt;
│ New domain penalty │ All pages                 │                                                   ├────────────────────┼────────────────────&lt;br&gt;
│ Zero backlinks     │ All pages                 │                                                   └────────────────────┴────────────────────&lt;br&gt;
                                                                                                     Google doesn't trust a 9-day-old domain wisee: does this site add value, or is it just templated SEO spam?&lt;br&gt;&lt;br&gt;
The fix: depth over volume.&lt;br&gt;&lt;br&gt;
Instead of adding more pages, I went deep on the ones already indexed:                               - Hand-wrote SEO entity pages for high-validrolon, Frostallion)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Each page: 10 sections — Quick Facts, Verdict, Stats, Skills, Work Suitability, How to Get, Best BuPassives, Game Stage Guide, FAQ&lt;/li&gt;
&lt;li&gt;FAQPage Schema on every page                                                                       - Internal linking between related Pals an
                                                                                                 No AI-generated fluff. No "comprehensive uust structured data that actually answersquestions.
The result (as of late July): index rate creeping up. Pages that got the depth treatment are getting impressions. The breeding calculator in pall search traffic — "palworld breedingcalculator" is a high-intent query and the tool actually solves the problem.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;3 Lessons I'd Give My Past Self&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Sitemap is a build artifact, not a source file&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I edited sitemap.xml by hand. The next deploy, build.js overwrote it. Took me an hour to figure out why my new&lt;br&gt;
pages weren't showing up in Google.&lt;/p&gt;

&lt;p&gt;Lesson: all hand-written pages go into manp is generated from that. Never editgenerated files.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;New sites need trust, not page count&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;264 pages and 11% index rate. If I could do it again, I'd launch with 20 deeply-researched pages, get those&lt;br&gt;
ranking, then expand. Google treats new doen innocent.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;97.7% is not a typo&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When a game exits early access, assume eve "most." Not "a lot." All of them. Buildyour data pipeline with version pinning and checksums from day one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.photo2url.com%2Fuploads%2F2026%2F07%2Fc1beaa22-522f-41b4-a131-6a9d5e1ea5f9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.photo2url.com%2Fuploads%2F2026%2F07%2Fc1beaa22-522f-41b4-a131-6a9d5e1ea5f9.png" alt="image.png" width="800" height="508"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What's Live Now&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;299 Pal pages — stats, skills, breeding, builds&lt;/li&gt;
&lt;li&gt;Breeding Calculator — parent → child andll possible parents)&lt;/li&gt;
&lt;li&gt;Tier List — combat, work, and mount rankings&lt;/li&gt;
&lt;li&gt;Interactive Map — Pal spawns, resources,&lt;/li&gt;
&lt;li&gt;Blog — data-driven guides on breeding, passives, and base optimization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All at &lt;a href="https://palworldguides.com" rel="noopener noreferrer"&gt;https://palworldguides.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What's Next&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Breeding chain planner — input your current Pals, get the shortest path to your target Pal with desired
passives&lt;/li&gt;
&lt;li&gt;Team builder — theorycraft party compositions with elemental coverage and role balance&lt;/li&gt;
&lt;li&gt;More depth on entity pages — the Anubis Q schema) is the standard, rolling it out to all legendaries&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Building a data site for a live-service gaThe 1.0 update nuked my data. Google ignored my pages. Reddit flagged my account as spam (that's a separate story).&lt;/p&gt;

&lt;p&gt;But if you solve a real problem — like "what the hell does Penking + Bushi actually make now" — people find you.&lt;br&gt;
And Google eventually follows.&lt;/p&gt;




&lt;p&gt;Built with vanilla HTML/CSS/JS, deployed on Cloudflare Pages. Data sourced from wiki.gg community datamines, cross-referenced against in-game values. I'll fix it within 24 hours.&lt;/p&gt;

</description>
      <category>palworld</category>
      <category>gaming</category>
      <category>guide</category>
    </item>
    <item>
      <title>Palworld 1.0 Has 9 Tower Bosses Now — Complete Data Guide (Levels, Counters, Loot)</title>
      <dc:creator>Dingiu Liao</dc:creator>
      <pubDate>Tue, 28 Jul 2026 13:27:56 +0000</pubDate>
      <link>https://dev.to/alex_liao/palworld-10-has-9-tower-bosses-now-complete-data-guide-levels-counters-loot-21d9</link>
      <guid>https://dev.to/alex_liao/palworld-10-has-9-tower-bosses-now-complete-data-guide-levels-counters-loot-21d9</guid>
      <description>&lt;p&gt;Palworld 1.0 added 4 new tower bosses and overhauled the entire system. Timer's shorter. Arenas got mechanics. And the final boss has no elemental weakness.&lt;/p&gt;

&lt;p&gt;Here's the complete data breakdown.&lt;/p&gt;




&lt;h2&gt;
  
  
  All 9 Bosses at a Glance
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Order&lt;/th&gt;
&lt;th&gt;Boss&lt;/th&gt;
&lt;th&gt;Level&lt;/th&gt;
&lt;th&gt;Element&lt;/th&gt;
&lt;th&gt;Weakness&lt;/th&gt;
&lt;th&gt;Key Change in 1.0&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Zoe &amp;amp; Grizzbolt&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Electric&lt;/td&gt;
&lt;td&gt;Ground&lt;/td&gt;
&lt;td&gt;Unchanged, tutorial boss&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Lily &amp;amp; Lyleen&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;Grass&lt;/td&gt;
&lt;td&gt;Fire&lt;/td&gt;
&lt;td&gt;Unchanged&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Axel &amp;amp; Orserk&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;Dragon/Electric&lt;/td&gt;
&lt;td&gt;Ice, Ground&lt;/td&gt;
&lt;td&gt;New timer pressure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Marcus &amp;amp; Faleris&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;Fire&lt;/td&gt;
&lt;td&gt;Water&lt;/td&gt;
&lt;td&gt;Arena redesigned&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Victor &amp;amp; Shadowbeak&lt;/td&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;td&gt;Dark&lt;/td&gt;
&lt;td&gt;Dragon&lt;/td&gt;
&lt;td&gt;Now drops Key Spheres&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Saya &amp;amp; Selyne&lt;/td&gt;
&lt;td&gt;55&lt;/td&gt;
&lt;td&gt;Dark&lt;/td&gt;
&lt;td&gt;Dragon&lt;/td&gt;
&lt;td&gt;New boss in 1.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Bjorn &amp;amp; Bastigor&lt;/td&gt;
&lt;td&gt;60&lt;/td&gt;
&lt;td&gt;Ice&lt;/td&gt;
&lt;td&gt;Fire&lt;/td&gt;
&lt;td&gt;Entry requirement added&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Auri &amp;amp; Shaolong&lt;/td&gt;
&lt;td&gt;68&lt;/td&gt;
&lt;td&gt;Water/Dragon&lt;/td&gt;
&lt;td&gt;Electric, Ice&lt;/td&gt;
&lt;td&gt;Pre-final gate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Zanara &amp;amp; Astralym&lt;/td&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;Typeless&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Final boss, no weakness&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  What Changed in 1.0
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Timer cut in half&lt;/strong&gt;: 5 minutes instead of 10&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;4 new bosses&lt;/strong&gt;: Saya (55), Bjorn (60), Auri (68), Zanara (80)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hard Mode&lt;/strong&gt;: unlocks after beating Auri&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key Spheres&lt;/strong&gt;: dropped by bosses, required for the final fight&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bosses cannot be captured&lt;/strong&gt;: this didn't change, but people keep asking&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Best Counter Pals Per Boss
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Boss&lt;/th&gt;
&lt;th&gt;Best Counter&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Zoe &amp;amp; Grizzbolt&lt;/td&gt;
&lt;td&gt;Any Ground Pal&lt;/td&gt;
&lt;td&gt;Electric is weak to Ground, easy fight&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lily &amp;amp; Lyleen&lt;/td&gt;
&lt;td&gt;Ragnahawk / Blazamut&lt;/td&gt;
&lt;td&gt;Fire melts Grass&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Axel &amp;amp; Orserk&lt;/td&gt;
&lt;td&gt;Frostallion / Cryolinx&lt;/td&gt;
&lt;td&gt;Ice &amp;gt; Dragon/Electric double weakness&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Marcus &amp;amp; Faleris&lt;/td&gt;
&lt;td&gt;Jormuntide / Azurobe&lt;/td&gt;
&lt;td&gt;Water destroys Fire&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Victor &amp;amp; Shadowbeak&lt;/td&gt;
&lt;td&gt;Jetragon / Quivern&lt;/td&gt;
&lt;td&gt;Dragon counters Dark&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Saya &amp;amp; Selyne&lt;/td&gt;
&lt;td&gt;Same as Victor&lt;/td&gt;
&lt;td&gt;Also Dark-typed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bjorn &amp;amp; Bastigor&lt;/td&gt;
&lt;td&gt;Blazamut / Ragnahawk&lt;/td&gt;
&lt;td&gt;Fire &amp;gt; Ice&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auri &amp;amp; Shaolong&lt;/td&gt;
&lt;td&gt;Orserk / Azurmane&lt;/td&gt;
&lt;td&gt;Electric &amp;gt; Water&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zanara &amp;amp; Astralym&lt;/td&gt;
&lt;td&gt;Your best DPS Pals&lt;/td&gt;
&lt;td&gt;No elemental weakness, bring raw power&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Strategy That Actually Works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Over-level by 5-10&lt;/strong&gt; — don't fight at the boss's level&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bring 4 Pals + 1 mount&lt;/strong&gt; — not 5 combat Pals&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hard Mode needs Condensed Pals&lt;/strong&gt; — Lv 50+ with at least 2-star condensation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Co-op makes everything easier&lt;/strong&gt; — up to 4 players&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Timer is the real boss&lt;/strong&gt; — 5 minutes goes fast, skip buffing/debuffing, just DPS&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;Full guide with HP values, arena mechanics, and Hard Mode breakdowns: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://palworldguides.com/tower-bosses.html/?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=tower-bosses-launch" rel="noopener noreferrer"&gt;palworldguides.com/tower-bosses.html&lt;/a&gt;&lt;/p&gt;

</description>
      <category>palworld</category>
      <category>gaming</category>
      <category>guide</category>
    </item>
    <item>
      <title>How Palworld's Hidden Breeding Formula Works — I Built a Calculator That Maps All 35K+ Combinations Tags</title>
      <dc:creator>Dingiu Liao</dc:creator>
      <pubDate>Tue, 28 Jul 2026 13:24:40 +0000</pubDate>
      <link>https://dev.to/alex_liao/how-palworlds-hidden-breeding-formula-works-i-built-a-calculator-that-maps-all-35k-combinations-iep</link>
      <guid>https://dev.to/alex_liao/how-palworlds-hidden-breeding-formula-works-i-built-a-calculator-that-maps-all-35k-combinations-iep</guid>
      <description>&lt;p&gt;Palworld's breeding system looks like magic until you see the formula. Then it's just math.&lt;/p&gt;

&lt;p&gt;Every Pal has a hidden integer called &lt;strong&gt;Breeding Power&lt;/strong&gt; — and once you know it, you can predict exactly what any pair of Pals will produce.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Formula
&lt;/h2&gt;

&lt;p&gt;child = closest_BP_match((BP_parentA + BP_parentB) / 2)&lt;/p&gt;

&lt;p&gt;Three steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Take two Pals, look up their BP values&lt;/li&gt;
&lt;li&gt;Average them&lt;/li&gt;
&lt;li&gt;Among all 266 Pals, find the one whose BP is closest to that average&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. No RNG. No hidden rules. Just an average and a nearest-neighbor lookup.&lt;/p&gt;




&lt;h2&gt;
  
  
  Concrete Example
&lt;/h2&gt;

&lt;p&gt;Penking   BP = 520&lt;br&gt;
Bushi     BP = 640&lt;/p&gt;

&lt;p&gt;Average = (520 + 640) / 2 = 580&lt;/p&gt;

&lt;p&gt;Pal with BP closest to 580?&lt;br&gt;
→ Anubis (BP = 570, distance = 10)&lt;br&gt;
→ Next closest: Finsider (BP = 590, distance = 10)&lt;/p&gt;

&lt;p&gt;Winner: Anubis ✅&lt;/p&gt;

&lt;p&gt;Two parents averaging ~580 land on Anubis at 570. Every single time.&lt;/p&gt;




&lt;h2&gt;
  
  
  The BP Scale
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;BP Range&lt;/th&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;Examples&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1000–1500&lt;/td&gt;
&lt;td&gt;Common / Early&lt;/td&gt;
&lt;td&gt;Chikipi (1500), Teafant (1490), Lamball (1470)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;500–999&lt;/td&gt;
&lt;td&gt;Mid-game&lt;/td&gt;
&lt;td&gt;Anubis (570), Penking (520), Bushi (640)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;200–499&lt;/td&gt;
&lt;td&gt;Late-game&lt;/td&gt;
&lt;td&gt;Jormuntide (310), Blazamut (180)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1–199&lt;/td&gt;
&lt;td&gt;Legendary&lt;/td&gt;
&lt;td&gt;Jetragon (90), Frostallion (130)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Higher BP = more common, easier to catch. That's also why breeding two early-game Pals often spits out a mid-game one — their high average drops into the 500–800 range.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Most Calculators Get Some Pals Wrong
&lt;/h2&gt;

&lt;p&gt;Older tools use pre-1.0 BP data. Palworld's 1.0 update shifted some values and added 40+ new Pals. If your calculator says Penking + Bushi = Relaxaurus instead of Anubis, it's running on old numbers.&lt;/p&gt;




&lt;p&gt;A static site calculator that loads all 266 BP values and computes results client-side:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pick any two parents → instant child prediction&lt;/li&gt;
&lt;li&gt;Covers all 35,000+ possible combinations&lt;/li&gt;
&lt;li&gt;Updated for Palworld 1.0&lt;/li&gt;
&lt;li&gt;Zero dependencies, runs entirely in the browser&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://palworldguides.com/breeding-calculator/?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=breeding-calculator-launch" rel="noopener noreferrer"&gt;palworldguides.com/breeding-calculator/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There's also a &lt;a href="https://palworldguides.com/breeding-finder/?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=breeding-calculator-launch" rel="noopener noreferrer"&gt;reverse finder&lt;/a&gt; if you want to pick the child first and see all parent combos ranked by difficulty.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Algorithm (JavaScript)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
javascript
function findChild(bpA, bpB, allPals) {
  const avg = (bpA + bpB) / 2;
  let best = allPals[0];
  let bestDist = Math.abs(best.bp - avg);

  for (const pal of allPals) {
    const dist = Math.abs(pal.bp - avg);
    if (dist &amp;lt; bestDist) {
      best = pal;
      bestDist = dist;
    }
  }
  return best;
}

O(n) per lookup, instant in the browser for 266 Pals.

---
Fun weekend project. Happy to answer questions if anyone's building something similar.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>palworld</category>
      <category>gaming</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>I Reversed Palworld's Breeding Formula — Here's a Free 35K+ Combo Finder</title>
      <dc:creator>Dingiu Liao</dc:creator>
      <pubDate>Tue, 28 Jul 2026 13:21:29 +0000</pubDate>
      <link>https://dev.to/alex_liao/i-reversed-palworlds-breeding-formula-heres-a-free-35k-combo-finder-4m49</link>
      <guid>https://dev.to/alex_liao/i-reversed-palworlds-breeding-formula-heres-a-free-35k-combo-finder-4m49</guid>
      <description>&lt;p&gt;Most Palworld breeding tools work the same way: pick two parents → get the child.&lt;/p&gt;

&lt;p&gt;But that's not how anyone actually thinks when planning breeds. You don't wake up wondering "what happens if I breed Penking with Bushi." You think "I need Anubis for my base — how do I get one?"&lt;/p&gt;

&lt;p&gt;So I built a tool that reverses the logic.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;Every Pal has a hidden stat called &lt;strong&gt;Breeding Power&lt;/strong&gt; (BP), from 1 to 1500. When you breed two Pals, the game averages their BPs and picks the closest match. That's the child.&lt;/p&gt;

&lt;p&gt;| BP Range | Type | Examples |&lt;br&gt;
| 1000–1500 | Common early-game | Chikipi (1500), Lamball (1470) |&lt;br&gt;
| 300–1000 | Mid-game workers | Anubis (570), Penking (520) |&lt;br&gt;
| 1–300 | Legendaries / endgame | Jetragon (90), Frostallion (130) |&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Penking (520) + Bushi (640) = avg 580 → Anubis is 570. That's why that combo works.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Reverse Finder
&lt;/h2&gt;

&lt;p&gt;Instead of inputting parents and hoping for the right child, you just pick the Pal you &lt;strong&gt;want&lt;/strong&gt; and it shows every parent combo that produces it — ranked by how easy the parents are to catch.&lt;/p&gt;

&lt;p&gt;So for Anubis, instead of one result, you see all 300+ combinations. The easiest route (Penking + Bushi) is at the top. But if you've got other Pals sitting in your box, there's probably a combo that works.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Most Pals have &lt;strong&gt;dozens&lt;/strong&gt; of breeding paths — Anubis alone has over 300&lt;/li&gt;
&lt;li&gt;A pair of easy-to-catch common Pals often produces a rare mid-game Pal&lt;/li&gt;
&lt;li&gt;Legendaries are mostly unbreedable — Jetragon, Frostallion, Paladius, Necromus are genderless&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Celesdir&lt;/strong&gt; (new in 1.0) is one of only 2 Pals with Lumbering 4&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;p&gt;Built as a static site with vanilla JavaScript. The breeding engine computes ~35,000 combinations from a 266-Pal BP dataset and builds a reverse lookup index. No frameworks, no build step, just data + logic.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://palworldguides.com/breeding-finder/?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=breeding-finder-launch" rel="noopener noreferrer"&gt;palworldguides.com/breeding-finder/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Free, no signup, covers all 266 Pals. Would love feedback from anyone who tries it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>palworld</category>
      <category>gaming</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
