<?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: Korvus </title>
    <description>The latest articles on DEV Community by Korvus  (@korvus228).</description>
    <link>https://dev.to/korvus228</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%2F4090709%2F7ac67c37-bc29-486f-8c87-3b53def880a4.jpg</url>
      <title>DEV Community: Korvus </title>
      <link>https://dev.to/korvus228</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/korvus228"/>
    <language>en</language>
    <item>
      <title>Generate endless Roblox quests with AI (and cache them so it's cheap)</title>
      <dc:creator>Korvus </dc:creator>
      <pubDate>Sun, 23 Aug 2026 12:17:03 +0000</pubDate>
      <link>https://dev.to/korvus228/generate-endless-roblox-quests-with-ai-and-cache-them-so-its-cheap-3cj6</link>
      <guid>https://dev.to/korvus228/generate-endless-roblox-quests-with-ai-and-cache-them-so-its-cheap-3cj6</guid>
      <description>&lt;p&gt;Hand-written quests run out. Players finish your content faster than you can write it, and the tenth "collect 10 wolf pelts" quest feels like filler. You can generate quests on the fly instead — tuned to the player and the place.&lt;/p&gt;

&lt;h2&gt;
  
  
  One request
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight lua"&gt;&lt;code&gt;&lt;span class="kd"&gt;local&lt;/span&gt; &lt;span class="n"&gt;Cortex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;game&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ServerStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Cortex&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;local&lt;/span&gt; &lt;span class="n"&gt;ai&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Cortex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"YOUR_KEY"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="kd"&gt;local&lt;/span&gt; &lt;span class="n"&gt;quest&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ai&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;ask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s2"&gt;"Give one short side-quest for a forest zone, player level 5. One sentence."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s2"&gt;"player just entered the forest"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;quest&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;--&amp;gt; "Find the woodcutter who vanished near the old mill before nightfall."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same pattern generates item names, descriptions, and lore.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cache the world, not the player
&lt;/h2&gt;

&lt;p&gt;World-gen content (an item's description, a location's lore) is generated &lt;strong&gt;once&lt;/strong&gt; and then it's fixed — so cache it and never pay for it again. With &lt;a href="https://cortex-rbx.github.io" rel="noopener noreferrer"&gt;Cortex&lt;/a&gt;, cached repeats are free and you're billed on output tokens only, so a world full of generated flavor text costs almost nothing. Pay in Robux, key stays server-side.&lt;/p&gt;

&lt;p&gt;Free beta + open-source kit: &lt;a href="https://github.com/cortex-rbx/roblox-ai-kit" rel="noopener noreferrer"&gt;https://github.com/cortex-rbx/roblox-ai-kit&lt;/a&gt; · demo: &lt;a href="https://cortex-rbx.github.io" rel="noopener noreferrer"&gt;https://cortex-rbx.github.io&lt;/a&gt;&lt;/p&gt;

</description>
      <category>roblox</category>
      <category>gamedev</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>AI chat moderation in Roblox — by meaning, not a word list</title>
      <dc:creator>Korvus </dc:creator>
      <pubDate>Sun, 23 Aug 2026 12:16:33 +0000</pubDate>
      <link>https://dev.to/korvus228/ai-chat-moderation-in-roblox-by-meaning-not-a-word-list-5pk</link>
      <guid>https://dev.to/korvus228/ai-chat-moderation-in-roblox-by-meaning-not-a-word-list-5pk</guid>
      <description>&lt;p&gt;Word-list chat filters break the moment someone types &lt;code&gt;a s s a s s i n&lt;/code&gt; with spaces, or a slur spelled with a &lt;code&gt;0&lt;/code&gt;, or a perfectly innocent word that happens to contain a banned substring. You end up in an endless arms race patching your blocklist.&lt;/p&gt;

&lt;p&gt;An AI model reads the &lt;strong&gt;meaning&lt;/strong&gt; of a message, so it catches obfuscated toxicity and stops false-flagging harmless phrases.&lt;/p&gt;

&lt;h2&gt;
  
  
  One server-side call
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight lua"&gt;&lt;code&gt;&lt;span class="kd"&gt;local&lt;/span&gt; &lt;span class="n"&gt;Cortex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;game&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ServerStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Cortex&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;local&lt;/span&gt; &lt;span class="n"&gt;ai&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Cortex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"YOUR_KEY"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="kd"&gt;local&lt;/span&gt; &lt;span class="n"&gt;verdict&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ai&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;ask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s2"&gt;"You moderate a kids' game chat. Reply with exactly one word: SAFE or BLOCK."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;message&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;verdict&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;"BLOCK"&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
    &lt;span class="c1"&gt;-- don't send it&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The reply is one word, so it's cheap: with &lt;a href="https://cortex-rbx.github.io" rel="noopener noreferrer"&gt;Cortex&lt;/a&gt; you're billed on &lt;strong&gt;output tokens only&lt;/strong&gt;, and repeated messages are served from cache for free — so moderating your whole chat costs a fraction of a Robux. You pay in Robux, no credit card, and the key stays server-side.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Give the model your game's context ("kids' game", "PvP trash-talk is fine") so it matches your tolerance.&lt;/li&gt;
&lt;li&gt;Cache identical messages — spammers repeat themselves.&lt;/li&gt;
&lt;li&gt;Log &lt;code&gt;BLOCK&lt;/code&gt; verdicts so you can tune the prompt.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Free open beta and open-source kit: &lt;a href="https://github.com/cortex-rbx/roblox-ai-kit" rel="noopener noreferrer"&gt;https://github.com/cortex-rbx/roblox-ai-kit&lt;/a&gt; · demo: &lt;a href="https://cortex-rbx.github.io" rel="noopener noreferrer"&gt;https://cortex-rbx.github.io&lt;/a&gt;&lt;/p&gt;

</description>
      <category>roblox</category>
      <category>gamedev</category>
      <category>ai</category>
      <category>moderation</category>
    </item>
    <item>
      <title>Add AI-powered talking NPCs to your Roblox game (one server request)</title>
      <dc:creator>Korvus </dc:creator>
      <pubDate>Sun, 23 Aug 2026 11:57:42 +0000</pubDate>
      <link>https://dev.to/korvus228/add-ai-powered-talking-npcs-to-your-roblox-game-one-server-request-28gk</link>
      <guid>https://dev.to/korvus228/add-ai-powered-talking-npcs-to-your-roblox-game-one-server-request-28gk</guid>
      <description>&lt;p&gt;Static dialogue trees get old the second a player types something you&lt;br&gt;
  didn't predict. Here's how to give any Roblox NPC a real brain — one that&lt;br&gt;
  answers &lt;em&gt;in character&lt;/em&gt; to whatever the player actually writes — with a&lt;br&gt;
  single server-side request.&lt;/p&gt;

&lt;p&gt;## The idea&lt;/p&gt;

&lt;p&gt;If you put an API key in a &lt;code&gt;LocalScript&lt;/code&gt;, it ships to every player and&lt;br&gt;
  gets scraped in minutes. Every AI call must go from a &lt;strong&gt;server&lt;/strong&gt; Script,&lt;br&gt;
  and you must enable &lt;strong&gt;Game Settings → Security → Allow HTTP Requests&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;## One request&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
lua
  local HttpService = game:GetService("HttpService")

  local function ask(personality, playerMessage)
      local body = HttpService:JSONEncode({ system = personality, text =
  playerMessage })
      local res = HttpService:PostAsync("YOUR_AI_ENDPOINT", body)
      return HttpService:JSONDecode(res).text
  end

  print(ask("You are a gruff dwarven blacksmith. One short in-character
  line.",
            "can you forge me a sword?"))
  --&amp;gt; "Aye — hand over the ore and I'll hammer ye a blade."

  Swap the personality string and you have a merchant who haggles, a guard
  who warns you off, a priest who blesses you.

  Paying for it without a credit card

  Roblox devs earn Robux, not dollars, and plenty don't have a card to hand
  to OpenAI. So I built Cortex (https://cortex-rbx.github.io) — the same
  one-request idea, but you pay in Robux, the key stays server-side, and
  you're billed on output tokens only (the system prompt, memory and
  history you resend every call are free, and repeated lines are cached
  free — NPCs say a lot of similar things).

  local Cortex = require(game.ServerStorage.Cortex)
  local ai = Cortex.new("YOUR_KEY")
  print(ai:ask("You are a gruff blacksmith. One short line.", "forge me a
  sword?"))

  It's not just dialogue

  - Adaptive quests tuned to the player's level and story
  - Item names, descriptions and lore generated once and cached
  - Chat moderation by meaning (SAFE / BLOCK) — catches intent word-lists
  miss
  - An in-game assistant that explains a mechanic in words that fit the
  moment

  Try it

  - Live demo (a real model, not a scripted reply):
  https://cortex-rbx.github.io
  - Free open-source kit: https://github.com/cortex-rbx/roblox-ai-kit
  - Free beta key: https://discord.gg/A3MSqwkvn7

  Open beta, free right now. Would love feedback on the API and what you'd
  want your NPCs to say.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>ai</category>
      <category>roblox</category>
      <category>gamedev</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
