<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AI - Phoenix Game Development</title>
	<atom:link href="https://phoenixgamedevelopment.com/blog/category/ai/feed/" rel="self" type="application/rss+xml" />
	<link>https://phoenixgamedevelopment.com/blog</link>
	<description>Developing Games, AI, and More!</description>
	<lastBuildDate>Sat, 14 Mar 2026 19:24:44 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.2</generator>

<image>
	<url>https://phoenixgamedevelopment.com/blog/wp-content/uploads/2024/10/grid-0061-300x300.png</url>
	<title>AI - Phoenix Game Development</title>
	<link>https://phoenixgamedevelopment.com/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>WAN Video And Phantom 14B in ComfyUI Issues</title>
		<link>https://phoenixgamedevelopment.com/blog/wan-video-and-phantom-14b-in-comfyui-errors-and-solutions/</link>
					<comments>https://phoenixgamedevelopment.com/blog/wan-video-and-phantom-14b-in-comfyui-errors-and-solutions/#respond</comments>
		
		<dc:creator><![CDATA[PhoenixGames]]></dc:creator>
		<pubDate>Sat, 14 Mar 2026 19:16:37 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://phoenixgamedevelopment.com/blog/?p=11469</guid>

					<description><![CDATA[<p><img data-tf-not-load="1" fetchpriority="high" loading="auto" decoding="auto" width="512" height="512" src="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2026/03/00912-1099362042.png" class="attachment-full size-full wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2026/03/00912-1099362042.png 512w, https://phoenixgamedevelopment.com/blog/wp-content/uploads/2026/03/00912-1099362042-300x300.png 300w" sizes="(max-width: 512px) 100vw, 512px" /></p><p>I have recently been working with WAN 2.2 for AI video generation in comfyui. One of the workflows that I experimented with was the Phantom Wan 14B Workflow that is included in comfyui as a default template. However, I had two issues with this workflow. Firstly, when the &#8220;base_precision&#8221; is set to the default of [&#8230;]</p>
<p>The post <a href="https://phoenixgamedevelopment.com/blog/wan-video-and-phantom-14b-in-comfyui-errors-and-solutions/">WAN Video And Phantom 14B in ComfyUI Issues</a> first appeared on <a href="https://phoenixgamedevelopment.com/blog">Phoenix Game Development</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><img data-tf-not-load="1" width="512" height="512" src="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2026/03/00912-1099362042.png" class="attachment-full size-full wp-post-image" alt="" decoding="async" srcset="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2026/03/00912-1099362042.png 512w, https://phoenixgamedevelopment.com/blog/wp-content/uploads/2026/03/00912-1099362042-300x300.png 300w" sizes="(max-width: 512px) 100vw, 512px" /></p><p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fwan-video-and-phantom-14b-in-comfyui-errors-and-solutions%2F&amp;linkname=WAN%20Video%20And%20Phantom%2014B%20in%20ComfyUI%20Issues" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fwan-video-and-phantom-14b-in-comfyui-errors-and-solutions%2F&amp;linkname=WAN%20Video%20And%20Phantom%2014B%20in%20ComfyUI%20Issues" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fwan-video-and-phantom-14b-in-comfyui-errors-and-solutions%2F&amp;linkname=WAN%20Video%20And%20Phantom%2014B%20in%20ComfyUI%20Issues" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fwan-video-and-phantom-14b-in-comfyui-errors-and-solutions%2F&amp;linkname=WAN%20Video%20And%20Phantom%2014B%20in%20ComfyUI%20Issues" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fwan-video-and-phantom-14b-in-comfyui-errors-and-solutions%2F&amp;linkname=WAN%20Video%20And%20Phantom%2014B%20in%20ComfyUI%20Issues" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fwan-video-and-phantom-14b-in-comfyui-errors-and-solutions%2F&amp;linkname=WAN%20Video%20And%20Phantom%2014B%20in%20ComfyUI%20Issues" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fwan-video-and-phantom-14b-in-comfyui-errors-and-solutions%2F&#038;title=WAN%20Video%20And%20Phantom%2014B%20in%20ComfyUI%20Issues" data-a2a-url="https://phoenixgamedevelopment.com/blog/wan-video-and-phantom-14b-in-comfyui-errors-and-solutions/" data-a2a-title="WAN Video And Phantom 14B in ComfyUI Issues"></a></p>
<p>I have recently been working with WAN 2.2 for AI video generation in comfyui. </p>



<p>One of the workflows that I experimented with was the Phantom Wan 14B Workflow that is included in comfyui as a default template.</p>



<p>However, I had two issues with this workflow.</p>



<p>Firstly, when the &#8220;base_precision&#8221; is set to the default of &#8220;fp16_fast&#8221; I get the following error:</p>



<h3 class="wp-block-heading has-background" style="background-color:#dedede;font-style:italic;font-weight:700">WanVideoModelLoader</h3>



<p class="has-background" style="background-color:#dedede;font-style:italic;font-weight:400">torch.backends.cuda.matmul.allow_fp16_accumulation is not available in this version of torch, requires torch 2.7.0.dev2025 02 26 nightly minimum currently</p>



<p>This can be easily fixed by setting the base_precision to &#8220;fp16&#8221;</p>



<p>However, I then ran into another issue, which took several hours to solve. This issue was coming from the WanVideo Sampler:</p>



<h3 class="wp-block-heading has-background" style="background-color:#dedede;font-style:italic;font-weight:700">WanVideoSampler</h3>



<p class="has-background" style="background-color:#dedede;font-style:italic;font-weight:400">must be called with a dataclass type or instance</p>



<p>After updating comfyui UI, Cuda, and verifying that my pytorch versions were compatible, I was eventually (With the help of chatGPT) able to figure out that the issue was with the &#8220;WanVideo Torch Compile Settings&#8221; node included in the default workflow.</p>



<p>When I bypassed this, the Phantom 14B Workflow worked fine.</p>



<p>I am making this post in the hopes that this might help save someone else some time, I couldn&#8217;t find any users with a similar issue online.</p>



<p></p>



<p></p>




<!-- wp:themify-builder/canvas /--><p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fwan-video-and-phantom-14b-in-comfyui-errors-and-solutions%2F&amp;linkname=WAN%20Video%20And%20Phantom%2014B%20in%20ComfyUI%20Issues" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fwan-video-and-phantom-14b-in-comfyui-errors-and-solutions%2F&amp;linkname=WAN%20Video%20And%20Phantom%2014B%20in%20ComfyUI%20Issues" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fwan-video-and-phantom-14b-in-comfyui-errors-and-solutions%2F&amp;linkname=WAN%20Video%20And%20Phantom%2014B%20in%20ComfyUI%20Issues" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fwan-video-and-phantom-14b-in-comfyui-errors-and-solutions%2F&amp;linkname=WAN%20Video%20And%20Phantom%2014B%20in%20ComfyUI%20Issues" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fwan-video-and-phantom-14b-in-comfyui-errors-and-solutions%2F&amp;linkname=WAN%20Video%20And%20Phantom%2014B%20in%20ComfyUI%20Issues" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fwan-video-and-phantom-14b-in-comfyui-errors-and-solutions%2F&amp;linkname=WAN%20Video%20And%20Phantom%2014B%20in%20ComfyUI%20Issues" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fwan-video-and-phantom-14b-in-comfyui-errors-and-solutions%2F&#038;title=WAN%20Video%20And%20Phantom%2014B%20in%20ComfyUI%20Issues" data-a2a-url="https://phoenixgamedevelopment.com/blog/wan-video-and-phantom-14b-in-comfyui-errors-and-solutions/" data-a2a-title="WAN Video And Phantom 14B in ComfyUI Issues"></a></p><p>The post <a href="https://phoenixgamedevelopment.com/blog/wan-video-and-phantom-14b-in-comfyui-errors-and-solutions/">WAN Video And Phantom 14B in ComfyUI Issues</a> first appeared on <a href="https://phoenixgamedevelopment.com/blog">Phoenix Game Development</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://phoenixgamedevelopment.com/blog/wan-video-and-phantom-14b-in-comfyui-errors-and-solutions/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SillyTavern Extension: Weather Checker</title>
		<link>https://phoenixgamedevelopment.com/blog/sillytavern-extension-weather-checker/</link>
					<comments>https://phoenixgamedevelopment.com/blog/sillytavern-extension-weather-checker/#respond</comments>
		
		<dc:creator><![CDATA[PhoenixGames]]></dc:creator>
		<pubDate>Sun, 12 Oct 2025 13:43:19 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://phoenixgamedevelopment.com/blog/?p=11244</guid>

					<description><![CDATA[<p><img loading="lazy" width="512" height="512" src="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/10/00799-1298771986.png" class="attachment-full size-full wp-post-image" alt="" decoding="async" srcset="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/10/00799-1298771986.png 512w, https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/10/00799-1298771986-300x300.png 300w" sizes="(max-width: 512px) 100vw, 512px" /></p><p>I have created another extension for SillyTavern. This extension uses the &#8220;OpenMeteo&#8221; open source weather API. I have previously tried the &#8220;Accuweather&#8221; plugin for SillyTavern, but this didn&#8217;t work for me, it did not return any results. I did manage to get the WebSearch plugin working, and this can be used to generate weather reports/forecasts [&#8230;]</p>
<p>The post <a href="https://phoenixgamedevelopment.com/blog/sillytavern-extension-weather-checker/">SillyTavern Extension: Weather Checker</a> first appeared on <a href="https://phoenixgamedevelopment.com/blog">Phoenix Game Development</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" width="512" height="512" src="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/10/00799-1298771986.png" class="attachment-full size-full wp-post-image" alt="" decoding="async" srcset="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/10/00799-1298771986.png 512w, https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/10/00799-1298771986-300x300.png 300w" sizes="(max-width: 512px) 100vw, 512px" /></p><p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-weather-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Weather%20Checker" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-weather-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Weather%20Checker" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-weather-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Weather%20Checker" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-weather-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Weather%20Checker" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-weather-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Weather%20Checker" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-weather-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Weather%20Checker" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-weather-checker%2F&#038;title=SillyTavern%20Extension%3A%20Weather%20Checker" data-a2a-url="https://phoenixgamedevelopment.com/blog/sillytavern-extension-weather-checker/" data-a2a-title="SillyTavern Extension: Weather Checker"></a></p>
<p>I have created another extension for SillyTavern. </p>



<p>This extension uses the &#8220;<a href="https://open-meteo.com/" title="">OpenMeteo</a>&#8221; open source weather API.</p>



<p>I have previously tried the &#8220;Accuweather&#8221; plugin for SillyTavern, but this didn&#8217;t work for me, it did not return any results. I did manage to get the WebSearch plugin working, and this can be used to generate weather reports/forecasts in SillyTavern, but the formatting is inconsistent, and I found this to be a poor solution.</p>



<p>My solution using OpenMeteo works well and produces easily understood and correctly formatted output, in the following form:<br></p>



<p>The following content is weather data starting from today:</p>



<p>Coordinates: &lt;REMOVED><br>Timezone: Europe/London GMT+1</p>



<p><em>12/10/25 Overcast<br>13/10/25 Light Drizzle<br>14/10/25 Overcast<br>15/10/25 Overcast<br>16/10/25 Overcast<br>17/10/25 Overcast<br>18/10/25 Light Drizzle<br>19/10/25 Light Drizzle<br>20/10/25 Overcast<br>21/10/25 Light Drizzle<br>22/10/25 Light Drizzle<br>23/10/25 Light Drizzle<br>24/10/25 Overcast<br>25/10/25 Moderate Drizzle<br>26/10/25 Overcast<br>27/10/25 Moderate Drizzle<br>[WEATHERDATA]</em></p>



<p>Currently, the extension only displays a 16 day weather forecast with a human-readable weather code, as shown above, however it is very easy to improve this to display any desired data. OpenMeteo has a very large amount of data available, including rainfall, temperature, wind speed, sunset/sunrise times, etc, etc.</p>



<p>I haven&#8217;t added this extension to github yet, so I will just post the code here. This code is based on my earlier <a href="https://phoenixgamedevelopment.com/blog/sillytavern-extension-email-checker/" title="">Email Checker extension</a>. </p>



<p>You will need to do an NPM install for openmeteo to make this code work.</p>



<p>You will also need to enter your latitude and longitude in the &#8220;const params&#8221; section of the server script below.</p>



<p>In addition, </p>



<p>On the server, add this at the top of index.js:</p>



<p></p>



<pre class="wp-block-code"><code>const { fetchWeatherApi } = require('openmeteo');</code></pre>



<p>Then, to access the API:</p>



<pre class="wp-block-code"><code>async function fetchweather(ws)
{

const params = {
	"latitude": &lt;ENTER LATITUDE HERE>
	"longitude": &lt;ENTER LONGITUDE HERE>
	"daily": "weather_code",
	"timezone": "Europe/London",
	"forecast_days": 16,
};
const url = "https://api.open-meteo.com/v1/forecast";
const responses = await fetchWeatherApi(url, params);
  
// Process first location. Add a for-loop for multiple locations or weather models
const response = responses&#91;0];

// Attributes for timezone and location
const latitude = response.latitude();
const longitude = response.longitude();
const elevation = response.elevation();
const timezone = response.timezone();
const timezoneAbbreviation = response.timezoneAbbreviation();
const utcOffsetSeconds = response.utcOffsetSeconds();

var retdta = "";

console.log(
	`\nCoordinates: ${latitude}°N ${longitude}°E`,
	`\nElevation: ${elevation}m asl`,
	`\nTimezone: ${timezone} ${timezoneAbbreviation}`,
	`\nTimezone difference to GMT+0: ${utcOffsetSeconds}s`,
);

retdta += 
	`\nCoordinates: ${latitude}°N ${longitude}°E` +	
	`\nTimezone: ${timezone} ${timezoneAbbreviation}` + "\n\n";
	
const daily = response.daily();

// Setup
const startTime = Number(daily.time());
const endTime = Number(daily.timeEnd());
const interval = daily.interval();
const weatherCodes = daily.variables(0).valuesArray();

const timeArray = &#91;];

for (let i = 0, timestamp = startTime; timestamp &lt; endTime; i++, timestamp += interval) {
	const date = new Date((timestamp + utcOffsetSeconds) * 1000);

	// Format as DD/MM/YY
	const day = String(date.getDate()).padStart(2, '0');
	const month = String(date.getMonth() + 1).padStart(2, '0'); // Months are 0-indexed
	const year = String(date.getFullYear()).slice(-2); // Get last two digits
	
	const weatherCode = parseInt(weatherCodes&#91;i], 10);
	const weathercodetext = getweathercodetext(weatherCode);

	// Combine with weather code
	console.log(day + "/" + month + "/" + year + " " + weatherCode + " " + weathercodetext);
	retdta += day + "/" + month + "/" + year + " " + weathercodetext + "\n";
	timeArray.push(`${day}/${month}/${year} - ${weatherCode}`)
}

retdta+= "&#91;WEATHERDATA]";
ws.send(retdta);

const weatherData = {
	daily: {
		time: timeArray,
		weather_code: weatherCodes,
	},
};

}

function getweathercodetext(weathercode)
{
var ret = "";
 switch(weathercode) {
        case 0:
           ret = "Fair";//"Clear Sky";
            break;

        case 1:
           ret = "Mainly Clear";
            break;

                case 2:
           ret = "Partly Cloudy";
            break;  
 
                case 3:
           ret = "Overcast";
            break;  

                case 45:
           ret = "Fog";
            break;  

                case 48:
           ret = "Depositing Rime Fog";
            break;  

               case 51:
           ret = "Light Drizzle";
            break;  

              case 53:
           ret = "Moderate Drizzle";
            break;  

       case 55:
           ret = "Dense Drizzle";
            break;  

       case 56:
           ret = "Light Freezing Drizzle";
            break;  

       case 57:
           ret = "Dense Freezing Drizzle";
            break;  

     case 61:
           ret = "Light Rain";
            break;  

     case 63:
           ret = "Moderate Rain";
            break;  

    case 65:
           ret = "Heavy Rain";
            break; 

    case 66:
           ret = "Light Freezing Rain";
            break; 

    case 67:
           ret = "Heavy Freezing Rain";
            break; 

    case 71:
           ret = "Slight Snow Fall";
            break; 

    case 73:
           ret = "Moderate Snow Fall";
            break; 

    case 75:
           ret = "Heavy Snow Fall";
            break; 

    case 77:
           ret = "Snow Grains";
            break; 

    case 80:
           ret = "Slight Rain Showers";
            break; 

   case 81:
           ret = "Moderate Rain Showers";
            break; 

   case 82:
           ret = "Violent Rain Showers";
            break; 

   case 85:
           ret = "Slight Snow Showers";
            break; 

   case 86:
           ret = "Heavy Rain Showers";
            break; 

   case 95:
           ret = "Slight or Moderate Thunderstorm";
            break; 

   case 96:
           ret = "Thunderstorm with Slight Hail";
            break; 

   case 99:
           ret = "Thunderstorm with Heavy Hail";
            break; 

        default:
        ret = "INVALID WEATHER CODE: " + weathercode;
           break;
    }
    console.log("getweathercodetext: " + weathercode + " "  + ret);
return ret;
}</code></pre>



<p>Then, on the client, use this function to display the weather data:</p>



<pre class="wp-block-code"><code>async function printweatherdata(txt){
	   const context = getContext();
	
	   if(txt == "STARTUPMESSAGE")
	  	 return;	   

   console.log("printweatherdata:" + txt);
   context.executeSlashCommands('/reasoning-set The following content is weather data starting from today:\n ' + txt + ' ').pipe
}
</code></pre>



<p></p>




<!-- wp:themify-builder/canvas /-->


<p></p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-weather-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Weather%20Checker" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-weather-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Weather%20Checker" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-weather-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Weather%20Checker" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-weather-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Weather%20Checker" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-weather-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Weather%20Checker" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-weather-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Weather%20Checker" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-weather-checker%2F&#038;title=SillyTavern%20Extension%3A%20Weather%20Checker" data-a2a-url="https://phoenixgamedevelopment.com/blog/sillytavern-extension-weather-checker/" data-a2a-title="SillyTavern Extension: Weather Checker"></a></p><p>The post <a href="https://phoenixgamedevelopment.com/blog/sillytavern-extension-weather-checker/">SillyTavern Extension: Weather Checker</a> first appeared on <a href="https://phoenixgamedevelopment.com/blog">Phoenix Game Development</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://phoenixgamedevelopment.com/blog/sillytavern-extension-weather-checker/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SillyTavern Extension: Email Checker</title>
		<link>https://phoenixgamedevelopment.com/blog/sillytavern-extension-email-checker/</link>
					<comments>https://phoenixgamedevelopment.com/blog/sillytavern-extension-email-checker/#comments</comments>
		
		<dc:creator><![CDATA[PhoenixGames]]></dc:creator>
		<pubDate>Wed, 24 Sep 2025 18:16:26 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://phoenixgamedevelopment.com/blog/?p=11216</guid>

					<description><![CDATA[<p><img loading="lazy" width="512" height="512" src="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/09/00765-1207762269.png" class="attachment-full size-full wp-post-image" alt="" decoding="async" srcset="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/09/00765-1207762269.png 512w, https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/09/00765-1207762269-300x300.png 300w" sizes="(max-width: 512px) 100vw, 512px" /></p><p>I have completed the first release of my SillyTaven Extension. The purpose of the extension is simply to connect to a users email inbox and retrieve the most recent number of emails specified by the user. I am not hugely experienced in nodeJS/javascript, or with SillyTavern extensions, so the code might be a little rough, [&#8230;]</p>
<p>The post <a href="https://phoenixgamedevelopment.com/blog/sillytavern-extension-email-checker/">SillyTavern Extension: Email Checker</a> first appeared on <a href="https://phoenixgamedevelopment.com/blog">Phoenix Game Development</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" width="512" height="512" src="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/09/00765-1207762269.png" class="attachment-full size-full wp-post-image" alt="" decoding="async" srcset="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/09/00765-1207762269.png 512w, https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/09/00765-1207762269-300x300.png 300w" sizes="(max-width: 512px) 100vw, 512px" /></p><p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-email-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Email%20Checker" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-email-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Email%20Checker" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-email-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Email%20Checker" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-email-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Email%20Checker" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-email-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Email%20Checker" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-email-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Email%20Checker" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-email-checker%2F&#038;title=SillyTavern%20Extension%3A%20Email%20Checker" data-a2a-url="https://phoenixgamedevelopment.com/blog/sillytavern-extension-email-checker/" data-a2a-title="SillyTavern Extension: Email Checker"></a></p>
<p>I have completed the first release of my SillyTaven Extension.</p>



<p>The purpose of the extension is simply to connect to a users email inbox and retrieve the most recent number of emails specified by the user.</p>



<p>I am not hugely experienced in nodeJS/javascript, or with SillyTavern extensions, so the code might be a little rough, but I didn&#8217;t see any other extension out there that does this, and I needed this functionality for my own purposes, so I thought I would release it to the community as well.</p>



<p>I intend to add more features in the future, such as the ability to search for specific emails, (By sender, date, search string, etc).</p>



<p>The extension implements a simple websocket server, and uses imapflow to get the emails.</p>



<p>Due to how github works, I had to upload the client and server folders separately.<br><br>The server folder is <a href="https://github.com/PhoenixGameDevelopment/SillyTavern-EmailChecker-Server" title="">HERE</a>, and the client folder is <a href="https://github.com/PhoenixGameDevelopment/SillyTavern-EmailChecker-Client" title="">HERE</a>.</p>



<p>The readme is below (The readme is also on the github page).</p>



<p>&#8211;</p>



<p>ST-EmailChecker is a simple client/server extension for SillyTavern that allows an LLM to connect to a user&#8217;s inbox and download the most recent emails to the LLM.</p>



<p>The emails are stripped of HTML and hyperlinks (Only the message body is returned) and the emails are added to the LLM as &#8220;reasoning&#8221; (Using reasoning-set). This prevents large blocks of text from spamming the chat window.</p>



<p>The purpose of this extension is to allow an LLM to function as a digital assistant/secretary, checking for important emails, drafting replies, summarising, etc, etc.</p>



<p>In the future, I may add the ability to search for specific strings in emails, or for emails from specific people, search for only unread emails, etc.</p>



<p>If the emails appear to be truncated in SillyTavern, make sure that your &#8220;Response (Tokens)&#8221; is set high enough in AI response configuration.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>Usage:</p>



<p>Download the code (You will need both the SERVER and CLIENT repos).</p>



<p>You should have two folders:</p>



<p>emailcheckerserver_git<br>emailcheckerclient_git</p>



<p>Place BOTH of these folders in your SillyTavern/data/default-user/extensions/ directory.</p>



<p>Open the folder &#8220;emailcheckerserver_git&#8221;.</p>



<p>At the top of the script, you will need to set the hostname, username, and password for your email account.</p>



<p>Now, run:</p>



<p>Node index.js in a command window.</p>



<p>You may need to run:</p>



<p>npm install imapflow</p>



<p>When successful, you should see:</p>



<p>EmailReader: Server Module Loaded Server started on port 3000</p>



<p>Finally, in &#8220;emailcheckerclient_git&#8221;, set the IP address of your server at the top of the script.</p>



<p>If you are running sillytavenr locally, you do not need to do anything.</p>



<p>However, if you are connecting to a LAN server, enter the IP of the server in this script (Without the port).</p>



<p>The client will show up as an extension in sillytavern as &#8220;Email Checker&#8221;.</p>



<p>To use, simply click on the down arrow next to &#8220;Email Checker&#8221;, set the number of emails you wish to return, and click &#8220;Run Email Check&#8221;.</p>



<p>For any questions or comments, I can be contacted at:</p>



<p><a href="mailto:contact@phoenixgamedevelopment.com">contact@NOSPAM.phoenixgamedevelopment.com</a></p>



<p></p>



<p></p>




<!-- wp:themify-builder/canvas /--><p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-email-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Email%20Checker" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-email-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Email%20Checker" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-email-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Email%20Checker" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-email-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Email%20Checker" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-email-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Email%20Checker" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-email-checker%2F&amp;linkname=SillyTavern%20Extension%3A%20Email%20Checker" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fsillytavern-extension-email-checker%2F&#038;title=SillyTavern%20Extension%3A%20Email%20Checker" data-a2a-url="https://phoenixgamedevelopment.com/blog/sillytavern-extension-email-checker/" data-a2a-title="SillyTavern Extension: Email Checker"></a></p><p>The post <a href="https://phoenixgamedevelopment.com/blog/sillytavern-extension-email-checker/">SillyTavern Extension: Email Checker</a> first appeared on <a href="https://phoenixgamedevelopment.com/blog">Phoenix Game Development</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://phoenixgamedevelopment.com/blog/sillytavern-extension-email-checker/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Adventures in AI coding</title>
		<link>https://phoenixgamedevelopment.com/blog/adventures-in-ai-coding/</link>
					<comments>https://phoenixgamedevelopment.com/blog/adventures-in-ai-coding/#respond</comments>
		
		<dc:creator><![CDATA[PhoenixGames]]></dc:creator>
		<pubDate>Thu, 03 Jul 2025 07:16:59 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://phoenixgamedevelopment.com/blog/?p=11087</guid>

					<description><![CDATA[<p>I have spent about a day or so working on writing code with DeepSeek-V3-0324 (I am running the model locally. For information on how I setup this model, check out my post HERE). This is actually my first time experimenting with AI generated code, and the results were, in a word, spectacular. With very minimal [&#8230;]</p>
<p>The post <a href="https://phoenixgamedevelopment.com/blog/adventures-in-ai-coding/">Adventures in AI coding</a> first appeared on <a href="https://phoenixgamedevelopment.com/blog">Phoenix Game Development</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fadventures-in-ai-coding%2F&amp;linkname=Adventures%20in%20AI%20coding" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fadventures-in-ai-coding%2F&amp;linkname=Adventures%20in%20AI%20coding" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fadventures-in-ai-coding%2F&amp;linkname=Adventures%20in%20AI%20coding" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fadventures-in-ai-coding%2F&amp;linkname=Adventures%20in%20AI%20coding" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fadventures-in-ai-coding%2F&amp;linkname=Adventures%20in%20AI%20coding" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fadventures-in-ai-coding%2F&amp;linkname=Adventures%20in%20AI%20coding" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fadventures-in-ai-coding%2F&#038;title=Adventures%20in%20AI%20coding" data-a2a-url="https://phoenixgamedevelopment.com/blog/adventures-in-ai-coding/" data-a2a-title="Adventures in AI coding"></a></p>
<p>I have spent about a day or so working on writing code with DeepSeek-V3-0324 (I am running the model locally. For information on how I setup this model, check out my post <a href="https://phoenixgamedevelopment.com/blog/taming-the-beast-running-deepseek-v3-0324-locally/" title="">HERE</a>).</p>



<p>This is actually my first time experimenting with AI generated code, and the results were, in a word, spectacular.</p>



<p>With very minimal prompting, the AI was able to output quite complex and complete code, with very few issues or bugs.</p>



<p>I used the AI to generate a C# Forms application to display the Mandlebrot set, display a rotating 3D cube on the screen (A Tesseract), display a demo of Conway&#8217;s &#8220;Game Of Life&#8221; and it&#8217;s &#8220;Brians Brain&#8221; modification, as well as write a Base64-to-image converter.</p>



<p>All of these programs worked very well, and where issues occurred, I was able to quickly resolve them using plain english.</p>



<p>This is an example of the output for the first program, to display the Mandlebrot set. The query was:<br><br><em>&#8220;I would like you to write me a program in C# that displays the mandlebrot fractal set. The program should be as concise as possible, and should ideally use no external libraries, however it should display the fractal in colour on a gui.&#8221;</em></p>



<p>Output:</p>



<p><em>&#8220;I understand the requirements &#8211; a concise Mandelbrot fractal generator in C# using only built-in libraries while still producing a colored GUI output. This is an interesting challenge given the constraints.&#8221;</em></p>



<p><em>&#8220;Here&#8217;s a solution using Windows Forms (System.Drawing) which comes bundled with .NET, requiring no external dependencies:&#8221;</em></p>



<pre class="wp-block-code"><code>using System;
using System.Drawing;
using System.Windows.Forms;

class Mandelbrot : Form
{
    const int MaxIterations = 1000;
    const double Zoom = 300;

    public Mandelbrot()
    {
        Text = "Mandelbrot Set";
        ClientSize = new Size(800, 600);
        DoubleBuffered = true;

        Paint += (sender, e) =&gt;
        {
            for (int y = 0; y &lt; Height; y++)
            {
                for (int x = 0; x &lt; Width; x++)
                {
                    double zx = 0, zy = 0;
                    double cx = (x - Width/2) / Zoom;
                    double cy = (y - Height/2) / Zoom;
                    int iter = MaxIterations;

                    while (zx*zx + zy*zy &lt; 4 &amp;&amp; iter &gt; 0)
                    {
                        double tmp = zx*zx - zy*zy + cx;
                        zy = 2*zx*zy + cy;
                        zx = tmp;
                        iter--;
                    }

                    Color c = iter == 0 ? Color.Black : Color.FromArgb(
                        iter % 8 * 32,
                        iter % 16 * 16,
                        iter % 32 * 8);
                    e.Graphics.FillRectangle(new SolidBrush(c), x, y, 1, 1);
                }
            }
        };
    }

    static void Main()
    {
        Application.Run(new Mandelbrot());
    }
}</code></pre>



<p>&#8220;This implementation:</p>



<ol class="wp-block-list">
<li>Uses Windows Forms for the GUI</li>



<li>Implements the Mandelbrot algorithm directly</li>



<li>Colors points based on iteration count</li>



<li>Is completely self-contained (no NuGet packages needed)</li>



<li>Compiles to ~100KB executable</li>



<li>The zoom factor can be adjusted for different views&#8221;</li>
</ol>



<p><em>&#8220;Would you like me to explain any particular part in more detail? Or perhaps suggest optimizations or modifications?&#8221;&nbsp;</em></p>



<p>I then asked the AI for detailed instructions for how to run the code:</p>



<p><em>&#8220;Excellent, thank you. How can I run this code, do I just create a new blank project in visual studio?&#8221;</em></p>



<p>And the response that I get was equally intelligent:</p>



<p><em>&#8220;Yes! You have the right idea. Here&#8217;s a precise step-by-step guide:&#8221;</em></p>



<ol class="wp-block-list">
<li>Open Visual Studio</li>



<li>Create new project →&nbsp;<q>&#8220;Windows Forms App (.NET Framework)&#8221;</q>&nbsp;(Important: not .NET Core for this example)</li>



<li>Replace ALL code in&nbsp;<code>Form1.cs</code>&nbsp;with the Mandelbrot code I provided</li>



<li>Click the Start/Run button (or press F5)</li>
</ol>



<p>&#8220;Key technical notes:</p>



<ul class="wp-block-list">
<li>The code uses .NET Framework&#8217;s System.Drawing which isn&#8217;t available in .NET Core by default</li>



<li>The project template must be Windows Forms, not Console or WPF</li>



<li>No NuGet packages need to be installed</li>



<li>Compilation happens automatically when you run&#8221;</li>



<li></li>
</ul>



<p><em>&#8220;Would you like me to modify it for .NET Core if that&#8217;s your preference? Though we&#8217;d need to add a NuGet package for System.Drawing in that case. Or perhaps you&#8217;d enjoy seeing a real-time zoomable version?&#8221;</em><br><br>I needed to make some changes to the code in order to get it to run properly, and when I posted my finished, working, version of the code back to the AI, it was even able to suggest improvements:</p>



<p><em>&#8220;I see what you&#8217;ve done! You&#8217;ve:</em></p>



<ol class="wp-block-list">
<li>Created a proper Windows Forms project structure</li>



<li>Wrapped my Mandelbrot class inside the Form1 container</li>



<li>Commented out InitializeComponent() since we don&#8217;t need designer-generated code</li>



<li>Initiated the Mandelbrot form directly from Form1&#8217;s constructor&#8221;</li>
</ol>



<p><em>&#8220;Your changes are quite logical. Though may I suggest two slight optimizations to your version?&#8221;</em></p>



<pre class="wp-block-code"><code>// Instead of Application.Run inside Form1's constructor,
// modify Program.cs like this:
static class Program
{
    static void Main()
    {
        Application.Run(new Mandelbrot()); // Run Mandelbrot directly
    }
}

// And make Form1 empty or remove it entirely
</code></pre>



<p>&#8220;This would:</p>



<ol class="wp-block-list">
<li>Eliminate the unnecessary Form1 middleman</li>



<li>Follow Windows Forms conventions more closely</li>



<li>Prevent potential double-form issues</li>



<li>Make the project structure cleaner&#8221;</li>



<li></li>
</ol>



<p><em>&#8220;By the way, I notice you kept all the default using directives &#8211; would you like me to strip those down to just what we actually need? We could reduce it to just System, System.Drawing and System.Windows.Forms for better clarity. Three simple namespaces would suffice!&#8221;</em></p>



<p></p>



<p>This is very useful feedback, and the AI even successfully caught the unneeded &#8220;Using&#8221; directives, I have a having it leaving those in while debugging, having the AI suggest removing them is exactly what a human programmer would do!</p>



<p>The AI also suggested changes to the programs, such as the &#8220;Brians Brain&#8221; variant of Conway&#8217;s Game of Life, which I hadn&#8217;t even heard of! It then either modified the program with those changes in mind.</p>



<p>In one case, the changes became so numerous that the AI offered to completely rewrite the program to avoid confusion, which it duly did! </p>



<p>I am confident that I could have written the above programs myself, just relying on internet research and my own knowledge to help me, however, it would certainly have taken far longer. Working with the AI was a substantial time saver, it really was like having another person there to assist me with questions, even complex techical questions.</p>



<p>I am currently experimenting with using the AI to write a much more complex program, (I want to take the system audio and display an aesthetically pleasing visualisation of it on the screen) and this is going well, but it is a lot slower. I feel that with the more complex program the advantages of using AI to code are not as strong, I find that I can probably fix mistakes faster than waiting on the AI.</p>



<p>I think that this is a very important point to make regarding the use of generative AI in the workplace, and in society. Simple tasks (such as simple programs) can be easily offloaded to the AI, however when it comes to more complex tasks, much more human interaction is needed.</p>



<p>So, in the future, as AI becomes normalised in society, we could simply use AI for the menial tasks, freeing up valuable Human Resources for creative and complex tasks. The idea would be that instead of AI &#8220;replacing&#8221; humans, it is instead enabling humans to do what they do best: Create, Understand, and Produce, while the AI simple handles the simple boring time-wasting tasks.</p>



<p></p>



<p>I have uploaded some of the examples of the AI-Generated scripts to my github. To access the scripts, click on the links below. The Scripts are written in C# (.net).</p>



<p><a href="https://gist.github.com/PhoenixGameDevelopment/c02c59c2ef1cd3fe58a473e73ca91b72" title="">Displaying the Mandlebrot Set.</a></p>



<p><a href="https://gist.github.com/PhoenixGameDevelopment/086729be89c7ba861c026ca7edde24f2" title="">Displaying a rotating Tesseract.</a></p>



<p><a href="https://gist.github.com/PhoenixGameDevelopment/422de6c1c3686983ec7bebdb39611557" title="">Displaying Conways &#8220;Game of Life&#8221; (With speed controls and randomisation).</a></p>



<p><a href="https://gist.github.com/PhoenixGameDevelopment/a7143423f470ad32c85febe4107eea26" title="">Displaying the &#8220;Brian&#8217;s Brain&#8221; variant of Game of Life (With speed controls and randomisation).</a></p>



<p><a href="https://gist.github.com/PhoenixGameDevelopment/ad67433847e9b4060a40a345a648251b" title="">Displaying an image encoded into a Base64 string to the screen.</a></p>



<p></p>



<p></p>



<figure class="wp-block-image"><a href="https://i.imgur.com/x2kXWKO.jpeg"><img loading="lazy" decoding="async" src="https://i.imgur.com/x2kXWKO.jpeg" alt="" title="source: imgur.com"/></a></figure>
<figure class="wp-block-image"><a href="https://i.imgur.com/tDpMjfU.jpeg"><img loading="lazy" decoding="async" src="https://i.imgur.com/tDpMjfU.jpeg" alt="" title="source: imgur.com"/></a></figure>
<figure class="wp-block-image"><a href="https://i.imgur.com/vmQSEaY.jpeg"><img loading="lazy" decoding="async" src="https://i.imgur.com/vmQSEaY.jpeg" alt="" title="source: imgur.com"/></a></figure>


<!-- wp:themify-builder/canvas /--><p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fadventures-in-ai-coding%2F&amp;linkname=Adventures%20in%20AI%20coding" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fadventures-in-ai-coding%2F&amp;linkname=Adventures%20in%20AI%20coding" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fadventures-in-ai-coding%2F&amp;linkname=Adventures%20in%20AI%20coding" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fadventures-in-ai-coding%2F&amp;linkname=Adventures%20in%20AI%20coding" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fadventures-in-ai-coding%2F&amp;linkname=Adventures%20in%20AI%20coding" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fadventures-in-ai-coding%2F&amp;linkname=Adventures%20in%20AI%20coding" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fadventures-in-ai-coding%2F&#038;title=Adventures%20in%20AI%20coding" data-a2a-url="https://phoenixgamedevelopment.com/blog/adventures-in-ai-coding/" data-a2a-title="Adventures in AI coding"></a></p><p>The post <a href="https://phoenixgamedevelopment.com/blog/adventures-in-ai-coding/">Adventures in AI coding</a> first appeared on <a href="https://phoenixgamedevelopment.com/blog">Phoenix Game Development</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://phoenixgamedevelopment.com/blog/adventures-in-ai-coding/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Taming the Beast: Running DeepSeek V3-0324 Locally</title>
		<link>https://phoenixgamedevelopment.com/blog/taming-the-beast-running-deepseek-v3-0324-locally/</link>
					<comments>https://phoenixgamedevelopment.com/blog/taming-the-beast-running-deepseek-v3-0324-locally/#comments</comments>
		
		<dc:creator><![CDATA[PhoenixGames]]></dc:creator>
		<pubDate>Mon, 16 Jun 2025 05:56:42 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://phoenixgamedevelopment.com/blog/?p=11040</guid>

					<description><![CDATA[<p><img loading="lazy" width="512" height="512" src="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/06/00391-944186036.png" class="attachment-full size-full wp-post-image" alt="" decoding="async" srcset="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/06/00391-944186036.png 512w, https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/06/00391-944186036-300x300.png 300w" sizes="(max-width: 512px) 100vw, 512px" /></p><p>After hearing good things about this model, I tried, and succeeded, in getting it to run locally. For those unaware, DeepSeek V3-0324 isn LLM developed by the Chinese Based Company DeepSeek. The V3 variant is a chat model, as opposed to, for example, R1, which is intended more for reasoning. The GGUF Q8 version of [&#8230;]</p>
<p>The post <a href="https://phoenixgamedevelopment.com/blog/taming-the-beast-running-deepseek-v3-0324-locally/">Taming the Beast: Running DeepSeek V3-0324 Locally</a> first appeared on <a href="https://phoenixgamedevelopment.com/blog">Phoenix Game Development</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" width="512" height="512" src="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/06/00391-944186036.png" class="attachment-full size-full wp-post-image" alt="" decoding="async" srcset="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/06/00391-944186036.png 512w, https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/06/00391-944186036-300x300.png 300w" sizes="(max-width: 512px) 100vw, 512px" /></p><p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Ftaming-the-beast-running-deepseek-v3-0324-locally%2F&amp;linkname=Taming%20the%20Beast%3A%20Running%20DeepSeek%20V3-0324%20Locally" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Ftaming-the-beast-running-deepseek-v3-0324-locally%2F&amp;linkname=Taming%20the%20Beast%3A%20Running%20DeepSeek%20V3-0324%20Locally" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Ftaming-the-beast-running-deepseek-v3-0324-locally%2F&amp;linkname=Taming%20the%20Beast%3A%20Running%20DeepSeek%20V3-0324%20Locally" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Ftaming-the-beast-running-deepseek-v3-0324-locally%2F&amp;linkname=Taming%20the%20Beast%3A%20Running%20DeepSeek%20V3-0324%20Locally" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Ftaming-the-beast-running-deepseek-v3-0324-locally%2F&amp;linkname=Taming%20the%20Beast%3A%20Running%20DeepSeek%20V3-0324%20Locally" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Ftaming-the-beast-running-deepseek-v3-0324-locally%2F&amp;linkname=Taming%20the%20Beast%3A%20Running%20DeepSeek%20V3-0324%20Locally" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Ftaming-the-beast-running-deepseek-v3-0324-locally%2F&#038;title=Taming%20the%20Beast%3A%20Running%20DeepSeek%20V3-0324%20Locally" data-a2a-url="https://phoenixgamedevelopment.com/blog/taming-the-beast-running-deepseek-v3-0324-locally/" data-a2a-title="Taming the Beast: Running DeepSeek V3-0324 Locally"></a></p>
<p>After hearing good things about this model, I tried, and succeeded, in getting it to run locally.</p>



<p>For those unaware, DeepSeek V3-0324 isn LLM developed by the Chinese Based Company DeepSeek.</p>



<p>The V3 variant is a chat model, as opposed to, for example, R1, which is intended more for reasoning.<br><br>The GGUF Q8 version of this model is around 700 GB&#8217;s in size, much larger than the 120B (Q8) models that I have been running up to now. However, DeepSeek is a MOE, a Mixture of Experts model, and only has 37 Billion active parameters, meaning that it can be run on systems with less VRAM.</p>



<p>Crudely speaking, MOE&#8217;s trade space for compute. IE, MOE&#8217;s tend to be much larger than &#8220;Dense&#8221; models, however, if you can fit them into RAM, they run much faster.</p>



<p>My AI Rig currently has an A6000 Ampere and two 3090s, for a total of 96 GB&#8217;s of VRAM, and it has 256 GB&#8217;s of DDR4 RAM in 8 Channel mode, and a Threadripper 3975WX CPU.</p>



<p>I am running Unsloths GGUF models, available from <a href="https://huggingface.co/unsloth/DeepSeek-V3-0324-GGUF-UD" title="">HERE</a>.</p>



<p>This gives me a total of 352 GB&#8217;s of RAM, which is just enough to run the Q3_K_XL quant of this model.</p>



<p>Q3 is not particularly high, but for a very large model like this, it should be usable.</p>



<p>What follows is my experiences with setting up and evaluating the model.</p>



<p>Firstly, I ensured that both KoboldCPP and SillyTavern were both updated to their latest release (1.93 for Kobold, and 1.13 for SillyTavern). The latest versions of KoboldCPP, in particular, are needed to load MOE models.</p>



<p>The model itself is loaded in the same way as any GGUF model. </p>



<p>The Unsloth GGUF that I downloaded has 62 layers, I was able to offload 17 of them to the GPU&#8217;s VRAM, using a tensor split of 0.9,2.0,1.0.</p>



<p>Please not that in later versions of KoboldCPP, the GPU order has changed to the PCIE Bus ID, which, for me, was different to the previous load order (Please see the issue I opened <a href="https://github.com/LostRuins/koboldcpp/issues/1596" title="">HERE </a>on Github). This meant that I had to change the order of the tensor split.</p>



<p>Once I did this, I noticed that the model was loading successfully, and KoboldCPP was starting, but it was failing with a &#8220;CUDA error: out of memory&#8221; whenever I would start inference. This was caused, I believe, to the context being too long.</p>



<p>I don&#8217;t know if MOE models in general require more RAM for context, or just DeepSeek.</p>



<p>After several days of tinkering, I managed to come up with some settings that worked well for my system. </p>



<p>The main issue for me was the &#8220;BLAS Batch Size&#8221; under the hardward tab in KoboldCPP. This was set to 512, I changed it to 64.</p>



<p>The BLAS Batch Size has a huge impact on the speed of prompt processing, and this makes and even bigger difference for MOE models due to how they work. A Batch size of 64 makes for VERY slow prompt processing, but once the prompt processing is done, the generation time is very fast.</p>



<p>I wanted to have at least 32k of context, since this is the minimum that I am used to dealing with. I believe deepseek supports up to 128k context, which is huge, but I haven&#8217;t verified this.</p>



<p>I also had to set &#8220;Quantize KV Cache&#8221; to &#8220;8-Bit&#8221; (Default was FP16) to prevent OOM errors.</p>



<p>I also set the Context to 32k in SillyTavern as well, to match KoboldCpp.</p>



<p>My settings now look like this:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td class="has-text-align-left" data-align="left">KoboldCPP v1.93 Settings for DeepSeek</td><td></td></tr><tr><td class="has-text-align-left" data-align="left">GPU Layers</td><td>17/62</td></tr><tr><td class="has-text-align-left" data-align="left">Context Size</td><td>32768</td></tr><tr><td class="has-text-align-left" data-align="left">Use ContextShift</td><td>On</td></tr><tr><td class="has-text-align-left" data-align="left">Use FlashAttention</td><td>On</td></tr><tr><td class="has-text-align-left" data-align="left">Tensor Split</td><td>0.9,2.0,1.0</td></tr><tr><td class="has-text-align-left" data-align="left">BLAS Batch Size</td><td>64</td></tr><tr><td class="has-text-align-left" data-align="left">Quantize KV Cache</td><td>8-Bit</td></tr></tbody></table></figure>



<p></p>



<p>As a result of all of this, I have managed to get DeepSeek V3 0324 Q3_K_XL running on my system with 32k context.</p>



<p>Almost all of my VRAM and System RAM is used up with these settings!</p>



<p>Prompt processing is very slow with the 64 bit batch size, and I am currently looking into reducing the layers being offloaded to the GPU to free up memory, so that I can increase the Batch size to at least 128.</p>



<p>However, the token generation is much faster! </p>



<p>With context set to 2k I was getting 8.51 tokens per second!</p>



<p>2k is obviously too low to be useful, and as I increased the context size, and the context filled up, token generation rates droped to about 4-5 tokens per second, and then, at 32k with some of the context filled, I am getting around 1.5 tokens per second at least, and this is including the slow prompt processing times.</p>



<p>This is not ideal, but it is still faster than what I would get with a dense model.</p>



<p>So, how good is DeepSeek compared to the 120b Dense models that I have been using?</p>



<p>Subjectively, the quality of the writing seems far superior. The Model seems to follow the prompt better, and characters in creative writing exercises seem to have a lot more personality, and feel more unique than other models.</p>



<p>Even though prompt processing is slower with my settings, token generation is much faster,.</p>



<p>I am limited by my available system RAM at the moment (I should have used a Q2 quant, not a Q3 one), and I am considering a RAM upgrade to 512 GB&#8217;s.</p>



<p>This presents an interesting question. 512 GB&#8217;s of DDR4 RAM (At 3200 MHZ) would cost about the same as anothe Power supply and another 3090 for my current rig, so, which would be better?</p>



<p>For running dense models, the extra 3090 would be much more useful. With 120GB&#8217;s of VRAM I could run 120b models at Q8 almost entirely in VRAM (Maybe with a little spilling over into system RAM at high context sizes) at very high speeds. However, for running MOE models, I would be far better with the 512 GB&#8217;s of system RAM (I could probably run a Q5 of DeepSeek, with much higher context and without quantising the KV cache. I could also use the GPU&#8217;s just for prompt processing, further increasing speed).</p>



<p>So, the question is: Are MOE models generally better than Dense models?</p>



<p>I don&#8217;t think there is a hard and fast answer to this. </p>



<p>There are some that argue that MOE models are inferior to dense models in terms of quality, and that they are only popular due to the fact that they can be run on cheaper hardware (RAM and compute is a lot cheaper than VRAM), and that if you can run a large, dense, model, that would be the better option.</p>



<p>However, there are others that might argue that dense models will, or have, hit a wall, and that Mixture of Experts models are a necessary step to continue to improve the quality of models.</p>



<p>I have come across a formula on reddit that seems to provide a rough estimate of the performance of a MOE model compared to a dense model. It is:</p>



<p class="has-text-align-center"><em>sqrt(active parameters * total parameters)</em></p>



<p>This would seem to indicate that DeepSeek with its 700 Billion total parameters, and 37 Billion active, would be generally equivalent to a 160B dense model. Based on the few days that I have spent working with it, this would seem accurate.</p>



<p>The model feels powerful, and, subjectively, it feels superior to 120b models, but not six times better.</p>



<p>Time will tell where MOE type models become the future or not, but even if they dominate the high end LLM space, Dense models (Including distills of MOE&#8217;s) will likely still have a place in the sub-70b space for a long time to come.</p>



<p></p>



<p></p>



<p><br><br></p>



<p></p>


<!-- wp:themify-builder/canvas /--><p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Ftaming-the-beast-running-deepseek-v3-0324-locally%2F&amp;linkname=Taming%20the%20Beast%3A%20Running%20DeepSeek%20V3-0324%20Locally" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Ftaming-the-beast-running-deepseek-v3-0324-locally%2F&amp;linkname=Taming%20the%20Beast%3A%20Running%20DeepSeek%20V3-0324%20Locally" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Ftaming-the-beast-running-deepseek-v3-0324-locally%2F&amp;linkname=Taming%20the%20Beast%3A%20Running%20DeepSeek%20V3-0324%20Locally" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Ftaming-the-beast-running-deepseek-v3-0324-locally%2F&amp;linkname=Taming%20the%20Beast%3A%20Running%20DeepSeek%20V3-0324%20Locally" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Ftaming-the-beast-running-deepseek-v3-0324-locally%2F&amp;linkname=Taming%20the%20Beast%3A%20Running%20DeepSeek%20V3-0324%20Locally" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Ftaming-the-beast-running-deepseek-v3-0324-locally%2F&amp;linkname=Taming%20the%20Beast%3A%20Running%20DeepSeek%20V3-0324%20Locally" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Ftaming-the-beast-running-deepseek-v3-0324-locally%2F&#038;title=Taming%20the%20Beast%3A%20Running%20DeepSeek%20V3-0324%20Locally" data-a2a-url="https://phoenixgamedevelopment.com/blog/taming-the-beast-running-deepseek-v3-0324-locally/" data-a2a-title="Taming the Beast: Running DeepSeek V3-0324 Locally"></a></p><p>The post <a href="https://phoenixgamedevelopment.com/blog/taming-the-beast-running-deepseek-v3-0324-locally/">Taming the Beast: Running DeepSeek V3-0324 Locally</a> first appeared on <a href="https://phoenixgamedevelopment.com/blog">Phoenix Game Development</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://phoenixgamedevelopment.com/blog/taming-the-beast-running-deepseek-v3-0324-locally/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Dependency Hell: The Linux Experience</title>
		<link>https://phoenixgamedevelopment.com/blog/dependency-hell-the-linux-experience/</link>
					<comments>https://phoenixgamedevelopment.com/blog/dependency-hell-the-linux-experience/#comments</comments>
		
		<dc:creator><![CDATA[PhoenixGames]]></dc:creator>
		<pubDate>Sun, 06 Apr 2025 00:22:27 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://phoenixgamedevelopment.com/blog/?p=10921</guid>

					<description><![CDATA[<p><img src="data:image/svg+xml,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width='512'%20height='512'%20viewBox=%270%200%20512%20512%27%3E%3C/svg%3E" loading="lazy" data-lazy="1" style="background:linear-gradient(to right,#403c33 25%,#474e46 25% 50%,#5a5f58 50% 75%,#4b584f 75%),linear-gradient(to right,#465252 25%,#05090c 25% 50%,#91aec0 50% 75%,#485454 75%),linear-gradient(to right,#363f3c 25%,#868883 25% 50%,#dfebeb 50% 75%,#394144 75%),linear-gradient(to right,#767772 25%,#f6b600 25% 50%,#010100 50% 75%,#989890 75%)" width="512" height="512" data-tf-src="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/04/image-PNG-0061.jpg" class="tf_svg_lazy attachment-full size-full wp-post-image" alt="" decoding="async" data-tf-srcset="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/04/image-PNG-0061.jpg 512w, https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/04/image-PNG-0061-300x300.jpg 300w" data-tf-sizes="(max-width: 512px) 100vw, 512px" /><noscript><img width="512" height="512" data-tf-not-load src="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/04/image-PNG-0061.jpg" class="attachment-full size-full wp-post-image" alt="" decoding="async" srcset="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/04/image-PNG-0061.jpg 512w, https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/04/image-PNG-0061-300x300.jpg 300w" sizes="(max-width: 512px) 100vw, 512px" /></noscript></p><p>This week was one of the most frustrating that I have had since I first learned to program a computer at the age of 17. The reason was that this week I discovered the true nature of the Linux Experience: Dependency Hell. I had heard of this before but did not truly appreciate the nature [&#8230;]</p>
<p>The post <a href="https://phoenixgamedevelopment.com/blog/dependency-hell-the-linux-experience/">Dependency Hell: The Linux Experience</a> first appeared on <a href="https://phoenixgamedevelopment.com/blog">Phoenix Game Development</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><img src="data:image/svg+xml,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width='512'%20height='512'%20viewBox=%270%200%20512%20512%27%3E%3C/svg%3E" loading="lazy" data-lazy="1" style="background:linear-gradient(to right,#403c33 25%,#474e46 25% 50%,#5a5f58 50% 75%,#4b584f 75%),linear-gradient(to right,#465252 25%,#05090c 25% 50%,#91aec0 50% 75%,#485454 75%),linear-gradient(to right,#363f3c 25%,#868883 25% 50%,#dfebeb 50% 75%,#394144 75%),linear-gradient(to right,#767772 25%,#f6b600 25% 50%,#010100 50% 75%,#989890 75%)" width="512" height="512" data-tf-src="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/04/image-PNG-0061.jpg" class="tf_svg_lazy attachment-full size-full wp-post-image" alt="" decoding="async" data-tf-srcset="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/04/image-PNG-0061.jpg 512w, https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/04/image-PNG-0061-300x300.jpg 300w" data-tf-sizes="(max-width: 512px) 100vw, 512px" /><noscript><img width="512" height="512" data-tf-not-load src="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/04/image-PNG-0061.jpg" class="attachment-full size-full wp-post-image" alt="" decoding="async" srcset="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/04/image-PNG-0061.jpg 512w, https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/04/image-PNG-0061-300x300.jpg 300w" sizes="(max-width: 512px) 100vw, 512px" /></noscript></p><p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fdependency-hell-the-linux-experience%2F&amp;linkname=Dependency%20Hell%3A%20The%20Linux%20Experience" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fdependency-hell-the-linux-experience%2F&amp;linkname=Dependency%20Hell%3A%20The%20Linux%20Experience" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fdependency-hell-the-linux-experience%2F&amp;linkname=Dependency%20Hell%3A%20The%20Linux%20Experience" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fdependency-hell-the-linux-experience%2F&amp;linkname=Dependency%20Hell%3A%20The%20Linux%20Experience" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fdependency-hell-the-linux-experience%2F&amp;linkname=Dependency%20Hell%3A%20The%20Linux%20Experience" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fdependency-hell-the-linux-experience%2F&amp;linkname=Dependency%20Hell%3A%20The%20Linux%20Experience" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fdependency-hell-the-linux-experience%2F&#038;title=Dependency%20Hell%3A%20The%20Linux%20Experience" data-a2a-url="https://phoenixgamedevelopment.com/blog/dependency-hell-the-linux-experience/" data-a2a-title="Dependency Hell: The Linux Experience"></a></p>
<p>This week was one of the most frustrating that I have had since I first learned to program a computer at the age of 17.</p>



<p>The reason was that this week I discovered the true nature of the Linux Experience: Dependency Hell.</p>



<p>I had heard of this before but did not truly appreciate the nature of this beast.</p>



<p>In short, unlike Windows, which uses compiled executable programs, Linux largely expects users to download source code and compile their own binaries. This is likely due to the sheer number of Linux distros out there, releasing a binary for all of them would be impractical. The problem with this is Linux make extensive use of common libraries, or dependencies, that are shared between various programs, and are, unfortunately, often incompatible.</p>



<p>So, you could have one program which requires at least version 2.0 of a library, and another program that will not run on anything later than 1.0. If you want both programs to run, you are in &#8220;Dependency hell&#8221;.</p>



<p>Unfortunately, in the AI world, there are a LOT of common libraries (CUDA, PyTorch, Torchvision/audio, xFormers, etc), leading to the issues that I had this week.</p>



<p>It should be noted before I continue that when I built my Linux-Powered AI rig I went into it with significant optimism, I loved the idea of Linux. I can&#8217;t stand the bloatware on windows, the tracking, the constant forced updates and restarts, the ads, and the lack of control over the operating system. When I bought my current windows 11 laptop (They didn&#8217;t have any with windows 10) I clicked on the start button and saw a new article about Prince Charles&#8217; Coronation. It&#8217;s bad enough that I am bombarded with ads on the internet, I do NOT want to see ads when I click on the start menu of my own computer!</p>



<p>The rule is EITHER paid OR ad supported, not both! If your OS costs money, you can&#8217;t have ads too! Microsoft haven&#8217;t learned this.</p>



<p>I even installed Linux on my current laptop briefly, but the drivers for the trackpad didn&#8217;t work, so I reluctantly installed Win11 again.</p>



<p>However, the difficulty that I have had this week just getting programs to <em>run</em> has seriously soured me on the Linux experience.</p>



<p>The issues all started when I tried to install xTTS (A Text to speech extension) for SillyTavern.</p>



<p>I did a Pip Install, I had to update some packages, but everything seemed ok.</p>



<p>Then I realised that when I updated the dependences to allow xTTS to work, I had broken several of my other programs, including comfyUI!</p>



<p>Reinstalling those programs, of course, broke xTTS, because the versions of the software used by each were incompatible.</p>



<p>I eventually learned about Conda and Virtual environments, which solved some of my issues, but not all (Never in my time using windows have I had to install a virtual environment just to get a program to run!).</p>



<p>However, even with Conda/Venv, I was STILL having serious problems just fixing my existing programs, let alone installing new ones. At one point, at least 3-4 of my main AI programs were in a broken state due to dependencies, and I had completely lost faith in the system. It got to the point where I was genuinely ecstatic just to start up a program and have it actually work!</p>



<p>What I learned eventually is that when you run pip install inside a conda environment it installs the packages to the location where pip was installed, which is your systems pip directory. IE, you are installing the packages globally, potentially overwriting other packages.</p>



<p>Using conda install fixes this problem, but most of the packages I was using didn&#8217;t have a conda version, so I was forced to spend many hours pip installing dozens of packages to attempt to find a solution.<br><br>At one point, I restarted my system, and found that I couldn&#8217;t log into the gui! Apparently my hard drive was full, which, for some reason, prevented login?</p>



<p>It turns out that I had used up 75 GIGABYTES of storage page just downloading difference packages! CUDA, for example, is about 2 GB&#8217;s. Torch vision is about 1 GB, so every time I do a pip install that&#8217;s another 2 GB&#8217;s of data.</p>



<p>I purged the pip cache and moved some data from the main drive to the backup drive (Luckily remote desktop still worked, even though the local login didn&#8217;t?) and I was able to log in again, but I still had the dependency issues to deal with.</p>



<p>Eventually, after several days of misery, I discovered that you can install pip locally to a conda environment, so that if you then run pip install it will install the packages to the local version of pip, not the system version, allowing you to use pip install without overwriting your system packages.</p>



<p>So far, this seems to work.</p>



<p>Without bragging, I have nearly 25 years experience working with computers. I am new to Linux, yes, but I have extensive experience in programming, the command line, libraries, and the complexities of operating systems. If it takes me three days just to get a program running without breaking another program, then there is a problem with the operating system. It simply should not be that difficult.</p>



<p>Just to clarify, all I am trying to do here is install a program, that&#8217;s all. I&#8217;m not trying to write code, just run it!</p>



<p>ALL of the above could have been accomplished on windows by just double-clicking on an exe!</p>



<p>There was one program (A web based gui for training voices for Realtime Voice Conversion, or RVC) that I spend several hours trying to resolve the dependencies for. Everything I pip installed something, it broke something else. I had to reinstall comfyui at least seven or either times!</p>



<p>Eventually, I gave up and downloaded a fork of the program that worked on windows. I ran into ONE error (My firewall was blocking the clone of the git repo. I simply disabled it temporarily until the download was completed) and the program was up and running in less than three minutes.</p>



<p>This has consistently been my experience: Fighting with Linux to resolve dependencies that would require just a few clicks on windows.</p>



<p>I know that I have extensive experience on Windows which I lack in Linux, but we are just talking about basic functionality here, you shouldn&#8217;t need to be a Linux guru just to get a program to run!</p>



<p>The other discovery that I made is that the AI world doesn&#8217;t appear to be quite as Linux-centric as I initially thought. Before I built my AI rig I read that the vast majority of AI-related programs and libraries are designed for Linux, and I would have difficulty running them on windows.</p>



<p>In actual fact, in my experience, the only thing that I have found that was easier on Linux than windows was installing Sage-Attention 2. Sage attention 2 can be installed with just a few lines of code on Linux, it is, apparently, a lot harder on Windows.</p>



<p>Apparently Deepspeed is not properly supported on Windows either.</p>



<p>Everything else either had a windows version, or there was a similar program that worked on windows. In some cases in fact I found more easily accessible information for windows than Linux (Such as Lora training for Hunyuan Video).</p>



<p>It seems to me that a lot of the people singing the praises of Linux are people who are card-carrying members of the Linux club, and either fail to see it&#8217;s substantial shortcomings, or obstinately refuse to acknowledge them.</p>



<p>Windows isn&#8217;t perfect, I mentioned the issues with bloatware, privacy, etc, but honestly, after dealing with Linux &#8220;dependency hell&#8221; for the last 3-4 days, I will happily allow Bill Gates to come to my house personally and watch me take a shower.</p>



<p>Running a debloat script on windows 11 is far, far, easier than dealing with Linux&#8217;s issues.</p>



<p>Linux is for people who want to work on Linux, not for people who want to work on anything else.</p>



<p>Windows, despite its issues, just works, and when you&#8217;re a professional who values their time, you want something that works.</p>



<p>I cannot understand how anyone gets any work done on the OS when you are losing so much time resolving dependencies.</p>



<p>There are some things that are better on Linux, yes, and it has extensive support within the server space and academic/scientific computer space, but you have to balance that against the sheer man-hours wasted doing things that can be done with two clicks on windows.</p>



<p>I was hoping that Linux would eventually become a competitor to Windows and MacOS. That it would be the OS that you could recommend to your mom or pop, an OS free of cost, free of bloat, free of ads and spyware, with all the features that one would need from a modern operating system.</p>



<p>I believed that user-friendly distros like popOS or its parent Ubuntu, or Windows-Like Distros like Mint, would eventually evolve to the point that they can enter the consumer space.</p>



<p>However, having gained some insight into the Linux experience, and the way that Linux functions &#8220;under the hood&#8221;, I now believe that it is destined to always remain what it is: A niche OS used only by technically minded people who use it either because they have to, or because they have the time or inclination to spend on it.</p>



<p></p>


<!-- wp:themify-builder/canvas /--><p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fdependency-hell-the-linux-experience%2F&amp;linkname=Dependency%20Hell%3A%20The%20Linux%20Experience" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fdependency-hell-the-linux-experience%2F&amp;linkname=Dependency%20Hell%3A%20The%20Linux%20Experience" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fdependency-hell-the-linux-experience%2F&amp;linkname=Dependency%20Hell%3A%20The%20Linux%20Experience" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fdependency-hell-the-linux-experience%2F&amp;linkname=Dependency%20Hell%3A%20The%20Linux%20Experience" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fdependency-hell-the-linux-experience%2F&amp;linkname=Dependency%20Hell%3A%20The%20Linux%20Experience" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fdependency-hell-the-linux-experience%2F&amp;linkname=Dependency%20Hell%3A%20The%20Linux%20Experience" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fdependency-hell-the-linux-experience%2F&#038;title=Dependency%20Hell%3A%20The%20Linux%20Experience" data-a2a-url="https://phoenixgamedevelopment.com/blog/dependency-hell-the-linux-experience/" data-a2a-title="Dependency Hell: The Linux Experience"></a></p><p>The post <a href="https://phoenixgamedevelopment.com/blog/dependency-hell-the-linux-experience/">Dependency Hell: The Linux Experience</a> first appeared on <a href="https://phoenixgamedevelopment.com/blog">Phoenix Game Development</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://phoenixgamedevelopment.com/blog/dependency-hell-the-linux-experience/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Experiments with Hunyuan Video</title>
		<link>https://phoenixgamedevelopment.com/blog/experiments-with-hunyuan-video/</link>
					<comments>https://phoenixgamedevelopment.com/blog/experiments-with-hunyuan-video/#respond</comments>
		
		<dc:creator><![CDATA[PhoenixGames]]></dc:creator>
		<pubDate>Sun, 02 Mar 2025 14:19:04 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://phoenixgamedevelopment.com/blog/?p=10888</guid>

					<description><![CDATA[<p><img src="data:image/svg+xml,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width='512'%20height='512'%20viewBox=%270%200%20512%20512%27%3E%3C/svg%3E" loading="lazy" data-lazy="1" style="background:linear-gradient(to right,#b8ccd7 25%,#d5e6f0 25% 50%,#111214 50% 75%,#4b636f 75%),linear-gradient(to right,#6b7f8a 25%,#323d43 25% 50%,#04090c 50% 75%,#3c4a55 75%),linear-gradient(to right,#0e1317 25%,#0c1013 25% 50%,#090d10 50% 75%,#161616 75%),linear-gradient(to right,#866963 25%,#050a0d 25% 50%,#121b22 50% 75%,#070c0f 75%)" width="512" height="512" data-tf-src="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/03/2025-03-02-12_41_16-HunyuanVideo_00062.png.jpg" class="tf_svg_lazy attachment-full size-full wp-post-image" alt="" decoding="async" data-tf-srcset="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/03/2025-03-02-12_41_16-HunyuanVideo_00062.png.jpg 512w, https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/03/2025-03-02-12_41_16-HunyuanVideo_00062.png-300x300.jpg 300w" data-tf-sizes="(max-width: 512px) 100vw, 512px" /><noscript><img width="512" height="512" data-tf-not-load src="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/03/2025-03-02-12_41_16-HunyuanVideo_00062.png.jpg" class="attachment-full size-full wp-post-image" alt="" decoding="async" srcset="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/03/2025-03-02-12_41_16-HunyuanVideo_00062.png.jpg 512w, https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/03/2025-03-02-12_41_16-HunyuanVideo_00062.png-300x300.jpg 300w" sizes="(max-width: 512px) 100vw, 512px" /></noscript></p><p>I have spent most of this week working on video generation with Hunyuan video. This has been a fascinating exploration into a new and rapidly developing sub-field of the AI industry. AI video generation looks set to take the world by storm in the coming years! Hunyuan Video allows for the generation of short clips [&#8230;]</p>
<p>The post <a href="https://phoenixgamedevelopment.com/blog/experiments-with-hunyuan-video/">Experiments with Hunyuan Video</a> first appeared on <a href="https://phoenixgamedevelopment.com/blog">Phoenix Game Development</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><img src="data:image/svg+xml,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width='512'%20height='512'%20viewBox=%270%200%20512%20512%27%3E%3C/svg%3E" loading="lazy" data-lazy="1" style="background:linear-gradient(to right,#b8ccd7 25%,#d5e6f0 25% 50%,#111214 50% 75%,#4b636f 75%),linear-gradient(to right,#6b7f8a 25%,#323d43 25% 50%,#04090c 50% 75%,#3c4a55 75%),linear-gradient(to right,#0e1317 25%,#0c1013 25% 50%,#090d10 50% 75%,#161616 75%),linear-gradient(to right,#866963 25%,#050a0d 25% 50%,#121b22 50% 75%,#070c0f 75%)" width="512" height="512" data-tf-src="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/03/2025-03-02-12_41_16-HunyuanVideo_00062.png.jpg" class="tf_svg_lazy attachment-full size-full wp-post-image" alt="" decoding="async" data-tf-srcset="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/03/2025-03-02-12_41_16-HunyuanVideo_00062.png.jpg 512w, https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/03/2025-03-02-12_41_16-HunyuanVideo_00062.png-300x300.jpg 300w" data-tf-sizes="(max-width: 512px) 100vw, 512px" /><noscript><img width="512" height="512" data-tf-not-load src="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/03/2025-03-02-12_41_16-HunyuanVideo_00062.png.jpg" class="attachment-full size-full wp-post-image" alt="" decoding="async" srcset="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/03/2025-03-02-12_41_16-HunyuanVideo_00062.png.jpg 512w, https://phoenixgamedevelopment.com/blog/wp-content/uploads/2025/03/2025-03-02-12_41_16-HunyuanVideo_00062.png-300x300.jpg 300w" sizes="(max-width: 512px) 100vw, 512px" /></noscript></p><p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fexperiments-with-hunyuan-video%2F&amp;linkname=Experiments%20with%20Hunyuan%20Video" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fexperiments-with-hunyuan-video%2F&amp;linkname=Experiments%20with%20Hunyuan%20Video" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fexperiments-with-hunyuan-video%2F&amp;linkname=Experiments%20with%20Hunyuan%20Video" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fexperiments-with-hunyuan-video%2F&amp;linkname=Experiments%20with%20Hunyuan%20Video" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fexperiments-with-hunyuan-video%2F&amp;linkname=Experiments%20with%20Hunyuan%20Video" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fexperiments-with-hunyuan-video%2F&amp;linkname=Experiments%20with%20Hunyuan%20Video" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fexperiments-with-hunyuan-video%2F&#038;title=Experiments%20with%20Hunyuan%20Video" data-a2a-url="https://phoenixgamedevelopment.com/blog/experiments-with-hunyuan-video/" data-a2a-title="Experiments with Hunyuan Video"></a></p>
<p>I have spent most of this week working on video generation with Hunyuan video.</p>



<p>This has been a fascinating exploration into a new and rapidly developing sub-field of the AI industry.</p>



<p>AI video generation looks set to take the world by storm in the coming years!</p>



<p>Hunyuan Video allows for the generation of short clips (Usually less than 10 seconds) from a plain text prompt.</p>



<p>From my testing, longer clips are possible, but the quality drops massively. I have tested generation of clips up to 60 seconds (At 320&#215;240).</p>



<p>My current setup is posted <a href="http://ai-assembly-and-setup-of-ai-inference-rig" title="">HERE</a>, but in short, I have 2 3090 GPU&#8217;s installed.</p>



<p>Hunyuan Video at bf16 is 25.6 GB&#8217;s.</p>



<p>Unlike with LLM&#8217;s (Large Lanuage Models), Video and Image generation does not have the same ability to split the Model across GPUs, so it is not possible to run Hunyuan at bf 16 on a 24 gb card, so I have been using is at FP8.</p>



<p>What is possible, as I discovered, it to offload the CLIP and VAE data from the first GPU to either the CPU or another GPU, this saves some VRAM, allowing for higher resolutions and/or more frames, but it is not &#8220;splitting&#8221; the model, just offloading some data.</p>



<p>It is also possible to use GGUF format instead of .safetensors. GGUF files for Hunyuan are available <a href="https://huggingface.co/city96/HunyuanVideo-gguf" title="">HERE</a>.</p>



<p>Running Hunyuan at BF16 would require 45 GB&#8217;s RAM on one card.</p>



<p>I am using ComfyUI to run Hunyuan, and having tried many workflows, my current workflow uses GGUFDisTorchMultiGPU nodes as well as DualCLIPLoaderGGUFMultiGPU and VAELoaderMultiGPU to offload as much data as possible to other cards.</p>



<p>The quality I am getting is quite good.</p>



<p>With my setup, it seems that I can generate 201 frames video at 928&#215;640. At 24 Frames per seconds, that&#8217;s about 8 seconds of video. This takes about 22 minutes to generate, with Sage attention 1 and TEACache optimisation enabled.</p>



<p>An example of the quality of content (A short, 3 second video) that I can produce is here:</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<div class="post-video"><iframe loading="lazy" title="AI-Generated (Hunyuan Video) Example 2" width="1165" height="874" src="https://www.youtube.com/embed/JvswEER2GqQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
</div></figure>



<p>The prompt for the above was:</p>



<p><em>&#8220;A male warrior with long hair and a battle-scarred face wearing a bulletproof vest, holding a large rifle, stands in a war-torn futuristic city. The camera pans around him, as explosions and gunfire rage.<br>Masterpiece, best quality, dynamic scene.&#8221;</em></p>



<p>What is worthy of note, other than the good quality, is that Hunyuan video seems to have no issue creating realistic looking firearms. I have not used any other video-based AI models before, but I have used Stable Diffusion to generate images, and many of them are unable to create firearms, likely due to censorship, etc. Without getting too far into the realms of politics, it is interesting that a model created by Tencent, A Chinese company, is actually less censored than many models available in the west.</p>



<p>Here is another example, another 3 second Video:</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<div class="post-video"><iframe loading="lazy" title="AI-Generated (Hunyuan Video) Example 5" width="1165" height="874" src="https://www.youtube.com/embed/kIaitGXd0uw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
</div></figure>



<p>Another example, this one an 8 second video, using the same prompt, is:</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<div class="post-video"><iframe loading="lazy" title="AI-Generated (Hunyuan Video) Example 2" width="1165" height="874" src="https://www.youtube.com/embed/3aOdWLELIhQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
</div></figure>



<p>It seems that the longer clip has a slightly lower quality. It is hard to tell, but it seems that the background, especially, on larger clips seems to become less clear and more blurry and indistinct.</p>



<p>If I again take the same prompt, but this time increase the length to 60 seconds (Reducing the quality to 320&#215;240 to allow it to fit in Memory), I get this:</p>



<p></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<div class="post-video"><iframe loading="lazy" title="AI-Generated (Hunyuan Video) Example 3" width="1165" height="874" src="https://www.youtube.com/embed/nApBRtE8qz4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
</div></figure>



<p>Clearly, the quality here is incredibly low, but I don&#8217;t think the reason is just because of the lower resolution, I think the main reason is the clip length. For example, if I generate a 3-second clip (using the same prompt as above) at 320&#215;640, I get this:</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<div class="post-video"><iframe loading="lazy" title="AI-Generated (Hunyuan Video) Example 4" width="1165" height="874" src="https://www.youtube.com/embed/ieDLOmc9U0E?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
</div></figure>



<p>Which, despite it&#8217;s low resolution, is a much better looking video. It seems then, that regardless of resolution, the length is limited to about 8-10 seconds.</p>



<p>While I have tried various quantisations and workflows, in addition to experimenting with different options, there is still a lot of experimentation to do.</p>



<p>In particular, I would like to experiment with the guidance and steps, in addition to the various VAE Decode settings (Tile size, etc).</p>



<p>From what I have read, running the model at Q8 does not substantially impair the quality.</p>



<p>&#8211;</p>



<p></p>



<p></p>



<p></p>



<p></p>


<!-- wp:themify-builder/canvas /--><p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fexperiments-with-hunyuan-video%2F&amp;linkname=Experiments%20with%20Hunyuan%20Video" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fexperiments-with-hunyuan-video%2F&amp;linkname=Experiments%20with%20Hunyuan%20Video" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fexperiments-with-hunyuan-video%2F&amp;linkname=Experiments%20with%20Hunyuan%20Video" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fexperiments-with-hunyuan-video%2F&amp;linkname=Experiments%20with%20Hunyuan%20Video" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fexperiments-with-hunyuan-video%2F&amp;linkname=Experiments%20with%20Hunyuan%20Video" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fexperiments-with-hunyuan-video%2F&amp;linkname=Experiments%20with%20Hunyuan%20Video" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fexperiments-with-hunyuan-video%2F&#038;title=Experiments%20with%20Hunyuan%20Video" data-a2a-url="https://phoenixgamedevelopment.com/blog/experiments-with-hunyuan-video/" data-a2a-title="Experiments with Hunyuan Video"></a></p><p>The post <a href="https://phoenixgamedevelopment.com/blog/experiments-with-hunyuan-video/">Experiments with Hunyuan Video</a> first appeared on <a href="https://phoenixgamedevelopment.com/blog">Phoenix Game Development</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://phoenixgamedevelopment.com/blog/experiments-with-hunyuan-video/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Spiritus Astrum [P0-B9]: p1474: Towards Early Access</title>
		<link>https://phoenixgamedevelopment.com/blog/spiritus-astrum-p0-b9-p1474-towards-early-access/</link>
					<comments>https://phoenixgamedevelopment.com/blog/spiritus-astrum-p0-b9-p1474-towards-early-access/#respond</comments>
		
		<dc:creator><![CDATA[PhoenixGames]]></dc:creator>
		<pubDate>Sun, 01 Dec 2024 09:58:16 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Astral Realms]]></category>
		<category><![CDATA[P-0]]></category>
		<category><![CDATA[P0_B9]]></category>
		<category><![CDATA[Software and Games]]></category>
		<category><![CDATA[Spirit of the Stars]]></category>
		<category><![CDATA[Spiritus Astrum]]></category>
		<guid isPermaLink="false">https://phoenixgamedevelopment.com/blog/?p=10784</guid>

					<description><![CDATA[<p>This week, I have been mostly working on the concept for the new region system in Spiritus Astrum. This system basically divides worlds into large regions, each with their own tech levels, from primitive, to industrial, to modern, to futuristic. I have enough artwork at the moment to make this system work, although I intend [&#8230;]</p>
<p>The post <a href="https://phoenixgamedevelopment.com/blog/spiritus-astrum-p0-b9-p1474-towards-early-access/">Spiritus Astrum [P0-B9]: p1474: Towards Early Access</a> first appeared on <a href="https://phoenixgamedevelopment.com/blog">Phoenix Game Development</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1474-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1474%3A%20Towards%20Early%20Access" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1474-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1474%3A%20Towards%20Early%20Access" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1474-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1474%3A%20Towards%20Early%20Access" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1474-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1474%3A%20Towards%20Early%20Access" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1474-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1474%3A%20Towards%20Early%20Access" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1474-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1474%3A%20Towards%20Early%20Access" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1474-towards-early-access%2F&#038;title=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1474%3A%20Towards%20Early%20Access" data-a2a-url="https://phoenixgamedevelopment.com/blog/spiritus-astrum-p0-b9-p1474-towards-early-access/" data-a2a-title="Spiritus Astrum [P0-B9]: p1474: Towards Early Access"></a></p>
<p>This week, I have been mostly working on the concept for the new region system in Spiritus Astrum.</p>



<p>This system basically divides worlds into large regions, each with their own tech levels, from primitive, to industrial, to modern, to futuristic.</p>



<p>I have enough artwork at the moment to make this system work, although I intend to expand it with a lot more artwork later.</p>



<p>The region system is basically working now, although it is not 100% done.</p>



<p>The system is quite complex, I can add each ground cover object to multiple regions, with a probability for each. So, an item might be common in an industrial region, and uncommon in a modern region, and not appear at all in other regions.</p>



<p>I have yet to fully test this system, but so far, it looks promising.</p>



<p>Crucially, the region system works persistently, using the seed of the terrainchunk to make sure that the same objects appear every time (and in the same location, etc).</p>



<p>Additonally, I have added LLM support to Spiritus Astrum. This, again, is just a concept so far, but I think there is huge potential here that I intend to look at more in the future, when I get more time.</p>



<p>The LLM support works with both LAN servers, local Kobold CPP servers, and loading models directly within unity (Although this seems much slower for some reason). I am using <a href="https://assetstore.unity.com/publishers/95413" title="">UNDREAM</a> for the LLM support, as mentioned in my other posts on AI.</p>



<p>I have also started doing some more testing and bug fixes. Some issues have crept into the project with all of the improvements that I have been making. There is an issue with shaders breaking when in combat with an AI that I am having difficulty solving.</p>



<p><br></p>



<p></p>



<figure class="wp-block-image"><a href="https://imgur.com/YZ2KGg8.jpeg"><img src="data:image/svg+xml,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width='0'%20height='0'%20viewBox=%270%200%200%200%27%3E%3C/svg%3E" loading="lazy" data-lazy="1" class="tf_svg_lazy" decoding="async" data-tf-src="https://imgur.com/YZ2KGg8.jpeg" alt="" title="source: imgur.com"/><noscript><img decoding="async" data-tf-not-load src="https://imgur.com/YZ2KGg8.jpeg" alt="" title="source: imgur.com"/></noscript></a></figure>
<figure class="wp-block-image"><a href="https://imgur.com/m5OsIhm.jpeg"><img src="data:image/svg+xml,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width='0'%20height='0'%20viewBox=%270%200%200%200%27%3E%3C/svg%3E" loading="lazy" data-lazy="1" class="tf_svg_lazy" decoding="async" data-tf-src="https://imgur.com/m5OsIhm.jpeg" alt="" title="source: imgur.com"/><noscript><img decoding="async" data-tf-not-load src="https://imgur.com/m5OsIhm.jpeg" alt="" title="source: imgur.com"/></noscript></a></figure>
<figure class="wp-block-image"><a href="https://imgur.com/CmLAb0l.jpeg"><img src="data:image/svg+xml,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width='0'%20height='0'%20viewBox=%270%200%200%200%27%3E%3C/svg%3E" loading="lazy" data-lazy="1" class="tf_svg_lazy" decoding="async" data-tf-src="https://imgur.com/CmLAb0l.jpeg" alt="" title="source: imgur.com"/><noscript><img decoding="async" data-tf-not-load src="https://imgur.com/CmLAb0l.jpeg" alt="" title="source: imgur.com"/></noscript></a></figure>
<figure class="wp-block-image"><a href="https://imgur.com/pE8OGHo.jpeg"><img src="data:image/svg+xml,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width='0'%20height='0'%20viewBox=%270%200%200%200%27%3E%3C/svg%3E" loading="lazy" data-lazy="1" class="tf_svg_lazy" decoding="async" data-tf-src="https://imgur.com/pE8OGHo.jpeg" alt="" title="source: imgur.com"/><noscript><img decoding="async" data-tf-not-load src="https://imgur.com/pE8OGHo.jpeg" alt="" title="source: imgur.com"/></noscript></a></figure>
<figure class="wp-block-image"><a href="https://imgur.com/AXvL2Os.jpeg"><img src="data:image/svg+xml,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width='0'%20height='0'%20viewBox=%270%200%200%200%27%3E%3C/svg%3E" loading="lazy" data-lazy="1" class="tf_svg_lazy" decoding="async" data-tf-src="https://imgur.com/AXvL2Os.jpeg" alt="" title="source: imgur.com"/><noscript><img decoding="async" data-tf-not-load src="https://imgur.com/AXvL2Os.jpeg" alt="" title="source: imgur.com"/></noscript></a></figure>



<p></p>



<p></p>


<!-- wp:themify-builder/canvas /--><p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1474-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1474%3A%20Towards%20Early%20Access" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1474-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1474%3A%20Towards%20Early%20Access" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1474-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1474%3A%20Towards%20Early%20Access" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1474-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1474%3A%20Towards%20Early%20Access" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1474-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1474%3A%20Towards%20Early%20Access" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1474-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1474%3A%20Towards%20Early%20Access" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1474-towards-early-access%2F&#038;title=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1474%3A%20Towards%20Early%20Access" data-a2a-url="https://phoenixgamedevelopment.com/blog/spiritus-astrum-p0-b9-p1474-towards-early-access/" data-a2a-title="Spiritus Astrum [P0-B9]: p1474: Towards Early Access"></a></p><p>The post <a href="https://phoenixgamedevelopment.com/blog/spiritus-astrum-p0-b9-p1474-towards-early-access/">Spiritus Astrum [P0-B9]: p1474: Towards Early Access</a> first appeared on <a href="https://phoenixgamedevelopment.com/blog">Phoenix Game Development</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://phoenixgamedevelopment.com/blog/spiritus-astrum-p0-b9-p1474-towards-early-access/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>On the applications for Large Language Models in Gaming</title>
		<link>https://phoenixgamedevelopment.com/blog/on-the-applications-for-large-language-models-in-gaming/</link>
					<comments>https://phoenixgamedevelopment.com/blog/on-the-applications-for-large-language-models-in-gaming/#respond</comments>
		
		<dc:creator><![CDATA[PhoenixGames]]></dc:creator>
		<pubDate>Thu, 14 Nov 2024 13:35:32 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://phoenixgamedevelopment.com/blog/?p=10718</guid>

					<description><![CDATA[<p><img src="data:image/svg+xml,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width='512'%20height='512'%20viewBox=%270%200%20512%20512%27%3E%3C/svg%3E" loading="lazy" data-lazy="1" style="background:linear-gradient(to right,#1f2229 25%,#60110b 25% 50%,#48070e 50% 75%,#04060b 75%),linear-gradient(to right,#1b2930 25%,#887f79 25% 50%,#5b0000 50% 75%,#05070b 75%),linear-gradient(to right,#1b2f35 25%,#c2c8c1 25% 50%,#0c0f12 50% 75%,#07090c 75%),linear-gradient(to right,#1f272a 25%,#0e1b1f 25% 50%,#140a0a 50% 75%,#bfb1a7 75%)" width="512" height="512" data-tf-src="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2024/11/00332-1534891212.png" class="tf_svg_lazy attachment-full size-full wp-post-image" alt="" decoding="async" data-tf-srcset="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2024/11/00332-1534891212.png 512w, https://phoenixgamedevelopment.com/blog/wp-content/uploads/2024/11/00332-1534891212-300x300.png 300w" data-tf-sizes="(max-width: 512px) 100vw, 512px" /><noscript><img width="512" height="512" data-tf-not-load src="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2024/11/00332-1534891212.png" class="attachment-full size-full wp-post-image" alt="" decoding="async" srcset="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2024/11/00332-1534891212.png 512w, https://phoenixgamedevelopment.com/blog/wp-content/uploads/2024/11/00332-1534891212-300x300.png 300w" sizes="(max-width: 512px) 100vw, 512px" /></noscript></p><p>For the purposes of this article I am using the term AI to refer to generative AI, and in particular, I am focusing on LLM’s, or “Large Language Models”. The scope of AI in games obviously extends beyond this, but this will be the focus of this piece. Introduction I am currently working on integrating [&#8230;]</p>
<p>The post <a href="https://phoenixgamedevelopment.com/blog/on-the-applications-for-large-language-models-in-gaming/">On the applications for Large Language Models in Gaming</a> first appeared on <a href="https://phoenixgamedevelopment.com/blog">Phoenix Game Development</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><img src="data:image/svg+xml,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width='512'%20height='512'%20viewBox=%270%200%20512%20512%27%3E%3C/svg%3E" loading="lazy" data-lazy="1" style="background:linear-gradient(to right,#1f2229 25%,#60110b 25% 50%,#48070e 50% 75%,#04060b 75%),linear-gradient(to right,#1b2930 25%,#887f79 25% 50%,#5b0000 50% 75%,#05070b 75%),linear-gradient(to right,#1b2f35 25%,#c2c8c1 25% 50%,#0c0f12 50% 75%,#07090c 75%),linear-gradient(to right,#1f272a 25%,#0e1b1f 25% 50%,#140a0a 50% 75%,#bfb1a7 75%)" width="512" height="512" data-tf-src="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2024/11/00332-1534891212.png" class="tf_svg_lazy attachment-full size-full wp-post-image" alt="" decoding="async" data-tf-srcset="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2024/11/00332-1534891212.png 512w, https://phoenixgamedevelopment.com/blog/wp-content/uploads/2024/11/00332-1534891212-300x300.png 300w" data-tf-sizes="(max-width: 512px) 100vw, 512px" /><noscript><img width="512" height="512" data-tf-not-load src="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2024/11/00332-1534891212.png" class="attachment-full size-full wp-post-image" alt="" decoding="async" srcset="https://phoenixgamedevelopment.com/blog/wp-content/uploads/2024/11/00332-1534891212.png 512w, https://phoenixgamedevelopment.com/blog/wp-content/uploads/2024/11/00332-1534891212-300x300.png 300w" sizes="(max-width: 512px) 100vw, 512px" /></noscript></p><p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fon-the-applications-for-large-language-models-in-gaming%2F&amp;linkname=On%20the%20applications%20for%20Large%20Language%20Models%20in%20Gaming" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fon-the-applications-for-large-language-models-in-gaming%2F&amp;linkname=On%20the%20applications%20for%20Large%20Language%20Models%20in%20Gaming" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fon-the-applications-for-large-language-models-in-gaming%2F&amp;linkname=On%20the%20applications%20for%20Large%20Language%20Models%20in%20Gaming" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fon-the-applications-for-large-language-models-in-gaming%2F&amp;linkname=On%20the%20applications%20for%20Large%20Language%20Models%20in%20Gaming" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fon-the-applications-for-large-language-models-in-gaming%2F&amp;linkname=On%20the%20applications%20for%20Large%20Language%20Models%20in%20Gaming" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fon-the-applications-for-large-language-models-in-gaming%2F&amp;linkname=On%20the%20applications%20for%20Large%20Language%20Models%20in%20Gaming" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fon-the-applications-for-large-language-models-in-gaming%2F&#038;title=On%20the%20applications%20for%20Large%20Language%20Models%20in%20Gaming" data-a2a-url="https://phoenixgamedevelopment.com/blog/on-the-applications-for-large-language-models-in-gaming/" data-a2a-title="On the applications for Large Language Models in Gaming"></a></p>
<p>For the purposes of this article I am using the term AI to refer to generative AI, and in particular, I am focusing on LLM’s, or “Large Language Models”. The scope of AI in games obviously extends beyond this, but this will be the focus of this piece.</p>



<h2 class="wp-block-heading has-medium-font-size"><strong>Introduction</strong></h2>



<p>I am currently working on integrating support for Large Language Models into my project, Spiritus Astrum.</p>



<p>While working on the technical aspects of this, I have also been thinking about the greater applications for LLM’s in gaming, and of the developing (And deepening) controversy over the same.</p>



<p>Steam has recently clarified their policy on Generative AI. It is now acceptable to submit a game using generative AI on their platform provided that the developer declares that the game uses generative AI, and that the AI contains “guardrails” that prevent it from generating illegal or offensive content at runtime.</p>



<p>However, this declaration by steam has led to some controversy by gamers: Some gamers (Like some artists) believe that generative AI is “stealing” and that it should be banned.</p>



<p>Others believe that allowing Generative AI will lead to a flood of poor-quality AI generated games that will harm steams reputation as a distribution platform, and even harm the gaming industry as a whole.</p>



<p>I try to avoid politics with my blog and the projects that I work on, but it seems that with the ongoing AI debate I may be unintentionally entering a politically charged sphere.</p>



<p>I understand the concerns over generative AI.</p>



<p>There is no doubt that AI has the potential to do harm. In addition to the risks of “Shovelware” titles as I discussed above, there is also the potential that generative AI models could produce, (either intentionally or accidentally), inappropriate or offensive content. Even a safe, “Censored” AI model can be “Jailbroken” in various ways to produce content that it should not be able to produce.</p>



<p>However, despite this, I am still, generally Pro-AI. I would draw a comparision to something like the internet: There may be negative aspects to the technology (Possibly strongly negative aspects) but its usefulness and benefits have made it such a ubiquitous part of our lives that, for better or worse, it is here to stay.</p>



<h2 class="wp-block-heading has-medium-font-size"><strong>Potential Applications for Generative AI in gaming</strong></h2>



<p>I believe quite strongly that Generative AI has a tremendous potential to enrich games in ways that never would have been possible before, to create a whole new era of dynamic, AI-driven content where every world is rich and engaging, and every play experience is unique.</p>



<p>By harnessing the power of LLM’s, we could see the end of boring NPC’s with canned, repetitive phrases. How many times, for example, have we heard Lydia from Skyrim saying “I am sworn to carry your burdens?” Or the famous “Pam param, pan pan param” song hummed by Witcher 3 NPC’s?</p>



<p>Instead, each NPC could have unique dialog, a unique personality, goals, and a strong presence and sense of agency in the world. This could provide for an incredibly rich experience, making the world feel truly lived in. The player would be a part of a greater world, and not the only reason for that world existing.</p>



<p>It is possible to add some randomness to current NPC dialog using a rule based system, where the AI will respond differently based on the current weather, current location, etc (Kingdom Come Deliverance has different NPC dialog depending on whether the players clothing and armour are clean or not!) but this dialog will still get very repetitive very quickly.</p>



<p>In addition, LLM’s can be used to supplement the pre-written dialog for main characters by providing additional dialog between quests, or after a quest has completed.</p>



<p>Even big budget RPG’s have limits to how much dialog has been written, and when you are in between quests, some of the most dynamic and engaging characters revert to a random selection of canned phrases.</p>



<p>LLM’s can also provide post-game content in the same way. Even when the main story is complete, the player can continue to “live” in the world, experiencing new “content” in a way that was never possible before.</p>



<p>Finally, LLM’s could be wired into the games quest system, enabling a true RPG-like experience.</p>



<h2 class="wp-block-heading has-medium-font-size"><strong>Generative AI as “Dungeon Master”</strong></h2>



<p>This point is where I think the true potential of LLM’s lies. The vast majority of modern RPG’s are inspired in some way from the Dungeons and Dragons style of tabletop RPG’s (And, by extension, the old MUD’s, or “Multi-user Dungeons” from the early days of the internet). However, graphical RPG’s face a hurdle that none have yet to overcome: They all allow you only to select and customise a character, not to truly create one.</p>



<p>True, some games provide extensive character customisation options (Skyrim, Cyberpunk 2077, etc), but the characters backstory is usually based on some variation of class selection (Rogue, Mage, Paladin, etc) and not actually creating a character.</p>



<p>Imagine an RPG where you can truly “create” a character, with a backstory to go with them, using a text prompt? Where the game functions as a “Dungeon Master” for your very own adventure?</p>



<p>A world that dynamically adapts to challenge and encourage the player, a game where every playthough is completely unique?</p>



<p>This is the power that LLM’s have the potential to provide to gaming, and it is a power that cannot be ignored.</p>



<h2 class="wp-block-heading has-medium-font-size"><strong>Experiments, Examples, and Analysis with Generative AI</strong></h2>



<p>I have recently conducted some very simple tests to explore the potential of LLM’s within my game, Spiritus Astrum.</p>



<p>All of the below tests were run with an 8b model, most with Llama 3.1 8B at a Q4 quant. This is, obviously, far smaller than the 70b and 120b models that I have been running on my new AI test rig. However, even though I have added the ability to connect to a KoboldCPP server using unity, very few players have access to this kind of hardware, so I am instead using a model that would be small enough to run on an average gaming computer.</p>



<p>For these tests, the information that the AI was given in the prompt was:</p>



<p><em>You are a Wasteland wanderer, surviving on a desolate, war-torn, ruined world.</em></p>



<p>Short Description of the AI’s character.</p>



<p><em>You are talking to a North Star Starship captain, a combat veteran.</em></p>



<p>Short Description of the players character. This could be entered by the player during character creation. It could be created completely by the player.</p>



<p><em>They are carrying a 10mm pistol, a medical kit, and food ration pack.</em></p>



<p>A list of the items in the players inventory, this can easily be obtained by simply converting the name of each item to a text string.</p>



<p><em>It is currently daytime.</em></p>



<p><em>It is hot and humid.</em></p>



<p>Time of day, weather, and similar information can be obtained from the games variables.</p>



<p><em>Nearby there is an old, ruined house, a piece of starship wreckage, and a supply crate. In the distance there is an old radio tower and a military base.</em></p>



<p>This information can be obtained by doing a radius search and then taking the name of any objects found and adding it to the prompt.</p>



<p>In this way, the prompt can be generated and updated quite easily.</p>



<p>So, lets take a look at a few sample outputs. I still have a lot more testing to do in this area, this is just the beginning.</p>



<p>AI:<br><em>Greetings, traveler. I&#8217;m doing well, considering our circumstances. It&#8217;s not every day one gets to explore the ruins of civilization alongside a seasoned adventurer like yourself. That 10mm pistol looks like it&#8217;s seen some action; what stories does it hold? And how about that medical kit? Have you had to use it recently? By the way, would you like something to drink from my ration pack? It&#8217;s not much, but it might help quench your thirst in this sweltering heat. What do you say?</em></p>



<p>This is an excellent response. Not only does it make sense, but the AI has also correctly “realised” that the player is a “seasoned adventurer” and that the Pistol in their inventory has “seen some use” likely because the prompt indicated that the player was a “combat veteran”.</p>



<p>It would be possible to use conventional techniques to implement something like this, but this would, first of all, lead to a LOT of rules being necessary, and second of all if would still lead to generic, repetitive, monotonous phrases.</p>



<p>Furthermore, If I change the player part of the prompt to:</p>



<p><em>You are talking to an inexperienced starship crew member. This is their first field mission. They are carrying a 10mm pistol, a medical kit, and food ration pack</em></p>



<p>Then the AI has a quite different response:</p>



<p><em>I&#8217;m doing alright, considering the circumstances. It&#8217;s not every day you get to explore a post-apocalyptic wasteland. What about you? First time out in the field, huh? You look a bit overwhelmed. Don&#8217;t worry, I&#8217;ve been around these parts for a while. If you need any advice or help, just let me know. We can start by checking out that supply crate over there. It might have some useful gear inside. And be careful with that pistol &#8211; it&#8217;s not as reliable as you might think. Now, what do you say we take a look?</em></p>



<p>The AI has responded correctly based on the players inexperience, and even warned them not to allow their pistol to discharge accidentally! This is a subtly different interaction than before.</p>



<p>This type of variation would not be possible with a rule based system, even a complex one.</p>



<p>A rule based system (or any other “conventional” AI dialog system would also not allow the AI to alter their response based on other factors, such as weather (Sweltering heat), enemies being present or not present, or any of the multitude of other factors and variables that would be present in a computer game.</p>



<p>The only thing that the AI got wrong was in relation to the ration pack. The AI is offering the player a chance to drink from their (The AI’s) ration pack, even though it is actually the player that is carrying the item.</p>



<p>Another example:</p>



<p>AI:<br><em>Hello, How are you? I&#8217;m doing alright, considering the circumstances. It&#8217;s not every day you get to meet someone from the stars. What brings you to this godforsaken place? And what&#8217;s with all the gear? Are you planning on sticking around for a while?</em></p>



<p>USER:<br><em>I&#8217;m hoping to find a ship, to get off this planet, do you know anywhere I can find one?</em></p>



<p>AI:<br><em>A ship, huh? That&#8217;s a tall order. Most of them got destroyed in the Great War or scavenged for parts by now. But I might have some info that could help you out. There&#8217;s a rumor going around about a hidden bunker beneath the old military base over there. Supposedly, it&#8217;s filled with tech and supplies, including maybe even a functional spacecraft. But be warned, the base is crawling with raiders and mutants. You&#8217;ll need to be careful if you&#8217;re thinking of checking it out. As for me, I&#8217;ve been surviving here for years, so I guess you could say I&#8217;m sticking around for a while. What about you? What&#8217;s your story? How did you end up here?</em></p>



<p>This is a another very good response. Not only is quality of the AI’s dialog quite good (despite being completely procedurally generated!) but the AI &#8220;knows&#8221; that there is a military base nearby, and is recommending that the player go there to explore!</p>



<h2 class="wp-block-heading has-medium-font-size"><strong>Further Potential Applications</strong></h2>



<p>Even these few examples should be enough to illustrate just how powerful Generative AI can be for the gaming industry. Imagine a world where the interactions with NPCs and characters subtly shifts based on the players actions.</p>



<p>Instead of simply having a “moral choice” system which grants the player a “Good Ending” or a “Bad ending”, the players actions could influence the way that the entire game world reacts to the player.</p>



<p>The player could choose who they are and how they want to interact with the world completely at their whim, and the world would respond to that, in totally unique ways every time.</p>



<p>I have not even mentioned the potential for Multimodal models with “Vision” support, such as (LLAva: Large Language and Vision Assistant).</p>



<p>These models have the ability to “see” and image and answer questions about it, describe it, provide a caption, etc.</p>



<p>Within games, it could be possible to send an image of the scene to the LLM at runtime and allow the AI to respond based on what is going on in the world, even without any variables or prompts at all.</p>



<p>I have not experimented much with vision based models, but the potential is certainly there.</p>



<h2 class="wp-block-heading has-medium-font-size"><strong>Generative AI as the future of Gaming</strong></h2>



<p>It used to be the case that graphical improvements drove the gaming industry forward: Every few months it seemed gaming would surpass itself with graphical fidelity.</p>



<p>While this is still happening, I believe the pace has slowed considerably. If you look at games released in the early 2000’s even a period of a year or two would result in noticeable improvements in graphical quality, today, most games made in the last 5 years or so show only modest incremental improvements year on year.</p>



<p>I believe that if the gaming industry is going to continue to innovate, that innovation is going to have to come from somewhere other than graphics, and that place could very well be AI.</p>



<p>AI could be the breath of fresh air that the industry needs to reach entirely new heights. In a few short years we may see an entirely new dawn, offering truly immersive, player-centric stories that are as unique as the players themselves.</p>



<h2 class="wp-block-heading has-medium-font-size"><strong>The Fatal Flaw</strong></h2>



<p>There is, however, a serious problem here, which is an inherent problem with LLM’s: The Model is producing content that is inconsistent with the game world.</p>



<p>In the examples above, The NPC talks about a “hidden bunker” beneath the old military base, but even though the military base does exist in the world (And is nearby) it doesn’t have a bunker beneath it. The NPC also mentions “mutants” when there are currently no mutants in the game.</p>



<p>These issues could be partially resolved using a strong prompt (Instructing the AI to only mention named enemy types, etc), but due to the nature of LLM’s the AI is quite likely to produce inconsistent content quite a lot of the time.</p>



<p>Not only that, but even when the content is consistent there will be difficulties in tying it back into the game itself.</p>



<p>The LLM response is a simple text string, how could it be reliably parsed and used to call a function, or modify the game state?</p>



<p>It could be possible to instruct the AI to use certain named tokens in its response, which could then be used to call functions, but this would be unreliable, especially for smaller models (or higher quantisations).</p>



<p>To my knowledge, there are currently no established solutions or best practices for integrating LLM’s into games, and this is certainly an area that I want to experiment with further.</p>



<h2 class="wp-block-heading has-medium-font-size"><strong>Integration with Spiritus Astrum</strong></h2>



<p>Currently, I am looking at three options for integrating LLMs into my project, Spiritus Astrum. These solutions could be used in combination.</p>



<p>The first is to train my own AI model, which would be specifically designed for my game. This would likely be a 7 or an 8b model, or possibly, at most, a 13b. This would probably be the best solution, since it would allow me to train the AI on game-specific data: Characters, Backstory, Enemies, Factions, etc.</p>



<p>I could also simply allow the user to download their own custom model from, for example, hugging face, and connect that locally to Spiritus Astrum. This would allow the user to use any model they wanted, depending on their hardware (But this could cause issues if the user chose an “Uncensored” model, etc).</p>



<p>Finally, The user could download a model and run it from a local server, connecting to it from Spiritus Astrum. Of course, very few players will have access to such a server, this option would be mainly for AI enthusiasts or developers, etc, but since I am working on adding this feature for my own use, there is no reason why I can’t expose it for games to use too.</p>



<p>I could also, potentially, add support for cloud-based AI services, such as chatGPT, but I am unsure of the legal status of using these in a game. In addition, these services could become unavailable if their terms of service change, which is quite likely in the current rapidly changing climate.</p>



<p>At the moment, due to the politicised nature of the AI debate, if I do include Generative AI in my project (Which I may not), it will be turned off by default (Ie, Opt-in, rather than Opt-out).</p>



<p>I will also probably not be shipping any models with the Game itself.</p>



<p>This means that any player who wants to use LLM support will need to, first of all, manually enable the feature in the options, and second of all, manually download a model to use.</p>



<p>The game will be fully playable and functional without LLM support, the LLM feature will simply be an extra feature that can be used to enhance immersion and role playing.</p>



<h2 class="wp-block-heading has-medium-font-size"><strong>Conclusion</strong></h2>



<p>I believe, just like social media, the internet, and all great technological advancements, that AI will become a part of our lives, for better or worse.</p>



<p>Those gamers that boycott AI-driven games may, in years to come, find themselves with very few games to play.</p>



<p>I remember a time when a company having a social media or even an online presence was a novelty, today, it is essentially required.</p>



<p>Generative AI has already proven itself to be frighteningly power in its capabilities, and I am certain that we are only seeing the very tip of the iceberg.</p>



<p>However, despite the uncertainty that an AI-driven world will create, the potential for enhancing and enriching the gaming space is, in my opinion, an exciting and positive one.</p>



<p>&#8211;</p>



<p></p>



<p></p>



<p></p>



<p></p>


<!-- wp:themify-builder/canvas /--><p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fon-the-applications-for-large-language-models-in-gaming%2F&amp;linkname=On%20the%20applications%20for%20Large%20Language%20Models%20in%20Gaming" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fon-the-applications-for-large-language-models-in-gaming%2F&amp;linkname=On%20the%20applications%20for%20Large%20Language%20Models%20in%20Gaming" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fon-the-applications-for-large-language-models-in-gaming%2F&amp;linkname=On%20the%20applications%20for%20Large%20Language%20Models%20in%20Gaming" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fon-the-applications-for-large-language-models-in-gaming%2F&amp;linkname=On%20the%20applications%20for%20Large%20Language%20Models%20in%20Gaming" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fon-the-applications-for-large-language-models-in-gaming%2F&amp;linkname=On%20the%20applications%20for%20Large%20Language%20Models%20in%20Gaming" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fon-the-applications-for-large-language-models-in-gaming%2F&amp;linkname=On%20the%20applications%20for%20Large%20Language%20Models%20in%20Gaming" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fon-the-applications-for-large-language-models-in-gaming%2F&#038;title=On%20the%20applications%20for%20Large%20Language%20Models%20in%20Gaming" data-a2a-url="https://phoenixgamedevelopment.com/blog/on-the-applications-for-large-language-models-in-gaming/" data-a2a-title="On the applications for Large Language Models in Gaming"></a></p><p>The post <a href="https://phoenixgamedevelopment.com/blog/on-the-applications-for-large-language-models-in-gaming/">On the applications for Large Language Models in Gaming</a> first appeared on <a href="https://phoenixgamedevelopment.com/blog">Phoenix Game Development</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://phoenixgamedevelopment.com/blog/on-the-applications-for-large-language-models-in-gaming/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Spiritus Astrum [P0-B9]: p1471: Towards Early Access</title>
		<link>https://phoenixgamedevelopment.com/blog/spiritus-astrum-p0-b9-p1471-towards-early-access/</link>
					<comments>https://phoenixgamedevelopment.com/blog/spiritus-astrum-p0-b9-p1471-towards-early-access/#respond</comments>
		
		<dc:creator><![CDATA[PhoenixGames]]></dc:creator>
		<pubDate>Sun, 10 Nov 2024 23:57:50 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Astral Realms]]></category>
		<category><![CDATA[P-0]]></category>
		<category><![CDATA[P0_B9]]></category>
		<category><![CDATA[Software and Games]]></category>
		<category><![CDATA[Spirit of the Stars]]></category>
		<category><![CDATA[Spiritus Astrum]]></category>
		<guid isPermaLink="false">https://phoenixgamedevelopment.com/blog/?p=10710</guid>

					<description><![CDATA[<p>I have been mostly working on creating some new art objects for the game. I will have these done relatively quickly. I then intend to improve the exploration and story elements of the game. I have also been working on improving how prefabs are stored and organised in the game, which should make it easier [&#8230;]</p>
<p>The post <a href="https://phoenixgamedevelopment.com/blog/spiritus-astrum-p0-b9-p1471-towards-early-access/">Spiritus Astrum [P0-B9]: p1471: Towards Early Access</a> first appeared on <a href="https://phoenixgamedevelopment.com/blog">Phoenix Game Development</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1471-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1471%3A%20Towards%20Early%20Access" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1471-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1471%3A%20Towards%20Early%20Access" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1471-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1471%3A%20Towards%20Early%20Access" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1471-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1471%3A%20Towards%20Early%20Access" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1471-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1471%3A%20Towards%20Early%20Access" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1471-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1471%3A%20Towards%20Early%20Access" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1471-towards-early-access%2F&#038;title=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1471%3A%20Towards%20Early%20Access" data-a2a-url="https://phoenixgamedevelopment.com/blog/spiritus-astrum-p0-b9-p1471-towards-early-access/" data-a2a-title="Spiritus Astrum [P0-B9]: p1471: Towards Early Access"></a></p>
<p>I have been mostly working on creating some new art objects for the game. I will have these done relatively quickly. I then intend to improve the exploration and story elements of the game.</p>



<p>I have also been working on improving how prefabs are stored and organised in the game, which should make it easier to reuse them later with other art objects.</p>



<p>I have also been working on integrating KoboldCPP support into the UDream LLM asset.</p>



<p>I believe I have solved the problem, it was really just a minor formatting issue caused by the data coming from KoboldCPP not being in the same format as what UDream was expecting.</p>



<p>I have also added a chat-style interface to SpiritusAstrum that will be used for the LLM system when it is integrated. It is very basic at the moment, but it allows for scrolling, and multiple messages to be viewed at once, as well as basic colour coding.</p>



<p>I have also integrated it into the existing dialog systems.</p>



<p>I will probably finish the modelling next week. I still have a few objects to go, and I need to adjust the scale, etc, to make sure everything is consistent.</p>



<figure class="wp-block-image"><a href="https://i.imgur.com/EmMkI03t.jpeg"><img src="data:image/svg+xml,%3Csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width='0'%20height='0'%20viewBox=%270%200%200%200%27%3E%3C/svg%3E" loading="lazy" data-lazy="1" class="tf_svg_lazy" decoding="async" data-tf-src="https://i.imgur.com/mMkI03t.jpeg" alt="" title="source: imgur.com"/><noscript><img decoding="async" data-tf-not-load src="https://i.imgur.com/mMkI03t.jpeg" alt="" title="source: imgur.com"/></noscript></a></figure>



<p></p>



<p></p>



<p></p>


<!-- wp:themify-builder/canvas /--><p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1471-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1471%3A%20Towards%20Early%20Access" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1471-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1471%3A%20Towards%20Early%20Access" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1471-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1471%3A%20Towards%20Early%20Access" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1471-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1471%3A%20Towards%20Early%20Access" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1471-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1471%3A%20Towards%20Early%20Access" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_copy_link" href="https://www.addtoany.com/add_to/copy_link?linkurl=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1471-towards-early-access%2F&amp;linkname=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1471%3A%20Towards%20Early%20Access" title="Copy Link" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fphoenixgamedevelopment.com%2Fblog%2Fspiritus-astrum-p0-b9-p1471-towards-early-access%2F&#038;title=Spiritus%20Astrum%20%5BP0-B9%5D%3A%20p1471%3A%20Towards%20Early%20Access" data-a2a-url="https://phoenixgamedevelopment.com/blog/spiritus-astrum-p0-b9-p1471-towards-early-access/" data-a2a-title="Spiritus Astrum [P0-B9]: p1471: Towards Early Access"></a></p><p>The post <a href="https://phoenixgamedevelopment.com/blog/spiritus-astrum-p0-b9-p1471-towards-early-access/">Spiritus Astrum [P0-B9]: p1471: Towards Early Access</a> first appeared on <a href="https://phoenixgamedevelopment.com/blog">Phoenix Game Development</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://phoenixgamedevelopment.com/blog/spiritus-astrum-p0-b9-p1471-towards-early-access/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
