<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Development — honey3D forum</title>
        <link>https://honey3d.org/forum/index.php?p=/</link>
        <pubDate>Fri, 08 May 2026 16:23:15 +0000</pubDate>
        <language>en</language>
            <description>Development — honey3D forum</description>
    <atom:link href="https://honey3d.org/forum/index.php?p=/categories/development/feed.rss" rel="self" type="application/rss+xml"/>
    <item>
        <title>honey devlog 2</title>
        <link>https://honey3d.org/forum/index.php?p=/discussion/9/honey-devlog-2</link>
        <pubDate>Wed, 28 Sep 2022 03:04:28 +0000</pubDate>
        <category>Development</category>
        <dc:creator>sanine</dc:creator>
        <guid isPermaLink="false">9@/forum/index.php?p=/discussions</guid>
        <description><![CDATA[<p>So, about that audio business...</p>

<p>The original WAV decoding library I found turned out to be pretty useless -- a lot of it was <code>/* todo */</code> and the stuff that <em>wasn't</em> was so poorly documented as to be practically unusable. I searched around a bit and eventually found something called miniwav that looked promising. It even had mp3 and ogg cousins! And then I realized that those libraries had been written for a larger project called <a rel="nofollow" href="https://github.com/mackron/miniaudio">miniaudio</a> that was more or less what I'd wanted to do with mossrose but better. It's as minimal-dependecy as PortAudio is, but it supports a ton more than my first pass at mossrose, including file decoding, resource caching, and even <em>3D spatial audio</em>.</p>

<p>honey is now using miniaudio for audio. <img src="https://honey3d.org/forum/resources/emoji/tongue.png" title=":tongue:" alt=":tongue:" height="20" /></p>

<p>I've done other things too! I wrote up a first-pass at <a rel="nofollow" href="https://github.com/assimp/assimp">assimp</a> bindings, and they seem to work just fine. See for yourself:</p>

<p><img src="https://honey3d.org/forum/uploads/editor/7w/byq3kuhvjwhh.gif" alt="" title="" /></p>

<p>That's right, you can now view Suzanne in honey!</p>

<p>This is still just a first pass -- it doesn't import materials, transforms, or animations right now -- but it's definitely good enough for rendering mesh data from honey. Once I'm working more on the Lua side of things and have a better sense of how I'm going to design the native honey data format I'll get the rest of that stuff implemented.</p>

<p>As far as basic C bindings go, that just leaves user input, cairo, and ode -- all of which existed in the pre-refactor version of honey and should (knock on wood) be pretty easy to port over. Once they're done, I'm planning on moving into a more iterative cycle of entering game jams with honey, building tools for the jam, and then refining those tools into actual components of honey itself.</p>
]]>
        </description>
    </item>
    <item>
        <title>honey devlog 1</title>
        <link>https://honey3d.org/forum/index.php?p=/discussion/8/honey-devlog-1</link>
        <pubDate>Wed, 31 Aug 2022 20:54:33 +0000</pubDate>
        <category>Development</category>
        <dc:creator>sanine</dc:creator>
        <guid isPermaLink="false">8@/forum/index.php?p=/discussions</guid>
        <description><![CDATA[<p>A <strong>lot</strong> has happened since the last devlog! I've got three things to talk about here:</p>

<h3>1. The current development philosophy for honey</h3>

<p>I've changed my mind about how opinionated the C layer should be. Originally, it was going to be a <em>little</em> opinionated; I was going to standardize function names, possibly try to standardize some argument orders, and just generally make it a little bit clean. I've since updated my thoughts to <em>not opinionated at all.</em> That's right, I'm now passing the C functions through as unchanged as possible!</p>

<p>This is for two reasons. First, the original C libraries were usually pretty well-designed and internally consistent, and even if they don't stylistically fit with each other, they <em>do</em> fit with themselves, and trying to minimally change everything while making it all stylistically consistent are frankly incompatible goals. Second, it means that for folks with familiarity with the underlying C libraries -- and I'm thinking most especially of OpenGL here -- working with honey should now be quite simple, because the functions and systems they're used to are still here, with the same names and (most of the time) working in the same ways.</p>

<p>Obviously there are some changes needed for C-to-Lua conversion, e.g. userdata instead of pointers, tables instead of arrays, et cetera. But I think these changes have been pretty minor all things considered. I showed stefonzo the <a rel="nofollow" href="https://sanine.net/git/honey-engine/tree/demo/honey.lua?id=e172f568e3a04ba97cf48e20dc8ee555b4ac29dc">most recent demo code</a> and he was immediately struck by how similar it is to the C code it's intended to replace. Success!</p>

<p>I've also finally been reasonably successful in stripping out dependencies, to the point that honey can now be compiled on Windows with no dependencies installed. I believe it may still need a dependency or two on Linux, but I think that that's an acceptable level. c:</p>

<h3>2. Textures &amp; 3D transforms</h3>

<p><img src="https://honey3d.org/forum/uploads/editor/lh/n6wwb61vuwj1.png" alt="A screenshot showing a plane with a crate texture on a blue background, tilted away from the viewer." title="" /></p>

<p>In the last devlog I talked about hoping to get triangles rendering. Well, uh, we've definitely done that! In fact, I have vertex buffers, element buffers, and vertex array objects all working well with full shaders, textures, and basic 3D transforms and cameras. Not everything is implemented yet -- I basically just provided Lua bindings for the specific cglm functions and uniform-setters I'd need to make the demo run -- but the framework is in place to readily and easily expand it as needed, and I don't see any significant barriers to providing full bindings soon.</p>

<p>I've been thinking about providing the ability to load from a .zip file, like LOVE does, and that may require a slight rewrite of the texture loading. Hopefully it doesn't, especially because the next point (audio) will also require some reworking too.</p>

<h3>3. Audio</h3>

<p>That's right, audio!! We didn't have any audio in the pre-refactor version of honey so this is some new territory for me. I searched around a bit for a good audio library in C but I couldn't really find any cross-platform, minimal dependency libraries that I liked aside from <a rel="nofollow" href="http://portaudio.com/">PortAudio</a> which is super low-level. So... I wrote a mixer library on top of PortAudio! I found a pretty neat library called <a rel="nofollow" href="https://github.com/saprykin/plibsys">plibsys</a> which provides a <em>ton</em> of really neat cross-platform capabilities. I'm mostly using it for the mutexes and atomic operations, but its got me thinking about binding some of the networking stuff into honey too...</p>

<p>The library I wrote is called <a rel="nofollow" href="https://sanine.net/git/mossrose/">mossrose</a>. Right now it doesn't support <em>loading</em> audio, just playback, but that's the next thing to work on. I've already found an MIT-licensed WAV decoder and a CC0 mp3 decoder that I plan on packaging with it. After that, I'll write some Lua bindings for it and then we should be in business.</p>

<p>Special thanks to Greasboi and m-dayo for helping me understand how stereo audio panning works!</p>
]]>
        </description>
    </item>
    <item>
        <title>honey devlog 0</title>
        <link>https://honey3d.org/forum/index.php?p=/discussion/7/honey-devlog-0</link>
        <pubDate>Sun, 24 Apr 2022 17:11:46 +0000</pubDate>
        <category>Development</category>
        <dc:creator>sanine</dc:creator>
        <guid isPermaLink="false">7@/forum/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Over the past week, I've been working on getting the refactor rolling again, starting with a "hello triangle!" program. I'm not quite there yet, but there has been progress -- I have the shader bindings working! The major holdout right now is building an agnostic system for creating vertex data. The old version of honey had a fairly simple system, with a single vertex struct that stored a vertex's position, normal, tangent, color, bones, and bone weights. This worked, but it is quite opinionated and also requires some fairly significant memory usage -- <em>every object</em> has color and bone data for <em>every vertex</em>, even though relatively few objects will actually use those fields!</p>

<p>I'm redesigning that system. Now it will be possible to construct vertex array objects with arbitrary attributes so that the user has complete control of which objects have or need which attributes. It should also be possible to create and load arbitrary data into the matching vertex buffers. This may well be slower than the old version, where all mesh operations happened squarely within the C layer, but because it only happens when loading, I think the increased flexibility will be a net positive.</p>

<p>Next week, I plan to have some actual triangles rendered to the screen! c:</p>
]]>
        </description>
    </item>
   </channel>
</rss>
