#Mirage
1 messages · Page 25 of 1
haven't worked on it for the past couple months cuz of burnout
about to start working on it again though but i'm not really sure when it'll be done still
Oh no worries, burnout is totally real
Using thunderstore mod manger, the mod doesn't appear in the edit config list?
did you at least launch the pack once
oh yeah, that would be why
Hello everyone,
I have unfortunate news regarding the v2 update. While @vast cobalt and I have gotten 99% of the work done and are incredibly close to releasing a beta test, the last 1% where we have to fix bugs and whatnot will likely take too much time for us to complete. The v2 update is officially coming to a halt.
I plan on going back to school to do my undergrad in computer science, which is where I'm putting all my time into. I've put a lot of thought on whether or not I should complete v2, and while I'd expect we can launch a beta test in a week or so, fixing all the bugs that come from the beta test would probably take a couple months at the very least. That's a couple months where I can spend time studying instead.
I'm sorry for anyone I've disappointed, especially after the promises I've made on delivering this update. It's quite sad to think about all the work oeis and I are throwing away by discontinuing this update, but I have to prioritize my studies over completing this promise.
Thank you to everyone who have been supportive with the development of Mirage. It's been a pleasure to been in this community, and I hope you all understand.
Does this mean there will be no updates henceforth?
I plan on doing one final update (not v2 of course). The next update will still use SileroVAD (originally for v2) which helps voice activity not pick up keyboard sounds. I will also be doing optimizations to reduce the # of allocated objects for garbage collection purposes, as well as rehauling the config a tiny bit (like generating monsters at runtime to future proof the mod, in order to not need to update the mod every time the game updates).
After this update, I will only be updating the mod if a critical issue/bug comes up.
thank you for the mod. it’s made for a lot of great moments and memories with friends. 🫡
I mean it's not going anywhere at least and funny moments will always continue to happen lol
just wanted to express appreciation for barch’s work
all these mods are made on their own time with no reward or incentive
hope people will recognize that
Ye fair, it just came off like you were saying the mod was dying which isn't the case XD
nah it came off as a supportive message to me for sure, all good 😂
i appreciate the kind words
Prolly my Autism XD
u good 😂
@lofty sorrel do u mind pinning this 🥺 jeb dead
tyty
jeb has been dead for a few days unfortunately
Damon is away so Jeb is abandoned till he gets back
Rip
How dare Damon forget to feed Jeb before his break
lol
🤭
Good luck with University, it ruined me!
i hope people will maturely handle this news though.
like i heard about chaos getting threats just for being on hiatus.
Did you finally finish it?
thanks, i hope i survive it lmaoo
Uni? I've been done w Uni since last September
wtf people are crazy... never knew chaos was getting threats like that
Ah well you went MIA for so long idk what you've been busy with, btw didn't you say you'd return for Deep Rock Galactic?
projects like this are passion projects, so ppl who act like that makes no sense
Cus I made a role for that I got it yesterday
I did, though I have your server muted tbh. Just been feeling LC burnout
yeahh.. some people feel way too entitled
Yeah thart's fair, I just wanted to let you know since I don't know if I can dm you or not
XD
Got it as a Birthday gift
Course you can DM
I've been feeling DRG recently
I'm excited to play LC tomorrow though, return of Diversity and so many moons updating makes me excited, some of my alters have also been feeling some burn out lol
Yeah idk who was threatening him but that is some bs
Chaos is a good dude he just gets really busy iRL
Usually younger folks with a hyperfixation. Frustration is one thing, taking it out on the creator is another. I imagine Mirage fans won't be upset, at least not here, can't speak to other Internet areas (Looking at you Reddit)
the people in this discord have been very respectful (at least like 99.99% of the time)
i mean v2 talk was mostly just on this thread right?
yeah and the only people who mentioned it are cool, so it's probably gonna be taken fine
was just sad that i'd end up disappointing everyone tbh
but
Yeah and sometimes it was brought up on my streams so there will be mentions of it in some of our vods
i gotta do what i gotta do for my career
they're already sentient
I don't think you disappointed anyone
Mirage as it is does what people expect and does it well, so it should all be good
Exactly
hopefully the next update doesn't break too much lmaoo
which i forgot to mention, will probably take like 2 weeks
I mean it's mostly an optimization update and adding some stuff to prevent keyboard sounds
Currently I use DissonanceVoiceSettings to get rid of that
yeah my keyboard gets picked up a lot so this would be great
well ima be rewriting a bunch of stuff
but
it's not gonna take too much time for this
just gotta make sure i dont screw it up is all
and end up creating more problems
realistically shouldn't be a problem
Pray to the programming gods
is the existing work for v2 on the github? if so, someone may eventually ask you if they can pick it up in your stead
We love bugs!!!1!
qwbarch, what audio object (or audio source?), does mirage play the audio on for the masked.
something im working on requires to tell what object is being used so i can know if its being used, if thats possible.. probably not explaining well.
oh right ill do that as well, ill think about what i should do to expose an interface for you
it is, but it's rather complicated and a lot of it is undocumented
oh sorry, i wasnt meaning like that! but glad you remembered!
i was meaning, with mirage, i see various objects added to the masked.
is a specific one playing their audio? so i can monitor a bool on it?
I was working on a nameplate solution for the masked, and also working on a solution for nameplate tweaks's nameplate as well which has a speaker appear when players talk.
but.. i was thinking of how to trigger it, i guess i could do that by using the same thing for playing audio through the walkies once you added it.. but i figured if i knew the ingame audio source for the masked, then i could just be like "that audio source is making noise, so show the voice is active in their nameplate".
is it just (found this in EnemyAI) "public AudioSource creatureVoice;" used? or you setup your own? is what im asking i guess.
@ionic shoal so for mirage it's a custom component that i made, i don't remember what it was though so i'd have to get back to you on that later
but regardless i'm assuming you still need me to have an exposed interface for you to do the walkie talkie thing, so if that's still need i'll get to it as well in the next update
no rush, and yeah, i figure its a custom addition, just didnt look into it too deeply.. i just noticed that enemy AI has its own "creaturevoice".. so wondered if that was used. np
Hold up are you guys making a way for mimics to use walkies?!?!
virus is doing something like that yeah, for #1240985198485573743
Wait. Does the filtering only affect mimic clips? Or does it apply to standard chatting amongst your friends too?
If it only affects mimics that sounds like it’d be pretty easy to figure out who’s real and not real
only for the clips
but i mean
it's just to get it to use more clips of you actually talking
instead of 90% of them being empty
cuz if ur on voice activity it works terribly rn
Oh wait I may have misunderstood this
So it isnt doing any kind of noise filtering/processing on the clips itself, like removing background noise
It’s using it to find speech and then clipping those segments
Is that correct? So to word it better, it’s not doing any post-processing, right?
yeah no post-processing
basically just to make voice activity work better
push to talk will remain the same
masked in my mod should already be able to use walkies... BUT...
only coded in for skinwalkers/wendigos atm (as waiting on qwbarch to give me access to the clips)
and masked are kinda busted when it comes to picking up walkies 😛 so i need to fix that.
Masked walked right through the closed ship door
On March?
Yeah, I think so
Iirc, thats a vanilla bug. Masked don’t spawn there naturally.
Yeah that's a known vanilla issue
Is there any mod that fixes it?
not yet
It should be fixed at some point. But I think everyone experiencing it at least once has a lot of funny factor going for it.
Well it's a bug that comes from vanilla but technically only exists because mods add mimics where they should never be aka March
Still funny tho
imho, its baffling how masked walk through, but other entities dont, you would think it would be all or none if it was a "door" issue xD
@ionic shoal what did u specifically need for the walkie talkie thing again?
a method to grab a float[] containing the audio data, and a method for playing it?
erm, all i know is skinwalkers provides and audio clip. i dont even know if that works tbh xD
so a getPlayerVoiceClip() that returns AudioClip would work fine?
and a Mimic.PlayVoiceClip(AudioClip audioClip) is fine as well?
@ionic shoal pinging just in case u miss the msg
afaik, as i said, never actually tested the skin walkers implementation, i just assume it works, so if its the same, should be all good.
well lmk what exactly you'd prefer then cuz idk how it works exactly either 😛
if you have a specific way you want me to expose the interface then lmk
cuz otherwise i don't really know what you'd need
ill have a look at it in a bit, tbh, kinda drifted away from it a while, so need to get masked to pick up the walkie talkie and see if skin walkers works, lol
gotcha lmk
@ionic shoal btw do you think it'd be something you'd look into something soon? just wondering cuz i'd prefer doing any interfacing stuff u need for the next update i'm gonna push out
since after that i'm gonna be focusing on school
School schmool
Just be better and take the exam today
Which exam? The good exam

Wish I had such option lol
I'd rather show C1 or C2 certificate for English rather than "YOU GOTTA GO ON LESSONS AND DO HOMEWORK EVEN THO IT'S LITERALLY A1"
I was trying to look at it all weekend, but I came across a bug that needed fixing, which led to me finding another bug that needed fixing urgently which I'm now struggling to fix..I'll put that on hold as frankly, it's taking forever and look at masked using walkies.
ok, so.. this simplified code plays skinwalkers audio, through walkie talkies, whether they are on/off.. (incase you wanted to test) so i can confirm the skinwalkers implementation works, so if you can get the output of your function to be the audio clip mirage is playing, then it should work.
thanks
public List<WalkieTalkie> allWalkieTalkies = new List<WalkieTalkie>();
foreach (WalkieTalkie allWalkieTalky in allWalkieTalkies) { allWalkieTalky.target.PlayOneShot(SkinwalkerModPersistent.Instance.GetSample()); }
@deft cape has anything been done that you wanted to do in version 2.0.0?
well 99% of the work is already done, but the last 1% would be a bunch of bugfixes and whatnot that i don't want to work on anymore
ah sounds good, the interface that i expose to you will definitely have to look a bit different so i'll go work on that and then let you know how to use it
sounds good, and i figured it would due to the syncing
yeah it wouldn’t be easy for someone else to pick up ur project right? considering u programmed it in a functional language that’s not commonly used and all iirc?
what was that language again
it's about as functional as javascript 😂
it's a multiparadigm language
it's more-so not easy to pick up because the codebase for the ML stuff isn't documented too well
from what I've seen, it encourages it way more
well it definitely does but i wouldn't really consider it functional either
also a lot of edgecases and bugs where i only know about because i ran into them myself, and didn't even end up fixing everything
i just have no motivation to work on it anymore so yeah
understandable
real
a decade ago i was supposed to release this minecraft plug-in and made big promises
and i never finished and released it
so relatable 😂
I went through a similar phase with my mod and I'm only mainintaining it because I don't want a shoddy mod out there with my name when I know I can fix it
no pressure ofc, if you can't then don't
good luck, we believe in you
part of me wanted to finish it cuz of all the work oeis and i put into v2, although after thinking about it some more, we'd rather work on other things since working on mirage doesn't really do anything for us
so since there aren't really any incentives to work on it i'd rather focus on my studies
no man it’s joever 😔
yea i've dropped it
check the pinned message regarding it
or click here actually: #1200695291972685926 message
It's a pity, I understand you, studying is more important than the project
man i even ordered a custom icon from chaos' graphic designer friend for v2 LOL
gonna just use it on the next update just to not waste it
this is cool
Why did you release the same mod with the addition of experimental?
I just went to look at mods and saw your experimental mod. It's gone now.
just ignore experimental
On another note, have you though about letting someone else wrap up V2? From the sounds of it it doesn't need much more work
This mod is just pure comedy gold. The mimicking part is really scary when it records you giggle or laugh and the mimics just either laugh,
giggle or scream like idiots chasing you (literally sounds that would be suitable for a chainsaw psycho).
And then there's me and my fellas either quoting either the most dumb stuff from movies and stuff, or straight up some unhinged things,
mimics chasing us asking if we have any books written by black people, why we want to invade cuba, or where we hid the meth.
What interior is that?
Thanks
What's that
Find very old versions of tools from the store
Usually low power left in them making it seem like others came before you did
Fair
You just said about 3rd voice
I hoped it will be random fun one
If this mirage makes it so mask can pick up walkys and use them, they could use abandoned walkys and use them too
That's what I was referring to lol
Dang, disappointed to see that V2 will never come to fruition— my bf and I were even talking about it the other day. I totally get why though; life takes priority!
Have you thought about releasing what you do have, just so the majority of that work isn’t for naught? You could post it, and be clear that it has several bugs yet won’t be receiving any active support/fixes. You could even name it a synonym for Mirage (Phantasm?) so reports/discussion don’t get wires crossed.
sadly a lot of the issues has to do with hardware. things work on my side, but as soon as the parameters slightly don't fit for someone's hardware, the mod can cause the game to crash really easily
without fixing these bugs it's just really not a good idea to release it at all
yeah and in this case hardware actually matters since it depends on what gpu the player has
Yeah
it is what it is, spent a lot of time working on it, but i also don't want to work on it anymore since i'd rather focus on school
so i don't even mind having all that time wasted
I imagine you learned a lot from it
still doing one final update with most of the v2 code gone and just keeping the code optimizations and whatnot
I've been being your bug tester

