Tuesday, April 16, 2024
HomeSample Page

Sample Page Title


DDRKirby(ISQ)


Jump+Attack Enemies, Too Early/Late Detection

Steam Page Now Live

First factor’s first: the Steam web page for Rhythm Quest is now dwell!

Please go forward and provides it a wishlist if you have not already — actually helps out for metrics and visibility!

Jump+Attack Enemies

This week I labored on two new ranges for world 3! The current stage 3-2 that I had was too troublesome, so I’ve pushed that apart for now and give you a brand new one, this time that includes a brand new mechanic:

As you may see within the above video, I’ve now received teal-colored flying enemies that signify leaping and attacking concurrently. This is technically not a brand new enemy kind, however I believed it might be good to distinguish these from the common flying enemies visually to assist key you in to the combo button press.

I had really already coded these enemies in a pair weeks in the past, however hadn’t gotten round to attempting them out but…I’m glad I lastly did! The bounce+assault enemies open up lots of attention-grabbing charting prospects when mixed with different mechanics, comparable to flight paths:

The backdrops for this new stage got here out fairly properly, regardless of being comparatively easy. I began with the “brick” sample on the wall (simply tiled rectangles…) after which added within the archways. I wasn’t fairly certain what to place within the archways at first, however ended up placing a dithered waterline, together with some stars within the background.

If you look intently, I’m utilizing the identical “shimmer” impact on the highest pixels of the water as in prior phases — it is simply two layers of lighter translucent pixel segments that scroll at completely different speeds, giving a pleasant impact. I additionally added a dithered fade on the highest and backside of the wall. The ultimate contact was so as to add the torches on the partitions for some added curiosity.

Too Early/Too Late Tips

I labored on this function final month however forgot to jot down about it. The sport now detects while you press a button too early or late and reveals a fast message on display:

I needed to attempt including this function because it is likely to be troublesome at larger speeds to know precisely what went flawed, particularly due to prescheduled (not dynamic) audio hit sfx.

How do you suppose you’d go about implementing this? You might attempt to have an additional collider/zone in entrance of the participant to detect “too early” presses, however that is probably inaccurate and would not assist for “too late” presses.

The method I ended up coding this is a bit more intricate and includes conserving monitor of actions and button presses throughout a number of frames somewhat than attempting to “predict” what might be coming forward:

For “too early” presses, I detect these by conserving monitor of the final time at which the participant performs a “dud” bounce or assault that did not correspond to an impediment. When the participant collider intersects with any new interplay level, I examine to see if the participant’s most up-to-date “dud” enter matches the impediment, and was inside 0.25 seconds. If so, I present the “Too Early” message.

For “too late” presses, it is basically the identical factor in reverse. First, I wanted to restructure my code to permit enter processing even throughout respawns, since that is usually when “too late” button presses occur (after you already bumped into an enemy). For this, I frequently maintain monitor of the latest interactable bounce level and assault level that overlapped the participant collider, in addition to the time at which it final overlapped. If the participant presses a button that does not correspond to one thing, or if the participant is already respawning, then I examine in opposition to these “most up-to-date interactables” to see if I ought to present a “Too Late” press.

That’s it for this week! I additionally labored on a brand new (simpler) stage 3-3 for introducing the multi-hit ghost enemies, which is sort of achieved. I’m fairly proud of the speed at which I’m in a position to make new ranges (when I’m really specializing in them) — I typically take at some point to jot down the music and chart, after which one other day for the backdrops and any further tweaks. At this charge I ought to be capable of end world 3 subsequent week, except I get sidetracked by one thing else. That’s solely midway (?) via all the world, so I actually need to get cranking via these!

One different factor I’ve behind my thoughts is how one can method world 4. I have already got pace zones applied, however I would take into account taking one other stab on the underwater part mechanic. I additionally need to solidify my musical fashion for that world, nonetheless…


Logged

DDRKirby(ISQ)


World 3 Complete

Despite struggling a bit with different stuff in my life, I managed to do some extra music/charting/backdrop work with the intention to end out world 3!

New Level 3-4 Backdrops

This initially was once stage 3-2 (and the primary introduction of the multi-hit ghost enemies), however received bumped over to turn into stage 3-4 due to problem. The backdrops for this received shifted over to stage 3-3, so I wanted some new background artwork for this stage.

You won’t discover it at first, however I really reused a number of the art work from stage 1-5 (City within the Rain) right here, besides this time the homes are darkened for a nighttime look, with slightly little bit of rim lighting and a mild glow popping out of the home windows. There’s additionally a giant citadel within the again — I like how that blends into the background at first however then pops into focus on the refrain when the colours shift.

Later within the stage I do a distinct impact the place all the pieces will get blacked out solely apart from the rim lighting and the window glows, and I like how that turned out. This complete world ended up having very darkish backdrops normally so there’s lots of taking part in round with this kind of factor, which I feel properly contrasts all the vivid colours in world 2.

Level 3-5

This stage attracts slightly little bit of inspiration from Metal Man’s stage (Mega Man 2) and/or Tinker Knight’s stage (Shovel Knight) and has a bunch of (sadly, non-animated) gears/cogs within the background, which scroll in parallax. I’ve a dithered fade impact which provides some extra feeling of depth, and it additionally turns into a lightweight “glow” on the first refrain, which is form of neat:

Later within the stage I black out the darkish backdrop colours and brighten all the pieces else, which ends up in a kind of “neon” impact which is a bit attribute of this world normally:

And I additionally mess around with darker colours some extra on this part, the place the background gears are darkened:

That’s it for this week, and that rounds out world 3! Overall this world sadly felt slightly extra “phoned in” than earlier than, I feel particularly ranges 3-3 and 3-5 did not really feel like I used to be as meticulous concerning the music and charting as I’ve been previously. I’m slightly shaky on whether or not the issue curve for this world holds up effectively, so I might have some further testing or tweaks on that as effectively. I’ve been tending to make songs a bit too excessive on the issue scale normally for these worlds, and I’ve already needed to scale down the tempo of some songs barely to attempt to compensate, however you may solely go to this point with that. It’s a difficult steadiness to keep up!

I’m by no means one to let good be the enemy of fine, although, so issues must sit as is for now as I transfer on to work on different issues like world 4, which can hopefully have a wholly completely different vibe.


Logged

DDRKirby(ISQ)


Level 4-1, Water Mechanic

I spent this week engaged on the primary stage in world 4, which introduces the water zone mechanic. Here’s a video of the complete stage in motion:

Water Zone Rework

It’s been a very long time for the reason that water mechanic has made an look! I initially prototyped this virtually a complete 12 months in the past, the place it regarded like this:

The water zones decelerate the scrolling charge to 50%, and likewise make jumps take two beats as a substitute of 1. I used to be additionally considering having the water sections function triplet-based rhythms.

I preferred the thought of the water zones since they appeared intuitive and offered an attention-grabbing changeup, however I wasn’t offered on the triplet thought, and the beat grids being spaced nearer collectively made issues troublesome to learn. More importantly, I used to be fearful concerning the chart design house of this mechanic — for the reason that bounce size is elevated and scroll pace decreased, the water sections are likely to have much less notes, no more, which ostensibly makes them simpler, not more durable.

The new model of the mechanic that I landed on is not really too completely different from the unique one. The scroll charge now solely slows to 60% (possibly topic to vary) to keep away from making readability too troublesome, and I’ve achieved away with the triplet rhythm thought (which is ok, since triplets are already coated by my pace zone mechanic).

The visible illustration can also be kind of the identical, however I’ve tweaked the blue tinting to one thing that appears extra vivid and cleaner general. The “waves” on the borders of the water zones are literally achieved through fragment shader utilizing a sine operate. Each water zone really has its personal digicam as effectively, which is used to attract to a render texture, which is then shifted through an identical sine operate to present a slight “ripple” impact.

One key change I made with the visuals was to have two separate layers of blue tinting somewhat than one. I used to be having hassle as a result of utilizing a more-saturated blue tint was inflicting the participant character and obstacles to look too light out; I noticed the answer was to solely tint the gameplay components barely (25%) after which use a stronger tint behind that that solely applies to the stage backdrops.

Probably the largest “distinction” within the water zones in comparison with a 12 months in the past is not actually a change in any respect: I’ve merely discovered some extra attention-grabbing chart design facets of the water zones that appear promising. Here’s a small snippet the place I exploit one-beat water zones to intensify two quick flight paths:

On a pure mechanical stage this is not notably troublesome, however the best way by which it comes along with the music appears actually attention-grabbing and satisfying to me. We’ll in all probability get to see much more attention-grabbing mixtures (rolling spike enemies + water zones) in future ranges throughout this world. Despite the water zone limitations, I managed to have a better observe density for this stage than some other stage in addition to 3-5, so it seems to be like I won’t have to fret a lot about problem with this mechanic.

World 4 Music Theming

Going into world 4, I knew that I needed to attempt using pentatonic scales as a musical fashion alternative, however I wasn’t solely certain how I needed to distinguish the world instrumentation-wise. My earlier try was straight 9-bit chiptune, however I needed one thing a bit extra distinct (I actually like how world 2 turned out with its “ethereal/lush” instrumentation to set it aside).

I made a decision to attempt to usher in some plucked east asian devices — right here I’ve received a shamisen and a yangqin:

https://rhythmquestgame.com/devlog/34-plucked.mp3

These devices offered a pleasant textural taste, however I wasn’t assured of their means to chop via the combination to offer the focal lead melodies, so I fell again on a few of my ordinary chiptune leads for that. However, I additionally needed to be sure you carry on this pan flute patch which match proper in:

https://rhythmquestgame.com/devlog/34-flute.mp3

I’m making an attempt to lean extra into grace notes and comparable elaborations within the melody writing right here, to suit with the general vibe.

Next, I wanted to determine what to do with the drums. I used to be initially considering of quick drum n bass-style percussion (in all probability would not work at fairly this tempo), however I ended up with one thing like this as a substitute:

https://rhythmquestgame.com/devlog/34-drums.mp3

The major drum sample is product of pretty odd tight drum sounds, however I’m utilizing half-time drum fills with completely different components — a much bigger, extra reverbed snare, triangle wave tom rolls, and a experience cymbal — to intensify the water zone patterns. I’m liking how that is figuring out, so I’m going to see if I can proceed to have this emphasis on “drum sample changeups” all through this world.

Level Graphics

A few issues to notice concerning the visible design for this world/stage:

First, I knew I needed to have the sky coloration be vivid, to distinction with all the darkish backgrounds from world 3. I’ve had the thought to attract pyramids for world 4 for some time, so I put these in as effectively.

Somewhere alongside the road I began feeling like world 4 ought to kind of have a “mystical” or “arcane” vibe to it, because it options these blue and purple (water and pace) columns. I ended up drawing these easy “floating octahedron” issues and have them scrolling in parallax. Very easy, however it positively seems to be quite a bit completely different than something we had from world 3. I like how all the pieces has extra “depth” due to the shading, which constrasts to all the extra “flat” graphics from the earlier world. The floor tileset for world 4 additionally options diamonds, to associate with this theme.

Something else to notice is the clouds, which are literally all the identical coloration, however translucent and overlapping (which causes completely different shades to return via). Transparent layers are one thing I’ve used slightly bit in earlier ranges, however I’m considering that I ought to attempt to experiment with them extra throughout this world to suit with the general “mystical” vibe and intensify the sensation of depth.

During the high-energy sections of the track, I change out the sky coloration so it seems to be like an evening sky, which to me provides a kind of “alien planet” look. This wasn’t one thing I deliberate on initially in any respect — I used to be merely taking part in round with the palettes and realized that I had an additional coloration slot obtainable and will use it for the background to realize this impact.

I like how the sky is darkish, however the pyramids are nonetheless vivid, which is completely different than in world 3 the place a lot of the background layers had been all darkish. This is one thing I’ll even be attempting to remember as a thematic throughline for future ranges on this world, if I can.

That’s it for this week! Level 4-2 will likely be subsequent on the docket, and can in all probability be one other water zone-focused stage, (then stage 4-3 can introduce the pace zones, that are tougher).


Logged

DDRKirby(ISQ)


Level 4-3

This week was a little bit of an off-week for me, as Monday was a vacation and I’ve additionally been busy brushing up on ALTTPR for the GMP Mentor Tourney. I nonetheless managed to complete up one other stage, although (one which I had began final week, really). Here’s the video for stage 4-3, at present titled “Outerworld Highway”:

Water Zone Charting

In this stage I began to experiment with some new charting sequences involving the water zones. In explicit, I’ve this part, which options rolling spike enemies intermixed with quick water zones:

Since water zones double your bounce length from one beat to 2 beats, I additionally found this triple flying enemy sample that reads properly:

Water/Speed Zone Bugfixes

I will not dive into the small print, however a part of getting this stage to operate correctly was going via and refactoring a number of the logic behind water and pace zones — notably as they relate to leaping and bounce durations/bounce arcs.

This is definitely slightly bit extra sophisticated than it may appear as a result of bounce arcs in Rhythm Quest usually are not decided empirically (as is likely to be the case in different platformer-type video games). In different phrases, we do not merely maintain monitor of the character’s at present velocity and speed up it by a given quantity every body. Instead, we monitor the bounce’s beginning place and derive the character’s present place every body thereafter primarily based on a quadratic equation (a parabola!).

Obviously this turns into slightly extra sophisticated with water zones and pace zones within the combine. Previously my code assumed {that a} single bounce would solely ever cross a single water boundary, however that is now not true with a few of these new charts, so I needed to refactor the bounce arc code to deal with an arbitrary variety of transitions per single bounce.

Level Backdrops

Not an excessive amount of to say concerning the stage backdrops right here. It took me some time to decide on this explicit mixture of components (the primary few issues I attempted regarded actually dangerous), however you may see that I’m utilizing the identical themes of getting translucent clouds together with vivid colours in opposition to a darkish background, plus some geometric shapes floating within the air. I’ve reused these floating shapes twice now, so I’ll want to ensure I alter issues up for the following stage I make in world 4.

Moving Forward

This stage was initially going to be stage 4-2, with stage 4-3 introducing the pace zones mechanic. However, after taking part in via this stage, I feel it’s kind of too arduous and bumped it to be stage 4-3 as a substitute. I’ll need to fill within the gaps with a distinct stage 4-2…and that additionally throws out my unique plan of introducing the pace zones on this world.

The new plan is to easily have all of world 4 give attention to water zones and as a substitute have world 5 introduce and discover pace zones. I feel this works out since pace zones particularly have lots of attention-grabbing mixtures of different mechanics that may in all probability want separate ranges to introduce. World 6, then, might be the grandaddy mixture of all mechanics the place ranges can freely use any mechanic within the sport as they see match.

