<?xml version="1.0" encoding="UTF-8" standalone="yes"?><oembed><version><![CDATA[1.0]]></version><provider_name><![CDATA[Shooter Game Tutorial]]></provider_name><provider_url><![CDATA[http://shootertutorial.com]]></provider_url><author_name><![CDATA[andrzejkoloska]]></author_name><author_url><![CDATA[https://shootertutorial.com/author/andrzejkoloska/]]></author_url><title><![CDATA[Blueprints vs C++]]></title><type><![CDATA[link]]></type><html><![CDATA[<p>There is a lot of questions like:</p>
<ul>
<li>Can I create whole game using Blueprints only?</li>
<li>What about performance if I&#8217;m using Blueprints?</li>
<li>Which should I use &#8211; Blueprints or C++?</li>
</ul>
<p>I will try to answer those in this post.</p>
<p><!--more--></p>
<p><strong>Basically Blueprints are powerful for rapid prototyping.</strong> You can create whole game prototype (or functionality prototype) in Blueprints much more faster than in C++. Yes you can create whole game fully in Blueprints but there are a couple of things that can&#8217;t be done in Blueprints:</p>
<ul>
<li>Fully multiplayer game, (MMO, Coop games) there is still lot of things that need to be pushed to Blueprints. It depends on your game. For my example &#8211; Coop Standing Shooter I can create multiplayer with Blueprints only. But if you are creating MMO or something bigger than I&#8217;m you should learn C++,</li>
<li>SDK support. For example If you want to use Game Center Multiplayer you need to implement it by yourself in C++, if you want to add your own analytics it need to be implemented in C++, if you want to implement AdMob you need to do that in C++. Basically all new functionalities need to be implemented in C++,</li>
<li>There are still problems with Data Driven Variables (from XLS) in Blueprints. In our projects we needed to create them in C++. It&#8217;s easy but still you can&#8217;t do that in Blueprints only,</li>
</ul>
<p>Another things that you should think about when doing Blueprints only game:</p>
<ul>
<li><strong>Blueprints are 10x slower than C++</strong>. If you have math or something in Tick it will be slower. On PC you won&#8217;t see that much change but on consoles and mobile you will see the difference,</li>
<li><strong>Full game done in Blueprints is hard to read</strong>. You need to think how can you increase readability of your blueprints. (use components, split your blueprints, use object-oriented methodology &#8211; don&#8217;t try to put everything in one blueprint &#8211; I will be trying to learn that later in blog)</li>
<li><strong>Cycling References</strong> &#8211; this is the most important thing that you should think about when developing a game in blueprints only. It&#8217;s really easy to come up with cycling reference issue. Before 4.7 your game will crash, currently 4.7+ blueprint that have cycling reference will not work correctly. If class A have reference to class B, and class B have reference do class A you are increasing chance for cycling reference issue. If you are changing variables from class B on class A chance for cycling reference is greater. The same thing is in C++ but programmers know about it, level designers not. You need to be careful,</li>
</ul>
<p>From my experience the best approach is:</p>
<ol>
<li>Prototype your game or functionality in blueprints but extend from classes created in C++,</li>
<li>If you are happy with your prototype move all math to C++ (which will be based class) In blueprints leave events and simple functionalities that doesn&#8217;t are much math involved. This step is really easy for someone who doesn&#8217;t know C++. In blueprints you are implementing code you can do it in C++ as well if you know how to create a class / functions / variables and compile them,</li>
<li>Always keep in mind that someone will be using your Blueprints. Thanks to that you will focus on readability,</li>
<li>Iterate -&gt; learn -&gt; improve. Don&#8217;t be afraid to create something from scratch if you are feeling that it can be implemented better with more flexibility,</li>
</ol>
<p>So you should be using both. In this blog I will use Blueprints only but I will try to point out which functions should be moved to C++.</p>
]]></html></oembed>