#Mirage

1 messages · Page 25 of 1

ionic shoal
#

XD, always the way

deft cape
#

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

amber grove
#

Oh no worries, burnout is totally real

obtuse burrow
#

Using thunderstore mod manger, the mod doesn't appear in the edit config list?

vestal pecan
obtuse burrow
#

oh yeah, that would be why

deft cape
#

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.

light jacinth
#

thank you for the mod. it’s made for a lot of great moments and memories with friends. 🫡

solemn ridge
light jacinth
#

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

solemn ridge
#

Ye fair, it just came off like you were saying the mod was dying which isn't the case XD

deft cape
#

nah it came off as a supportive message to me for sure, all good 😂

#

i appreciate the kind words

solemn ridge
deft cape
#

u good 😂

deft cape
deft cape
#

tyty

solemn ridge
#

jeb has been dead for a few days unfortunately

lofty sorrel
#

Damon is away so Jeb is abandoned till he gets back

solemn ridge
#

How dare Damon forget to feed Jeb before his break

#

lol

#

🤭

lofty sorrel
light jacinth
#

i hope people will maturely handle this news though.
like i heard about chaos getting threats just for being on hiatus.

solemn ridge
deft cape
lofty sorrel
deft cape
solemn ridge
deft cape
#

projects like this are passion projects, so ppl who act like that makes no sense

solemn ridge
#

Cus I made a role for that I got it yesterday

lofty sorrel
light jacinth
#

yeahh.. some people feel way too entitled

solemn ridge
#

XD

#

Got it as a Birthday gift

lofty sorrel
#

I've been feeling DRG recently

solemn ridge
# lofty sorrel Course you can DM

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

solemn ridge
#

Chaos is a good dude he just gets really busy iRL

lofty sorrel
deft cape
#

the people in this discord have been very respectful (at least like 99.99% of the time)

light jacinth
#

i mean v2 talk was mostly just on this thread right?

deft cape
#

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

solemn ridge
#

Yeah and sometimes it was brought up on my streams so there will be mentions of it in some of our vods

deft cape
#

i gotta do what i gotta do for my career

solemn ridge
lofty sorrel
#

Mirage as it is does what people expect and does it well, so it should all be good

solemn ridge
#

Exactly

deft cape
#

hopefully the next update doesn't break too much lmaoo

#

which i forgot to mention, will probably take like 2 weeks

solemn ridge
#

Currently I use DissonanceVoiceSettings to get rid of that

light jacinth
#

yeah my keyboard gets picked up a lot so this would be great

deft cape
#

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

lofty sorrel
#

Pray to the programming gods

wicked sorrel
#

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

quasi narwhal
#

We love bugs!!!1!

ionic shoal
#

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.

deft cape
deft cape
ionic shoal
# deft cape oh right ill do that as well, ill think about what i should do to expose an inte...

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.

deft cape
#

@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

ionic shoal
#

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

onyx summit
#

Hold up are you guys making a way for mimics to use walkies?!?!

deft cape
#

virus is doing something like that yeah, for #1240985198485573743

amber grove
#

If it only affects mimics that sounds like it’d be pretty easy to figure out who’s real and not real

deft cape
#

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

amber grove
#

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?

deft cape
#

yeah no post-processing

#

basically just to make voice activity work better

#

push to talk will remain the same

ionic shoal
quaint leaf
#

Masked walked right through the closed ship door

hollow violet
quaint leaf
#

Yeah, I think so

hollow violet
#

Iirc, thats a vanilla bug. Masked don’t spawn there naturally.

analog viper
#

Yeah that's a known vanilla issue

quaint leaf
#

Is there any mod that fixes it?

gaunt grotto
hollow violet
#

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.

analog viper
#

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

ionic shoal
#

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

deft cape
#

@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?

ionic shoal
deft cape
#

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

ionic shoal
deft cape
#

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

ionic shoal
deft cape
#

gotcha lmk

deft cape
#

@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

oblique galleon
#

School schmool

#

Just be better and take the exam today

#

Which exam? The good exam

deft cape
buoyant jacinth
#

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"

ionic shoal
ionic shoal
# deft cape <@333519150955626518> btw do you think it'd be something you'd look into somethi...

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()); }

tepid condor
#

When a 3rd voice comes on the walks bc you also have abandoned company on

wild sonnet
#

@deft cape has anything been done that you wanted to do in version 2.0.0?

deft cape
deft cape
ionic shoal
light jacinth
#

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

viral obsidian
#

F#

#

Technically not functional but is basically considered functional anyway

deft cape
#

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

viral obsidian
#

from what I've seen, it encourages it way more

deft cape
#

well it definitely does but i wouldn't really consider it functional either

deft cape
#

i just have no motivation to work on it anymore so yeah

viral obsidian
#

understandable

light jacinth
#

a decade ago i was supposed to release this minecraft plug-in and made big promises

#

and i never finished and released it

deft cape
#

so relatable 😂

viral obsidian
#

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

wild sonnet
deft cape
#

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

light jacinth
deft cape
#

yea i've dropped it

#

check the pinned message regarding it

#

or click here actually: #1200695291972685926 message

wild sonnet
#

It's a pity, I understand you, studying is more important than the project

deft cape
#

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

wild sonnet
#

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.

deft cape
#

just ignore experimental

spring laurel
#

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

finite lichen
#

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.

finite lichen
clever knot
finite lichen
#

Thanks

tepid condor
# buoyant jacinth 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

buoyant jacinth
#

You just said about 3rd voice

#

I hoped it will be random fun one

tepid condor
#

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

buoyant jacinth
#

Ah

#

I think some mod did it already...

#

Haunted girl can speak into it for sure

timber notch
#

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.

deft cape
#

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

timber notch
#

Ahhhh

#

The best kind of issues to have

#

Ones you can’t replicate yourself

deft cape
#

yeah and in this case hardware actually matters since it depends on what gpu the player has

timber notch
#

Yeah

deft cape
#

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

timber notch
#

I imagine you learned a lot from it

deft cape
#

still doing one final update with most of the v2 code gone and just keeping the code optimizations and whatnot

solemn ridge
deft cape
#

not really actually, the stuff i worked on in this mod are things i already knew how to do 😭

deft cape
solemn ridge
#

Oni spawning on Pinnacle go brrrr

#

XD

deft cape
#

i still gotta test that later

#

just havent gotten to it yet

solemn ridge
#

Haha

solemn ridge
#

It removes all the F# Garbage Collection the current release has so it's quite a bit more optimized

tawdry bough
#

Did ya ever settle on a new default spawn chance? I think I remember you asking if anyone had something good yea?

deft cape
#

yeah i have it set to 2%

timber notch
solemn ridge
#

I said I used 25% lol

deft cape
#

but i hvae it set to 2% in the config

solemn ridge
#

Oh lol

#

Got ya

deft cape
#

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 😂

timber notch
#

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.

deft cape
#

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

solemn ridge
#

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

deft cape
#

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

solemn ridge
#

Yeah ^^

ionic shoal
deft cape
#

sounds good, ill let you know when i have something that you can use

slow carbon
#

...is this the place where I could ask about some issues caused by the Mirage mod? or is there a more appropriate channel/website

thick plank
#

Or in #help-and-troubleshooting

slow carbon
#

Oh, thanks for telling me

#

I managed to solve it right about now

#

I'm... still not entirely sure how

#

but it does work

thick plank
#

Nice

deft cape
#

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?

ionic shoal
deft cape
#

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

ionic shoal
#

well, i was just assuming it would be the same clip because mirage is all synced.

deft cape
#

well it's synced in the sense that everyone hears the same voice when it's playing a voice

ionic shoal
#

also, the clip is played out loud by the masked at the same time, so figured it would be xD

deft cape
#

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

ionic shoal
#

my thought was.. masked is speaking it out loud...

all the walkie talkie bit does, is play it over the walkies.

deft cape
#

ah well we could certainly go that route

ionic shoal
# deft cape since it seems like your mod wants to control the timings of when to play voices

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

deft cape
#

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

ionic shoal
# deft cape a function ``AudioClip getVoiceClip(int playerId)``, where it just grabs a rando...

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)

deft cape
#

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

ionic shoal
# deft cape 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.

deft cape
#

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

eternal bridge
#

idea

#

make masked go super saiyan

ionic shoal
# deft cape if a masked is near you and speaks into the walkie at the same time, that's alre...

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.

deft cape
#

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#)

ionic shoal
#

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 🙂

ionic shoal
deft cape
buoyant jacinth
#

How would i make mimics also use emotes from mods like badasscompany?

deft cape
#

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

buoyant jacinth
#

Curious

analog viper
#

If you want mimics to emote the only one I know for sure works is toomanyemotes

buoyant jacinth
#

It's just that ppl started spamming badasscompany emotes to show they're not mimics

deft cape
#

prob best to ask the author to integrate that

tall egret
#

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

buoyant jacinth
buoyant jacinth
tall egret
buoyant jacinth
finite lichen
buoyant jacinth
#

And i do have diversity xd

buoyant jacinth
#

Also they kinda uhh... Not really using emotes for long enough i'd say for some reason

deft cape
#

just remembered i forgot to look at the clip so i went back to find it

spring laurel
#

Yeah even I wasnt sure lmao

deft cape
#

so funny how they were just chilling next to each other for awhile

spring laurel
#

It looked even more convincing from their perspective because the masked was gently nodding to the beat

quaint leaf
#

What does the experimental version change?

solemn ridge
#

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

quaint leaf
#

Awwww, no more v2?

solemn ridge
#

It was pinned

quaint leaf
#

Ah, I see

#

Glad it's not permanently cancelled

solemn ridge
#

V2 is cancelled, what's coming now is an update for V1 that brings all the optimization stuff

quaint leaf
#

Still happy it's getting updates

tepid condor
ionic shoal
deft cape
#

@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)

slate tusk
#

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

ionic shoal
# deft cape <@333519150955626518> so there's a bit of a problem. since ``AudioClip``s are mu...

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 🙂

ionic shoal
deft cape
#

mirage has custom spawns

deft cape
#

or just lower it

ionic shoal
deft cape
#

the default is set to basically always spawn every round

ionic shoal
#

also dont you limit to 2 masked?

deft cape
#

yeah

#

but a lot of ppl dont like that

#

gonna be changing the defaults later

ionic shoal
#

thats fair.

slate tusk
#

i dont customize spawn

deft cape
#

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

deft cape
ionic shoal
ionic shoal
deft cape
#

sounds good, should i hold off on doing any interfacing stuff for now then

ionic shoal
#

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.

deft cape
#

sounds good

ionic shoal
oblique galleon
ionic shoal
deft cape
# deft cape <@333519150955626518> so there's a bit of a problem. since ``AudioClip``s are mu...

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

ionic shoal
#

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.

deft cape
#

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

ionic shoal
#

cool!

ionic shoal
#

loooking at what i was looking at just now, i think it goes along similar lines of what i was just looking at tbh.

deft cape
#

ah nice

#

i might as well just start workign on that now then

ionic shoal
# deft cape so for this i just wanted to show some pseudocode of what it might look like: ``...

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)

deft cape
#

you'd have to do any conditions within the callback itself

#

since you should only be registering to the event once

ionic shoal
#

ok, thats what i figured.

deft cape
#

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

ionic shoal
#

that might be simpler as thats how the structure is now.

deft cape
#

yeah

#

can probably stick to that then

ionic shoal
#

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

deft cape
#

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

analog viper
#

I do use the spawn on player death option. It's led to some really hilarious moments in my sessions with friends.

proper path
#

I love that setting. I have it set so it is rarer, but it happens. if nothing else it makes things more dangerous

deft cape
#

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

ionic shoal
eternal bridge
#

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

deft cape
deft cape
#

tons of people requesting to have it separated into a different mod in the past

ionic shoal
deft cape
#

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

analog viper
#

Rather than making it separate you could just set it to off by defaul in the settings.

#

*default

deft cape
#

@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;

deft cape
#

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

ionic shoal
deft cape
#

has anyone here tried it?

#

if it replaces the SpawnOnPlayerDeath functionality then i dont need to add it back in

sturdy python
#

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)

deft cape
#

nice doesnt seem like i need to port that feature over to the new version then

solemn ridge
deft cape
#

yepp less work for me :D

torpid pecan
deft cape
#

ah good point

copper valve
#

What's the experimental version about?

deft cape
#

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

solemn ridge
#

Yeah I've been doing a lot of heavy beta testing stick to stable til update is pushed live

#

:3

deft cape
#

@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

deft cape
ionic shoal
#

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.

ionic shoal
solemn ridge
#

I don't recommend it, it's also not been updated in quite some time

sturdy python
#

Zombies also has that I think lol

solemn ridge
#

Yeah Mask The Dead is way older, and had a slew of issues

sturdy python
solemn ridge
# sturdy python

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

ionic shoal
solemn ridge
#

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

slate tusk
# ionic shoal do you have a mod list code you can send me from thunderstore/whatever mod manag...

Hello! I have now removed the mirage. If that's what it takes,I can send tree of plugins directory
This pulugins I see:

  1. BetterEmotes
  2. CSync
  3. HDLethalCompany
  4. InteractiveTerminalAPI
  5. LethalCompanyInputUtils
  6. LethalLib
  7. LethalNetworkAPI
  8. MMHOOK
  9. MoreCompanyCosmetics
  10. MoreShipUpgrades (Lategame Upgrades)
  11. odin serializer
  12. shipLoot
  13. alwaysHearWalkie
  14. BetterStamina
  15. BrutalCompanyMinus
  16. CoilHeadStare
  17. freeLookMonitor
  18. HealthMetrics
  19. helmetCamera
  20. JigglePhysicsPlugin
  21. LethalRegeneration
  22. LetMeLookDown
  23. maskedAIRevamp
  24. mimics
  25. moreCompany
  26. moresuits
  27. NicholaScott.BepInEx.RuntimeNetcodeRPCValidator (???)
  28. noSellLimit
  29. OpenMonitors
  30. ReservedFlashlightSlot
  31. ReservedItemSlotCore
  32. ReservedKeySlot
  33. ReservedWalkieSlot
  34. TerminalApi
  35. VoiceHUD
ionic shoal
# slate tusk Hello! I have now removed the mirage. If that's what it takes,I can send tree of...

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.

slate tusk
#

yes, i install manually all modes. I have now installed mirage and uninstalled maskedAIRevamp. I'm testing this option

ionic shoal
#

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

ionic shoal
ionic shoal
slate tusk
#

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

slate tusk
ionic shoal
#

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)

ionic shoal
# deft cape <@333519150955626518> so i added the stuff that should let you use what we discu...

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?

ionic shoal
slate tusk
ionic shoal
torpid pecan
umbral maple
torpid pecan
#

Like surely a delay of 0 or 1 is effectively instant?

umbral maple
#

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

torpid pecan
#

I'll try later when i am back from work

deft cape
deft cape
deft cape
deft cape
ionic shoal
ionic shoal
#

also, i assume i need to use fsharpcore... as OnAudioStream is part of that?

deft cape
#

hmm i thought i was making it into a c# event

#

i'm gonna have to take another look at it then

ionic shoal
#

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

deft cape
#

yeah nah you don't need FSharpCore if i set this up right

#

so i'll have to take another look at it

ionic shoal
#

thats what i figured, which is why i held off on installing it to try it 🙂

deft cape
deft cape
#

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

ionic shoal
#

haha, well i did wonder if it related to these..

but i guess not.

deft cape
#

nah the type itself sohuld still be AudioReceivedEvent and whatnot

ionic shoal
#

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

deft cape
#

💀 💀

#

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

deft cape
ionic shoal
#

ill have a look, but i think not, one sec

#

nope, same error

deft cape
#

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

deft cape
#

@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

ionic shoal
#

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.)

deft cape
#

all good i'll take a look, thanks

sudden cipher
#

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

deft cape
#

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

sudden cipher
#

Can mod "Rolling Giant" prevent spawning?

#

And sorry if typing a lot, can I just delete Masked Enemy Overhaul Fork?

deft cape
#

also no worries, feel free to ask anything

deft cape
# sudden cipher Can mod "Rolling Giant" prevent spawning?

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

sudden cipher
#

Oh okay

#

Thanks for answering

deft cape
#

@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

ionic shoal
#

oh nice

deft cape
ionic shoal
#

can confirm btw, the fix does compile, so, now i can finally look at testing ingame and fixing my end.. woo

deft cape
#

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

ionic shoal
#

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.

deft cape
#

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
ionic shoal
#

good 🙂

#

erm, i had to add that in.. it errored without

deft cape
#

oh interesting... if it works it works i guess 😂

ionic shoal
#

should it be false? or true?

deft cape
#

in mirage i don't have the parameter set, and i'm pretty sure it's false by default

#

although lemme go double check

ionic shoal
#

no default in c# xD

#

if there was a default, i wouldent need it

deft cape
#

oh wait i'm an idiot

#

i just have it set to false

#

💀

ionic shoal
#

lmfao

deft cape
#

for some reason i thought c# had default params

ionic shoal
#

it does.

#

but that doesnt

deft cape
#

ah

ionic shoal
#
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?

deft cape
#

yeee that's the case for most languages that supports it

deft cape
#

when i uploaded to TS at laest

ionic shoal
#

wasnt aware, my coding knowledge is c#, vb, java? >.> lol

deft cape
#

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

ionic shoal
deft cape
#

oh right it's not available on the mod managers yet 😔

ionic shoal
#

yeah, i can just manual install i guess

deft cape
#

thats always an option ya

ionic shoal
#

btw, regarding experimental, it comes with core exp... but also core-exp is installed seperate?

#

oh nothing in the coreexperimental folder.

deft cape
#

core should come with stuff

#

like silerovad

#

so you'd need that + the dependencies shown on core

ionic shoal
#

one sec.

deft cape
#

honestly might be easier to just wait 10 mins

#

so u can press install and left the mod manager do everythign

ionic shoal
#

this was installed via gale.

#

but thats v.27, disabled it cause im manual installing in another folder

deft cape
#

it's prob cuz it went into the core folder

#

if i remember right thats how i had it setup at least

ionic shoal
#

shrug just thought id mention it, but there is nothing in the core folder.

deft cape
#

wha.. idk how it'd even run then

ionic shoal
#

well core, is in the main folder. xD

deft cape
#

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

ionic shoal
#

oh i see, maybe gale ballsed it up.

deft cape
#

if it works it works

#

yea no clue

ionic shoal
#

oh now i see

#

there is stuf in bepinex/core.

deft cape
#

yee thats what i'd expect

ionic shoal
#

yeah sorry, i just meant the plugins/coreexperimental folder was empty, i just figured the dll was meant to be in there xD

deft cape
#

all good 😂

ionic shoal
#

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)

deft cape
#

ah that's possible

#

lmk how the test goes after

ionic shoal
#

i will for sure

thin sonnet
#

Just out of curiosity, what are you guys supposed to be doing?
Are you planning to merge Mirage with Lethal Intelligence?

ionic shoal
thin sonnet
#

I see, thanks!

buoyant jacinth
#

Actually, why F#

ionic shoal
# deft cape lmk how the test goes after

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.

deft cape
#

could you double check if the samples array is non null? like maybe just print the length or something

ionic shoal
#

sure

deft cape
#

whats the exact line of code for MaskedPatches.cs:4791?

deft cape
ionic shoal
#

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;
}
deft cape
#

ah so it's not the samples being null for sure

buoyant jacinth
#

C over C++ as well?

ionic shoal
#

nah, but ill still check that anyway.

deft cape
#

for silerovad i used C just because i forgot a lot of the c++ syntax

ionic shoal
#

samples was 2304.

deft cape
#

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

ionic shoal
#

well, as i said, its not null now.

deft cape
#

oh im blind

ionic shoal
#

but no audio comes through the walkies xD

deft cape
#

weird...

#

does PlayOneShot() work differently from Play()?

ionic shoal
#

not a clue.

#

wait

#

maybe it is working...

#

O.o

#

i hear some audio trhough the walkie suddenly.. but its sketchy.

#

and very quiet

deft cape
#

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

ionic shoal
#

well the audio does seem to be playing

#

let me try to record, so you can see what i mean

deft cape
#

sounds good

ionic shoal
#

no worries, ill be off to bed within 2 anyway.

deft cape
#

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

ionic shoal
#

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.

deft cape
#

i don't need to drop a walkie talkie for the masked?

ionic shoal
#

nah

#

we were talking about blocking the audio from playing, when it shouldent play... so that can come later

deft cape
#

ah sounds good easy enough to test then

ionic shoal
#

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)

deft cape
#

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

ionic shoal
#

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..

deft cape
#

oof all good

ionic shoal
#

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.

deft cape
#

@ionic shoal do u mind sending me ur compat dlls btw, just so it's easier for me to build and run/test

deft cape
ionic shoal
#

sent you a zip of the compatibility dlls folder btw

buoyant jacinth
#

Mirage was the reason i found out my mic is shit in Lethal Company

#

Any ideas why could it make weird ah noises xd

timber notch
#

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

deft cape
#

yeah thats when it'd make sense to keep MEOF with mirage

buoyant jacinth
#

Not a single other game nor app has this issue

#

Only in lethal it makes super weird noises that i can not record

timber notch
buoyant jacinth
timber notch
#

I just meant in general

buoyant jacinth
timber notch
#

Try this

#

Oh

buoyant jacinth
#

Still not helping as it's too terrible for some reason

timber notch
#

Weird

#

Are you sure lethal is using the right mic?

buoyant jacinth
#

There isn't a lot of options lol

timber notch
#

Have you tried the default settings in the voice mod?

buoyant jacinth
#

I mean yeah

#

It starts with those xd

#

Before i go for further changes

timber notch
#

Hmm

solemn ridge
#

For DissonanceVoiceSettings try these settings

timber notch
buoyant jacinth
#

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

buoyant jacinth
#

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

deft cape
#

interesting that a mic that's too good makes it bad in this game 💀

#

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)

buoyant jacinth
#

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

deft cape
#

what mic are u even using

#

is it some really highend one

buoyant jacinth
buoyant jacinth
#

Speakers

deft cape
#

high quality sound settings making your pc crash takes skill

deft cape
#

@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

ionic shoal
ionic shoal
#

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.

deft cape
#

btw would u say the mirage interop stuff is good enough and it'd be safe for me to push my update?

ionic shoal
deft cape
#

ill hold off a bit then since im not even sure how that would work

ionic shoal
#

Well I plan to test with my friend soon, so I'll know regarding that shortly

deft cape
#

sounds good lmk!

ionic shoal
#

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.

deft cape
#

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 😄

ionic shoal
#

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

deft cape
deft cape
#

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

ionic shoal
#

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)

deft cape
#

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

ionic shoal
deft cape
#

icic

#

just wondering if i should maybe lower the default or keep it at 1.0 🤔

ionic shoal
#

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

deft cape
#

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

ionic shoal
deft cape
#

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 generated Mirage.General.cfg and Mirage.Enemies.cfg configuration 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.
  • SpawnOnPlayerDeath as 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.
timber notch
#

While I know it wasn’t the update you were wanting to release, your countless hours of hard work don’t go unappreciated.

autumn glen
#

loving the new icon barch <3

deft cape
deft cape
#

looks so sexy

autumn glen
#

on god!!!

timber notch
#

Yeah the new icon looks freaking awesome

deft cape
#

frfr

thin sonnet
#

having mods with more support and updates like LethalConfig?

cursive scroll
#

Is there a way I can delete all the records for voice lines for all the clients? (For the new voice recording thing)

clever knot
#

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

deft cape
#

not sure why it'd crash 🤔
idk if i missed something

#

disabling lethalsettings should actually be causing it to crash

deft cape
#

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

thin sonnet
deft cape
#

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

thick venture
#

lethalsettings causes the same issue for my modpack

thin sonnet
thick venture
#

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)
clever knot
#

When opening the game

#

Everytime I click on a LethalSettings option:

deft cape
#

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

thin sonnet
hollow violet
#

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?

thick venture
#

tested again

#

its not lethalsettings

#

its mirage period LMAO

#

I'm assuming it works without lethalsettings because that might prevent mirage from loading

deft cape
#

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)

deft cape
thick venture
#

were a lot of the older settings removed with the new update?

deft cape
#

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

thin sonnet
#

yup, crashed :,]

thick venture
#

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

deft cape
#

mob toggles are in the config

thick venture
#

where's the config file located/named?

deft cape
#

Mirage.General.cfg and Mirage.Enemies.cfg

thick venture
#

ah alr there they are

#

they didn't generate before or either I didn't notice them oops LMAO

deft cape
#

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

thick venture
#

ohhhhhhhhhhhhh

#

alright nvm that explains it LMAO

deft cape
#

yeee

thick venture
#

yeah I was loading into the menu

deft cape
#

is it not crashing for u anymore

#

how are u setting the LethalSettings menu

thick venture
#

I'm able to get to the menu without crashing

thin sonnet
thick venture
#

but loading into a save causes it to crash

#

even now with the config generated

thin sonnet
#

Is when I load a game when it crash

deft cape
#

the problem is idk an alternative to LethalSettings

#

for what i want

thick venture
#

I don't think the issue is lethalsettings though

#

I can run the game fine without mirage but with lethal settings and it works

deft cape
#

on a clean profile it works for me

thick venture
#

hm

deft cape
#

so i def didn't miss any dependencies or anything

thick venture
#

just tried to create a new save instead and it still crashed

deft cape
#

who here has a small modpack that's crashing with mirage rn

thick venture
#

so it works on a clean install from TS

thick venture
#

I'll start disabling mods until it doesn't crash, see if I can find anything

thin sonnet
#

300 mods is not small

deft cape
#

that sounds kinda painful

thick venture
#

it is painful

#

not really a better way though LMAO

#

too many mods

deft cape
#

just play on an older version for now

#

ill see if there's alternatives

thin sonnet
hollow violet
deft cape
#

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

thin sonnet
deft cape
#

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

regal sandal
#

Was there a big update?

deft cape
#

cuz of hardware issues, and this update isnt even supposed to be big

deft cape
#

so at the end it's mostly an optimization update and config changes and whatnot

regal sandal
#

What was removed

deft cape
thick venture
#

hmmm

deft cape
#

only having mirage installed and crashing is REALLY concerning

hollow violet
deft cape
#

wait @thick venture can u try running mirage by itself as well

deft cape
#

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

thick venture
#

understandable

#

I'll give this a try

deft cape
#

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

thin sonnet
#

update mirage

thick venture
#

crashed on clean install with mirage

deft cape
#

so it is a hardware problem...

thick venture
deft cape
#

fuck

thick venture
#

yeah not sure if the log is gonna help though

thin sonnet
#

crashed on clean profile

deft cape
#

brooooooooooooooo

#

i think it might be SileroVAD then

#

kms

#

i'll try and remove that

#

and see if it fixes the crashing issue

thick venture
#

does SileroVAD have any requirements for hardware

deft cape
#

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

thick venture
#

shit alright

deft cape
#

even this update's getting dropped, gg 😭

thick venture
#

wonder if its a minimum specs requirement or just something about different CPU/GPUs

thick venture
deft cape
#

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

thick venture
#

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

deft cape
thin sonnet
deft cape
#

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

deft cape
#

cuz it doesn't seem worth it for me to debug this

thin sonnet
#

the versioning on ts doesn't let you roll back

thick venture
#

whats sucks is that its not even staying alive enough to log whats happening

deft cape
#

nah i'll just reupload it as 1.10 i mean

thick venture
#

that'd make it a lot easier to at least understand the issue

deft cape
#

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

thick venture
#

understandable

#

wish there was a way to force it to at least output what it has

thin sonnet
deft cape
#

ugh so disappointing that it ended this way but it is what it is

solemn ridge
#

I think something is just wrong with the stable build

deft cape
solemn ridge
#

Cus Experimental works fine you should double check you didn't miss something

#

I've had none of the crashing problems not once

deft cape
#

@solemn ridge try running stable

thin sonnet
#

oh, I see, idk why i thought it was v2.0

deft cape
#

cuz im pretty sure it's hardware

solemn ridge
deft cape
#

idk if you saw but i dropped that update completely

#

due to time constraints and whatnot

deft cape
#

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?

thick venture
#

uhhh I could probably find out

#

gimmie a min

solemn ridge
#

Actually @deft cape

#

Did you tell everyone to remove Barchlib?

#

I wonder if it's a duplication issue

thick venture
#

couldn't be

thick venture
#

it happens on clean installs

solemn ridge
#

Anyways testing update

deft cape
thick venture
deft cape
#

can u try and set it to 1 channel

thick venture
#

yeah sure

#

nvm

#

doesn't have the option

deft cape
#

fuckkkk

thick venture
deft cape
#

i think 2 channels might be a problem i forgot to account for

solemn ridge
#

One sec

thick venture
#

only got sample rate settings

solemn ridge
#

Lemme check what mine is set to

deft cape
#

but idk if it actually is that or not so i dont wanna fix that if it ends up not being it

thick venture
#

fair yeah

deft cape
hollow violet
# thick venture

going to echo that I have CD/DVD quality options in mine as well (no FM), and mine is set to DVD Atm

deft cape
#

but i guess if everyone crashing

#

ah

solemn ridge
deft cape
#

nvm then

solemn ridge
#

Not that

deft cape
#

ok nvm yea

#

definitely not a channels issue then

thick venture
#

hmm

deft cape
#

lunxara has the exact mic settings as lilo

#

so it can't be a mic problem anymore

solemn ridge
#

@deft cape It's an issue with Stable

deft cape
#

im not even sure if it's silerovad then

#

oh what

thick venture
#

oh wait

deft cape
#

ur crashing too?

solemn ridge
#

I crashed loading a lobby

deft cape
#

OK

#

MAYBE ITS FINE

solemn ridge
#

it's the Stable update

thick venture
#

is experimental on github?

deft cape
#

BUT WHY DID I NOT CRASH WTF

thick venture
#

😭

deft cape
#

oh wait

deft cape
#

i think it might be a MirageCore issue actually

solemn ridge
deft cape
#

i think i was using MirageCoreExperimental

solemn ridge
#

Yeah

deft cape
#

..........................

solemn ridge
#

Cus CoreExperimental is fine

thick venture
#

no way

#

lunxara

deft cape
thick venture
#

oo[

deft cape
#

try running on this real quick

thick venture
#

nvm

#

yeah sure

solemn ridge
#

Testing

deft cape
#

@solemn ridge u mightve been right this whole time

#

i almost gave up right there

#

was legit tilted asf LMAOO

solemn ridge
#

I knew it couldn't have been Mirage

#

Lol