World 4 might be going to be barely much less “measured” in its method on account of this changeup — if I had identified this was going to be the world construction I might have deliberate every track to introduce one or two several types of water zone charting — however I feel it will nonetheless be effective because the water zones aren’t =too= completely different than regular obstacles. My present considering is that stage 4-2 will introduce and give attention to the triple flying enemy sample, after which stage 4-3’s major new gimmick would be the rolling spike enemies in water. Level 4-4 can in all probability give attention to flying paths that go into and out of water, after which stage 4-5 can simply be all the pieces all collectively? Well, that is the present plan, anyhow…


Logged

DDRKirby(ISQ)


Level 3-2 Revisited

Despite my activity tracker itemizing lots of objects having been completed this week, it nonetheless felt like one other sluggish week for Rhythm Quest since I solely made one new stage. Here’s a video of that in motion.

Level Order Restructuring

You’ve in all probability observed that that is labeled as stage 3-2, which I had already confirmed 4 devlogs in the past, initially that includes the teal bounce+assault enemies. After some suggestions on the issue of this mechanic and additional thought, I ended up deciding that I ought to postpone the introduction of the bounce+assault combo enemies till world 5, the place they are often launched in numerous kinds all through that world.

That after all meant that stage 3-2 wanted to be modified solely, because the previous model I made was constructed particularly to focus on these combo enemies. The new monitor and chart is totally completely different, and focuses extra on the spike enemies that had been launched in 3-1. There’s a small emphasis on patterns the place spike enemies are intermixed with each grounded and flying enemies, together with the “bounce assault assault” sample seen on this clip:

This additionally meant eradicating all the teal combo enemies from the remainder of worlds 3 and 4. Unfortunately, the previous stage 3-2 (regardless of being a great track and chart) in all probability cannot be reused in the primary set of ranges, since world 5 goes to have a totally completely different musical fashion. (It additionally introduces the combo enemies in a bit too many various kinds directly) It’ll nonetheless in all probability get featured as a bonus stage although.

The new deliberate breakdown for introducing mechanics all through the worlds is as follows:
World 1 – Basic Attack/Jump, flying enemies, doublehit enemies
World 2 – Air jumps, flight paths (+ flying doublehit enemies)
World 3 – Spike enemies, ghost enemies
World 4 – Water zones
World 5 – Jump+Attack combo enemies
World 6 – Speed zones

Other Stuff

I up to date the extent metadata code to additionally parse “actions per second” for every particular person checkpoint of a track somewhat than for the complete track. This lets me see at a look (roughly) which sections are most troublesome and what the general problem seems to be like over the course of a son. The total track metric was generally being thrown off steadiness by notably mild sections, so this ought to be slightly extra correct as a numerical gauge of problem.

I’ve been having fun with the recently-released sport Chiki’s Chase just lately (extremely beneficial, go assist!), which incorporates a ton of small nifty options and polish (severely, the primary menu has a touch of parallax digicam scrolling while you tilt your telephone round…who does that??). This is the primary time I’ve performed a cellular sport that successfully integrates haptic capabilities (quick vibrations while you carry out actions or click on via dialogue), so on a whim I made a decision to see if I might hook up the native iOS/Android code for triggering haptic occasions in Rhythm Quest for cellular. That’s at present working, although I feel I’ll must play with it extra earlier than I give a verdict on whether or not to have it enabled or disabled by default. The sport feels simply effective with out them, so I do not wish to add a function that finally ends up will get annoying after some time.

In an identical vein, controller/gamepad rumble has been an attention-grabbing one to iterate on, as most of my makes an attempt have resulted in both imprecise or way-too-aggressive rumble. Unity’s has built-in APIs for triggering rumble, however they seem to be a bit coarse-grained, so this week I additionally managed to hook into the native Switch rumble performance, which helps you to management the vibration values in a bit extra element. That appears to be working higher, so I’ll need to proceed to mess around with that as effectively.


Logged

DDRKirby(ISQ)


Menu Tweaks, Shop Rework

I miss the weeks once I would simply crank out two ranges over the course of the week…that actually made it really feel like I used to be making lots of concrete progress in direction of ending the sport. Instead, this week I ended up getting zero work achieved on ranges (oops) and labored on just a few different issues as a substitute.

I suppose it is simply as effectively, since I’m nonetheless mulling over what to do with the degrees in world 4. My present plan is to have world 4 wholly function the water zones, however 5 ranges looks like barely greater than sufficient to discover that mechanic’s design house (?). I might additionally attempt to usher in pace zones (or combo enemies) to world 4, however I feel having 5 ranges to introduce each of these mechanics is just too few!

Legal/Accounting Stuff

That’s proper, everybody’s favourite factor to take care of! (laughs) For a large number of causes I made a decision to kind an LLC (restricted legal responsibility company) to promote my sport, versus having it simply be tied to me as a person. This is fairly customary follow and when you take care of some type of side-business on a daily enterprise it is usually beneficial to maintain enterprise accounting separate out of your private cash.

I’m comfortable to report that the majority of that’s now lastly arrange, and my Steam app (together with my iOS account, and so on) are actually tied to “DDRKirby(ISQ) LLC”, and I even have a enterprise banking account tied to that. Hooray! I will not drill into the boring step-by-step particulars of how I did all of this, however I’ll gloss over some suggestions and learnings that I received out of the journey in case anybody else finds themselves in an identical place.

First, stick with A-Z letters and do not use parentheses in your LLC title like I did, lol. (we’ll ignore the truth that “DDRKirby(ISQ)” was by no means the very best alias to start with) This labored simply effective for my state’s registry however numerous different methods strip out / do not enable symbols, so higher to simply not take care of that.

Second, a standard query is when to kind the LLC? The draw back of forming an LLC too early is that you have to pay annual charges on it, in order that’s simply wasted cash when you’re not really incomes income (your sport is not achieved but) or monitoring bills. The draw back of forming the LLC too late is that it’s kind of of a problem to vary tax/authorized info after the very fact. For instance, with Steam you have to make a wholly new Steamworks companion account, then arrange a switch for the app from the previous account to the brand new one. Importantly, you have to pay the $100 Steam Direct payment AGAIN for the brand new account. This might be lower than the annual LLC payment (depends upon state), although. So I feel that is roughly the appropriate timing for me.

Often folks will suggest third-party companies to assist with filling out kinds for establishing the LLC, in addition to offering an on-file enterprise contact (in lieu of your self personally). The kinds for registering the LLC had been fairly straightforward to self-fill, although, so I do not suppose that is obligatory, although I feel it may be helpful to have entry to some type of authorized / accounting recommendation (whether or not that be from a CPA, a good friend, or whoever).

UI Layout Scaling

Okay, again to stuff that I can put up pictures about Smiley

Last time we left off, the primary menu regarded like this:

The general construction has stayed the identical, however all the pieces is greater now:

You is likely to be questioning why I selected to do that, provided that the previous model seems to be kind of effective. The new model may look slightly too cramped, really, since all the pieces is so large! The reply is to take care of a number of resolutions! Because I (by default) keep integer pixel scaling to keep away from scaling artifacts, the portion of display house that the UI covers really depends upon the display dimension. Here’s the previous model of the menu, however this time on the decision of an iPhone in panorama view:

See how the UI feels prefer it has an excessive amount of empty house round it now? The UI cannot scale up any extra with out extending past the sides of the display. The new, greater UI structure fixes this challenge, and appears good on the similar scale issue:

When you keep mounted integer scaling, your UI isn’t going to look good for all display resolutions. I used to be beforehand designing primarily for 1000×600 resolutions, however that resulted in different resolutions having an excessive amount of empty border house. Now, I’ve redone the menus to make use of up as a lot of the 480×300 base canvas dimension as cheap, in order that it seems to be effective even with some additional padding. Most widespread resolutions (720p, 1080p resolutions) will contain some quantity of padding, so this works out. As an added bonus, all the pieces feels simpler to faucet on for cellular as effectively.

Note that there are different methods to deal with this challenge — for instance, as a substitute of getting a hard and fast base canvas dimension with integer scale, you might construct your UI proportionally (use percentage-based anchors) after which use 9-slice belongings in order that your buttons and menus resize dynamically. (Of course, the simplest resolution is simply to not use pixel-art and keep away from the issue altogether…..)

Aspect Ratio Handling

I additionally tweaked how the sport handles screens of various facet ratios. Previously, the digicam and UI solely regarded on the top of the display (not the width) when deciding scale. This signifies that with the intention to assist 4:3 and 5:4 facet ratios (I do know it is arduous to consider, however a few of us nonetheless use these…), I had to make sure that the UI match safely into the bottom facet ratio (5:4). This sometimes meant that the majority screens had lots of empty padding on the left and proper:

I’ve since modified the scaling code so it makes use of a 16:10 “secure space” to find out scaling. This means I can safely lay out my UI for a large facet ratio…

And when you’re taking part in on a 4:3 or 5:4 show, it will compensate by including extra vertical house, as a substitute of chopping off the left and proper sides:

Shop Rework

Astute readers will discover that within the screenshots of the brand new major menu above, the “Shop” button is curiously lacking! In my expertise with playtests, the store menu was too out of the best way for folks to note whereas taking part in. You need to drill all the best way again out to the primary menu with the intention to store, so most individuals simply continued to play ranges with out ever spending any cash (except I explicitly pointed it out).

My present experimental redesign for addressing this by inserting retailers in every world as a part of the extent choose move:

The thought right here is to funnel folks to the store after they’ve accomplished some ranges (and thus ought to have collected a great variety of cash to spend). I like that this retains the store out of the best way at the start of the sport — I need the participant expertise from boot-up to beginning stage 1-1 to be as freed from “litter” as attainable. It additionally ties into the “quest” theming of the sport. Initially I positioned one store in every world between ranges 2 and three, however I’ve since moved them to the top of every world after stage 5. I assume the thought proper now’s that you just get a pleasant place to spend your entire cash on the finish of every world earlier than going to the following one? This continues to be one thing I would like to consider some extra.

One different good factor about that is that having per-world retailers provides me a pleasant logical method to increase the store stock over the course of the sport (particularly necessary for bonus ranges, which can range in problem and featured mechanics). I’m unsure but whether or not all retailers will share the identical stock or whether or not you may have to go to explicit retailers with the intention to buy numerous objects…

Of course, this new system is not with out its downsides in comparison with simply having a worldwide store button. For one factor, it is extra awkward to simply bounce to the store from boot-up. It’s additionally a bit clumsy having to scroll to the top of the world every time you wish to buy one thing new. In the top I would simply find yourself nixing the complete thought and simply have a store button on the extent choose display…(however that will be awkward to slot in the UI and likewise be accessible through keyboard…). It’s one thing I nonetheless must really feel out and take a look at some extra.

« Last Edit: June 24, 2022, 02:23:56 PM by DDRKirby(ISQ) »
Logged

DDRKirby(ISQ)


Level 4-2

Not an excessive amount of to report this week, simply one other stage in world 4 achieved. I do have an replace on the store rework as effectively, although.

Shop Rework Update

Last week I wrote about an experiment the place I moved the in-game store to fill one of many spots on the extent choose display:

There had been quite a lot of points with this, so ultimately after seeing it via I sadly determined to scrap it. The store button is now merely on the upper-right nook of the extent choose display:

This is not good…one annoying challenge is that (sigh) some telephones spherical off the corners of the display, so I would like to ensure the button would not get weirdly reduce off by that. I’m not an enormous fan of the added litter for this display, however I attempted to not less than make the background of the coin show space translucent in an try to attempt to present the extent backdrops slightly higher.

This ended up being the least intrusive resolution (for now) for fixing the problem of gamers not going to the store in between ranges, and I really feel just like the button is in a reasonably intuitive place. Right now (placeholder logic) the coin textual content pulsates when you’ve 100+ cash, and sooner or later if I determine so as to add extra fancy store logic (unlocking extra stock with every world) I can level/spotlight that on this display.

One factor that may nonetheless be good to do is have some kind of animation/ticker for the coin depend while you full a stage and get a brand new file — proper now the coin depend updates immediately as quickly as you bounce into this display, however there’s a possibility for some kind of animation to occur there.

Level 4-2

Other than that, I spent the remainder of the week ending stage 4-2 (together with grinding extra ALTTPR for the match I’m in…). As is changing into customary, this is a full video of that in motion:

This stage is supposed to introduce the “bounce slash slash slash” sample the place you’ve a bounce adopted by three flying enemies throughout a water zone. I attempted to slot in a bunch of cases of that right here and there, together with extra common play with the water zones, together with air bounce sequences that bounce out and in of water. There’s additionally this checkpoint with a very lengthy water part, which works properly alongside the break within the music:

Music Design

For the music, I’m once more going with the theme of extra “mystical” sounding devices, whereas conserving to a pentatonic scale. I used a particular bottle blow instrument to kick issues off, after which there’s additionally some comfortable sweeping pads that are available in after the
intro:

https://rhythmquestgame.com/devlog/38-pads.mp3

I’m beginning to actually get the grasp of utilizing drum fills — each within the samples drums in addition to within the triangle-wave toms — to intensify the water zones. Funnily sufficient, I’ve observed that that is inflicting me to do much more element work in my drum programming than ordinary, so that is a kind of instances the place the extent design and music actually feed off of one another. Here’s how these fills sound:

https://rhythmquestgame.com/devlog/38-drumfills.mp3

When the refrain is available in there is a supersaw chord synth that opens up. I’m making use of sidechain compression right here to present it that traditional “ducking” impact at any time when the kick drum performs:

https://rhythmquestgame.com/devlog/38-supersaw.mp3

That won’t sound tremendous “full” however that is as a result of I’m deliberately trimming off lots of the sound to make room for the remainder of the devices (primarily the lead synth). The lead is simply the identical sq. wave that I exploit on a regular basis, however as at all times there’s lots of little articulations that give it a extra wealthy character. Here’s the complete soundscape directly:

https://rhythmquestgame.com/devlog/38-full.mp3

Backdrops

For the backdrops I went with a bunch of fluffy timber (cherry blossoms?). This is a little bit of a departure from ranges 4-1 and 4-3, which had been each extra “spacey” in vibe, with darker backgrounds, however for some cause I simply had these fashion of timber on the thoughts.

I feel the true key right here is all the completely different cloud layers, that are clear and actually give a way of depth to the scene. These light cloud layers are actually standing out as a constant visible theme throughout all the ranges on this world to this point.

That’s going to do it for this week! Next week I’ll both take a stab at stage 4-4, clear up some visible results right here and there, or possibly begin to attempt to actually polish up a public demo construct…


Logged

qMopey


Posting for observe!


Logged

DDRKirby(ISQ)


Demo Build Work

What per week…effectively, let me attempt to undergo some stuff right here.

Release Date

Probably not too shocking to anybody (least of all me), however the estimated launch date for Rhythm Quest has been pushed again from “Late 2022 (?)” to “Early 2023 (?)”. Note the query mark ;P

Some life stuff got here up and I’ve to finish up shifting within the subsequent few months so that is principally me pre-emptively throwing myself a bone so I will not fear about it as I inevitably spend a bunch of time and vitality on that. I may additionally be taking up some part-time work within the close to future, which can present me with some additional leeway for my timeline (i.e. not feeling like I’m spending as lengthy draining my checking account away whereas working fulltime on this) whereas nonetheless conserving a great steadiness. But clearly, if I’m not engaged on Rhythm Quest 5 days per week my progress will naturally be at a barely slower tempo. I’m not too fearful provided that a big portion of Rhythm Quest was constructed throughout my earlier employment, however these are issue that I’m going to be conserving in thoughts shifting ahead.

Webserver Testing

This is a foolish small factor, however I lastly arrange an =precise= webserver (nginx) on my pc to check my web sites and WebGL builds regionally. Previously I used to be simply utilizing python’s easy http server performance, which works completely effective…besides it could possibly’t deal with the gzip compression and related headers for Unity WebGL builds. So now I simply have my localhost webserver begin on boot and I can navigate to any of the web sites I work on regionally (rhythmquestgame.com, ddrkirby.com, cocoamoss.com, katmengjia.com) and take a look at them out with out having to kick off a python course of. Probably one thing I should have achieved earlier, to be sincere, however eh.

WebGL Demo Work

It had been a very long time since I had performed round with the WebGL demo construct, so I made a decision to plug away at that this week. At some level, I ran it and it regarded like this:

…uh, yeah, that is not proper. I feel this really simply ended up being a false alarm (browser caching challenge), however anyhow, now it is working simply effective and working in my browser regionally on the demo web page:

As you may be capable of see (sorry, it is small), I’ve additionally achieved a bunch of different work to flesh out this web page, together with including hyperlinks to downloadable builds (which do not exist but…) and the Steam wishlist/Discord invite callouts.

Updated Notices

I’ve additionally up to date a number of the textual content discover screens within the sport, for instance this one which comes up when you’re taking part in a WebGL construct:

Note that save knowledge =ought to= persist throughout model updates usually, nevertheless this does not work on itch.io builds since itch makes use of a singular URL per uploaded construct, and Unity by default persists browser-based save knowledge primarily based on the web page URL. I briefly regarded into methods to probably work round this after which determined to simply desk it for now, it appeared like I ought to spend my time elsewhere as a substitute…

Although I haven’t got (or need) DRM on my downloadable builds, I exploit some rudimentary copy-protection logic to keep away from having internet builds stolen by different web sites and hosted with out my permission (and profiting through advert income…). As I’ve realized from expertise, that is sadly an especially widespread follow on the subject of internet video games since they’re really easy to simply obtain after which reupload.

Of course, my easy javascript checks aren’t foolproof — particularly they’ll set off false positives when you’ve blocked sure internet browser performance that I exploit to attempt to decide the place the sport is being hosted. So I wrote up some directions on what to attempt in case that occurs to you:

I’ve additionally up to date the display that pops up when you click on on one of many worlds or options that is not obtainable within the demo (it cycles via numerous screenshots right here). I’ve added the Steam and Discord hyperlinks right here as effectively:

I additionally connected a set off for a separate model of this that reveals up after beating the final stage within the demo (at present that is stage 3-2). I have never really constructed out the overlay itself but, however it’ll in all probability have just a few pages — one thing to the impact of “thanks for enjoying the demo […] wishlist the total model on Steam (and so on)”. That’s one thing I’ll be ending up quickly, hopefully.

WebGL Audio Scheduling

I wrote in a earlier devlog about a number of the points I needed to work round with the intention to get a useful WebGL construct up and working, together with the truth that audio scheduling gave the impression to be damaged (particularly, AudioSource.PlayScheduled appeared to at all times simply play audio instantly on WebGL). I checked at the start of the week and Unity has since mounted this challenge!………kind of. AudioSource.PlayScheduled appears to work now, however sadly if you wish to begin the play head halfway via an audio clip, you are outta luck as that also would not work. Bleh.

On the plus facet, I’ve gone forward and revamped my hacky workaround for audio scheduling in just a few alternative ways. The primary thought right here is that I maintain a sorted checklist of scheduled audio clips (together with the time at which they need to be performed), after which I repeatedly ballot the checklist and set off the sounds on the applicable occasions, eradicating them from the checklist as I achieve this.

This is not new, however one necessary factor to take into accounts right here is audio buffering. When you set off playback of an audio clip, there’s some quantity of delay earlier than the audio knowledge is definitely performed again on account of buffers. It’s not good, however you may estimate this through the use of the AudioSettings.GetConfiguration API and searching on the dspBufferSize discipline and account for this by adjusting your set off occasions barely earlier to compensate.

One enchancment I ended up making this week was growing the polling frequency at which I checked the scheduled sound checklist. Before I used to be checking this as soon as per body through the use of Unity’s Update methodology. That works, however it seems (for no matter cause…) that when you use the OnGUI methodology, you may even have your polling code run a number of occasions per body, resulting in extra correct timing.

Of course, initially I used to be taking a look at AudioSettings.dspTime as my time reference, which does not assist right here as a result of that worth would not really replace between frames. Instead you wish to have one thing primarily based on a timer which frequently updates — one thing like Time.realtimeSinceStartup which can return completely different values even throughout the identical body. Luckily I have already got a system arrange for mapping audio dsp occasions to realtimeSinceStartup and vice versa through linear regression (the earlier devlog on this), so I can simply plug that in right here.

It’s nonetheless not good…particularly WebGL has lots of points the place the start chunk of an audio clip will not playback correctly, and seamless audio looping is usually damaged (possibly one thing to do with audio compression), however it’s satisfactory not less than.

Demo Save Data/Achievements

I began organising the demo model of the app on Steamworks (yay!), and whereas I used to be going via that, a few different issues occurred to me to wash up:

First, I made certain that Steam achievements are disabled on demo builds (it is a beneficial follow by Steam). The suggestion is to have these achivements robotically unlock while you switch your save knowledge over to the total model.

…talking of which, I made a decision to avoid wasting demo progress in a distinct folder than the true sport (preferences are nonetheless shared for now). Previously the demo merely saved to the identical location, which labored effective for a seamless carryover to the total sport, however this feels a bit safer — for instance when you attempt to open a full sport save within the demo it’d trigger some dangerous issues to occur. The full sport will examine to see if a full sport save already exists, and if not, it will search for a demo save file as a fallback — at which level I can do any logic I must with the intention to convert from demo save to full sport save as wanted (hopefully not a lot, if something).

I’ll depart you all with this bonus screenshot of my Windows Jenkins construct dashboard, which has exploded since including all the separate demo builds (and this does not even present the iOS / OSX builds…):

That’s it for now…subsequent week I’m going to proceed engaged on and sharpening up the demo construct to get it prepared for launch!


Logged

DDRKirby(ISQ)


Particles and Menu Tweaks

I’m persevering with to shine up issues right here and there in preparation for the demo construct!

Steam Next Fest

I additionally just lately obtained an e-mail invitation to Steam Next Fest, the place upcoming Steam video games can exhibit their demos and host livestreams. This will likely be occurring October 3-10, which works out fairly properly for me by way of timing, so hopefully it will be an opportunity to get a bunch extra eyes on Rhythm Quest Smiley