not really actually, the stuff i worked on in this mod are things i already knew how to do 😭
❤️
Oooooof
Haha
The upcoming update is worth it at least outside of the bugs I've been helping find
It removes all the F# Garbage Collection the current release has so it's quite a bit more optimized
Did ya ever settle on a new default spawn chance? I think I remember you asking if anyone had something good yea?
yeah i have it set to 2%
Oh for sure. I can just (unfortunately) relate to putting a lot of time and effort into a project, with most of the work completed, only for it to never see the light of day due to outside reasons.
Yeah I get ya
i hardcoded it to 25% for experimental so u could play with it
but i hvae it set to 2% in the config
honestly it's a thought ive had for quite some time as i started to get burnt out on the project
since i stopped enjoying working on it
a lot of the times i was just wondering what i was working on it for
decided calling it quits is just better for my mental health
- i get so much free time to study now
what made me keep working on it for as long as i had was cuz i wanted a working product that ppl could enjoy but
yeah not worth my mental health trying to finish the last 1% of the project 😂
Yeah for sure
Hopefully you can find some way to make some use out of it someday, whether it be private play sessions or even a little video about it like was done with Wendigo’s Voice Cloning.
the only clip i had was when it was in the earlier stages, except i already deleted it 😔
never had private play sessions since it was just oeis and i testing
just getting it to the point where it was stable on our pcs
My main concern with V2 the whole time was how it was gonna work on certain hardware lol
Cus you mentioned hardware limitations a lot
the goal was basically to have the host do all the gpu crunching if any client isn't able to do it themselves
but when i was testing gpus with certain configs it could just crash
i guess i did learn something at the end: if i end up making another project that uses cuda, i should figure out any of the hardware stuff first
so i don't end up getting all the features done but get stuck by nonsense like that
Yeah ^^
so, just a little update,
got masked actually picking up walkies, we know the audio works (via skinwalkers at least), going to have to put some limits on it (2+ walkies exist (may eventually generate a second walkie if only one exists), 2+ players in the game exist) but i think they make sense, otherwise, once your end is ready, hopefully should work fine out of the box.
sounds good, ill let you know when i have something that you can use
...is this the place where I could ask about some issues caused by the Mirage mod? or is there a more appropriate channel/website
Here is the correct place
Or in #help-and-troubleshooting
Oh, thanks for telling me
I managed to solve it right about now
I'm... still not entirely sure how
but it does work
Nice
definitely better to ask about mod problems in the mod channel directly
@ionic shoal i just realized, walky talkies can only be heard by one person anyways, so if i just expose a method that lets you grab an AudioClip of the given player (automatically networked for you), that should be good enough and youj ust play the audioclip the same way you normally do right?
the same clip as which mirage is currently playing? as it should be the same clip right? ;o and yeah, the only time "more than one person can hear" per walkie, is with "everyone can hear walkies" mod or w/e
oh it's supposed to be the same clip? i was assuming i could just give you a random clip from the player it's mimicking
could definitely do that though if that's what you want
well, i was just assuming it would be the same clip because mirage is all synced.
well it's synced in the sense that everyone hears the same voice when it's playing a voice
also, the clip is played out loud by the masked at the same time, so figured it would be xD
i was just assuming the walkie tallkie would work differently
since it seems like your mod wants to control the timings of when to play voices
my thought was.. masked is speaking it out loud...
all the walkie talkie bit does, is play it over the walkies.
ah well we could certainly go that route
well i thought timings are required, but i feel like, it just stops playing when the recording ends.. but if i could also get the timing of how often the masked play a clip, that might be good, then i can set the walkie to play that often too.
i d k, probably a lot on my end that needs reworking regarding it, first time ive truly looked at it, but my thoughts were.. if what your exposing = a null clip, then it doesnt play.. if its not null, then it would play.. but i have no clue if that would work.
even if not all messages are sent via the walkie though, i think thats actually good, as no one speaks constantly on a walkie talkie non-stop... so 1 message thats live + walkie, next 3 are just live, then live+walkie, its just as good as all going through the walkie, but thats all for me to work out when i have a solid thing to work with..
ngl, never used skin walkers before trying to get this working.. and not liking it xD
even if not all messages are sent via the walkie though, i think thats actually good, as no one speaks constantly on a walkie talkie non-stop... so 1 message thats live + walkie, next 3 are just live, then live+walkie, its just as good as all going through the walkie, but thats all for me to work out when i have a solid thing to work with..
that's the thing, if it played in the usual interval that's set by mirage, it'd be way too obvious
it's better to control the timings on your end IMO
and for that what i'd expose is
a function AudioClip getVoiceClip(int playerId), where it just grabs a random voice clip from that specific player (which is sent over the network and handled by mirage so you won't have to worry about that), and then you can do the PlayOneShot(voiceclip) call (i think that's what you previously showed at least)
at least that's the simplest way i can think of to let you use that functionality
and give you full control of when voices are played
yeah thats fine, thats what i meant, i just figured that the clip wont be random. the voice would be played out loud anyway, so i figured the same clip could be passed on to something exposed for me to use.
whether i use all of them or not would of course be controlled by my mod, just figure that the clip should be the same one people hear in person... otherwise the same masked could be saying XYZ to person A, who also has a walkie.. and then the walkie plays something different, that isnt heard in person, even though the masked is also standing there in person. so yeah, i just figured it would be the same clip on walkie and in person.
my mod would just control WHEN the exposed clip is played through the walkie. (ie, not all of them)
in that case it sounds like it makes more sense to do the getVoiceClip way where it just gives you a random voice clip
since it gives you full control
so.. masked with a walkie...
person A is in front of them, they say "im a goober" to them
person B is miles away.. can only hear by walkie and hears at the same time "im a ninny"
person C is in front of them, but also has a walkie, and hears both phrases at once ("im a goober" in person, and "im a ninny" over the walkie, from the same masked?
the way the skin walkers one works.. i think.. is that.. sure the clip chosen, is random for each person listening, but, both over walkie, and in person, its the same clip heard.
if a masked is near you and speaks into the walkie at the same time, that's already a dead giveaway anyways
i mean if you want that specifically then i can do that as well
i just thought what i mentioned makes the most sense
depends what they say, but, if they speak over the walkie.. it isnt nessecerily a giveaway imho, i just feel it makes sense as if they are speaking 2 different phrases at once, then its a dead give away.. but if the same thing is heard over the walkie, like in person, then its more realistic.. as you dont catch one person saying 2 different phrases in the same second via two methods.
the best i can do for that is to keep the last used voice clip in memory, but it'd never play at the same time
since i stream it over the network and play it as soon as even a single frame of audio is received
at least if a full audio clip is required before sending it over
i could add an event type of thing where after the full audioclip is received, i'll run that event where you can subscribe to it
actually unless you're able to do something like
setting a new AudioClip to the walkie talkie's AudioSource and then using Play() instead of PlayOneShot()
then it could potentially be in sync
since that's how i play the audio clip without it fully being ready yet
so i guess something for this would be like:
OnVoicePlayed(audioClip => {
walkieTalkie.AudioSource.audioClip = audioClip;
walkieTalkie.AudioSource.Play();
});
(pseudocode cuz idk what it'd look like in c#)
so i guess you would mean like
if(Plugin.mirageIntegrated)
{
allWalkieTalky.target.audioClip = mirageAudioClip;
allWalkieTalky.target.Play();
}
id have to look into the rest, but i think its doable. i think tbh, ill be in a better place to comment once i have something to test with, but for now i need to sleep so will come back to this conversation tomorrow 🙂
i think tbh actually, it would be basically the same as your psuedo code in C#, if im thinking rightly. ;o
well the OnVoicePlayed method is a callback that you register once so that every time audio is played, you can play it on ur side as well
How would i make mimics also use emotes from mods like badasscompany?
emote mods handle that
mirage doesn't do anything for that at all
so any mod that auto performs emotes, it's all handled by them
Curious
If you want mimics to emote the only one I know for sure works is toomanyemotes
Yeah fair
It's just that ppl started spamming badasscompany emotes to show they're not mimics
prob best to ask the author to integrate that
https://thunderstore.io/c/lethal-company/p/Gemumoddo/EnemyInteractions/
enemies can emote already. I made this mod to show it off mainly so it's not "reactive" like TME hadnles it (aka: mimics emote when they see you. what I made just plays them on random timers)
but ya know, if someone wanted to make a mod to make enemies (mainly masked from your use case) emote reactively, most of the work is done, you just need to program the logic for how and when enemies will emote
Sounds like fun but unsure if I'll have enough time to properly do it xd
And this one seems to work only on when they kill you xd
it's both when they kill you and on a random timer, check the config
Ah, thanks, will have a look some time soon xd
Diversity does that. But that doesn't involve her picking it up directly, only when you have it on you and it's turned on
Actually - I did not encounter her in the past several days, not a single time she was on me xd
And i do have diversity xd
I wonder if you can make random emotes only for mimic for example but emote on corpse for everyone xd
Also they kinda uhh... Not really using emotes for long enough i'd say for some reason
LOL i thought the other dude was a masked as well
just remembered i forgot to look at the clip so i went back to find it
Yeah even I wasnt sure lmao
so funny how they were just chilling next to each other for awhile
It looked even more convincing from their perspective because the masked was gently nodding to the beat
What does the experimental version change?
WIP build of the upcoming update barch mentioned when he said he would have to be abandoning V2, I would recommend staying on the stable build
I've been helping barch test it on my recent streams lol, gonna be testing it again later today if you wanna see progress lol
Yesterday the recording stuff didn't work at all XD
Awwww, no more v2?
V2 is cancelled, what's coming now is an update for V1 that brings all the optimization stuff
Sad, was hoping to tell a mask "balls itch" just for him to say "scratch em"
cool, well, as i said, ill have to look at implementing that when ive got an example to work with, i get what you mean though. 🙂
@ionic shoal so there's a bit of a problem. since AudioClips are mutable, i can't just share the same reference to you or we'd run into issues. if i were to create a new audioclip for each registered event listener, i'd have to keep track of that state and it'd start to get annoying.
in this case it might be better if i just send you the raw audio samples and you create the audioclip on your side. if this is something you're open to exploring then i can fill you in on what to do to use it (creating the audioclip on your end and whatnot)
Hi all, what do I do if I have mimics spawning with 100 probability?
I have MoreCompany. I tried disabling it, but the problem persisted
I play with 3 frends and everytime we find 4-6 mimics, we don't change configs.
Also, mimics always go through the fences and reach for the base, thus it's impossible to fly off the platnet
so basically, id be re-doing what your doing to play the audio for the masked? that would be fine as long as its not performance heavy, my mod is already a bit on the heavy side xD
I was having a think on this... audio source's have an id.. is it possible for me to, when the audio source for your mod makes a noise.. i detect that.. and play that noise over the walkie? not sure that would work.. just.... thoughts of a person with no clue 🙂
more company does not modify entity spawn rates.
the better question is "what mod do you have that sets the spawn rate as 100 probability?"
mirage has custom spawns
you can disable custom spawns if you want
or just lower it
i know, but the default is not 100%.
the default is set to basically always spawn every round
also dont you limit to 2 masked?
thats fair.
i dont customize spawn
I was having a think on this... audio source's have an id.. is it possible for me to, when the audio source for your mod makes a noise.. i detect that.. and play that noise over the walkie?
i'm not sure since i'm not that familiar with unity sadly
i'm just saying it's set to a custom spawn on mirage by default, you'd have to disable it if you don't want it
do you have a mod list code you can send me from thunderstore/whatever mod manager you use so i can look at your configs?
maybe ill try it with some other audio sound in game, and see if i can get it to play over audio 🙂
sounds good, should i hold off on doing any interfacing stuff for now then
I can ship in a few hours
i was going to jump off and do other things for the rest of the evening (agent pathing is killing my brain)
but, i will try do the audio check now.. and let you know as that should be simple once i find a sound.. maybe even my own voice, as that will be representative.
sounds good
well, ill have a look if im around when you send it, otherwise hopefully someone else can, or i can tomorrow.
if you're talking about the ID in the base game's interface thing, thats not the audioclip ID, that's just the item ID
i know, as i said, im just wondering if i can detect that source is being used, and then somehow re-play that into the walkies.
so for this i just wanted to show some pseudocode of what it might look like:
var audioClip = null;
OnVoiceMimic += (isFirstFrame, samples, sampleIndex) => {
// only reset the audioclip if it's a new voice clip (indicated by isFirstFrame)
if (isFirstFrame) {
walkieTalkie.AudioSource.Stop();
audioClip = AudioClip.Create(); // assume params are filled
walkieTalkie.AudioSource.AudioClip = audioClip;
}
// since this callback is invoked each time a new frame is received, this will set the audioclip's audio data
// as soon as new audio data is received
audioClip.SetData(samples, sampleIndex, samples.Length);
// doesn't need to be this exact condition, just have to play the audiosource if it hasn't started yet
if (!walkieTalkie.AudioSource.IsPlaying()) {
walkieTalkie.AudioSource.Play();
}
};
basically on your end you'd create a new audioclip every time a new "first frame" is received, and set the frame data as soon as another frame comes in
and just play the audio source if it hasn't started yet
if this is an option you're open to taking then id rather just get started on it now cuz
looking to get the mirage update out soon so i can just focus on studies
that all makes sense, that should be easy to implement.
i will just when i actually implement my end, work out how to limit which clips get played so not everything goes through the walkie.
awesome, that should be simple enough on my part as well since i wouldn't have to do the state tracking myself so i should have something by the end of the day
cool!
yeee sounds good
loooking at what i was looking at just now, i think it goes along similar lines of what i was just looking at tbh.
quick question, once this has been called once, will it bypass the conditions that lead to it reaching that point?
for example.. "if they are holding a walkie" OnVoiceMimic is called.. the clip starts playing, the condition then changes to false because the masked dropped the walkie for example, am i better to put this condition in the callback, or am i ok to put it outside the callback (which is where the conditions currently are)
you'd have to do any conditions within the callback itself
since you should only be registering to the event once
ok, thats what i figured.
or do it outside cuz
you can always for example
do conditional checks inside an Update() method
and stop the audiosource there
the main thing for the event listener should be to create the audioclip and set the frame data every time it's received
that might be simpler as thats how the structure is now.
yeah, was just trying to implement it in the same way as im doing for skinwalkers/wendigos, but i was realising i cant do it outside the callback in the same way. either way, as i said, ill work out something once your end is done 🙂 thanks
yep for sure
out of curiosity, does anyone here even use the SpawnOnPlayerDeath feature? i haven't added that to the latest update yet, and if it's not something ppl really even use, i might just leave it out
yes
I do use the spawn on player death option. It's led to some really hilarious moments in my sessions with friends.
I love that setting. I have it set so it is rarer, but it happens. if nothing else it makes things more dangerous
ah sounds good i'll add it back then
will probably just make it into a separate mod since a lot of ppl dont like it
people could just, not use if they dont like it xD
spawn on player death is really cool when you think about it
like
say your friend goes in alone to get something or do something and dies, comes back with the item or just comes back and they aren't them
thats a reason why i like it personally
yeah you'd think, but i've had people get mad at me for it existing in the mod 💀
tons of people requesting to have it separated into a different mod in the past
well if its default off, i dont get why they would complain xD thats just weird. xD
it's on actually, although i toned it down quite a bit
but yeah i'd get complaints about custom spawns and whatnot as well
although for that idc, i'm keeping it on as a default
Rather than making it separate you could just set it to off by defaul in the settings.
*default
@ionic shoal so i added the stuff that should let you use what we discussed, you'll want to download MirageExperimental v0.0.24 for now to reference it, at least until an official version is released
i might have some syntax wrong since i asked chatgpt to translate some of the f# stuff to c#, but this should be more or less how to use it:```csharp
// Firstly, each EnemyAI will have an AudioStream component attached to it. This is used for handling networked audio.
var audioStream = enemyAI.GetComponent<AudioStream>();
// In order to know when a new audio clip is created and streamed over, we will be subscribing to "AudioStreamEvent"s.
public void OnAudioStreamHandler(AudioStreamEvent audioEvent)
{
switch (audioEvent)
{
case AudioStartEvent startEvent:
walkieTalkie.AudioSource.Stop();
walkieTalkie.AudioSource.clip = AudioClip.Create("<use any name you want here>", startEvent.lengthSamples, startEvent.channels, startEvent.frequency);
break;
case AudioReceivedEvent receivedEvent:
audioClip.SetData(receivedEvent.samples, sampleIndex);
if (!walkieTalkie.AudioSource.IsPlaying())
{
walkieTalkie.AudioSource.Play();
}
break;
}
}
// Subscribe to the event.
audioStream.OnAudioStream += OnAudioStreamHandler;
yeah i was considering that but i just want it on by default if someone installed the mod, so might as well just separate it
was considering moving the spawn control code as well but
seems to make enough sense to keep it in the mod itself
just don't wanna clutter the mod with too many configs
will look at it tomorrow, thanks
actually just noticed this: https://thunderstore.io/c/lethal-company/p/Synaxin/Zombies/
has anyone here tried it?
if it replaces the SpawnOnPlayerDeath functionality then i dont need to add it back in
I think it's relatively the same just with a configurable timer before revival (and some other features such as proximity revivals it looks like)
nice doesnt seem like i need to port that feature over to the new version then
Noice, ||so you don't need to make the seperate mod after all|| :3
yepp less work for me :D
I'd be curious to know that this mod works correctly with mirage so the spawned mimic does match the cosmetics and voice of the player it steals from
Otherwise i'd rather keep the older version of mirage if the feature is removed
ah good point
What's the experimental version about?
mostly some code optimizations, config changes, and that SileroVAD is being used to only keep audio of when the player is talking (previously it records too many empty audio clips of random noises)
so for SileroVAD this makes voice activity work a lot nicer
while i think experimental should be stable enough, if you'd rather stick to something stable you should wait until the update is pushed to the main mirage package
Yeah I've been doing a lot of heavy beta testing stick to stable til update is pushed live
:3
@ionic shoal tmrw after u have the chance to go over the mirage stuff, could you give me a confirmation if what i have is likely good enough to go?
cuz if you give me the green light i'd like to just release it as the stable mirage update
edit: also how stable would you say LethalIntelligenceExperimental is? i'd like to add it as a recommended mod, but if it's too unstable then i'm probably going to hold off on it
#1281615514325487669 covers the things you mentioned so it's perfectly fine as a replacement. doesn't have insta spawning yet (if that's something you like), but the author mentioned they could add it so that'd be nice
I'll.let you know when I look later.
LI is stable in the sense that it works. There are some.broken features which I still need to fix (broken since before I started) but they don't break the mod.
The only game breaking thing right now is breaker boxes, I really need to find a way to get a masked to recognise that they can't reach the breaker that is buried deep within a wall because of the auto generation.
There is another mod too btw, I think it's called mask the dead, it turns dead bodies into a masked if they are near a mask.
That mod used to cause quite a few issues unfortunately
I don't recommend it, it's also not been updated in quite some time
Zombies also has that I think lol
Yeah Mask The Dead is way older, and had a slew of issues
This is different, that makes it so when you kill masked they become ragdoll bodies
So when you kill them they're not stiff lmao
Interesting because I use it and have seen no issues, what's the issues exactly?
It used to cause some fun shenanigans of player bodies teleporting inside as a masked enemy if they were on the ship, and the mask would vanish from the ship confirming it was the mod doing it
Maybe it got fixed idk
Hello! I have now removed the mirage. If that's what it takes,I can send tree of plugins directory
This pulugins I see:
- BetterEmotes
- CSync
- HDLethalCompany
- InteractiveTerminalAPI
- LethalCompanyInputUtils
- LethalLib
- LethalNetworkAPI
- MMHOOK
- MoreCompanyCosmetics
- MoreShipUpgrades (Lategame Upgrades)
- odin serializer
- shipLoot
- alwaysHearWalkie
- BetterStamina
- BrutalCompanyMinus
- CoilHeadStare
- freeLookMonitor
- HealthMetrics
- helmetCamera
- JigglePhysicsPlugin
- LethalRegeneration
- LetMeLookDown
- maskedAIRevamp
- mimics
- moreCompany
- moresuits
- NicholaScott.BepInEx.RuntimeNetcodeRPCValidator (???)
- noSellLimit
- OpenMonitors
- ReservedFlashlightSlot
- ReservedItemSlotCore
- ReservedKeySlot
- ReservedWalkieSlot
- TerminalApi
- VoiceHUD
sorry, i think you misunderstand my request, do you use a mod manager? or you install manually?
I wanted the mod manager profile code for your mod list, so I can download it, which will give me your config settings for each mod. if you do not use a mod manager then it will be a bit harder to provide them.
let me know
also, i would use my mod (LethalIntelligence) instead of 23) maskedAIRevamp, maskedAIRevamp is out of date, my mod is the same, but more features, and more up to date.
yes, i install manually all modes. I have now installed mirage and uninstalled maskedAIRevamp. I'm testing this option
if you dont use a mod manager, can you go to this folder and zip up all the files and send me them ?
BepInEx\config
masked AI revamp doesnt modify spawns, i just know its really out of date.
havent seen this yet btw, but ill keep a look out for that as thats bad.. lol
After deleting maskedAIRevamp one day was without mimics until the flight, and another day he spavnits, in the evening I will check with more people
It's just a coincidence. Spent 3 more nights and mimic came 3 times. This is almost impossible at 15% spawn rate.
BrutalCompanyMinus (this mod also seems to duplicate settings)
Inside MaskedPlayerEnemy Weight = 10
Inside MaskedPlayerEnemy Spawn Cap = 3
Outside MaskedPlayerEnemy Weight = 5
Outside MaskedPlayerEnemy Spawn Cap = 3
Mirage
EnableOverrideSpawnChance = true
OverrideSpawnChance = 15
UseCustomSpawnCurve = true
MaxMasked = 2
SpawnOnPlayerDeath = 10
SpawnOnlyWhenPlayerAlone = true
so both mirage and brutal company minus configure spawn settings. if you want vanilla spawns... remove brutal company minus (if you dont need it for other things as i dont know what it does) and set "enableoverridespawnchance" as "false" in mirage.
beyond that.. lowering the percent in mirage, and the spawn weight in brutal company minus.. no clue which is winning the battle to spawn a masked... or if they both just give their own chance to spawn a masked.. but either way, that will reduce the masked that spawn. just requires testing on your end.
also.. in mirage, "spawnonplayerdeath" will inflate the amount of masked you see, you may have no masked spawn, but if a player dies.. then a masked can spawn.. leading to the opinion "always have masked appearing", when its just because you died.
I personally only use vanilla spawns.. but i have 10% spawn on player death and when the player is alone in mirage, sometimes masked never spawn, sometimes we have 4/5 of them (2 masked spawns + 3 player deaths = 5 masked if we are unlucky)
ok, had a spare 15 minutes, this is where ive gotten to so far. having some issues though.
public void OnAudioStreamHandler(AudioStreamEvent audioEvent)
{
AudioClip audioClip = null;
List<WalkieTalkie> allWalkieTalkies = GlobalItemList.Instance.allWalkieTalkies;
audioStream = maskedEnemy.GetComponent<AudioStream>();
foreach (WalkieTalkie walkieTalkie in allWalkieTalkies)
{
switch (audioEvent)
{
case AudioStartEvent startEvent:
walkieTalkie.target.Stop();
walkieTalkie.target.clip = AudioClip.Create("maskedClip", startEvent.lengthSamples, startEvent.channels, startEvent.frequency, true);
break;
case AudioReceivedEvent receivedEvent:
audioClip.SetData(receivedEvent.samples, receivedEvent.sampleIndex);
if (!walkieTalkie.target.isPlaying)
{
walkieTalkie.target.Play();
}
break;
}
}
}
case AudioStartEvent startEvent:
and
case AudioReceivedEvent receivedEvent:
are both throwing errors like this.
also does the "name" of the clip need to be unique per clip? if so ill change that.
also, i feel like audio stream needs to be assigned outside of the handler, as thats used to detect if something is received?
..thought i had a fix for the switch case issue, but maybe not 😄
Thanks for the comment!
I apologize, but I forgot to say that I downloaded BrutalCompanyMinus after I deleted Mirage. I posted the mods that I have now. To test mirage today, I disabled/uninstalled BrutalCompanyMinus
then just turn off the settings i suggested in mirage to make it so its vanilla spawn.. or turn down the mirage spawn weight to 2% (which i beleive is the soon to be new defaullt)
Wdym by insta spawning? Does it take time for bodies to become masked or something?
Insta spawning as in the masked spawning immediately after the player dies. Currently it will only spawn after a configurable delay with my mod, though trying to add the spawn on player death today
Whats the minimum delay?
Like surely a delay of 0 or 1 is effectively instant?
The way my code handles it each tick is 2s, and I think minimum is 2 ticks + wake time (which can be 0)
Might be able to do it in just 1 tick, but never tested it
I'll try later when i am back from work
oof i guess thats where chatgpt got it wrong since thats how i got that snippet.
what does the error look like?
audioclip doesnt need to be unique
not entirely sure what you mean by this, can you dumb it down for me 😅
nvm i see what u mean, yeah ur right on that. if that was part ofmy snippet then i just overlooked it haha
i think i need to dumb it down for myself, you were already declaring it outside of the handler.. im just dumb and forgot because i was moving stuff around so much lmao
that was the erorr, getting mixed up between your replies about what you need and what you dont 😄
basically, it cant convert from stream to start/receive event
also, i assume i need to use fsharpcore... as OnAudioStream is part of that?
hmm i thought i was making it into a c# event
i'm gonna have to take another look at it then
i basically have it setup like this right now
so the code in "enableMirageAudio()" i was planning to add to when the masked spawn, so as soon as a masked spawns, the event is added, and the audiostream is gotten.
but OnAudioStream comes from FSharpCore. (hence that error), i was hoping there was an alternative xD
and the other errors i outlined
yeah nah you don't need FSharpCore if i set this up right
so i'll have to take another look at it
thats what i figured, which is why i held off on installing it to try it 🙂
wait whats the error if you hover over AudioStartEvent and AudioReceivedEvent?
huh i thought c# was able to handle pattern matching like this
another case of chatgpt lying to me 😭
or maybe pattern maching is a newer feature
haha, well i did wonder if it related to these..
but i guess not.
nah the type itself sohuld still be AudioReceivedEvent and whatnot
and yeah, chatgpt lies out if its ass.. when chess streamers tried to play chess vs chatgpt, it was making illegal moves on turn 1. lol
💀 💀
does doing it as if statements instead work?```csharp
if (audioEvent is AudioStartEvent startEvent)
{
walkieTalkie.target.Stop();
walkieTalkie.target.clip = AudioClip.Create("maskedClip", startEvent.lengthSamples, startEvent.channels, startEvent.frequency, true);
}
else if (audioEvent is AudioReceivedEvent receivedEvent)
{
audioClip.SetData(receivedEvent.samples, receivedEvent.sampleIndex);
if (!walkieTalkie.target.isPlaying)
{
walkieTalkie.target.Play();
}
}
whoops sorry for the indentation lmao
if this works then ill keep the event types as is, otherwise i'll have to change that as well
hmmmm
@ionic shoal do you mind dropping everything in a github branch?
i'll go play around with the pattern matching stuff and try to figure it out till i can get it to compile
actually wait im an idiot, the reason the compiler is complaining is cuz of the fsharp stuff so ofc it can't pattern match properly
in the middle of trying to make it compatible with csharp events
so once that's fixed it should just work anyways
@ionic shoal how hard would it be for you to soft depend on FSharpCore? looks like if i want to avoid managing my own list of event handlers, i'd still need a reference to FSharpCore in the generated code
if it's too annoying to do then i'll just manage my own list of event handlers instead
i think its just adding it as a nuget package
nevermind.. its not that simple apparantly. 🙂
now i installed fsharp core.. and i get this error.
and nothing has changed regarding the patterns.
give me a sec and ill create a branch for you.
i forgot to re-add the using statements for your mod, so it might be 1/2 lines diff in a sec, but ive surrounded it in a region. (lines changed a lot as i accidently commited some other lines where i was fiddling trying to get it to work, link is correct now.)
all good i'll take a look, thanks
I have a question
I installed Mirage and MaskedEnemyOverhaulFork and I dont have monsters in building, only outside theres any way to fix if?
I installed it manually
are those the only mods installed? i'd recommend seeing if #1231104141594595368 supports the latest version, since if it doesn't, that could be preventing spawns
mirage by itself works
Can mod "Rolling Giant" prevent spawning?
And sorry if typing a lot, can I just delete Masked Enemy Overhaul Fork?
yes, mirage covers most of MEOF features already
also no worries, feel free to ask anything
the issue with preventing spawning is typically with outdated mods that are no longer compatible with the latest version of LC. whether MEOF works or not, you'd have to look around to confirm (if you're looking to continue using it that is)
for rolling giant you'll want to ask the mod author
@ionic shoal i fixed the errors for the mirage integration stuff (didn't do a build to confirm since i'm missing the other compatibility dlls to be able to run a build)
also was able to remove the FSharpCore reference from mirage so i removed it from your csproj
fair, i normally just dl them and put them in the folder, probably should automate it someday.
oh nice
yeah that'd be more convenient for any contributors for sure
yeah, tbh, im guessing it can be done within github, but doing actions and automatic stuff on github, im not at all familiar with, neither my previous job or current one touch github, and most of my coding for personal reasons has been before i used github, so learning curve 😉
can confirm btw, the fix does compile, so, now i can finally look at testing ingame and fixing my end.. woo
wooohoo lets go
honestly i think i'm just gonna push the latest update to stable mirage soon if there's no bugs with luxnara's playtest today
if our integration requires any change i can always push a new update later
i should know if its going to work within the next 30 mins, curious question, because i never play solo, does mirage work if your solo? (ie, the voices are played from the masked?) just wondering if need a second client like i did when i was testing skinwalkers.
mirage works in solo yeah
@ionic shoal i overlooked this earlier, but you should remove the isStream flag here:
walkieTalkie.target.clip = AudioClip.Create("maskedClip", startEvent.lengthSamples, startEvent.channels, startEvent.frequency, true);
should actually be this:
walkieTalkie.target.clip = AudioClip.Create("maskedClip", startEvent.lengthSamples, startEvent.channels, startEvent.frequency);
```i don't quite remember why this is needed, but i just specifically remember running into errors when that was set to true when i was writing mirage
oh interesting... if it works it works i guess 😂
should it be false? or true?
in mirage i don't have the parameter set, and i'm pretty sure it's false by default
although lemme go double check
lmfao
for some reason i thought c# had default params
ah
private void function(int required, int optional=0)
{
//stuff
}
thats the diference between optional/required in c#, i d k if its same in f#
how long ago did you update exp to .28?
yeee that's the case for most languages that supports it
thats the version mentioned in the PR right? it was like right as i made that PR
when i uploaded to TS at laest
wasnt aware, my coding knowledge is c#, vb, java? >.> lol
well for f# at least it's different, it's actually really cumbersome to do it in that language, but that's because default parameters are unidiomatic in functional programming
ah ive got 10 mins or so to wait then
oh right it's not available on the mod managers yet 😔
yeah, i can just manual install i guess
thats always an option ya
btw, regarding experimental, it comes with core exp... but also core-exp is installed seperate?
oh nothing in the coreexperimental folder.
core should come with stuff
like silerovad
so you'd need that + the dependencies shown on core
one sec.
honestly might be easier to just wait 10 mins
so u can press install and left the mod manager do everythign
this was installed via gale.
but thats v.27, disabled it cause im manual installing in another folder
it's prob cuz it went into the core folder
if i remember right thats how i had it setup at least
shrug just thought id mention it, but there is nothing in the core folder.
wha.. idk how it'd even run then
well core, is in the main folder. xD
at least for r2modman i remember the core folder automatically extracting to BepInEx/core
then again if you already have MirageCoreExperimental previously
you don't need to deal with that
oh i see, maybe gale ballsed it up.
yee thats what i'd expect
yeah sorry, i just meant the plugins/coreexperimental folder was empty, i just figured the dll was meant to be in there xD
all good 😂
WELL... good news is.. im hearing "something". but, i think yeah i need to wait for the mod to update on thunderstore.. because its not correct and im getting an error xD
(its referencing fsharp core, so im guessing i need to update experimental core or something)
i will for sure
Just out of curiosity, what are you guys supposed to be doing?
Are you planning to merge Mirage with Lethal Intelligence?
no, just playing mirage audio sometimes via the walkie talkies when they speak, so the same masked, will be talking in person, and then also use the walkie.
I see, thanks!
Actually, why F#
ok, so i can hear the start of my voice now... but there is an error..
i think its saying AudioClip is null, this is line 4791.
audioClip.SetData(receivedEvent.samples, receivedEvent.sampleIndex);
[Error : Unity Log] NullReferenceException: Object reference not set to an instance of an object Stack trace: LethalIntelligence.Patches.MaskedAIRevamp.OnAudioStreamHandler (System.Object _, Mirage.Unity.AudioStream+AudioStreamEventArgs eventArgs) (at ./Patches/MaskedPatches.cs:4791) Microsoft.FSharp.Control.FSharpEvent2[TDelegate,TArgs].Trigger (System.Object sender, TArgs args) (at D:/a/_work/1/s/src/FSharp.Core/event.fs:141)
Mirage.Unity.AudioStream+AudioStream.onFrameDecompressed (System.Single[] samples, System.Int32 sampleIndex) (at ./Mirage/Unity/AudioStream.fs:52)
[email protected] (System.Single[] samples, System.Int32 sampleIndex) (at <bf36058f76727b058db4928726dbcc54>:IL_0000)
Mirage.Domain.Audio.Receiver.onReceiveFrame (Mirage.Domain.Audio.Receiver+AudioReceiver receiver, Mirage.Domain.Audio.Frame+FrameData frameData) (at ./Mirage/Domain/Audio/Receiver.fs:66)
[email protected] (Mirage.Domain.Audio.Frame+FrameData frameData) (at ./Mirage/Unity/AudioStream.fs:67)
[email protected] (Microsoft.FSharp.Core.FSharpOption1[T] frameData) (at ./Mirage/Domain/Audio/Sender.fs:62) Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvokeNoHijackCheck[a,b] (Microsoft.FSharp.Control.AsyncActivation1[T] ctxt, b result1, Microsoft.FSharp.Core.FSharpFunc2[T,TResult] userCode) (at D:/a/_work/1/s/src/FSharp.Core/async.fs:528) Microsoft.FSharp.Control.Trampoline.Execute (Microsoft.FSharp.Core.FSharpFunc2[T,TResult] firstAction) (at D:/a/_work/1/s/src/FSharp.Core/async.fs:112)
--- End of stack trace from previous location where exception was thrown ---
<StartupCode$FSharp-Core>[email protected] (System.Runtime.ExceptionServices.ExceptionDispatchInfo edi) (at D:/a/_work/1/s/src/FSharp.Core/async.fs:1798)
Microsoft.FSharp.Control.AsyncPrimitives+StartWithContinuations@1188-2.Invoke (System.Runtime.ExceptionServices.ExceptionDispatchInfo x) (at <12b89e0ba184665de418f7f4c173580f>:IL_0000)
Microsoft.FSharp.Control.Trampoline.Execute (Microsoft.FSharp.Core.FSharpFunc2[T,TResult] firstAction) (at D:/a/_work/1/s/src/FSharp.Core/async.fs:138) <StartupCode$FSharp-Core>[email protected] (System.Object o) (at D:/a/_work/1/s/src/FSharp.Core/async.fs:181) UnityEngine.UnitySynchronizationContext+WorkRequest.Invoke () (at <e27997765c1848b09d8073e5d642717a>:IL_0002) UnityEngine.UnitySynchronizationContext.Exec () (at <e27997765c1848b09d8073e5d642717a>:IL_005D) UnityEngine.UnitySynchronizationContext.ExecuteTasks () (at <e27997765c1848b09d8073e5d642717a>:IL_0014)
may know why, so give me a sec, trying something.
well, error isnt occuring anymore, but also not getting anything sounding like a voice through the walkie.
i think the audio i heard before, was the normal audio, and nothing is coming through the walkie.
could you double check if the samples array is non null? like maybe just print the length or something
sure
whats the exact line of code for MaskedPatches.cs:4791?
initially it was to try a new language, and i ended up sticking to it out of personal preference (for mirage that is)
audioClip.SetData(receivedEvent.samples, receivedEvent.sampleIndex);
i changed it to like this... basically sent the audioclip.create into the audioclip variable, then assigned the variable to the clip on the walkietalkie, that prevented the null ref
switch (audioEvent)
{
case AudioStreamEvent.AudioStartEvent:
var startEvent = (audioEvent as AudioStreamEvent.AudioStartEvent).Item;
walkieTalkie.target.Stop();
audioClip = AudioClip.Create("maskedClip", startEvent.lengthSamples, startEvent.channels, startEvent.frequency, false);
walkieTalkie.target.clip = audioClip;
break;
case AudioStreamEvent.AudioReceivedEvent:
var receivedEvent = (audioEvent as AudioStreamEvent.AudioReceivedEvent).Item;
Plugin.mls.LogError("Samples=" + receivedEvent.samples.Length.ToString());
audioClip.SetData(receivedEvent.samples, receivedEvent.sampleIndex);
if (!walkieTalkie.target.isPlaying)
{
walkieTalkie.target.Play();
}
break;
}
ah so it's not the samples being null for sure
FP enjoyer i see
C over C++ as well?
nah, but ill still check that anyway.
i've never had a need for systems languages 99% of the time so it just depends on what im working with
for silerovad i used C just because i forgot a lot of the c++ syntax
samples was 2304.
im not sure if this is an issue of when im calling AudioStartEvent vs AudioReceivedEvent then
but i did log the calls out
and i remember AudioStartEvent always being called at the start
so it odesn't really make sense for the clip to be null in this case
if audioClip itself is null that is
well, as i said, its not null now.
oh im blind
but no audio comes through the walkies xD
not a clue.
wait
maybe it is working...
O.o
i hear some audio trhough the walkie suddenly.. but its sketchy.
and very quiet
possible that i might be doing something wrong on my end
i'll take a look later
probably wont be able to touch it for another 3 hours or so
well the audio does seem to be playing
let me try to record, so you can see what i mean
sounds good
no worries, ill be off to bed within 2 anyway.
actually do you think you could write down how i can reproduce your test on my end?
when i work on it later ill just run some tests as well
well with the code i have right now (which ill upload to the branch), i just hold a walkie.. and start talking to the masked.
i don't need to drop a walkie talkie for the masked?
nah
we were talking about blocking the audio from playing, when it shouldent play... so that can come later
ah sounds good easy enough to test then
yes, thats why i didnt put in the conditions yet 🙂
the one thing i can confirm is working, is, if you turn your walkie off mid-clip.. the audio cuts (as it should)
if audio sounds janky it probably is something on my end
so hopefully ill be able to figure it out and it should be simple from there
well, if the audio could be the same as if it was a player speaking into a walkie and receiving the audio, then that would be good. i think 99% of the "not good" is just that its quiet, there is only minor jankyness, but that might also be due to the sudden squeak of my chair, we shall see when i can get this to record.
ok, maybe im going doolally... before it seemed like some audio was coming through the walkies, but now im hearing nothing
the one time they did seem to speak through the walkies, my game audio wasnt captured, so i cant even show how it sounded.
OK, it maybe the clip is only playing on one walkie..
oof all good
seems to be playing on all of them.. recorded an extended clip, i had all 4 walkies on, turned them off, dropped them, etc etc etc.. my microphone is not recorded by the clip, all the audio is from the game.
also, i feel like when im near the masked, the clip doesnt ever play through the walkie. not sure if thats intended, or just happens or if im just imagining it.. just thought id mention it.
@ionic shoal do u mind sending me ur compat dlls btw, just so it's easier for me to build and run/test
definitely not intended, although that kind of functionality shouldnt be happening from mirage anyways, since i'm only sending you audio data
oh i never meant that your causing it, i just said let me know if you think its happening, i assume it shouldent be happening, and it maybe just potluck, but with the walkie audio so low, cant hear that over the live audio xD
sent you a zip of the compatibility dlls folder btw
Mirage was the reason i found out my mic is shit in Lethal Company
Any ideas why could it make weird ah noises xd
I think the only notable one that Mirage doesn’t have is the option to have Masks fade in as a Masked gets close to you
Which admittedly I would love in Mirage. I’m a big fan of not being able to tell if someone is a Masked or not, but it kinda makes things not make much sense
yeah thats when it'd make sense to keep MEOF with mirage
It's shit only in lethal actually
Not a single other game nor app has this issue
Only in lethal it makes super weird noises that i can not record
Have you tried a voice settings mod?
Which is..?
I just meant in general
Try this
Oh
Still not helping as it's too terrible for some reason
There isn't a lot of options lol
Have you tried the default settings in the voice mod?
Hmm
For DissonanceVoiceSettings try these settings
My friend just got the game and her microphone sounds super robotic and staticky. We tried switching input devices to a new microphone. It helped but only a little, the robotic sounds went away but the mic is still super staticky and only picks up bits and pieces of her voice. It's really weird. The mic has been tested on discord and on the stea...
That's about what i have tho xd
If you join vc in discord or anywhere else - it's gonna be normal btw
It is genuinely ONLY in lethal company
And i have not a single clue why
Oh well
This looks like possible reason
That solved it thanks
I wonder if there will be mod to fix for that as well... As I'd like not to switch it all the time of I need the higher bitrate
Or voicemeter it goes with shit ton of outputs
interesting that a mic that's too good makes it bad in this game 💀
@ionic shoal small PR, this shouldnt change anything but i realized the audioClip variable wasnt needed so i just removed, it and pairing it with MirageExprimental v0.0.30, walkie talkies are able to play a voice
like you mentioned, the interaction you noticed where if you stand near a masked, the walkie talkie won't make any sound is present
you're probably going to have to dig around and see what zeekers did for that if you want to change that behaviour
during my tests rn the walkie talkie and the masked enemy are talking at the exact same time. i imagine there are situations where it won't completely match up but this is probably as close as it gets anyways
walkie talkie does sound a bit quiet, so that'll be something for you to play around with if it doesn't sound 1:1 with how it normally does
(i don't normally use walkie talkies so i quite honestly dont remember how loud it's actually supposed to be)
It sounded disgusting yeah xd
That's not the only place where i've seen too high quality of sound ruining everything
I remember minecraft bedrock just literally crashing windows if you use too high quality sound settings for your audio xd
Nop
That was about sound, not mic
Speakers
high quality sound settings making your pc crash takes skill
Yeah xd
@ionic shoal btw tmrw once u have the time to look over the changes + use the new MirageExprimental build, lmk if mirage is good to go so i can just push an update to the stable package
i'm assuming there might be some stuff you have to deal with the walkie talkies (like volume?), but that stuff is unrelated to the interface i exposed in mirage so if what i have is good then i'll push my update out
Sounds good, will do! Thanks. And yeah I figured it is a volume issue, I'll look into that when I test
ok, i think i know why it maybe so quiet, it maybe due to how walkies have changed, they now factor in distance on their volume, ill try to test with a friend later, as testing solo when its a 2 way conversation is hard. 😄
i think i have them at a good volume, but ill have to test distances with a friend, my only concern is raising the volume for the masked, will also raise the volume for players.
that would make sense, since when i flew off too far i couldnt hear anything from the walkie anymore
btw would u say the mirage interop stuff is good enough and it'd be safe for me to push my update?
Yes, unless changing the volume affected normal walkie volume, but I guess then I would need to add a new audio device attached to the walkie for the masked to use or something..?
ill hold off a bit then since im not even sure how that would work
Well I plan to test with my friend soon, so I'll know regarding that shortly
sounds good lmk!
so tested with my friend, and it seems that changing the volume for the masked, doesnt affect players shrug no clue why 🙂 but thats good! so all good to go ahead, will try to implement it all fully this weekend including the actual walkie part, I assume if any other issues, we can chat about that if and when it happens.
yeah for sure, if any other issues arise ill take a look
glad to see the volume stuff works though, so ill go ahead and push my update soon
thanks for the confirmation 😄
im surprised it does, as i would have thought the "target" of the other walkies, would be where the vanilla walkie audio goes to. lol
but yeah, i put the volume to 0, and suddenly masked werent talking through walkies, but, my friend and i would.
btw, talking about your update, you are removing the volume level config from your mod? i didnt see it in experimental
yeah that's what i as assuming as well, but if it works it works 😂
it's in the LethalSettings mod settings
basically needed a way to not have personal preferences synced
which meant no configs
and LethalSettings is the only option i could find to allow me to do preferences and save it to my own format that i want to use
oh, ill have a look then, i personally share personal preferences for masked volume so its the same for everyone (ie, same level as players xD)
the reason i made it not synced is just cuz some ppl prefer not listening to their voice while some do
your case is definitely not ideal with the settings but
i stilll feel like this is the way to go
out of curiosity though, what volume setting do you have it set to?
is the default (1.0) too loud or something
yes, i think i normally have it on 0.9, but i was planning to put it lower.
I am playing later, so i can let you know in a few hours.
well, whatever my setting is, still feels a bit shouty when they are not nearby, so was thinking 0.8, but ive used 0.9 (if thats what i use) for a long time, when i saw setting was gone i was like "eh" haha
icic
think i'll just leave it at 1.0 for now unless more ppl suggest to change it
whoops i just realized cuz of lunxara that i have log spam in the latest experimental build
it'll be gone when i push to stable
forgot about that, figured you wanted it tbh xD
nah i meant to remove it for experimental
just left it in there by accident
only had it there cuz i was confirming if it was working or not
Mirage v1.9.1 is released:
Note: This will be the last update, unless any major gamebreaking bugs requires my attention. For anyone expecting the v2 (voice recognition + machine learning) update, please read the README on why this update has been dropped.
- Config has been reworked and requires you to redo your config. You will need to delete
Mirage.cfg(backup the file in case you need it), and then use the newly generatedMirage.General.cfgandMirage.Enemies.cfgconfiguration files. - Enemy configs are now generated at runtime, no longer requiring a manual update for Mirage every time Zeekers adds new enemies.
- Optimized the codebase for better performance.
- Now uses SileroVAD for better voice activity detection, resulting in better recordings when using voice activity.
SpawnOnPlayerDeathas a feature has been removed. Use the Zombies mod as a replacement.- Added compatibility with LethalIntelligence.
- Thanks to Lunxara, JacuJ, BBAPepsiMan, and JokerMan for extensively testing the update. I was only able to fix a lot of the subtle bugs they found because of their extensive testing.
- Updated icon, created by IntegrityFate.
Congrats on the releasing the update! 🎉
While I know it wasn’t the update you were wanting to release, your countless hours of hard work don’t go unappreciated.
loving the new icon barch <3
thanks! i'm just glad im finally released of my shackles so i can focus on studies now 😂
fate did suuuuuuch a good job on it
looks so sexy
on god!!!
Yeah the new icon looks freaking awesome
frfr
Yeah, I bet!
Hello!
I have a question, why the use of Lethal Settings?
having mods with more support and updates like LethalConfig?
Is there a way I can delete all the records for voice lines for all the clients? (For the new voice recording thing)
Game crashes every time I load into a save since the new update
Disabling these three fixed it
I'll try to find which one is the culprit
Update: It's LethalSettings
not sure why it'd crash 🤔
idk if i missed something
disabling lethalsettings should actually be causing it to crash
LethalConfig doesn't do what I want, that's for modifying configs (which you can already do in your mod manager), whereas LethalSettings lets me define settings and use my own arbitrary format that i want to use
the main reason for it is to not need to have a config that gets synced
since those are personal preferences that i'm using lethalsettings for
I see, the sad thing is that LethalSettings has not been maintained for 7 months and there may be compatibility issues with other mods.
not being maintained doesn't mean there'll be compatibility issues
it's stable
it's also pretty independent in functionality so it shouldn't really affect much
can confirm here too
lethalsettings causes the same issue for my modpack
I'll be testing this on my modpack
only thing I can see related to a crash is this in the logs
[22:19:23.9999557] [Error : Unity Log] NullReferenceException: Object reference not set to an instance of an object
Stack trace:
Mirage.Hook.MaskedPlayerEnemy.isMaskedEnemy@62 (SpawnableEnemyWithRarity enemy) (at ./Mirage/Hook/MaskedPlayerEnemy.fs:63)
[email protected] (SpawnableEnemyWithRarity delegateArg0) (at <40fbb89c0daf11f1039b787aa180cf14>:IL_0000)
System.Collections.Generic.List`1[T].RemoveAll (System.Predicate`1[T] match) (at <787acc3c9a4c471ba7d971300105af24>:IL_001A)
[email protected] (On.TimeOfDay+orig_Start orig, TimeOfDay self) (at ./Mirage/Hook/MaskedPlayerEnemy.fs:67)
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Hook<TimeOfDay::Start>?-47960308(TimeOfDay)
i guess it's not as stable as i thought
but there's still no good alternative
the alternative is just making ppl use notepad to edit the settings 💀
since i don't want personal preferences synced by mod managers
:,]
ooc, why not? Is this to make mirage something that can be used between users who have different set ups for their copy of Mirage?
tested again
its not lethalsettings
its mirage period LMAO
I'm assuming it works without lethalsettings because that might prevent mirage from loading
it's cuz some settings are literally just personal preferences (e.g. the volume you want to hear monsters mimicking your voice, whether you want to record while dead, etc)
it'll crash without lethalsettings since mirage depends on it
I was actually gonna ask where all the older config settings went because I couldn't find a config file to edit
were a lot of the older settings removed with the new update?
depends on which ones you're talking about
for the ones that had a comment saying it's not synced
those are moved to lethalsettings
yup, crashed :,]
yeah I saw that like the voice and spectating voices settings were moved
can't find a lot of the older settings though
specifically the mob toggles
mob toggles are in the config
where's the config file located/named?
Mirage.General.cfg and Mirage.Enemies.cfg
ah alr there they are
they didn't generate before or either I didn't notice them oops LMAO
oh right i forgot to mention on the readme actually
that ur supposed to load into the game once (not just the menu, but like actually into the game)
cuz the monsters are grabbed at runtime now
yeee
yeah I was loading into the menu
I'm able to get to the menu without crashing
me too
Is when I load a game when it crash
I don't think the issue is lethalsettings though
I can run the game fine without mirage but with lethal settings and it works
on a clean profile it works for me
hm
so i def didn't miss any dependencies or anything
just tried to create a new save instead and it still crashed
who here has a small modpack that's crashing with mirage rn
so it works on a clean install from TS
not me :,]
I'll start disabling mods until it doesn't crash, see if I can find anything
300 mods is not small
that sounds kinda painful
will do
got some bad news on my end
worst case scenario i add a config back and just have it sync even though i dont want that to happen
yea others have been reporting about it
but that's on clean profile
crazy how it's been running really stable for lunxara's modpack but then everyone else crashes on start 😭
oh
the fuck
ok this is why i even dropped v2
Was there a big update?
cuz of hardware issues, and this update isnt even supposed to be big
not really, i originally had a whole v2 update but i removed most of the functionality
so at the end it's mostly an optimization update and config changes and whatnot
What was removed
can u send me a log
hmmm
only having mirage installed and crashing is REALLY concerning
gotchu
wait @thick venture can u try running mirage by itself as well
yeah sure
im wondering if this a hardware problem for whatever dependencies i used
tbh if it doesn't work
i think im reverting mirage back to the previous version
i dont have time to work on this anymore
oof the logs stopped
so nothing useful in there :(
@thin sonnet do u mind trying to run mirage by itself as well
just wanna confirm if it's hardware
also fuck it moroxide can u drop ur modpack
ill run it to see if it crashes for me or not
019235a4-61c3-221b-bff9-a8baddb65cd9
update mirage
crashed on clean install with mirage
so it is a hardware problem...
fuck
yeah not sure if the log is gonna help though
crashed on clean profile
brooooooooooooooo
i think it might be SileroVAD then
kms
i'll try and remove that
and see if it fixes the crashing issue
does SileroVAD have any requirements for hardware
it shouldnt
but it's the only native thing
that could potentially crash the game
yea these logs dont have any info sadly
usually when this happens
it's cuz it's crashing from native code
in my case it might have to do with the C code i wrote for silero vad
honestly i think
i'm just gonna revert
i'll leave it as an experimental build for ppl who wanna see if they can use this update
and revert back to the previous 1.8.x update
just dont wanna deal with silerovad cuz it's a huge pain in the ass to debug
shit alright
even this update's getting dropped, gg 😭
wonder if its a minimum specs requirement or just something about different CPU/GPUs
rip 😭
nah silerovad is super lightweight
i think it has to do more with my C code than anything
so disappointing that i gotta drop even this version though lmao
could you send the github link to the C code in the repo, not too experienced with it but I wanna take a look now
do you have plans on revert this version?
AFAIK previously when i had crashes with this, it's from things like the sample rate not being 16khz (which shouldn't be a problem since i resample it using naudio before passing it over to the C code)
so maybe the pcm data doesn't fit the expected length
probably will just upload the previous 1.8.X version of mirage and call it a day
cuz it doesn't seem worth it for me to debug this
you can't revert that way :,]
the versioning on ts doesn't let you roll back
whats sucks is that its not even staying alive enough to log whats happening
nah i'll just reupload it as 1.10 i mean
that'd make it a lot easier to at least understand the issue
yea thats the main problem
if i could get proper error logs then i'd at least try and fix it
but without any leads i'm just wasting time that i already dont really have
nope :,] , it has to be at least greater than the current version
ugh so disappointing that it ended this way but it is what it is
I think something is just wrong with the stable build
curent version is 1.9.1 so it's higher
?
Cus Experimental works fine you should double check you didn't miss something
I've had none of the crashing problems not once
@solemn ridge try running stable
oh, I see, idk why i thought it was v2.0
cuz im pretty sure it's hardware
Will do cus I think it's an issue with the stable update
oh nah that was the originally planned update
idk if you saw but i dropped that update completely
due to time constraints and whatnot
i hope ur right but i dont think thats the case
still downloading moroxide's modpack so gonna test with that
@thin sonnet @thick venture @hollow violet whats ur mics like? do yall know the sample rate / channel output on it?
Actually @deft cape
Did you tell everyone to remove Barchlib?
I wonder if it's a duplication issue
couldn't be
this?
it happens on clean installs
Anyways testing update
yea is it possible to check the samplerate and channels on it?
not sure if this is it but its what windows is telling me
can u try and set it to 1 channel
fuckkkk
i think 2 channels might be a problem i forgot to account for
One sec
only got sample rate settings
Lemme check what mine is set to
but idk if it actually is that or not so i dont wanna fix that if it ends up not being it
fair yeah
sounds good
going to echo that I have CD/DVD quality options in mine as well (no FM), and mine is set to DVD Atm
Here's mine
nvm then
Not that
hmm
@deft cape It's an issue with Stable
oh wait
ur crashing too?
I crashed loading a lobby
it's the Stable update
is experimental on github?
BUT WHY DID I NOT CRASH WTF
😭
oh wait
i think it might be a MirageCore issue actually
I bet it's the core
i think i was using MirageCoreExperimental
Yeah
..........................
Cus CoreExperimental is fine
oo[
try running on this real quick
Testing
