SamuZai
blindvoid
blindvoid

patreon


DragonflyProject Update Jul2023

Sorry bout the late update, there's been quite a few interesting developments but I've been struggling to get anything done recently because of a horrendous sleep cycle (beyond my conscious control I swear).

The main development is that I've yet again migrated to another engine being Love2D, another LUA engine but more general purpose as opposed to focused on shmups. This may sound like a lot of work but because LUA is so cool it was really just a matter of copy pasting everything and adjusting core LuaSTG features to work with Love2D.

This isn't to say it was no work at all. I needed to create a gameobject system and sprites from scratch but it wasn't too bad. This migration wasn't for no reason though, having played around with LuaSTG for a good amount of time, I've noticed a lot of limitations that affect specifically what I'm trying to make. Now LuaSTG is great at making Touhou style games but it doesn't handle some of the features I want for my game very well, like advanced shader logic, special bullet rendering and even the async texture loading which I thought was working but still seems to cause crashes. The last big reason was documentation, as it always seems to be with niche engines. There are just far more resources and libraries available for Love2D that are also in a language that I can read, turns out that's pretty important.

Since the move I've been able to add many new features, first of which being real threaded resource loading allowing me to have proper loading screens.

I've also managed to improve the bullet blending, previously I had to use add/subtract blending which works well enough but tends to get really bright or dark when lots of bullet overlap when I don't necessarily want that. With Love2D however, I have access to lighten/darken blending which is closer to what I wanted from the very beginning since it's something I use for my drawings very often. It's pretty subtle but also very important to me.

BEFORE (note the darkness where bullets overlap):

AFTER (reminding me to tone down the bullet glow, but isn't it so much nicer):

Next new feature is AURAS, I think I may have posted about these way earlier but they finally have proper implementation and rendering thanks to Love2D. Strangely the problem with LuaSTG was that I wasn't able to pass uniform arrays into shaders. While not entirely necessary on it's own, it also had trouble passing uniform textures into shaders which was really hard to work around without going diving into the source code which I wasn't ready for. With Love2D being an established general purpose engine, these features are in a working perfectly fine, there's even some neat features used for masking textures which I would previously need to use even more shaders for but now require very little effort to perform (things like making the aura graphics contained within circles and not bleed into the background. There are some examples of auras below, in case I haven't explained them in a previous update, auras effect things in their radius positively or negatively. In this case this is a poison aura, which kills the player if they stay in the aura for a long enough time. The pixelation effect on the player represents the amount of poison applied to them.

The last big thing that Love2D allows me to do is create a proper file to distribute for others to play, much better than messily zipping up all the files, this should be much nicer. So I should be able to send playable updates more often, though not for now since not all the content has been ported over yet.

Things I haven't yet ported are bendy lasers, it's mainly the rendering that's tripping me up. Object pools are also not in, since I have to make them with pure lua as opposed to having the engine handle it. The game works without them but there's the unfortunate side effect of the game stalling for a few frames everytime the garbage collector is called by lua, which isn't too often but it's noticeable so I'll have to figure out something there. Also proper 3D obviously isn't a thing in an engine with 2D in the title, but I've seen there are some robust 3D libraries for it to allow for 3D but really I think if I just get some perspective math I'll be good, but I'll see what I can do about it.

Check out the attached changelog for a list of everything that's changed, I'll try get a new playable version out soon, after I figure out how to fix my stupid sleep schedule that's for sure. I feel bad that I'm making progress very slowly recently, especially with yet another engine migration, so I hope this is interesting enough for you. I'm trying to keep stress to a minimum but I hope I can find the motivation to work on this project at a greater pace in the future.


More Creators