Particle Effects

For fairly a very long time now I’ve had a bunch of placeholder “white sq.” particles within the sport:

These present up all over the place, together with on the bottom while you bounce/cross a beat, while you assault an enemy, while you use an airjump, and so on. I’ve at all times deliberate to switch these sooner or later however by no means received round to it earlier than because it would not actually have an effect on gameplay or something. I’ve lastly gone forward and drawn some new particle sprites this week to switch them:

I’ve additionally redrawn the “slash” impact, which was effective earlier than however was being scaled up by 1.5x (yuck) as a result of the unique sprite I had wasn’t sufficiently big. I’ve additionally added a Kirby Super Star-style “blue circle flash” to present it slightly extra coloration and affect:

The coin assortment impact has additionally been tweaked, now trying extra crisp and with some black outlines to assist it present even in opposition to lighter backgrounds:

Here’s all of these working in motion:

There’s nonetheless a few results which want redrawn sprites — such because the pace zone and water zone entry/exit results — however this could do it for all the pieces that is featured within the demo.

Shop Tweaks

The store coin depend and icon within the upper-right now animate everytime you clear a stage or beat your earlier excessive rating:

This is a fairly small factor however I’m hoping that having some movement right here will assist make sure that the store button would not go completely unnoticed (plus it is enjoyable to see!).

The store menus now have their very own background as effectively. I used to be initially questioning if I ought to go along with some kind of indoor aesthetic with this, however I used to be…admittedly feeling lazy, and likewise did not suppose that will work out with the parallax scrolling impact that I at present have occurring (which I like because it gives some motion within the background). I ended up simply doing a really plan starfield background, which isn’t notably thrilling however really kind of unusually is smart because you scroll upwards to get to the store menu:

I’ve additionally locked some characters for the demo (determined to nonetheless allow you to unlock the ever-popular Ducky and Furball although…). The value of unlocking every character has gone up, from 100 cash to 250 cash. There’s one thing like 800-1000 cash within the demo (and rather more within the full sport), so I wish to be sure to not less than work slightly bit for these unlocks!

These costs might find yourself altering later (which might be slightly little bit of a headache…), notably if I find yourself implementing unlockable alternate costumes, however that is one thing I have never fairly discovered (I may additionally produce other bonus unlockable content material like lore / art work). Hard to steadiness out the financial system when you do not fairly understand how a lot stuff goes to be on the market!

Menu Tweaks

I’ve restructured lots of the settings menus — I made a decision to make use of extra of a hierarchy and put lots of settings into submenus that you may drill down into. This makes it slightly extra unwieldy by way of having extra screens that you have to undergo (particularly I’m unhappy that lag calibration is now not a main menu merchandise) however cleans up the preliminary menu a bit and I feel is extra logical, with out making a ton of further work for me.

There’s additionally a brand new menu merchandise for resetting knowledge and settings (which now you can do individually from one another). Previously this was below the “Cheats” menu, however I feel it makes extra sense below “Settings”:

For scale/zoom settings, I’ve at all times needed to have some kind of visible preview of what the scaling seems to be like, however wasn’t certain how one can construction the UI in a easy method to deal with that (with out making a ton of labor for myself). I ended up simply breaking up the UI overlay and making it partially clear so you may see the participant within the background:

Screen Filters

This in all probability wasn’t obligatory for me to implement proper right here and now, however since I used to be already engaged on a bunch of setting stuff, I went forward and knocked out a todo merchandise that I had for implementing backdrop filters for growing readability when you discover the backgrounds too colourful / distracting:

This is totally shader-based, so all I needed to do was add a further parameter or two to my current two palette shaders after which implement the completely different filter results primarily based on that.

The Fade filter works by shifting all colours nearer to the first background coloration, so for a stage with a lightweight sky background, all the pieces will likely be lightened, and for a stage with a darkish night time backdrop, all the pieces will likely be darkened. Of course, to ensure that this to work, the shader must know what the “main background coloration” is, and I at present do not have a “rule” for what palette index this occupies. I might specify (per-level) which palette index to lookup, however I occur to have an unused palette slot, so I simply made it in order that palette index 9 is the background coloration lookup, after which copied the suitable colours into the per-level palette knowledge.

Darken is so simple as you may get — it simply multiplies every coloration element by 50% so that you just get solely half of the brightness. Nice if you need one thing that is slightly simpler on the eyes by way of general display luminance.

Desaturate makes use of a fast calculation to attempt to push the colours slightly nearer to their grayscale equivalents (with out going all the best way to grey). I’m unsure whether or not anyone will like this one however I made a decision to incorporate it for completeness anyhow, since usually when backgrounds are too visually busy it is as a result of they’re oversaturated with coloration.

This was a brief week for me (had one or two days the place I did not actually work) however I’m glad I nonetheless managed to have some stuff to point out off anyhow!


Logged

DDRKirby(ISQ)


More Demo Polish

I took per week off final week to — amongst different issues — enter GMTK Game Jam 2022, with our dice-rolling cooking sport “Dice it Up”, made in 48 hours:

So uh, go examine that out if you would like! 😀

As for Rhythm Quest…I’m very near having a demo construct that I’m prepared to point out off to the general public! I’ve already achieved some inside testing and have simply been working to tidy up little issues right here and there.

Calibration UI Tweaks

One factor that got here up throughout testing is a number of folks not fairly understanding the meant utilization of the calibration UI and tapping each 4th beat as a substitute of on each beat:

I’ve added some round pulsing indicators right here in an try to hopefully make that extra intuitive. I additionally changed the “line” markers with circles, simply felt prefer it regarded like a greater animation to put down a circle. It’s slightly busy for my tastes now (possibly I’m overcompensating…) however I can at all times iterate extra on this later:

As an additional fallback, I find yourself accepting the calibration now even when you solely use one of many 4 reference factors, so long as you do it sufficient occasions.

More Settings Menus

I’ve been persevering with to wash up a number of the settings menus much more…for instance, I’ve added a brand new submenu for configuring haptic suggestions (vibration/rumble), which reveals just for cellular and change (I have never discovered gamepad rumble to really feel excellent):

Gamepad Tutorial

Gamepad has been supported as an enter methodology for a very long time, however I’ve solely just lately gotten round to creating the separate tutorial dialogs for it:

I have never examined it but, however this must also in concept detect when you’re utilizing a Dualshock controller or Switch Pro controller and present the suitable icons as a substitute. Unfortunately the final dialog right here is at present a lie as I do not enable gamepad rebinding but…(extra hassle than it is at present value to implement…)

Audio Cue Rework

A very long time in the past I added an audio cue system that permits visually-impaired individuals to play Rhythm Quest. This has been fairly half-baked for some time, and I felt dangerous having solely a janky single on/off toggle within the “Accessibility” menu, so I went and gave it some extra consideration:

I’m certain this technique might nonetheless be refined extra — as an example, it is likely to be higher to have quantity / panning configurable on a per-cue foundation somewhat than globally — however for now you may not less than change the worldwide cue quantity steadiness and choose from a big selection (19!) completely different cue sounds starting from quick arpeggios and pitch slides to percussive hits. I have never performed round with these a lot but so I don’t know how effectively they work, however it’s definitely extra versatile than earlier than.

Backdrops and Screenshots

I’ve added some extra selection within the menu backdrops as effectively, somewhat than simply utilizing the extent 1-1 set for all the pieces:

Aaand I’ve taken some new screenshots for the “finish of demo” popup, showcasing the brand new mechanics that I’ve developed for the total sport (which weren’t applied on the time that I beforehand took screenshots):

Other Stuff…

I’ve achieved a bunch of different miscellaneous work as effectively:

  • Setup the construct deployment pipeline for demos (Steam, itch.io)
  • Audio quantity now begins at 70% by default as a substitute of 100%, to present you room to regulate each methods
  • Fixed hyperlinks not opening correctly on mouse clicks for WebGL builds
  • Had to downgrade Unity as a result of newer variations inexplicably drop mouse enter close to the upper-right nook of the window =/
  • Made a brand new public changelog itemizing separate from my inside changelogs
  • and so on…

Overall issues are trying excellent and I would not be stunned if I’m in a position to get this out within the subsequent week or two!


Logged

DDRKirby(ISQ)


Demo Release

I missed the final 3 updates on account of a whirlwind of a month:

    Released the Rhythm Quest Demo
    Won the Zelda: A Link to the Past Randomizer match I used to be competing in!
    Started a brand new part-time job
    Had to grieve for a private loss which left me bereaved

Let me see if I can recap a number of the stuff that is been occurring…

Demo Release

I revealed the free playable demo for Rhythm Quest, and it is obtained some very nice reception! I’m actually glad that folks loved taking part in via the demo ranges, and it is also been good to take a brief break after engaging in my demo launch.

Something that was good to see was having the demo launch single-handedly kick my Steam wishlist depend from 1,000 to 2,000:

Something I used to be slightly stunned to see was how many individuals had been attempting to play the sport utilizing the (unfinished) screenreader assist that I’ve been integrating with assistance from the UI Accessibility Plugin package deal. This was really a bit regarding since a lot of the sport nonetheless wanted extra work earlier than being prepared for prime-time with screenreader assist (particularly for customers who’re blind), however the individuals who did handle to fumble their well beyond the assorted points actually appreciated it. I made a decision to spend per week or two cleansing this up since there was clearly extra demand for it than I had anticipated.

Screenreader Improvements

First off, I’ve added a brand new scene that pops up earlier than the rest if screenreader software program is detected. The screenreader voiceover performance will at all times be enabled for this scene:

The accessibility menu has some new choices, together with a menu that may allow you to manually toggle screenreader mode, in addition to allow a brand new mode that retains regular keyboard navigation however nonetheless reads aloud the chosen merchandise.

In the earlier devlog I confirmed off the brand new audio cue configuration display:

Unfortunately (and considerably mockingly), it seems that the screenreader-based navigation for this explicit display was comically dangerous, with choices being chosen out of order, and several other components not being learn appropriately. Having to boost the amount steadiness (defaulting at 0%) for any of the opposite choices to have an impact was additionally unintuitive, so I’ve gone again to having a worldwide toggle for the audio cue system along with the amount steadiness. Hopefully it ought to be slightly extra useable now…

I’ve additionally mounted up lots of different areas the place the screenreader performance was missing, such because the world and stage choose screens, in addition to the “how one can play” tutorial (which beforehand did not have any voiceover integration in any respect). There’s nonetheless rather more work to be achieved right here general, however I’m going to desk this for now and switch my consideration to different issues as a substitute.
Build Automation Cleanup

I’ve lastly gotten a brand new macbook to switch my growing older one from 2012, which I’ve been utilizing up so far for all of my OSX and iOS builds. Besides being slightly sluggish, the previous machine solely had a 256GB arduous drive cut up throughout two partitions (OSX vs Windows), so there was barely any house for any builds.

Since I used to be organising a brand new machine (in addition to all the related stuff like Jenkins, Unity, git, fastlane, and so on.), this was a great alternative for me to additionally clear up my automated construct system in order that it is slightly extra maintainable.

I’ve been utilizing fastlane to drive a bunch of the construct steps (notably for iOS/Android builds), and Jenkins to handle construct jobs and workspaces. However, I now have one thing like two dozen completely different Jenkins jobs to handle all the completely different Rhythm Quest builds (demo builds, steam builds, cellular builds, and so on.) and every certainly one of them had a distinct Jenkins config involving numerous shell instructions to inform Unity (usually a hard-coded Unity path) to generate the construct after which get it copied/moved to the suitable folders.

Updating a bunch of disparate Jenkins jobs was shortly changing into unwieldy, so I’ve switched to having most of my logic in my centralized `fastlane` config file (which is version-controlled). I’ve additionally cleaned that up and began breaking down the logic into completely different subfunctions in order that all the pieces is extra manageable, so I may need widespread features/lanes like:

# Invoke Unity with a given build_target and build_script operate
private_lane :unity_win do |choices|
  system “#{unity_path_win} -projectPath .. -batchmode -nographics -quit -buildTarget #{choices[:build_target]} -executeMethod BuildScripts.#{choices[:build_script]} -logfile -“
finish

# Move a construct from ../Builds/platform_name to network-share/Builds/platform_name/build_number
private_lane :movebuild_win do |choices|
  src = “”../Builds/#{lane_context[SharedValues::LANE_NAME]}””
  dst = “”#{builds_path_win}/#{lane_context[SharedValues::LANE_NAME]}/#{choices[:build_number]}””
  newest = “”#{builds_path_win}/#{lane_context[SharedValues::LANE_NAME]}/newest””
  system “mkdir”, newest
  system “mkdir”, dst
  system “robocopy #{src} #{newest} /MIR /XD “*AgainUpThisFolder_ButDontShipItWithYourGame””
  system “robocopy #{src} #{dst} /MIR /MOV /XD “*AgainUpThisFolder_ButDontShipItWithYourGame””
finish

The particular person lanes for every construct are then extraordinarily merely to jot down:

lane :win64 do |choices|
  unity_win(build_target:”Win64″, build_script:”Win64″)
  movebuild_win(build_number:choices[:build_number])
finish
lane :win64demo do |choices|
  unity_win(build_target:”Win64″, build_script:”Win64Demo”)
  movebuild_win(build_number:choices[:build_number])
finish
lane :win64steam do |choices|
  unity_win(build_target:”Win64″, build_script:”Win64Steam”)
  movebuild_win(build_number:choices[:build_number])
finish
lane :win64steamdemo do |choices|
  unity_win(build_target:”Win64″, build_script:”Win64SteamDemo”)
  movebuild_win(build_number:choices[:build_number])
finish

Moving Forward

I truthfully had a tough time remembering precisely what I used to be engaged on earlier than the demo launch got here up. There are lots of little issues right here and there (numerous suggestions got here in from folks taking part in the demo as effectively), however I feel my first precedence right here goes to be to get again to engaged on extra ranges. I feel the following one is meant to be stage 4-4, the place I’m speculated to experiment extra with flight paths / bounce sequences that go out and in of water zones.

I’m going to proceed taking it a bit straightforward for now although — I’ve received some extra journey arising, and will likely be shifting residences after that (Ludum Dare can also be arising in slightly over a month), so I’ll have loads of real-life stuff to deal with.

I’m really pretty involved about my means to keep up a great tempo of progress on Rhythm Quest on account of my new job (at present 3 days per week) which on paper cuts my time by over 50% (!). This is not one thing that I take evenly, and goes to need to be one thing I consider shifting ahead to see if it is actually working for me or whether or not some modifications have to be made. We’ll see if for instance I’m nonetheless in a position to get one stage per week achieved. I’ll additionally in all probability need to rethink my devlog writing time, as earlier than I at all times used Fridays as devlog-writing days — that does not make as a lot sense when I’ve solely received 2 full days per week for Rhythm Quest…

