I found out my BMFont rendering has been completely wrong for like a decade. The fontfaces exported by the ancient Hiero utility have completely messed up specs so I'm not touching it anymore. SnowB works much better anyway.

seen from United States
seen from United States
seen from Netherlands
seen from United States
seen from United Kingdom
seen from United States

seen from United States
seen from United States
seen from Ireland

seen from United Kingdom
seen from Yemen

seen from China

seen from United States

seen from Germany
seen from United States
seen from Türkiye

seen from Germany
seen from United States

seen from United States

seen from United States
I found out my BMFont rendering has been completely wrong for like a decade. The fontfaces exported by the ancient Hiero utility have completely messed up specs so I'm not touching it anymore. SnowB works much better anyway.
Engine V2: Sprite Animations and Hitboxes
The old animation handling split images into arbitrary grids of frames with arbitrary offsets.
For example: This fish spritesheet contains 4 frames. The old engine saw this as two grids of 2x1 animation sets.
It ended up looking like this in motion:
All frames had to be the same size in the old engine because there was not a differentiation between the physical hitbox of a sprite and the currently playing animation dimensions for a sprite.
This unfortunate oversight resulted in a lot of weird artifacts in the game engine, which is why crouching didn’t actually do anything, etc.
It also meant that changing the size of the currently playing animation would cause weird physics clipping and other undesirable behavior.
The new animation engine treats every frame as an arbitrarily-sized slice of an image, and the sprites are centered on their location.
Because the hitbox is now separate from the dimensions of the animation, I have a lot of neat options available for things like spinning blades that previously would have been nightmare scenarios to get working properly.
IMPORTANT LESSON LEARNED FROM V1 TO V2: Hitboxes should be separate from the actual sprite rendered on screen because it’s easy to implement if done early and gives you a lot more flexibility.
Normally this would be the part where I’d show off a screenshot demonstrating a modified hitbox, but I don’t have scenes being built onscreen yet and even if I did there aren’t any physics yet to show off the hitboxes.
Stay tuned though, it’s moving quick.
Some small progress
Moved particles to a vertex shader, I was doing these on CPU in previous demos. I also added shaders to the automatic reloading system which I use for scripts and textures so now I can modify shaders while the game is running (you can see that in the first 3 gifs)
I also started adding items you can pick up.
Finally I’ve done some work in the engine, automating “compilation” of assets among other things.
Now almost any asset that is normally a text file will have an associated binary file built. During development the original files are used, on release the binary ones will be used to avoid parsing/loading time. Binary everything This includes:
Animations
Fonts
Levels
Character definition files
I was lazy in previous demos so I still left some things as text files! Other things will also do something similar
Shaders will be precompiled since HLSL has a standard bytecode format unlike OpenGL (Vulkan fixed this though!)
PNG textures to DDS for less processing at load time
A quick preview of the first three chambers in the upcoming Patreon demo scheduled for the end of the month!
Speaking of which, here’s the plan for those:
Each new demo version that is released on Patreon will have some hand-crafted maps available to try out new game mechanics. These maps will range in difficulty from very easy to challenging, and my hope is that creating this extra content will help to keep the demos available to Patrons interesting and fresh!
These maps also offer a more solid, constructed way to enjoy the content that’s currently working in the game engine, without having a broken story-driven experience that stops abruptly at the most recent progress mark.
The story will, of course, be available in whatever stage of completion it happens to be in for those who would like to take a poke at it in the demo.
Also, some assets have been made over the last two days that I’d like to share!
They’re not terribly fancy assets, but they fit the theme that I’m using for the constructed levels.
Here’s a destructible block affected by gravity.
Here’s a destructible block that’s not affected by gravity.
...and here’s an item chest.
Nearly bedtime for me! Work in the morning.
This cough is nearly gone. I’ll be able to start streaming again soon. Hopefully by Friday we’ll be back on Twitch!
I’ll see you nerds again tomorrow with more progress. Cheers!
Last night I identified a couple of features that would make building using the in-game editing tools a lot smoother.
Building grid and waypoint visibility toggle are working now. Pictures above show in-progress and finished versions of the grid and waypoint visibility.
Other things that I’d like to have fully working before the demo goes live on Patreon:
Player death being handled properly Implement a different weapon for the demo because the rockets are janky still Map where players have the opportunity to test out fighting against RamSpiders Some basic puzzles for players to solve and a few more interesting rooms to play around with other components
The progress grind continues!
Ramspiders have been integrated into the V2 enemy pathing system.
Next goal is updating the way that the game engine handles projectiles and damage. The previous system was way too clunky to work with and I’ve decided that in the long run it is better to redo this system now than to try to force it to work with the updated enemy behavior.
Redoing this system will also eliminate a whole lot of collision bugs that currently exist regarding enemies, non-enemies, and bullets landing on the wrong targets.
I need to get ready to go to work. My new shift has me at work late into the evening, so I’ve started sleeping shortly after I arrive home, and just doing gamedev in the mornings.
See you nerds after work
Working on tools that swap sprites so that it’s easier to add effects and doodads later.
I have several variations planned for each type of terrain to include things like moss, scorch marks, etc.
I can now choose the spritesheet I want to override with, tell it where to go, give it a radius, and the engine does the rest.
I’m home sick today, so this is what I’ve been up to.
Stream Summary: 27 March 2018
Spent about 3 hours on air this evening!
Video for those who missed it: https://www.twitch.tv/videos/243718939
Identified a need for eventually finishing the waypoint connect/disconnect tools. Identified a need for eventually adding a camera constraint visualizer.
Fine-tuned the bat combat test map.
Waypoints got some iteration here.
Designed and built a map for players to learn about combat with RamSpiders.
Spent some time figuring out how to best lay out the waypoints for them. Probably needs another pass to make the available waypoints slightly more granular for best behavior.
Fixed a few bugs with enemy behavior for RamSpiders related to how long they remain hostile and how they behave while climbing.
I have work in the morning and I’m tired.
Goodnight everyone!