Saturday, February 6, 2016

Empathy isn't something that you can practice by yourself.

It would probably be better if I could learn to be less critical of others, and less critical of myself :)

Small steps of progress are being made in my relationship with you-know-who (no, not =that= you-know-who).  Today we can rest and know that we tried, and we did the right thing.

So sleepy today...not sure if it was because of the early waking, or because of allergies.  Allergies!  I've been relatively safe for a while but looks like I'm getting hit again.  Beh.

Hang in there, everybody having hard times.

Progress on Zenith Fighter, and actually a bunch of my projects, has been rather slow and/or nonexistent as of late.  Argh...I need to try and do a better job of getting home and doing things that I really want to be doing.  The eternal struggle...

Anyways, for Zenith Fighter I spent a bunch of cycles seeing whether I could do anything about the fact that HaxePunk and associated frameworks have yet to implement per-sprite shader support (just due to the way that the OpenFL/Lime draw pipeline works right now).  I actually went down the proverbial rabbit hole and made an investigation into switching the render mode into Blit/Buffer mode (so, software rendering instead of hardware) and manipulating the pixels of the buffers manually using inlined functions, and it actually worked great......for simple test shaders that for example, set the blue component to 255.  Unfortunately, as you might figure, doing any sort of more complicated operation on every pixel manually (such as hue shifting, etc) ended up killing performance and so I had to scrap that idea completely.

Not all was lost, though!  Even though having realtime shaders is still out of reach (until the framework gets to its next major revision, at least), I realized that it's still fine if I just apply a shader once at image load time, for a one-time shader effect that doesn't need to be updated.  Which is perfect, since I need to do either palette swapping or a hue shift in order to generate the different colors for each player (in case they choose the same character).  So now instead of generating 4 different spritesheets (each with different colors), I can just use one and recolor it at runtime when I load the spritesheet.  Awesome.  Still haven't decided whether I need hitflashes in the game (e.g. turning an entire enemy white when they are hit) or any colorize effects -- I could achieve that by turning the rendering mode to buffer/blit mode, which would give me worse performance but enable me to use the Colorize tint mode (instead of just multiplicative tint).  For now I'm just sticking with hardware rendering.  I guess if all else fails I could do some sort of elaborate workaround where I have a duplicate spritemap that I prepare at load-time with a shader effect that just makes it all white.  *shrug*  Anyways, I don't even know if I want that feature, so it's not worth worrying about.

Next thing I want to work on besides actually using the hue shifting that I implemented is to have some sort of animation for the enemy spawns...some sort of teleport effect or something, and have the enemies fade in instead of just popping into existence.  Then I can probably start thinking about implementing upgrades...

Have a bunch of music stuff I should get to soon.  Wish me luck...

No comments :

Post a Comment