On a extra private observe, although, my current expertise with grief and bereavement have additionally put some factor into bigger perspective for me and have jogged my memory that ultimately my objective in making this sport is primarily for my very own enjoyment and satisfaction (and all the pieces else is secondary to that). Of course, it is nonetheless essential to me that I’m in a position to constantly make concrete ahead progress right here, however previous that possibly I do not actually need to fret a lot. Well, want me the very best of luck going ahead, I assume?


Logged

DDRKirby(ISQ)


Unpause Animation, Bugfixes

I debated taking the time to jot down one other devlog since I haven’t got that a lot to report on, in addition to the truth that I’m spending a bunch of time on packing and shifting and such. I fear about making devlogs that learn extra like blogs than the rest, however I =did= handle to squeeze in some Rhythm Quest work right here and there, so let’s cowl it shortly. I get antsy once I go for too lengthy with out returning to certainly one of my common actions, and devlogs are part of that, I feel.

Unpause Countdown

There was a fairly smart function request for some kind of countdown when unpausing the sport. Normally this may be fairly straightforward, simply add a 3-second delay and a few textual content that counts down “3, 2, 1” together with some tick/beep sounds earlier than unpausing the sport.

But that is Rhythm Quest we’re speaking about; the pause music maintains the identical beat as the unique track, and unpausing additionally depends on that sync, and waits till the pause music loop will get to an applicable beat with the intention to drop you in seamlessly again into the extent monitor, no matter while you paused (on a beat, off of a beat, and so on.). Because of this, the length of the unpause delay varies relying on while you pause and unpause, which might be a part of the rationale {that a} countdown timer is fascinating.

The very best resolution right here would in all probability be to depend you in primarily based on the beat of the track, ensuring that unpausing takes not less than 3 or 4 beats. That…appeared like lots of work to me, so I used to be slightly extra lazy…I stored the already-existing unpause timing logic and easily added a bar that fills up:

Not the prettiest, however it’ll do, not less than in the intervening time, although I admit that within the means of scripting this devlog I’m questioning if the countdown actually can be that rather more effort…possibly one thing to take a look at later. Anyways, the display tint additionally fades away as you bounce again into the motion, which I feel works properly.

Input Buffering

I in all probability have not talked about this earlier than, however you may really buffer enter throughout a respawn. If you press bounce or assault earlier than you are technically actionable, the Player class will retailer a flag and course of the enter on the primary attainable body after respawning as a substitute. With the added unpause progress bar, it appeared prefer it made sense so as to add that performance to unpausing too. That wasn’t too troublesome, simply added a distinct (new) situation to the enter buffering logic.

One factor I did understand was that I additionally wanted so as to add enter buffering for bounce releases for unpausing. Previously I did not want to fret about this as a result of, effectively, there isn’t any cause to buffer a bounce launch after a respawn, as you’d by no means be on a flight path. With unpausing you =can= be in the midst of a flight path, nevertheless, so I went forward and applied that.

This is deceptively slightly extra sophisticated than the opposite instances as a result of the bounce launch conduct depends upon whether or not the bounce enter is held down or not. Because of how the enter system works, I do not really detect bounce releases primarily based on polling the enter state each body; as a substitute I obtain discrete key launch occasions. This signifies that when you launched the bounce button when you had been within the pause menu, I might ignore that occasion solely and also you’d nonetheless be flying after you unpause. That’s mounted now — I toggle a flag for bounce launch buffering every time you press or unpress bounce throughout pause/unpause so I can simply “do the appropriate factor” while you regain management.

Of course, when you’re utilizing completely different bounce inputs throughout a number of units (keyboard / mouse / gamepad) that is one other story, however at that time there’s actually solely a lot I can do that will help you, haha…

Bugfixing

I’ve additionally had a while to take a look at just a few bugs, comparable to lots of interplay sounds being utterly lacking when you disable sfx prescheduling (which I do not suggest, and due to this fact do not usually take a look at).

One of those was a report that the screenreader textual content to speech (TTS) performance was damaged on Mac/OSX, which I confirmed. This was odd to me for the reason that UAP accessibility plugin that I’m utilizing claims to assist Mac simply effective. It was additionally working simply effective within the Unity editor on Mac, so clearly it was applied effective…one thing was simply going flawed someplace alongside the best way.

Digging into it slightly extra, I encountered this cryptic error:

[Accessibility] TTS Error: System.ComponentModel.Win32Exception (0x80004005): SoftwareName=’say’, CommandLine=’-r 175 “Start Game”‘, PresentDirectory=”, Native error= Success
  at System.Diagnostics.Process.StartWithCreateProcess (System.Diagnostics.ProcessStartInfo beginInfo)

Not tremendous promising for the reason that error code 0x80004005 did not appear to be particular and the “Native error= Success” discipline wasn’t notably elucidating. Looking at this (and the UAP plugin code), it seems to be like UAP is attempting to make use of the built-in “say” command to invoke the Mac VoiceOver performance:

m_VoiceProcess = new System.Diagnostics.Process();
m_VoiceProcess.StartInfo.FileName = “say”;
m_VoiceProcess.StartInfo.Arguments = parameters;
m_VoiceProcess.StartInfo.CreateNoWindow = true;
m_VoiceProcess.StartInfo.RedirectStandardOutput = true;
m_VoiceProcess.StartInfo.RedirectStandardError = true;
m_VoiceProcess.StartInfo.UseShellExecute = false;
m_VoiceProcess.StartInfo.StandardOutputEncoding = System.Text.Encoding.UTF8;

System.Threading.Thread employee = new System.Threading.Thread(() => WaitForVoiceToFinish(m_VoiceProcess)) { Name = “UAP_TTS_Proc” };
employee.Start();

I figured this was some kind of permissions/sandboxing challenge the place the app was failing to spawn an arbitrary course of on account of OS restrictions or one thing like that, however this really labored effective on a clean mission, so I needed to maintain digging to see what the distinction was (and hope it wasn’t one thing too furry).

Well, the excellent news is that it was only a single setting within the mission settings file. The much less excellent news is that the setting was the scripting framework getting used. Turns out that System.Diagnostics.Process (and spawning a brand new course of normally) is unimplemented in Unity’s IL2CPP scripting backend and fails silently, whereas this works effective below Mono.

This is annoying. In a vacuum I’d somewhat use the IL2CPP backend — it makes use of ahead-of-time compilation and is usually extra performant, whereas Mono makes use of just-in-time compilation, which might result in some area of interest points (serialization/deserialization points on account of how reflection is dealt with). But poking round did not appear to disclose any promising options for different TTS implementations on Mac that I might plug in right here. I made a decision to modify the scripting backend to Mono to get the TTS assist working and hope that all the pieces else did not endure an excessive amount of (to this point it is trying okay…). The silver lining right here is that Mono builds are typically smaller on disk, so not less than we get that.

Still hanging in there

Yeah, this replace in all probability wasn’t tremendous attention-grabbing, and I have never had a lot by way of Rhythm Quest content material recently in any respect. This might be going to be the case for the following few weeks as I end my transfer, so you may simply have to take a seat tight for now (sorry!). I’ve been seeing the demo pop up as one thing that folks have been taking part in on twitch generally, so shoutout to anybody who’s streamed some footage of it! I do have a brand new thought for one more character so as to add in, so possibly I’ll find yourself engaged on that subsequent!


Logged
RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments