Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Nice small sample, one script is the right size for this. Does the blip play on every character, spaces and punctuation included? At fast text speeds a blip per letter tends to blur into a buzz, and skipping spaces plus a small random pitch shift per blip usually keeps it readable. Is there a setting for either in the script, or is that left to the user?

Thanks, good questions! Right now it skips spaces and plays a blip on every second visible character, so at the default speed (one character per 0.05 s) you get about 10 blips a second instead of 20. Punctuation still blips, and there's no pitch variation yet. Both are hardcoded in `_process()`, not exposed as settings.

If you want both of your suggestions, this replacement for line 19 skips punctuation too and adds a small random pitch shift:

var c := s[ci-1]
if c != " " and not ".,!?;:'\"-".contains(c) and ci % 2 == 1:
    p.pitch_scale = randf_range(0.94, 1.06)
    p.play()

I'll turn the interval, the punctuation skip and the pitch range into exported settings in the next update.

Thanks, that replacement does both. One small thing if you make it a setting: ci % 2 also counts the skipped spaces and punctuation, so a one letter word like "a" or "I" that lands on an even index plays no blip at all. A separate counter that only goes up when a character is voiced keeps the rhythm even across words.

Thanks — that is a sharp catch, and you are right about ci % 2.

I have updated the sample so the blip cadence uses a separate voiced counter that only increments when a character is actually voiced. Spaces are always silent; with skip_punctuation on (the new default), punctuation is silent too and does not advance that counter. So a one-letter word like "a" or "I" no longer goes missing just because its absolute index was even.

The settings are now exported on the Main node:

- char_interval (default 0.05)

- blip_every_n_chars (default 2)

- skip_punctuation (default true; set is . , ! ? ; : … ' " -)

- pitch_min / pitch_max (defaults 0.95 / 1.05, applied as pitch_scale = randf_range(...) on each blip)

The downloadable zip on this page is already updated with that build. If you try it and the rhythm still feels off on a specific line, tell me which line and I'll tune the defaults.

— Yuanqian Ye

Thanks, the voiced counter fixes the case I described. One edge case may remain if the check is voiced_count % 2 == 0 and the counter runs across the whole line: in "Got a map" the a is the fourth voiced letter, so it'll still land on a silent beat. Resetting the counter at the start of each word makes the first letter of every word blip, which keeps short words audible.

Hi CSAF — thanks again, and I'm the creator.

Both of your notes are fixed in the latest downloadable sample. The voiced-only counter covers the earlier "a"/"I" on an even absolute index case, and the new build also resets that counter at each word boundary (on space), so the first voiced letter of every word blips — including the "a" and "m" in "Got a map".

Please grab the updated zip from the itch page and try it. If any line still feels off after that, tell me which line and I'll tune the default.

— Yuanqian Ye

Thanks for shipping that so fast. To be straight, we haven't played the new build, so this comes from reading the rule rather than hearing it. By that rule the a and m in "Got a map" both blip now. One case worth a test: if the reset only fires on a space, a line break or a hyphenated word keeps the old count, so the next word can start silent.