<?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>libraries | Learn C Games Programming Blog</title>
	<atom:link href="https://learncgames.com/category/libraries/feed/" rel="self" type="application/rss+xml" />
	<link>https://learncgames.com</link>
	<description>A blog about C, programming games and my ebook(s).</description>
	<lastBuildDate>Tue, 23 Mar 2021 17:10:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://learncgames.com/wp-content/uploads/2020/03/cropped-favicon-32x32.png</url>
	<title>libraries | Learn C Games Programming Blog</title>
	<link>https://learncgames.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">181446779</site>	<item>
		<title>How to extend C (99) with a library</title>
		<link>https://learncgames.com/how-to-extend-c-99-with-a-library/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-extend-c-99-with-a-library</link>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Mon, 22 Mar 2021 19:17:17 +0000</pubDate>
				<category><![CDATA[C]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[zpl]]></category>
		<guid isPermaLink="false">https://learncgames.com/?p=2925</guid>

					<description><![CDATA[<p>I&#8217;m always looking to improve my C code and one way to do this is through others efforts. Today I came across Zpl, a cross-platform header-only library. The zpl.h file is a whopping 17,495 lines long!  It has code for macro helpers,  memory, collections, string, hashtable, file, memory streamer, print, time, random, sorting and miscellaneous. [&#8230;]</p>
The post <a href="https://learncgames.com/how-to-extend-c-99-with-a-library/">How to extend C (99) with a library</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></description>
										<content:encoded><![CDATA[<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:87,&quot;href&quot;:&quot;https:\/\/github.com\/zpl-c\/zpl&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20251114000808\/https:\/\/github.com\/zpl-c\/zpl&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 11:47:50&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-13 06:08:26&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-17 12:26:54&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-27 11:01:09&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-06 14:57:28&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-12 08:08:40&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-19 22:56:32&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-26 02:10:24&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-01 16:42:31&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-07 22:02:45&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-11 13:43:41&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-15 23:39:17&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-15 23:39:17&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:88,&quot;href&quot;:&quot;https:\/\/github.com\/zpl-c\/zpl\/tree\/master\/code\/apps\/examples&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20251029020829\/https:\/\/github.com\/zpl-c\/zpl\/tree\/master\/code\/apps\/examples&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 11:47:53&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-13 06:08:26&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-17 12:26:53&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-27 11:01:09&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-06 14:57:27&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-12 08:08:40&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-19 22:56:32&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-26 02:10:24&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-01 16:42:31&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-09 16:02:11&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-04-15 23:39:17&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-15 23:39:17&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;}]'></div>
<p><img fetchpriority="high" decoding="async" class="alignleft size-medium wp-image-2927" src="https://learncgames.com/wp-content/uploads/2021/03/toolkit-300x300.jpg" alt="toolkit" width="300" height="300" srcset="https://learncgames.com/wp-content/uploads/2021/03/toolkit-300x300.jpg 300w, https://learncgames.com/wp-content/uploads/2021/03/toolkit-150x150.jpg 150w, https://learncgames.com/wp-content/uploads/2021/03/toolkit-250x250.jpg 250w, https://learncgames.com/wp-content/uploads/2021/03/toolkit.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" />I&#8217;m always looking to improve my C code and one way to do this is through others efforts. Today I came across <a title="Link to Zpl library on GitHub" href="https://github.com/zpl-c/zpl" target="_blank" rel="nofollow noopener">Zpl</a>, a cross-platform header-only library.</p>
<p>The zpl.h file is a whopping 17,495 lines long!  It has code for macro helpers,  memory, collections, string, hashtable, file, memory streamer, print, time, random, sorting and miscellaneous.</p>
<p>Given the length, it would be difficult to make sense but the authors (<em>Vladyslav Hrytsenko and Dominik Madarász from the Ukraine and Slovakia respectively</em>) have provided <a title="Link to ZPL example applications" href="https://github.com/zpl-c/zpl/tree/master/code/apps/examples" target="_blank" rel="nofollow noopener">a folder of example applications</a> that use the library.</p>
<p>It looks a very impressive library and well worth a look.</p>The post <a href="https://learncgames.com/how-to-extend-c-99-with-a-library/">How to extend C (99) with a library</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2925</post-id>	</item>
		<item>
		<title>Raylib &#8211; a C library for videogames</title>
		<link>https://learncgames.com/raylib-a-c-library-for-videogames/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=raylib-a-c-library-for-videogames</link>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Fri, 01 Jan 2021 00:00:55 +0000</pubDate>
				<category><![CDATA[C]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[game library]]></category>
		<guid isPermaLink="false">https://learncgames.com/?p=2247</guid>

					<description><![CDATA[<p>Much as I love SDL, I&#8217;m quite happy to look at alternatives and Raylib looks very good. It was inspired by Borland BGI graphics lib and by XNA framework (both of which I&#8217;ve used). It&#8217;s written in C99 and is very cross-platform, even listing Raspberry Pi (I&#8217;m guessing they mean Raspberry Pi OS) as well [&#8230;]</p>
The post <a href="https://learncgames.com/raylib-a-c-library-for-videogames/">Raylib – a C library for videogames</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></description>
										<content:encoded><![CDATA[<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:281,&quot;href&quot;:&quot;https:\/\/www.raylib.com&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20260206133105\/https:\/\/www.raylib.com\/&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 18:46:50&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-10 13:49:49&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-13 15:37:06&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-16 22:41:30&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-20 12:21:10&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-25 14:58:59&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-28 18:54:02&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-04 10:10:49&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-07 11:25:15&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-11 23:14:54&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-17 11:18:45&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-21 23:31:24&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-26 02:10:24&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-30 11:29:19&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-03 04:01:03&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-06 15:55:21&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-09 16:02:12&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-13 13:33:47&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-17 06:22:35&quot;,&quot;http_code&quot;:503}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-17 06:22:35&quot;,&quot;http_code&quot;:503},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:282,&quot;href&quot;:&quot;https:\/\/github.com\/raysan5\/raylib\/blob\/master\/BINDINGS.md&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20260204211950\/https:\/\/github.com\/raysan5\/raylib\/blob\/master\/BINDINGS.md&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 13:29:44&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-10 13:49:49&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-14 05:12:54&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-17 13:23:45&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-25 14:58:59&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-01 10:20:25&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-06 12:50:24&quot;,&quot;http_code&quot;:429},{&quot;date&quot;:&quot;2026-03-11 23:14:53&quot;,&quot;http_code&quot;:429},{&quot;date&quot;:&quot;2026-03-17 11:18:45&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-23 00:38:44&quot;,&quot;http_code&quot;:429},{&quot;date&quot;:&quot;2026-03-26 02:10:24&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-30 11:29:18&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-03 09:09:16&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-06 15:55:21&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-09 16:02:11&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-04-13 13:33:46&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-17 06:22:27&quot;,&quot;http_code&quot;:429}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-17 06:22:27&quot;,&quot;http_code&quot;:429},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:283,&quot;href&quot;:&quot;https:\/\/www.raylib.com\/examples.html&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20260206133108\/https:\/\/www.raylib.com\/examples.html&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-10 02:00:27&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-14 05:13:00&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-17 13:23:45&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-25 14:59:01&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-02 23:03:40&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-06 12:50:25&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-11 23:14:54&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-17 11:18:45&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-23 00:38:44&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-26 02:10:24&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-30 11:29:19&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-03 09:09:20&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-06 15:55:21&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-09 16:02:19&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-13 13:33:47&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-17 06:22:32&quot;,&quot;http_code&quot;:503}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-17 06:22:32&quot;,&quot;http_code&quot;:503},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:284,&quot;href&quot;:&quot;https:\/\/github.com\/raysan5\/raygui&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20260205113238\/https:\/\/github.com\/raysan5\/raygui&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 13:29:52&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-10 13:49:49&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-14 05:12:58&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-17 15:19:15&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-25 14:58:59&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-02 23:03:45&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-06 12:50:25&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-11 23:14:54&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-17 11:18:45&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-23 00:38:46&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-26 02:10:24&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-30 11:29:20&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-03 09:09:16&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-06 15:55:25&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-09 16:02:11&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-04-13 13:33:48&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-17 06:22:31&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-17 06:22:31&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;}]'></div>
