<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Bringing modern game engines up to speed with Allegro</title>
		<link>http://www.allegro.cc/forums/view/618144</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 25 May 2020 17:03:19 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>As you all know, Allegro is a high level library. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>So I&#39;ve been using <a href="https://godotengine.org">Godot</a> recently. Compared to Allegro, it&#39;s a really hefty thing in terms of features (I mean, it&#39;s an actual full-blown engine) - it&#39;s pretty sweet though, and also is libre, and saves projects&#39; resources in eternally versionable text files. I&#39;ve thus grown to like it rather a lot.</p><p>However, I was absolutely shocked to discover that it doesn&#39;t implement <span class="source-code"><a href="http://www.allegro.cc/manual/al_grab_font_from_bitmap"><span class="a">al_grab_font_from_bitmap</span></a></span>! Even worse, you are forced to use a sickening Win32 tool called <a href="https://www.angelcode.com/products/bmfont/">BMFont</a> to make your bitmap fonts. Unacceptable.</p><p>After wondering what kind of shoddy production they must be running, I decided to fix this injustice. Therefore, I&#39;m sure you&#39;ll all be glad to hear that Godot has finally been brought up to speed with Allegro&#39;s modern features:</p><p><a href="https://godotengine.org/asset-library/asset/598">https://godotengine.org/asset-library/asset/598</a></p><p>So yeah, they pretty much have to add this to core now. <img src="http://www.allegro.cc/forums/smileys/cool.gif" alt="8-)" /></p><p><span class="remote-thumbnail"><span class="json">{"name":"diagram.png","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/1\/9\/190987d05bf3b970a49f427fcefdccd8.png","w":1046,"h":512,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/1\/9\/190987d05bf3b970a49f427fcefdccd8"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/1/9/190987d05bf3b970a49f427fcefdccd8-240.jpg" alt="diagram.png" width="240" height="117" /></span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (dthompson)</author>
		<pubDate>Thu, 21 May 2020 13:51:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Nice! What about the other way around - which feature should allegro copy from godot? I realize they are very different in goal and scope. But if there is one thing you could transfer the other way around, what would it be?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (amarillion)</author>
		<pubDate>Thu, 21 May 2020 18:14:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Very good question - I guess having an API for compute shaders would be pretty cool (if we&#39;re talking about shiny flashy features).</p><p>On the other hand, what&#39;d be absolutely brilliant is a solid OpenGL ES profile selector. Ironically, I think Allegro&#39;s currently only works on X11?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (dthompson)</author>
		<pubDate>Thu, 21 May 2020 19:59:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Not sure exactly copy from Godot, but I think a 3D addon, which helped do a bunch of standard features would be great.</p><p>Mesh loading/construction/geometric shapes, material handling, and some basic camera functionality, would be pretty sweet.</p><p>Even though I&#39;ve finally got my Voxel engine running, it&#39;s still effectively drawing it 2D, and thus, you cannot currently rotate the view, as to keep the framerate up, I have to cache all the vertices of drawn surfaces.</p><p>Arguably, maybe I should try a &quot;3D engine/platform&quot;, but I must admit, I&#39;ve never managed to get going with Godot or Unity; and always fall back to Allegro <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (pmprog)</author>
		<pubDate>Sun, 24 May 2020 00:25:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>All of the features in Allegro are low level and as such, I&#39;m not sure what other modern low level features could be added.  All the &quot;next level&quot; features require a more architectural, engine, or framework specific methodology.  These are things like materials, shaders, geometry, or an entity system or scene graph, to name a few.  All of those are typically coupled to each other in some specific way to make an &quot;engine&quot; and require some cohesive theory and/or baked in assumptions.</p><p>As an example, Allegro&#39;s multi-line text rendering feature realistically needed to come with an <a href="https://liballeg.org/a5docs/trunk/font.html#al_do_multiline_text">al_do_muliline_text</a> variant.  It almost seems to open a tear in the API, in order to accommodate all the divergent needs required since the introduction of <a href="https://liballeg.org/a5docs/trunk/font.html#al_draw_multiline_text">al_draw_multiline_text</a>.  As such, any other net new layer of features would likely introduce even more complex seams to be truly open-ended.</p><p>I would love to hear a counter-argument, because I would love to see more features out-of-the box for Allegro.  I&#39;m not a fan of the reality of the points I laid out, that there is essentially a &quot;moratorium&quot; or &quot;ceiling&quot; on the Allegro API as it is.</p><p>One thing comes to mind, (though not very sexy), would be the addition of translation/internationalized strings.  It would be a cool feature to add for all of our multi-lingual users and developers wanting to internationalize their application.</p><p>I have a relatively thorough module in AllegroFlare called <span class="source-code">Internationalization</span>, it does some stuff:
</p><ul><li><p><a href="https://github.com/allegroflare/allegro_flare/blob/master/include/AllegroFlare/Internationalization.hpp">Internationalization header</a>
</p></li><li><p><a href="https://github.com/allegroflare/allegro_flare/blob/master/src/AllegroFlare/Internationalization.cpp">Internationalization source</a>
</p></li><li><p><a href="https://github.com/allegroflare/allegro_flare/blob/master/tests/AllegroFlare/InternationalizationTest.cpp">test files with a lot of example use cases</a>
</p></li></ul></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Sun, 24 May 2020 01:45:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>@Mark Oates, that&#39;s a fair point about it becoming an engine, which Allegro isn&#39;t.</p><p>On features:</p><p>One feature I did previously mention on IRC, was the ability, when creating a VOICE, was to select which physical output on the computer it went to.</p><p>ie, then you could open a voice for the speakers, and a different voice for headphones.</p><p>To be fair, I haven&#39;t really thought of a practical use for that feature; unless you wanted two players on a single computer with a headset each. But most multiplayer games these days would just use multiple computers.</p><p>Also, keeping to multiple users on a single computer, I saw a project called SNIIS (<a href="https://github.com/Schrompf/sniis">https://github.com/Schrompf/sniis</a>) that allowed you to identify input from multiple mice and keyboards.</p><p>Again, a neat trick, but probably not something that would be used very often.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (pmprog)</author>
		<pubDate>Sun, 24 May 2020 02:23:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/618144/1046119#target">pmprog</a> said:</div><div class="quote"><p>
Also, keeping to multiple users on a single computer, I saw a project called SNIIS (<a href="https://github.com/Schrompf/sniis">https://github.com/Schrompf/sniis</a>) that allowed you to identify input from multiple mice and keyboards.
</p></div></div><p>
I have a library called ManyMouse that does essentially the same thing. Works on Windows with limited desktop integration (that is the hard part).</p><p>I plan to rewrite it and make it nicer and easier to use. Some day.</p><p>The idea that Allegro is &quot;complete&quot; is a big mistake imho.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 24 May 2020 02:59:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yeah, I think that - in summary - I&#39;d just like better cross-platform support for the current featureset, rather than a bunch of new features.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (dthompson)</author>
		<pubDate>Sun, 24 May 2020 03:17:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/618144/1046122#target">dthompson</a> said:</div><div class="quote"><p> I&#39;d just like better cross-platform support for the current featureset, rather than a bunch of new features.</p></div></div><p>Yea, I agree.  If I could rely on Allegro to be relentlessly reliable and consistent across platforms out-of-the-box, that would be huge as far as I&#39;m concerned.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Sun, 24 May 2020 03:22:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Congratulations, you both just volunteered. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 24 May 2020 03:24:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/618144/1046125#target">Edgar Reynaldo</a> said:</div><div class="quote"><p> Congratulations, you both just volunteered. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p></div></div><p>And you just delegated the task! I guess that means you&#39;re the manger.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Sun, 24 May 2020 03:27:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Seriously, put your ideas in feature requests or bug reports. Wasting your time talking about it here won&#39;t do any good.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 24 May 2020 03:39:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Right, allegro isn&#39;t an engine and shouldn&#39;t become one. Instead, this is what allegro is to me</p><ul><li><p>Cross-platform compatibility
</p></li><li><p>Abstraction layer over hardware - a transparent way to handle different inputs, different displays etc.
</p></li><li><p>Freedom of programming language. Given that it&#39;s so low level, it fits with many programming languages and paradigms.
</p></li><li><p>A fairly comprehensive dependency. Dependencies in C are a pain, and it&#39;s nice to have it all in one package, rather than having to chase up, say, a separate jpeg loading library for different platforms.</p></li></ul><p>So, playing to allegro&#39;s strengths I think these would be worthwhile developments:
</p><ul><li><p>add-ons for loading common game assets where they are sufficiently standardized, so that you don&#39;t have to manage the dependency. For example, sprite atlases, tilemaps, 3D meshes
</p></li><li><p>Abstractions for more hardware types. Managing multiple displays, multiple inputs, multiple sound outputs are nice examples.
</p></li><li><p>Useful cross-platform wrappers. A wrapper for winsock/bsdsockets comes to mind
</p></li><li><p>Anything that makes it easier to build games on other platforms, such as android / iOS, or cross-platform builds.
</p></li><li><p>More consistent support for more programming languages. Some of the wrappers are poorly supported.
</p></li></ul></div>]]>
		</description>
		<author>no-reply@allegro.cc (amarillion)</author>
		<pubDate>Sun, 24 May 2020 20:29:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/618144/1046127#target">Edgar Reynaldo</a> said:</div><div class="quote"><p>Seriously, put your ideas in feature requests or bug reports. Wasting your time talking about it here won&#39;t do any good.</p></div></div><p>

<a href="https://github.com/liballeg/allegro5/issues/249">ha. ha.</a></p><p>Not that I&#39;d ever intended this to be a discussion on Allegro features (but hey this is a.cc) - yeah, Edgar&#39;s not wrong though. I&#39;m gonna submit one for compute shaders now.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (dthompson)</author>
		<pubDate>Sun, 24 May 2020 21:53:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It really doesn&#39;t make much sense. That&#39;s what addons are for, so that anyone can create them without anyone&#39;s permission, although manufacturing as a totally external extra library there would be some differences.</p><p>This would provide a list of addons that anyone could add to. At least that&#39;s the idea I understand, sure?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (RmBeer2)</author>
		<pubDate>Mon, 25 May 2020 10:12:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>&quot; Managing multiple displays, multiple inputs, multiple sound output&quot;<br />Like having monitor/input/sound id as a function parameter ? I like it.</p><p>&quot;Useful cross-platform wrappers. A wrapper for winsock/bsdsockets comes to mind&quot;<br />==&gt; proposed to write one as an addons/full allegro port/whatever is good. The proposal got no real interest from the devs/users present during the talk. <img src="http://www.allegro.cc/forums/smileys/cool.gif" alt="8-)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Mon, 25 May 2020 17:03:19 +0000</pubDate>
	</item>
</rss>
