<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss/pretty-feed-v3.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Juniper Bouchard&apos;s blog</title><description>A collection of thoughts and learnings, mostly about Unreal Engine and its related things</description><link>https://imjuniper.fyi/blog/</link><language>en-ca</language><atom:link href="https://imjuniper.fyi/rss.xml" rel="self" type="application/rss+xml"/><item><title>Enabling remote Zen Streaming with a CLI argument</title><link>https://imjuniper.fyi/blog/remote-zen-streaming/</link><guid isPermaLink="true">https://imjuniper.fyi/blog/remote-zen-streaming/</guid><description>A simple engine change for one-off enabling of remote Zen Streaming a bit more easily than editing config files.</description><pubDate>Thu, 18 Dec 2025 06:13:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Note that this was written with UE 5.5 in mind. More recent versions of ZenLaunch can install Zen Server as a Windows service and can use a different set of settings for it. However, I still think that this can be useful when manually starting Zen Server.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Enabling Zen Streaming via the config&lt;/h2&gt;
&lt;p&gt;If you work with Unreal Engine, chances are that you&apos;ll eventually be testing on other devices than your PC, whether it be a mobile device, a Steam Deck, etc. Eventually, your game may become quite large, making packaging and deploying to other devices rather inconvenient and slow. Thankfully, Epic has introduced &lt;a href=&quot;https://dev.epicgames.com/documentation/en-us/unreal-engine/how-to-use-zenserver-streaming-to-play-on-target-in-unreal-engine&quot;&gt;Zen Streaming&lt;/a&gt;, which can use your PC&apos;s Zen Server (the new DDC and cooked output storage system) to stream assets directly over the network. This means that you can deploy only the binaries and keep the cooked content on your development machine, making deployments much faster. However, for this to work, the documentation recommends that you add the following to your project&apos;s &lt;code&gt;DefaultEngine.ini&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[Zen.AutoLaunch]
LimitProcessLifetime=false
AllowRemoteNetworkService=true
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Why it&apos;s not ideal&lt;/h3&gt;
&lt;p&gt;This... isn&apos;t great, for a couple of reasons:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You need to open the editor at least once for it to launch Zen&lt;/li&gt;
&lt;li&gt;If submitted to source control, all of your team will have it enabled, potentially causing security issues&lt;/li&gt;
&lt;li&gt;If you launch Zen Server via &lt;code&gt;ushell&lt;/code&gt; (&lt;code&gt;.zen start&lt;/code&gt;), it will not pick up that configuration
&lt;ul&gt;
&lt;li&gt;It will, however, pick up the settings in the engine&apos;s &lt;code&gt;BaseEngine.ini&lt;/code&gt;, but editing that is even worse in my opinion&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Modifying the ZenLaunch program&lt;/h2&gt;
&lt;p&gt;It would be nice if you could, say, start Zen Server with &lt;code&gt;ushell&lt;/code&gt; and conditionally enable remote streaming, like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.zen start -- -AllowRemoteNetworkService
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Fortunately, it only requires a simple 2 line modification to enable this. In &lt;code&gt;Engine/Source/Developer/Zen/Private/ZenServerInterface.cpp&lt;/code&gt;, at line 1244 (as of 5.5), change the following:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;if (!InSettings.bAllowRemoteNetworkService)
{
	Parms.Append(TEXT(&quot; --http-forceloopback&quot;));
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;to this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// @YOURCOMPANY_CHANGE [IMPROVEMENT] by juniper.bouchard - BEGIN: Add a parameter to allow Zen Server to be launched allowing remote connections
const bool bAllowRemoteNetworkServiceOverride = FParse::Param(FCommandLine::Get(), TEXT(&quot;AllowRemoteNetworkService&quot;));
if (!InSettings.bAllowRemoteNetworkService &amp;amp;&amp;amp; !bAllowRemoteNetworkServiceOverride)
{
	Parms.Append(TEXT(&quot; --http-forceloopback&quot;));
}
// @YOURCOMPANY_CHANGE [IMPROVEMENT] - END
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now once you recompile ZenLaunch (which &lt;code&gt;ushell&lt;/code&gt; will do for you when attempting to start Zen Server), you&apos;ll be able to use the &lt;code&gt;-AllowRemoteNetworkService&lt;/code&gt; parameter to allow remote devices to use your development machine as a Zen Streaming server.&lt;/p&gt;
</content:encoded><dc:creator>Juniper Bouchard</dc:creator></item></channel></rss>