<p><img decoding="async" class="alignleft size-medium wp-image-2248" src="https://learncgames.com/wp-content/uploads/2020/12/raylib-300x169.png" alt="Raylib screenshota" width="300" height="169" srcset="https://learncgames.com/wp-content/uploads/2020/12/raylib-300x169.png 300w, https://learncgames.com/wp-content/uploads/2020/12/raylib-768x433.png 768w, https://learncgames.com/wp-content/uploads/2020/12/raylib.png 830w" sizes="(max-width: 300px) 100vw, 300px" />Much as I love SDL, I&#8217;m quite happy to look at alternatives and <a title="Link to Raylib.com" href="https://www.raylib.com/" target="_blank" rel="nofollow noopener">Raylib</a> looks very good. It was inspired by Borland BGI graphics lib and by XNA framework (<em>both of which I&#8217;ve used</em>).</p>
<p>It&#8217;s written in C99 and is very cross-platform, even listing Raspberry Pi (<em>I&#8217;m guessing they mean Raspberry Pi OS</em>) as well as Windows, Mac, Linux, Android and HTML5. Basically any platform that supports C and OpenGL. There is a massive <a title="Link to Raylib bindings" href="https://github.com/raysan5/raylib/blob/master/BINDINGS.md" target="_blank" rel="nofollow noopener">list of bindings</a> for use in other programming languages.</p>
<p>Check out the <a title="Link to Rylib examples" href="https://www.raylib.com/examples.html" target="_blank" rel="nofollow noopener">examples page</a>; you can try them online and each has a C source code listing so you can see how it&#8217;s done.</p>
<p>What I really like about RayLib is the scope of it and this is where I think it beats SDL. There&#8217;s 2D and 3D support, text support, in eight modules (<em>core, shapes, textures, text, models, shaders, raudio and physac)</em>. It also comes with 8 free fonts but you can use your own custom fonts, pretty much the same way as I did in the Asteroids game.</p>
<p>I was very impressed with the text demo where a red box contains the text and if you resize it with the mouse the text is word wrapped.</p>
<p>The Spanish developer Ray (<em>surname unknown</em>) was cited today as the #1 trending C developer on GitHub and that&#8217;s a testament to the seven years that he has put into Raylib. His design philosophy with Raylib is to make programming fun and I am going to check it out.  If it looks as good as I think it is, I will be switching to it for future games work. One thing that particular intrigues me is the <a title="Link to RayGui library on GitHub" href="https://github.com/raysan5/raygui" target="_blank" rel="nofollow noopener">RayGui library</a>&#8211; an immediate mode GUI library. There are various tools that have been designed with it. and it supports these GUI controls:</p>
<pre><code class="" data-line="">Label       |  Button      |  LabelButton |  ImageButton  |  Toggle      |  ToggleGroup |  CheckBox
ComboBox    |  DropdownBox |  TextBox     |  TextBoxMulti |  ValueBox    |  Spinner     |  Slider   
SliderBar   |  ProgressBar |  StatusBar   |  ScrollBar    |  ScrollPanel |  DummyRec    |  Grid</code></pre>
<p><img decoding="async" class="alignleft size-large wp-image-2249" src="https://learncgames.com/wp-content/uploads/2020/12/raygui_style_table_multi-1024x160.png" alt="RayGui table" width="1024" height="160" srcset="https://learncgames.com/wp-content/uploads/2020/12/raygui_style_table_multi-1024x160.png 1024w, https://learncgames.com/wp-content/uploads/2020/12/raygui_style_table_multi-300x47.png 300w, https://learncgames.com/wp-content/uploads/2020/12/raygui_style_table_multi-768x120.png 768w, https://learncgames.com/wp-content/uploads/2020/12/raygui_style_table_multi-1536x240.png 1536w, https://learncgames.com/wp-content/uploads/2020/12/raygui_style_table_multi.png 1638w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>The post <a href="https://learncgames.com/raylib-a-c-library-for-videogames/">Raylib – a C library for videogames</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2247</post-id>	</item>
		<item>
		<title>Coding a text adventure in C</title>
		<link>https://learncgames.com/coding-a-text-adventure-in-c/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=coding-a-text-adventure-in-c</link>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Sat, 19 Dec 2020 00:00:45 +0000</pubDate>
				<category><![CDATA[C]]></category>
		<category><![CDATA[libraries]]></category>
		<guid isPermaLink="false">https://learncgames.com/?p=2092</guid>

					<description><![CDATA[<p>Text adventures have been around since the likes of Colossal Cave which I first played in 1980. They were quite popular on the early home computers like ZX 81 which were quite limited in RAM and capability. With the capacity of modern computers there are Interactive fiction (the modern name for adventure games) games with [&#8230;]</p>
The post <a href="https://learncgames.com/coding-a-text-adventure-in-c/">Coding a text adventure in C</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></description>
										<content:encoded><![CDATA[<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:315,&quot;href&quot;:&quot;https:\/\/helderman.github.io\/htpataic\/htpataic01.html&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20251210175951\/https:\/\/helderman.github.io\/htpataic\/htpataic01.html&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 13:50:07&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-10 04:18:25&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-13 07:26:26&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-16 09:00:05&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-19 17:39:47&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-22 23:06:02&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-26 08:14:20&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-01 20:19:08&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-05 13:14:31&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-08 17:22:30&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-12 15:21:25&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-16 14:56:45&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-19 21:16:50&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-23 02:05:48&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-27 04:59:02&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-30 15:15:44&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-02 21:26:05&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-06 13:02:49&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-09 17:51:15&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-13 19:20:21&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-17 17:46:33&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-17 17:46:33&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;}]'></div>
<p><img loading="lazy" decoding="async" class="alignleft size-medium wp-image-2094" src="https://learncgames.com/wp-content/uploads/2020/12/text-adventures-300x194.jpg" alt="Text Adventures" width="300" height="194" srcset="https://learncgames.com/wp-content/uploads/2020/12/text-adventures-300x194.jpg 300w, https://learncgames.com/wp-content/uploads/2020/12/text-adventures-1024x662.jpg 1024w, https://learncgames.com/wp-content/uploads/2020/12/text-adventures-768x497.jpg 768w, https://learncgames.com/wp-content/uploads/2020/12/text-adventures.jpg 1296w" sizes="auto, (max-width: 300px) 100vw, 300px" />Text adventures have been around since the likes of Colossal Cave which I first played in 1980. They were quite popular on the early home computers like ZX 81 which were quite limited in RAM and capability. With the capacity of modern computers there are Interactive fiction (the modern name for adventure games) games with over a million words of text.</p>
<p>I suspect I&#8217;d probably want to code them in another language because C isn&#8217;t the best language when it comes to text. Nevertheless other have gone ahead and there&#8217;s an almost complete (20 out of 23 lessons) on how to program a text adventure in C on <a title="Link to How to program a text adventure in C" href="https://helderman.github.io/htpataic/htpataic01.html" target="_blank" rel="nofollow noopener">GitHub</a>.</p>
<p>It&#8217;s a fine piece of work and some of the 20 articles like <strong>20. Combat</strong> are quite long with lots of annotated code. At the bottom of each page you can download the source code on that page as a zip file or run the sources on repl.it. If you are learning C the line-by-line annotations really help explain why something was done.</p>The post <a href="https://learncgames.com/coding-a-text-adventure-in-c/">Coding a text adventure in C</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2092</post-id>	</item>
		<item>
		<title>The C template library</title>
		<link>https://learncgames.com/the-c-template-library/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-c-template-library</link>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Fri, 18 Dec 2020 00:00:40 +0000</pubDate>
				<category><![CDATA[C]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[template]]></category>
		<guid isPermaLink="false">https://learncgames.com/?p=2088</guid>

					<description><![CDATA[<p>C of course doesn&#8217;t have generics or templates like C++ does, but I came across Gustav Lou&#8217;s C Template library this morning. It provides C equivalents to the following C++ template libraries. Each is done as a header file that you include. deq.h -&#62; std::deque lst.h -&#62; std::list pqu.h -&#62; std::priority_queue que.h -&#62; std::queue set.h [&#8230;]</p>
The post <a href="https://learncgames.com/the-c-template-library/">The C template library</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></description>
										<content:encoded><![CDATA[<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:316,&quot;href&quot;:&quot;https:\/\/github.com\/glouw\/ctl&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20251225222241\/https:\/\/github.com\/glouw\/ctl&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 13:50:10&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-14 05:12:55&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-24 02:11:53&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-27 11:01:15&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-04 12:25:21&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-09 04:33:03&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-18 08:09:13&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-24 20:38:37&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-28 08:20:00&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-05 21:57:45&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-13 12:31:40&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-13 12:31:40&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;}]'></div>
<p><img loading="lazy" decoding="async" class="alignleft size-medium wp-image-2089" src="https://learncgames.com/wp-content/uploads/2020/12/texture-3319946_640-300x169.jpg" alt="Texture template" width="300" height="169" srcset="https://learncgames.com/wp-content/uploads/2020/12/texture-3319946_640-300x169.jpg 300w, https://learncgames.com/wp-content/uploads/2020/12/texture-3319946_640.jpg 640w" sizes="auto, (max-width: 300px) 100vw, 300px" />C of course doesn&#8217;t have generics or templates like C++ does, but I came across Gustav Lou&#8217;s <a title="List to C template library on GitHub" href="https://github.com/glouw/ctl" target="_blank" rel="nofollow noopener">C Template library</a> this morning. It provides C equivalents to the following C++ template libraries. Each is done as a header file that you include.</p>
<pre><code class="" data-line="">deq.h -&gt; std::deque
lst.h -&gt; std::list
pqu.h -&gt; std::priority_queue
que.h -&gt; std::queue
set.h -&gt; std::set
stk.h -&gt; std::stack
str.h -&gt; std::string
vec.h -&gt; std::vector
 </code></pre>
<p>The page on GitHub shows how to use libraries with an example of vector. The <strong>string</strong> equivalent library str.h would be an interesting one to see just how much of C++ string is supported.  C would still never be my language of choice for anything text heavy but if this is better than strcpy, strcat etc. I&#8217;ll happily use it.  Likewise <strong>list</strong> and <strong>vector</strong>. From memory C++ std::array is just a wrapper around the C standard array!</p>The post <a href="https://learncgames.com/the-c-template-library/">The C template library</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2088</post-id>	</item>
		<item>
		<title>How slow is SDL_TTF 2.0?</title>
		<link>https://learncgames.com/how-slow-is-sdl_ttf-2-0/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-slow-is-sdl_ttf-2-0</link>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Tue, 24 Nov 2020 00:00:03 +0000</pubDate>
				<category><![CDATA[C]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[SDL_TTF]]></category>
		<category><![CDATA[truetype]]></category>
		<category><![CDATA[ttf]]></category>
		<guid isPermaLink="false">https://learncgames.com/?p=1876</guid>

					<description><![CDATA[<p>When  I created the Asteroids game, I deliberately didn&#8217;t use SDL_TTF instead I took a Monospaced font and saved it out as a PNG file which was loaded into a SDL Texture. I then created my own character printing routines by figuring out which character I wanted and then blitting it. The image shows the [&#8230;]</p>
The post <a href="https://learncgames.com/how-slow-is-sdl_ttf-2-0/">How slow is SDL_TTF 2.0?</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></description>
										<content:encoded><![CDATA[<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:356,&quot;href&quot;:&quot;https:\/\/scripts.sil.org\/cms\/scripts\/page.php?site_id=nrsi&amp;id=IWS-Chapter08&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20240303165052\/https:\/\/scripts.sil.org\/cms\/scripts\/page.php?site_id=nrsi&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 14:22:37&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-09 18:24:40&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-13 06:08:27&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-16 11:16:47&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-20 12:21:11&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-24 05:09:38&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-27 11:01:16&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-05 06:10:51&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-08 08:14:22&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-12 08:11:20&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-20 00:47:02&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-24 19:27:17&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-27 20:51:29&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-01 16:42:32&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-07 22:42:12&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-11 13:43:42&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-15 23:39:19&quot;,&quot;http_code&quot;:200}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-15 23:39:19&quot;,&quot;http_code&quot;:200},&quot;process&quot;:&quot;done&quot;}]'></div>
<p><img loading="lazy" decoding="async" class="alignleft size-medium wp-image-1879" src="https://learncgames.com/wp-content/uploads/2020/11/fixedfont-1-300x183.png" alt="F" width="300" height="183" srcset="https://learncgames.com/wp-content/uploads/2020/11/fixedfont-1-300x183.png 300w, https://learncgames.com/wp-content/uploads/2020/11/fixedfont-1.png 669w" sizes="auto, (max-width: 300px) 100vw, 300px" />When  I created the Asteroids game, I deliberately didn&#8217;t use SDL_TTF instead I took a Monospaced font and saved it out as a PNG file which was loaded into a SDL Texture. I then created my own character printing routines by figuring out which character I wanted and then blitting it. The image shows the font I used zoomed in.</p>
<p>You probably can&#8217;t get much faster than that, although I wasn&#8217;t really doing that much output. Every frame, the score is output and if an asteroid is hit, the value of the hit scrolls upward for a few frames.</p>
<p>Also when you lost a life, it would print using a scaled up version of the font. The only problem with that is scaling up a bit map font just shows off the deficiencies of the font scaling as a bitmap, as the image shows. Not exactly smooth is it?</p>
<p>So I&#8217;ve decided to write a small program that uses SDL_TTF 2.0 and does high resolution timing to determine exactly how long it takes to draw text using a TTF font. The big advantage of doing that in a game is you can draw different sizes, weight (<em>bold etc</em>) and colour compared to a bitmap font.</p>
<p>But TTF <a title="Link to Sil.org introduction to Truetype" href="https://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=IWS-Chapter08" target="_blank" rel="nofollow noopener noreferrer">is an interesting format</a>, there&#8217;s a lot going on. Letters are drawn using mathematical equations so it is bound to be a bit slower than pure blitting and I&#8217;m interested in knowing just how long it takes. It&#8217;s all relative, if you view a page of text in MS Word (<em>or just in Windows generally</em>), Windows renders it pretty fast.  But its still important to know just how fast. For what I used text for in Asteroids, it probably could have used TTF text but in another game with more text it might be too slow for 60 frames per second.</p>
<p>If it was too slow then perhaps a hybrid approach might work. Figure out what text you&#8217;ll need, prerender it into bitmaps (<em>when the program starts up</em>) then use those bitmaps.</p>
<p>So I&#8217;ll publish the speed test program once written. Watch this space.</p>
<p>&nbsp;</p>The post <a href="https://learncgames.com/how-slow-is-sdl_ttf-2-0/">How slow is SDL_TTF 2.0?</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1876</post-id>	</item>
		<item>
		<title>Single file libraries</title>
		<link>https://learncgames.com/single-file-libraries/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=single-file-libraries</link>
		
		<dc:creator><![CDATA[David]]></dc:creator>
		<pubDate>Thu, 29 Oct 2020 00:00:25 +0000</pubDate>
				<category><![CDATA[C]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[single-file]]></category>
		<guid isPermaLink="false">https://learncgames.com/?p=1684</guid>

					<description><![CDATA[<p>Most days I scan the web for relevant or interesting stuff and today I found a real treasure. A website where they have curated a list of C and C++ single file libraries. That is libraries that are not multiple files but mostly one. I say mostly because there are a few with 2 or [&#8230;]</p>
The post <a href="https://learncgames.com/single-file-libraries/">Single file libraries</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></description>
										<content:encoded><![CDATA[<div class='__iawmlf-post-loop-links' style='display:none;' data-iawmlf-post-links='[{&quot;id&quot;:422,&quot;href&quot;:&quot;https:\/\/unsplash.com&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20260206065624\/https:\/\/unsplash.com\/&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 14:53:04&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-10 10:23:29&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-13 21:45:08&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-17 13:33:40&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-21 05:20:04&quot;,&quot;http_code&quot;:401},{&quot;date&quot;:&quot;2026-02-24 21:07:55&quot;,&quot;http_code&quot;:401},{&quot;date&quot;:&quot;2026-02-28 02:02:10&quot;,&quot;http_code&quot;:401},{&quot;date&quot;:&quot;2026-03-03 12:48:19&quot;,&quot;http_code&quot;:401},{&quot;date&quot;:&quot;2026-03-07 04:40:31&quot;,&quot;http_code&quot;:401},{&quot;date&quot;:&quot;2026-03-10 08:29:42&quot;,&quot;http_code&quot;:401},{&quot;date&quot;:&quot;2026-03-13 20:21:23&quot;,&quot;http_code&quot;:401},{&quot;date&quot;:&quot;2026-03-17 04:11:32&quot;,&quot;http_code&quot;:401},{&quot;date&quot;:&quot;2026-03-20 19:57:46&quot;,&quot;http_code&quot;:401},{&quot;date&quot;:&quot;2026-03-24 03:46:53&quot;,&quot;http_code&quot;:401},{&quot;date&quot;:&quot;2026-03-27 11:33:50&quot;,&quot;http_code&quot;:401},{&quot;date&quot;:&quot;2026-03-30 19:21:04&quot;,&quot;http_code&quot;:401},{&quot;date&quot;:&quot;2026-04-03 03:10:27&quot;,&quot;http_code&quot;:401},{&quot;date&quot;:&quot;2026-04-06 11:00:22&quot;,&quot;http_code&quot;:401},{&quot;date&quot;:&quot;2026-04-09 16:02:12&quot;,&quot;http_code&quot;:401},{&quot;date&quot;:&quot;2026-04-13 02:40:30&quot;,&quot;http_code&quot;:401},{&quot;date&quot;:&quot;2026-04-16 07:18:28&quot;,&quot;http_code&quot;:503}],&quot;broken&quot;:true,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-16 07:18:28&quot;,&quot;http_code&quot;:503},&quot;process&quot;:&quot;done&quot;},{&quot;id&quot;:423,&quot;href&quot;:&quot;https:\/\/github.com\/nothings\/single_file_libs&quot;,&quot;archived_href&quot;:&quot;http:\/\/web-wp.archive.org\/web\/20250112111125\/https:\/\/github.com\/nothings\/single_file_libs&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2026-02-06 14:53:07&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-10 10:23:31&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-14 05:12:59&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-17 15:44:52&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-24 02:11:53&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-27 11:01:16&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-04 12:25:22&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-07 16:33:22&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-10 22:36:39&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-14 09:32:55&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-26 02:10:25&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-30 20:37:46&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-05 12:01:17&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-09 16:02:12&quot;,&quot;http_code&quot;:404},{&quot;date&quot;:&quot;2026-04-15 23:39:18&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-04-15 23:39:18&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;}]'></div>
<figure id="attachment_1685" aria-describedby="caption-attachment-1685" style="width: 300px" class="wp-caption alignleft"><img loading="lazy" decoding="async" class="size-medium wp-image-1685" src="https://learncgames.com/wp-content/uploads/2020/10/oaqk7qqnh_c-300x200.jpg" alt="open book lot" width="300" height="200" srcset="https://learncgames.com/wp-content/uploads/2020/10/oaqk7qqnh_c-300x200.jpg 300w, https://learncgames.com/wp-content/uploads/2020/10/oaqk7qqnh_c-1024x683.jpg 1024w, https://learncgames.com/wp-content/uploads/2020/10/oaqk7qqnh_c-768x512.jpg 768w, https://learncgames.com/wp-content/uploads/2020/10/oaqk7qqnh_c-1536x1024.jpg 1536w, https://learncgames.com/wp-content/uploads/2020/10/oaqk7qqnh_c-2048x1365.jpg 2048w" sizes="auto, (max-width: 300px) 100vw, 300px" /><figcaption id="caption-attachment-1685" class="wp-caption-text">Library image from <a href="https://unsplash.com">Unsplash.com</a></figcaption></figure>
<p>Most days I scan the web for relevant or interesting stuff and today I found a real treasure. A website where they have curated a list of <a title="Link to single file libs on GitHub" href="https://github.com/nothings/single_file_libs" target="_blank" rel="noopener noreferrer">C and C++ single file libraries</a>. That is libraries that are not multiple files but mostly one. I say mostly because there are a few with 2 or 3 files.</p>
<p>The bulk are in C++ but there are a large number of C/C++ and quite a number of C. All have their licensing; these are open source but licences vary a bit.</p>
<p>It&#8217;s worth a trawl through the List. For instance there&#8217;s an <em>interpreter for a BASIC dialect scripting language</em>,</p>The post <a href="https://learncgames.com/single-file-libraries/">Single file libraries</a> first appeared on <a href="https://learncgames.com">Learn C Games Programming Blog</a>.]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1684</post-id>	</item>
	</channel>
</rss>
