Alpha version 5
[UPDATE] To set the correct expectations for this round of alpha testing: game breaking "black screen" bug for some people were already found out in CYOA shortly after this was released. Thanks to all testers for feedback and patience.
[UPDATE] Memory leak is fixed now.
Hello all! After some delays caused by technical issues, the new closed alpha version 5 of CH Replay is here!
There is a lot of new exciting stuff in this one so I can't wait to see what you will think about it. :)
New rounds and change in exclusive Patreon content:
I've added 8 new rounds! There is 1 hour and 40 minutes of content in total.
The total size is 10.6 GB. Please make sure you have enough space before downloading.
Before this update, all premium rounds were locked behind the Tier 3, but I decided to spread them over Tiers 1 - 3 instead in this manner:
Tier 1 - access to cca 25% of all the exclusive rounds
Tier 2 - access to cca 50% of all the exclusive rounds
Tier 3 - access to all 100% of the exclusive rounds
- Spoiler: show

I like the idea of being able to choose and set the price yourself.
Please, let me know what you think about this. I'm open to modify the monetization further so it works for everyone.
New breaks:
There are 8 new breaks. Not much else to say about this...
Session length:
Based on popular demand I've added a 30 minutes long session option!
Beat difficulty options:
I've decided to add difficulty selection after hearing feedback from testers on my Discord server.
At the start of each session, you will be able to choose from 5 difficulty options that will modify average spm (strokes per minute). The system is probabilistic so there will still be variety and the patterns will be different each time you play a same round, but it will work on average.
New freestyle mechanic:
Now there is 20% chance for every empty segment without beats to spawn freestyle section where you can stroke at your own pace.
This is represented as an orange glow of the beat meter in the game:
- Spoiler: show

New taunts:
The biggest complaint about taunts in the previous version was that some of them were repeating quite often.
To improve this, I've added cca 200+ new taunts (300+ in total) and made some changes in my code so the same taunts will no longer repeat in the same session. :)
The other addition inspired by the legendary CH Flux series are taunts from "Nice and Evil" hosts/companions.
The idea is pretty simple: "Nice" (blue) is trying to give advice and help you, whereas "Evil" (purple) is trying to make you lose.
Thanks to Cumcurator and others from my Discord for suggesting A LOT of new taunt lines that I've used in this update!
Btw because of the procedural nature of these taunts, even after testing things very rigurously, there will be issues with certain taunts sounding weird or showing up when they shouldn't. If you see something of this happening in your session, please share it with me, prefarably by showing the exact taunts in the logging inside your console (press F12 - then explore your session object and rounds - open the tauntsArray) so I can gradually weed out these issues over time.
- Spoiler: show

New tagging system:
Fagustree helped me develop tagging system that allows for visual based taunts. It means that taunts can now comment on what's going on the screen at the moment. :)
Not all rounds are fully tagged yet, but hopefully all of them will be in the next update.
It's a lot of work as you can see here in my tagging excel document, but I think it will be worth it at the end: :D
- Spoiler: show

Cooldown change:
For this update, I had already implemented change in my code to add one day of cooldown after each finished round. (For instance, session with 5 rounds would give 5 day cooldown.)
But after discussing it with people on my Discord and after hearing how much they disliked it, I've decided to roll it back to one day of cooldown after each session.
So the only change in this update is that the game sets the cooldown after finishing the first round instead after finishing the whole session.
The reason for that is so it can't be so easily avoided/abused by closing off the game right before the end of the final round.
Other than that, it works exactly as it did in the previous versions - you can play only once per day.
Beat change detection:
It was poined out to me that beat change indicators show up even when the beat doesn't change. So I've wrote a piece of code that can detect change of beat patterns between sections.
Now the beat change indicator (red beat) shows only when the pattern ACTUALLY changes.
It's not some game changing update and I know it's probably super simple for programmers here, but I'm really proud of my scuffed code that handles the beat detection. :D
- Spoiler: show
Code: Select all
// Beat change determination
// Loop through segments
for (var i = 0; i < chosenRound.segments.length; i++) {
chosenRound.segments[i].changeIndicator = false;
// If the segment isn't empty
if (chosenRound.segments[i].beats.length !== 0) {
if (i === 0) { // If first segment
chosenRound.segments[i].changeIndicator = true;
} else if (chosenRound.segments[i-1].beats.length === 0) { // If previous segment doesn't have beats
chosenRound.segments[i].changeIndicator = true;
} else { // Pattern recognition module
var maxDeviation = 0.1; // Maximum deviation during beat comprasion
// Get previous and current segment beat patterns
var pattern1 = [];
var pattern2 = [];
for (var y = 0; y < chosenRound.segments[i-1].beats.length; y++) {
pattern1.push(chosenRound.segments[i-1].beats[y][0]);
}
for (var y = 0; y < chosenRound.segments[i].beats.length; y++) {
pattern2.push(chosenRound.segments[i].beats[y][0]);
}
// Get distance between patterns
var distance = pattern2[0] - pattern1[0];
// Get number of iterations (smaller array)
var iterations = Math.min(pattern1.length, pattern2.length);
// Check beats from these two segments against each other
var patternChange = false;
for (var z = 0; z < iterations; z++) {
if (pattern1[z] + distance + maxDeviation < pattern2[z] || pattern1[z] + distance - maxDeviation > pattern2[z]) {
patternChange = true;
break;
}
}
// Check if there is a pause between segments
// Get the longest time between two beats in segment1
var longestGap = 0; // Longest gap between beats
for (var z = 0; z < pattern1.length - 1; z++) {
if (pattern1[z+1] - pattern1[z] > longestGap ) {
longestGap = pattern1[z+1] - pattern1[z];
}
}
// Is there a gap between segments?
var gap = false;
if (pattern2[0] - pattern1[pattern1.length - 1] > longestGap + 0.1) {
gap = true;
}
// Add change indicator if there is a pattern change or gap between segments
if (patternChange || gap) {
chosenRound.segments[i].changeIndicator = true;
}
}
}
}
Couple of other changes:
For more beat variety, I've added 5 possible beat tracks for rounds instead of just 4.
Green sections without beats bug fixed - Now they show up as a green glow of the beat meter.
Handy and CYOA:
Fagustree added Handy (sex toy for men) integration to his CYOA platform! If you own Handy and want to try it out, subscribe to his Patreon and login on the CYOA platform before playing.
https://www.patreon.com/ftrees
(Just so you know - CYOA doesn't currently support the beta Handy firmware)
Accesing premium CH Replay content:
Simillarly you can acces premium rounds and other extra functionality in CH Replay by pledging on my Patreon and picking a tier of your choice.
Then you simply login on CYOA platform before playing. :)
https://www.patreon.com/PseudonymCH
I don't charge upfront, so as long as you don't pledge around 1st of the month and you cancel before the next ~1st of the month, you can try the premium stuff for free. As long as this is not going to be terribly abused, I'll keep it that way. ;)
If there will be any issues, mistakes or regret, I can also refund you if it comes to that.
So yeah, there is no reason to not just test the exclusive stuff out if you want to.
Your feedback:
Do you want to try the closed alpha and help me with the developement? You can hop on my Discord server and ask for a tester role there:
https://discord.gg/tbQxJ22
If you want to give me very specific feedback, you can open console in your browser (F12) and share all the relevant info about your session with me. All the taunts, rounds, session length, etc. are logged there. I've also added logging of previous session so you can still explore the object even if you closed the widow after playing previously. (You can do this only once since it overrides.)
- Spoiler: show

Thank you!
Thank you all for your support and honest feedback! I really appreciate it!
I'll work on improving the game further and try to get it to public release version asap.
After that I plan keep adding new content and features to it for years to come. :)
Big thanks to all who joined me along the development ride, and for all your support!
I wouldn't be able to invest so much time and effort into this project without you!
And ofcourse, a special thanks goes to Fagustree who is doing all the hard "invisible" work on his CYOA platform. Without him CH Replay would not exist!
Oh, did I mentioned he has a Patreon?
https://www.patreon.com/ftrees
(I support him already!

)