• Register
Post news Report RSS Matters of Statuary

In which a mural is worked on; a shader is extended to support that work; a depth-offsetting issue is addressed; a buffer-bug is fixed; a statue is made more efficient; physics and logic for a character is improved; footsteps and death-sounds are made; and miscellaneous improvements are implemented.

Posted by on

Greetings and salutations!

This week's screenshot shows progress on a mural found in level eight:

Screenshot from 2021 05 03 09 57

The week just past was one of progress on a variety of elements, both technical and artistic, I do believe!

Starting on the artistic side, and as shown above, in the week just past work continued on the mural that was shown last week. Specifically, I believe that I applied the appropriate colouring, and extended the player-light mural shaders to provide a few features that had been missing.

This is still very much a work-in-progress, but I do feel that it begins to look the part.

Sticking with shaders, the player-light "decal" shader saw a minor change in the week just past, in response to a troublesome issue.

I had discovered, you see, that in one particular part of the second tomb, the edge of a particular decal could be seen through the nearby wall; it made a flickering dark line as one approached.

After experimentation and discussion on the Panda3D forum, a likely culprit was uncovered: the engine's handling of depth-offsets applied its single given value to both a basic offset and a slope-bias. As a result, at very shallow angles--as was the case in my scene--the total offset could become high enough that it resulted in the affected geometry rendering through intervening geometry, even with a noticeable separation between.

An entry has been filed for this issue in the engine's issue-tracker.

For my immediate purposes, however, a forum-user pointed me to a workaround: remove the offset and apply my own in my decal-shader. I tried this, and I'm glad to say that it seems to have worked!

If I recall correctly, it was in my investigation of the above issue that I came to look again at how I was handling the main off-screen buffer in the game.

You see, I had previously discovered an issue in which the game didn't immediately update the buffer-size after resizing the window. For example, if one started with a very small window, then switched in-game to a large one, the view would become awfully pixellated due to the buffer remaining at the smaller size.

I had filed this under "important, but to be attended to later". In the week just past, spurred as I recall by the thought that my buffer-handling might be related to the flickering line on the tomb-wall, I decided to address it.

And I'm glad to say that I believe that I have it fixed, and that it proved not all that difficult to sort out! The solution is perhaps not ideally efficient--the buffer now likely gets remade more often than is called for--but it doesn't seem too bad, and the issue seems to be fixed! ^_^

Now, in past blog-posts I've been a bit coy about certain slightly-spoilery matters. Alas, sharing these next updates would seem to somewhat call for either being very vague indeed, or spoiling a bit.

So, beware! There are some spoilers ahead!

That said, you may recall the stone statues that I previously showed as being present in level eight.

In the week just past I made some changes to them, aiming to make their geometry more efficient. Most particularly, I replaced the rather-indulgent use of vertex-modelling for the depiction of hatching on their clubs, instead making use of a normal-map.

Screenshot from 2021 05 03 09 58

This was done because, alas, I discovered that when these statues walked, or when the player moved while they were "active", the frame-rate dropped significantly.

Investigating, this seemed to be incurred by CPU-based animation-skinning--hence the replacement of that excessive vertex-modelling: the fewer vertices there are, the less work there is for the CPU in animating them.

The result was a small improvement, but an improvement nonetheless, I believe--from around seventy frames-per-second to around eighty, I think that it was.

I also made some improvements to their interactions: On the physical side, they now collide with each other, meaning that they no longer greatly intersect when they move close together. On the logic side, they now stop briefly when another of their kind blocks their way, meaning that they no longer keep fruitlessly walking under such circumstances.

On the audio side, I made a new set of echoing footsteps for them--and an unpleasant whoosh-and-thwack-and-crunch sound for their killing of the player with the aforementioned clubs.

While I was at said audio-work, I discovered the the sound that I was using for the player's death by falling wasn't as good as I would have liked. I thus reworked it, and am rather happier with the new version, I believe!

Turning to 3D modelling, in the week just past I made a large jar or pot, based on an extant model. Perhaps most notably, this jar is designed to break apart. The reason for that, however, I think I'll leave unsaid for now! ;)

(The screenshot below was taken in Blender, as I don't think that I've yet exported at least this version into the game's format.)
jars

And finally, I made a variety of additions, touch-ups, and fixes that don't seem worth detailing here!

That then is all for this week--stay well, and thank you for reading! ^_^

Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: