<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="41819" data-post-id="41819">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Eiji" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Eiji/120/36743_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Eiji
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="OvermindDL1" data-post="11" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Vulkan (not Vulcan)</p>
</blockquote>
</aside>
<p>Yes, I always make mistake here, because some words in Polish with <code>k</code> letter are translated to English equivalent word with <code>c</code> letter. <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="11" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>is significantly lower level, manage your own memory and all, and very unforgiving for errors.  Overall you will not get much of a speed difference if any between well written OpenGL and well written Vulkan except in a few very specific cases.  Mostly Vulkan is just OpenGL cleaned up of it’s ancient cruft.</p>
</blockquote>
</aside>
<p>Yes, but it started with excellent support. For example OpenGL drivers from AMD (at least for my old GPU) are … I heard that implementing Vulkan makes them much more fast rather than old OpenGL drivers that probably needs a good rework, but I don’t have so much time to test it. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="11" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Elixir/BEAM would not be performant for a client, at all.  Maybe as a scripting layer, but not much beyond that at all…</p>
</blockquote>
</aside>
<p>Why not? Can you say something more? I think that some groups of games could have Elixir parts without problem:</p>
<p># 1. If there is something that needs as much CPU power<br>
I know that we can’t say that … language is <code>x</code> times slower than … language, but we can assume some things, just for example:</p>
<blockquote>
<p>This … game part is from 5 up to 10 times faster in C++ than in Elixir. So let’s say that Elixir have  1 point and C++ have 10 points. But all of that happen in only one thread, so if we have 8-core CPU then C++ still have 10 points, but Elixir have more: 1 * 2 * 8 =&gt; 16 i.e. 1 point per each thread.`</p>
</blockquote>
<p>Of course it’s not so simple to say, but something like it. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<p># 2. Network things - imagine that our game allows multiplayer mode, so it could be client as same as server. Each Elixir process per connection with player should work well.</p>
<p># 3. Supervising processes<br>
If something goes wrong when drawing then we could restart drawing process (Vulkan port) and initialize it again that redraws specific area.</p>
<p># 4. Simple website editor for creating new cards <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></p>
<p>I said something about card game. I don’t believe than C++ will have much more FPS that Elixir also in 1 thread for this case - not even talking about 8-core CPU here …<br>
What we could have there?</p>
<ol>
<li>Options + files (load &amp; save settings)</li>
<li>Network things (client + server code)</li>
<li>Process for each player and card for storing stats and do simple math (damage, health etc.) + listener for events - i.e. simple game engine (not draw engine)</li>
<li>Supervisor for managing drawing process + communication to Vulkan - i.e. change health =&gt; call draw another integer in card</li>
<li>3rd-party libraries for example for OS notifications and similar also really small things</li>
</ol>
<p>All hardest things here are rendering and animations.</p>
<p>I can understand that in some cases there is need to use pointers to memory and other low level things, but I don’t think that it’s so bad for some types of games or maybe I missed something?</p>
<p>What do you think?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="41819" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-for-game-development/6845/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-41819" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="41819"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="41841" data-post-id="41841">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="Eiji" data-post="12" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Yes, I always make mistake here, because some words in Polish with k letter are translated to English equivalent word with c letter. <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>There is a word <code>Vulcan</code> in English, just in this case the spec is named <code>Vulkan</code>, yes it is weird.  ^.^;</p>
<aside class="quote no-group" data-username="Eiji" data-post="12" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Yes, but it started with excellent support. For example OpenGL drivers from AMD (at least for my old GPU) are … I heard that implementing Vulkan makes them much more fast rather than old OpenGL drivers that probably needs a good rework, but I don’t have so much time to test it. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>They’ve gotten significantly better in recent years actually.  <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group" data-username="Eiji" data-post="12" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Why not? Can you say something more? I think that some groups of games could have Elixir parts without problem:</p>
</blockquote>
</aside>
<p>The utter and sheer amount of data that has to be sent to the GPU I could not see being done efficiently via BEAM’s message passing.  Perhaps updating a rendered scene state in a native code world via the BEAM would work, but the act of rendering itself and all the synchronization points (‘Flushes’ in GPU parlance) that have to be serialized would never allow it to perform anywhere within a factor as well as native code.</p>
<p>Maaaaybe if you make NIF’s and program them <em>very</em> carefully would it work somewhat decent.  But even then keeping the rendered ‘state’ and just sending over changes to native code would be significantly more efficient.</p>
<p>This is one of those cases that is very CPU/Memory bound, which the BEAM is not suited for.  <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group" data-username="Eiji" data-post="12" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<h1>1. If there is something that needs as much CPU power</h1>
<p>I know that we can’t say that … language is x times slower than … language, but we can assume some things, just for example:</p>
<p>This … game part is from 5 up to 10 times faster in C++ than in Elixir. So let’s say that Elixir have  1 point and C++ have 10 points. But all of that happen in only one thread, so if we have 8-core CPU then C++ still have 10 points, but Elixir have more: 1 * 2 * 8 =&gt; 16 i.e. 1 point per each thread.`</p>
<p>Of course it’s not so simple to say, but something like it. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>I honestly think that even 5 to 10 times faster in native code is being kind, I’d really honestly believe that except in very simple demo’s that it will be multiple orders of magnitude type difference, which is the difference between a smooth 60 fps and getting 2 fps.</p>
<aside class="quote no-group" data-username="Eiji" data-post="12" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<h1>2. Network things - imagine that our game allows multiplayer mode, so it could be client as same as server. Each Elixir process per connection with player should work well.</h1>
</blockquote>
</aside>
<p>Network would be awesome on the BEAM, that is what it is practically designed for after all.  ^.^<br>
However using those network packets to do things like, oh, handle Physics processing or so forth, that would fall flat again.</p>
<aside class="quote no-group" data-username="Eiji" data-post="12" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<h1>3. Supervising processes</h1>
<p>If something goes wrong when drawing then we could restart drawing process (Vulkan port) and initialize it again that redraws specific area.</p>
</blockquote>
</aside>
<p>If your GPU code is crashing then depending on the quality of the drivers you will crash the entire OS or just have a significant speed hit as the rendering pipeline has to be flushed and cleared (I’ve seen stalls of this routinely cost well over 1 second per frame, which drops you to &lt;1fps instantly).  GPU coding has to be done right or it is not a ‘crashing’ issue but rather you become unplayable just because the hardware has to reset its state.</p>
<aside class="quote no-group" data-username="Eiji" data-post="12" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Options + files (load &amp; save settings)</p>
</blockquote>
</aside>
<p>This is generally done once, so it does not matter where it is done.</p>
<aside class="quote no-group" data-username="Eiji" data-post="12" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Network things (client + server code)</p>
</blockquote>
</aside>
<p>This itself is fine on the BEAM, but what is done ‘with’ those packets may not be.</p>
<aside class="quote no-group" data-username="Eiji" data-post="12" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Process for each player and card for storing stats and do simple math (damage, health etc.) + listener for events - i.e. simple game engine (not draw engine)</p>
</blockquote>
</aside>
<p>It’s not just the player but the entire world that you have to simulate, this is <em>hugely</em> CPU bound and will not be done well in the BEAM except for absolutely trivial scenes.</p>
<aside class="quote no-group" data-username="Eiji" data-post="12" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>Supervisor for managing drawing process + communication to Vulkan - i.e. change health =&gt; call draw another integer in card</p>
</blockquote>
</aside>
<p>This will not be done well on the BEAM.  A draw call to the GPU can be batched up in command buffers and so forth, but they have to be flushed at times and at certain points and these are absolutely timing critical (micro-second kind of critical to the hardware).</p>
<aside class="quote no-group" data-username="Eiji" data-post="12" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>3rd-party libraries for example for OS notifications and similar also really small things</p>
</blockquote>
</aside>
<p>Eh, notifications and such are pretty trivial.</p>
<aside class="quote no-group" data-username="Eiji" data-post="12" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>I can understand that in some cases there is need to use pointers to memory and other low level things, but I don’t think that it’s so bad for some types of games or maybe I missed something?</p>
</blockquote>
</aside>
<p>Some ‘types’ sure, like a card game would not matter for sure.  Potentially even something as complex as a 2d shooter becomes infeasible unless the object count is kept extremely low.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="41841" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-for-game-development/6845/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-41841" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="41841"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="41877" data-post-id="41877">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Eiji" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Eiji/120/36743_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Eiji
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="OvermindDL1" data-post="13" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>The utter and sheer amount of data that has to be sent to the GPU I could not see being done efficiently via BEAM’s message passing.  Perhaps updating a rendered scene state in a native code world via the BEAM would work, but the act of rendering itself and all the synchronization points (‘Flushes’ in GPU parlance) that have to be serialized would never allow it to perform anywhere within a factor as well as native code.</p>
<p>Maaaaybe if you make NIF’s and program them very carefully would it work somewhat decent.  But even then keeping the rendered ‘state’ and just sending over changes to native code would be significantly more efficient.</p>
<p>This is one of those cases that is very CPU/Memory bound, which the BEAM is not suited for.  <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>I don’t know if I understand you correctly. You are talking about bigger games where there is a number of things that could change small detail and therefore make huge affect on computations, right?<br>
Originally I think about 3 steps:</p>
<ol>
<li>Elixir as a master process - like website backend that simply manages data. I don’t want to integrate Elixir with JavaScript, HTML and CSS - just use multi thread ability and if there is really big performance problem then optionally:<br>
1.5 make a NIF’s for lower-level language, but I don’t see that is really needed (of course it depends on how much data we need to process and how fast). Anyway it could be possible to manages NIFs to run computation on all cores/threads instead of one - like in normal games, right?<br>
Btw. one time I have a network problem and I was need to save data (that I normally fetches from sites) and I saved them to file using <code>:erlang.term_to_binary</code> and was surprised how fast it reads really big files back to Elixirs types and I’m working on really old laptop that is not recommend for games from release date. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"> So here I believe that Elixir could make lots of awesome things also for at least some games …</li>
<li>A library/framework or something like graphic engine that connects Vulkan with Elixir by NIF instead of try to use Vulkan API directly in Elixir (I don’t need to be expert to know that it’s bad idea) and therefore don’t force Elixir to make any graphic work - just manages and process information data that will be directly used in framework as argument to draw specific things.</li>
<li>Finally Vulkan API that makes as much as possible work on GPU.</li>
</ol>
<aside class="quote no-group quote-modified" data-username="OvermindDL1" data-post="13" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>I honestly thing that even 5 to 10 times faster in native code is being kind, I’d really honestly believe that except in very simple demo’s that it will be multiple orders of magnitude type difference, which is the difference between a smooth 60 fps and getting 2 fps.</p>
</blockquote>
</aside>
<p>If we are still in topic … vs … then if so it’s 30x bigger fps, so we only need 15 (60 / 2 threads / 2 fps) core CPU to have similar results in both cases - of course it’s not a gaming CPU, but it’s really not a problem for today’s technology. <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="13" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Network would be awesome on the BEAM, that is what it is practically designed for after all.  ^.^<br>
However using those network packets to do things like, oh, handle Physics processing or so forth, that would fall flat again.</p>
</blockquote>
</aside>
<p>Hmm, you are talking about sending rendered image? I don’t think that sending informations about changes on map is a really big problem especially on better PC setups with fast SSD. <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></p>
<pre data-code-wrap="elixir"><code class="lang-elixir"># receive opponent moved, shoot and destroyed one item in map
# process required information
Framework.send_data_to_render(data)
</code></pre>
<aside class="quote no-group" data-username="OvermindDL1" data-post="13" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>If your GPU code is crashing then depending on the quality of the drivers you will crash the entire OS or just have a significant speed hit as the rendering pipeline has to be flushed and cleared (I’ve seen stalls of this routinely cost well over 1 second per frame, which drops you to &lt;1fps instantly).  GPU coding has to be done right or it is not a ‘crashing’ issue but rather you become unplayable just because the hardware has to reset its state.</p>
</blockquote>
</aside>
<p>Oh, that’s what I don’t expected. I know about drivers, but not whole GPU code, wow. +1000 respect for all people that works on GPUs. <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></p>
<p>I can understand that working on GPU form Elixir to create game like GTA V could be a <strong>little</strong> (<img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20">) problem, but I think about something really other.</p>
<p>I believe that for all 2D games Elixir + NIF with Framework + Vulkan/OpenGL should work really well and here Elixir should not be close to use whole CPU power. We probably are talking about different solutions. I believe that there is not much data in really big number of games (also 3D).<br>
Problem begins when we need to have  calculate position of every body on map (not just simple movement with jumping, but also move by explosions and more) and in second case where we have a really big number of data to manage like in games with open world.</p>
<p>I don’t think to make a clone of Unreal Anthology in Elixir, but what Elixir offers should be too much for simpler cases like clone of <code>M.U.G.E.N.</code>, 2D mob games or card games.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="41877" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-for-game-development/6845/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-41877" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="41877"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="41965" data-post-id="41965">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="Eiji" data-post="14" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>If we are still in topic … vs … then if so it’s 30x bigger fps, so we only need 15 (60 / 2 threads / 2 fps) core CPU to have similar results in both cases - of course it’s not a gaming CPU, but it’s really not a problem for today’s technology. <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>More cores rendering will not increase FPS like that.  You can only use multiple cores to build up multiple CommandQueues, but even then executing those is serial and that tends to be the slowest part, not the building of the CommandQueues (except for some very exotic work that almost no game does at all).  Extra cores can improve rendering by loading, say, multiple textures at the same time to the GPU, but the actual rendering will not be helped by more cores at all.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="41965" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-for-game-development/6845/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-41965" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="41965"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #14"></div>
  </section>
</div>
    <div class="postbit" id="41966" data-post-id="41966">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Eiji" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Eiji/120/36743_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Eiji
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="OvermindDL1" data-post="15" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>More cores rendering will not increase FPS like that.  You can only use multiple cores to build up multiple CommandQueues, but even then executing those is serial and that tends to be the slowest part, not the building of the CommandQueues (except for some very exotic work that almost no game does at all).  Extra cores can improve rendering by loading, say, multiple textures at the same time to the GPU, but the actual rendering will not be helped by more cores at all.</p>
</blockquote>
</aside>
<p>Yeah, I forgot about serial - here was my mistake. Now I see what you are trying to say.<br>
So with Elixir we can optimise some parts of every game, but not rendering part. From what I heard developers already achieve what they should (I mean here about OpenGL/Vaulkan), because rest heavy depends on hardware + drivers + of course whole code quality.<br>
Thanks for explanations!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="41966" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-for-game-development/6845/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-41966" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="41966"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #15"></div>
  </section>
</div>
    <div class="postbit" id="41969" data-post-id="41969">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Sorry for my terse messages today, just crazy busy at work, I can be more detailed later if wanted.  ^.^;</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="41969" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-for-game-development/6845/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-41969" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="41969"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #16"></div>
  </section>
</div>
    <div class="postbit" id="43392" data-post-id="43392">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="ShalokShalom" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ShalokShalom/120/15829_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  ShalokShalom
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It is outdated. Last update 2014.</p>
<p>Here is another solution, with full Qt support: <a href="https://github.com/luc-tielen/Cure/issues/5#issuecomment-318596547" class="inline-onebox" rel="noopener nofollow ugc">Is there any support for Qt? · Issue #5 · luc-tielen/Cure · GitHub</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="43392" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-for-game-development/6845/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-43392" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="43392"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #17"></div>
  </section>
</div>
    <div class="postbit" id="43426" data-post-id="43426">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-modified" data-username="ShalokShalom" data-post="18" data-topic="6845">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/shalokshalom/48/15829_2.png" class="avatar"> ShalokShalom:</div>
<blockquote>
<p>Here is another solution, with full Qt support: <a href="https://github.com/luc-tielen/Cure/issues/5#issuecomment-318596547" class="inline-onebox" rel="noopener nofollow ugc">Is there any support for Qt? · Issue #5 · luc-tielen/Cure · GitHub</a></p>
</blockquote>
</aside>
<p>Uh, not really?  That is just a port mapping library (which you can already do in straight OTP/BEAM without libraries) to an external app that you have to build?  ^.^;</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="43426" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-for-game-development/6845/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-43426" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="43426"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #18"></div>
  </section>
</div>
    <div class="postbit" id="43428" data-post-id="43428">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="ShalokShalom" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ShalokShalom/120/15829_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  ShalokShalom
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>So, ErlangVM already supports that by nature? So I guess this project was started before?<br>
Anyway, do you think it will work? Here is a more expanded view on this:</p><aside class="quote quote-modified" data-post="1" data-topic="7290">
  <div class="title">
    <div class="quote-controls"></div>
    <img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/shalokshalom/48/15829_2.png" class="avatar">
    <div class="quote-title__text-content">
      <a href="https://forum.elixirforum.com/t/qt-for-elixir/7290" rel="nofollow">Qt for Elixir</a> <a class="badge-category__wrapper " href="/c/questions-help/questions/53" rel="nofollow"><span data-category-id="53" style="--category-badge-color: #C14BFB; --category-badge-text-color: #000000; --parent-category-badge-color: #C14BFB;" data-parent-category-id="171" data-drop-close="true" class="badge-category --style-square --has-parent" title="Elixir Questions / Help"><span class="badge-category__name">Questions</span></span></a>
    </div>
  </div>
  <blockquote>
    <a href="https://github.com/luc-tielen/Cure/issues/5#issuecomment-318596547" class="onebox" target="_blank" rel="noopener nofollow ugc">https://github.com/luc-tielen/Cure/issues/5#issuecomment-318596547</a> 
Cure seems to be a solution to get a user interface library working in Elixir. 
To be precise, Qt is even more as that: 
There is a full fledged web engine called V4, which is the Qt port of V8. 
Then some things which are already there in Elixir, so probably zero use for them: SQL support and container classes, as well as some other networking libraries. 
The highlight for me is QML, a declarative language in the style of JSON,…
  </blockquote>
</aside>
 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="43428" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-for-game-development/6845/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-43428" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="43428"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #19"></div>
  </section>
</div>
    <div class="postbit" id="43550" data-post-id="43550">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="ShalokShalom" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ShalokShalom/120/15829_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  ShalokShalom
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>So all whats left seems to be a generic QML library:</p>
<p><a href="https://filcuc.github.io/DOtherSide/" class="onebox" target="_blank" rel="noopener nofollow ugc">https://filcuc.github.io/DOtherSide/</a></p>
<p>And the README of <a href="https://github.com/seanchas116/libqmlbind" rel="noopener nofollow ugc">libqmlbind</a> mentions special API code for dynamical languages, while itself seems to be unmaintained for one year, so it might make sense to port those parts of the API into DOtherside? Again, of course, if anybody is interested at all.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="43550" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/elixir-for-game-development/6845/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-43550" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="43550"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #20"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/6845/load_more?page=3">Load more posts (5 remaining)</a>
</div></template></turbo-stream>