So welcome to office hours.
We're gonna have to end promptly at 2:30 here because
I've got two dogs that wish to go outside.
Um,
so yeah,
we'll be ending promptly at 2:30 here.
Um,
but let's take a look at questions that we might have already.
I don't see that many today.
I see how you're doing.
I just got back from the first follow-up appointment from all that nose business.
Uh,
they numbed up my nose again so they could stick a camera in it,
um,
and that was unpleasant,
and I felt queasy the entire way home.
I've got some food with me now and some water,
but I have to eat it slowly.
Otherwise I,
I,
I quite literally will puke.
Yay.
As for what the dog is doing,
I've got two dogs right now.
I'm looking after a friend's dog for a couple of weeks because they're in,
uh,
on vacation.
I mean they're in Peru or something,
which sounds exotic,
so
hopefully they're having a good time.
Uh,
the other dog is
not as well in tuned with me.
Like I can look at Federer and know exactly what he wants,
uh,
but I can't look at the other dog and know exactly what they want.
But I know that they want to go outside right now.
I know,
I know that's what they want right now.
They're just like staring at me,
so we'll end at 1:30 and get them out.
Uh,
Vimport says,
how's your telephone metaphor going?
It's going well.
I need to,
uh,
go through it again,
like on a second pass.
Now I've had a day to kind of think about it,
cause some of the naming is a little bit weird.
Uh,
like I,
I still have it open.
I do,
I do still have it open.
Can I show this?
Like,
is this safe code to show?
Uh,
I have to validate that.
Did you know that,
um,
you know,
the Doman Studios has an official policy on um what code we can and cannot share?
And uh I think it should be OK.
I've just gotta
figure out where I am
on what planet I'm on.
That's grab Aable,
I need grab er.
There's grab burr.
Yeah,
sure,
we can share this code.
If I end up in a
problematic place,
then whatever.
Um,
uh,
so here is,
uh,
where am I?
What planet am I on?
Uh,
can save.
Am I on the right branch?
I am.
Here it is.
Oh,
here we are.
So,
um,
this has moved out from a
uh from a conditional.
Um,
sometimes when conditionals get really,
really long,
I get like I get really irritated uh when I'm like adding
stuff to them because it sometimes ends up being like 8.
Sure,
abstract line painter,
whatever that is.
A and B
and
C,
sure,
but like not
D
and.
Not
7,
right?
And you're just like,
hm,
I can't really read that anymore,
so I,
I break it out into a method.
This can also be unit tested in the future,
um,
but you can see here that we have,
this is the permission system which we didn't
want to integrate with because the permission system
um.
The permission system like is
like the Hulk,
whereas this grabable save block is like a,
you know,
like a a surgeon,
right?
strategically what they did.
What I did was I made all of the like blocks that we've got,
and not all of them,
that's why we've got to go through it again.
I made them all inherit from this eye grabbable action block um which
allows us to to do some cool stuff which you saw over in.
In grab where it's like,
hey,
are we holding an action block and I I can like
typecast the type that you can search for
to make sure that it inherits from
my new grabable action block.
But the problem is like this isn't always used for grabables,
it's sometimes used for
uh interactions as well,
so it's probably gonna be like I interaction,
action block or interaction block,
something like that.
Something like that,
so I'm gonna,
I'm gonna rename it.
There's also a problem in the
um
in one location.
Uh,
I need to,
yeah,
I need to go to grab block.
In one location we're unable to,
yeah,
no,
not there.
Oh,
that's right,
because I,
I interfaced it as well.
It's I grab block,
yeah.
Yeah,
it's here.
So here,
we don't have the grabber,
so I need to to get the grabber here so I
can use the the new thing because this method here.
Is what I was replacing.
Um,
we do get components in parents like a lot,
and we were doing it like
a lot,
a lot for these block components,
so I just sort of extracted it away.
So like here this one is like,
hey,
in the grabbed objects,
do we have this particular block and then we can look through and we can be like,
hey,
um,
if you're holding the grab we save block whilst you're
in the on send message of the contact session,
hey,
you can't,
you can't send that
cos that would be one that would have been forgotten if I hadn't done it this way.
And then here's the,
the one for saving it,
and then here is the inventory browser,
so again it's like,
hey,
are you holding an I grabbable save block?
Then you can't save it.
So like it it looks good.
I just need to like clean up the uh dependencies um and then wants the like,
and the naming as well.
And then uh you know,
fruits will,
will probably destroy the PR somehow.
Uh,
I do joke around about that,
but like they are like the guardian of the quality
of our code base and the design of resinite,
so they have every right to
destroy anything I'm doing.
Um,
where were we?
All right,
let's move on to the next question.
If you imagine like every bad software project that you've worked on,
um,
the reason why it's bad or has bad code is because Freaks wasn't there,
um,
being like the overall sort of architect and and visionary for
how things go together.
Most of the time,
like most of the time,
he's like,
this is good code.
It just design wise is problem.
Like most times in in in in like code you we have a problem with like design,
right?
We're like,
hm,
this doesn't work for this design reason.
It's usually not like a like code grade thing,
it's usually something we've missed
uh from like parts of the engine that we don't understand.
I've got Cyra actually looking into some of that.
So one of the problems that we have is,
let me think of a component that will be safe to do this on,
I mean,
gravel will be fine.
Oh no gravel is like way too complicated.
Uh,
oh no,
so it here,
right?
So this here is one of the properties that you can see in the inspector for grab.
I'm not showing my screen,
am I?
Yeah,
I mean it honestly frus,
I'm just joking around.
Like,
occasionally I'll get grumpy because like it's been
a long time on one particular review,
but like the end result is that we get a cool engine,
so like it's fine.
Uh,
let's go back into Freak's E.
Yeah,
so one of the things I was,
I was,
um,
I was going to look at at some point,
but,
but sir actually took it off my hands because they were interested in it.
As you see here,
this is the grabable component and there's a bunch of sort of properties on it.
You might recognise some of these if you,
if you used grabable,
and you'll see they've all got a yellow squiggly now.
And the reason why they've got a yellow squiggly is because it says,
uh,
you know,
CS 8618,
non-nunable field repairent and release must contain a non-null value and exiting
constructor considering adding the required modifier
or declaring the field as nullable.
The problem here is we can't do
that because syncs are handled like entirely automatically
by stuff which like Visual Studio isn't aware of.
And so what I,
I,
I was gonna do is I was gonna look into making a rule called CS 8618-da freaksen,
right?
And it would Apply 8618 to every single data type
that wasn't part of the data model,
and we'd probably like have a list of allowed types on there would say like,
hey,
if it's a sync,
don't flag
uh 618.
If it's a sync delegate or a sync ref or a sync list,
anything like with the word sync in it,
it,
it shouldn't that um it shouldn't flag 8618 um but if it's like,
you know,
if it was a regular variable,
maybe it would be like a
public.
Ah,
string cheese.
Again here,
this is a correct indication of uh 6 8618,
because like,
hey,
if I don't give this a value,
then
um
it could be no,
right?
So what I could do here is I could say hey equals string.
empty
and then that,
oh yeah,
OK.
Other rules going on there,
but now it's happy because I've given it a default value.
But we can't,
we can't do that with these.
There's nothing that we could put here.
So that was what I was looking at.
The reason why I mentioned that as well
is that
um
we'll be able to do additional stuff for that.
Like,
for example,
there's stuff that bounces around and freaks his head,
where it's like,
you shouldn't do that because it will cause this problem.
And
we can write a rule for that.
Again,
it won't be CS 8618,
uh,
it would be.
Uh,
fruit's engine #3.
And when I do something like that in the codebase,
the code will automatically in Visual Studio or the lento or the CI,
it'll be like,
hey,
you can't do that for these particular reasons.
Here's a link to a documentation page which like Prime or Hope.
as we,
you know,
grow up,
uh,
grow in terms of like our,
our engineering resources,
more people will write such guides,
etc.
and they can link to like an internal coding wiki and it'll be like,
hey,
you know,
like a common one is like translations,
like there's 5 or 6 different ways
to like get a translated string onto the screen.
And
depending on what you're doing,
you need to use one or the other.
And so we could,
we could catch that with a custom code analysis rule,
and then we could link to a page that was on our internal wiki that said,
Translating resonate strings.
And it provide,
like,
you know,
a full page guide for like,
anyone who's new to our team to read that guide and be like,
Great,
I understand now.
And what that means is when that would occurring for that particular problem,
Frus wouldn't have to deal with that in code review anymore.
I wouldn't have to do that deal with that in code review,
and neither would any other engineer that's doing code review,
right,
cos the build would fail and it would say warning.
Frus engine number one,
Frui says no for very specific valid reasons.
I know it was like a huge
side tangent,
but,
but there we go.
Automate stuff,
automate me.
Yeah,
so,
uh,
I'm not sharing my discord,
I'm just sharing Visual Studio.
Yeah,
OK.
I got to like rummage around in DMs for a second.
Here,
um,
these three articles,
uh,
I recommend reading all of them,
and I recommend you
maybe listening to this recording back once you've
read all those because like everything that like
I just mentioned is like covered in
these articles at least once or twice,
sometimes multiple times.
Um,
I also really like the drawings that this particular
user uses on their drawing on their blog articles.
I haven't actually like checked at the website to see what else they blog about,
cos like maybe I should,
I should read more,
maybe they talk about,
uh,
some other stuff.
That's cool.
They've actually got something which I'm like fairly interested in,
um,
as another one,
so I'll take a look at that later.
Don't marry your podcast platform.
Host your own podcast feed.
That's essentially what I built for my office hours during the whole,
uh,
NIA stuff.
So cool.
I'll have to see if I can subscribe to them.
I used to have like an RSS reader and I would like subscribe to like a
bunch of blog articles and I would like try and keep up and reading them.
I tried to keep the list empty,
but like it just sort of like,
I lost that list and and now I don't really know what to do.
So that,
that's all list.
Oh.
Gone,
if you like.
Uh,
let us,
uh,
stop sharing my screen for a second.
Uh,
stop streaming.
Stop streaming.
Thank you.
Uh,
and then go back over any additional questions that we have.
Uh,
so that's the telephone metaphor question done.
Wow,
we got through 3 questions and it's 4:15.
Uh,
Kestre says been meaning to ask this now,
wandering your team thoughts in the OSCE request.
Whenever you're referring to a request,
if you can link the GitHub issue as well,
don't assume that I've seen it.
In some cases I literally won't have seen it.
I'm gonna do you a solid,
and I'm gonna go ahead and Google it for you,
um,
because,
uh,
I'm,
I'm feeling particularly nice today.
I got a lot done.
Like I had the first follow up of after the nose surgery,
that went fantastic.
Uh,
then I,
uh,
I popped into Target cos I was,
I was looking for like labels,
like,
you know,
basically like adhesive stickers that are blank that I can write stuff on,
uh,
and I found them in,
in,
in Target,
which is fantastic.
So there we go.
Uh,
did a few more errands and then I got stuck in the bus system.
I had to take a bus
from
Target
to like a a park and ride.
And the park and ride dropped me off on the side of a highway and I had
to walk down through like an 8 story car
park down the stairs because of course there's no
uh elevator.
Uh,
and then I missed by like 30 seconds because,
oh,
I'm sorry,
I wasn't fast enough on the 8 flights of stairs I had to do.
Uh,
to get the bus,
so I had to sit in like blaring sun for 20 minutes waiting for the next bus.
I know like,
I,
I like,
let's let's let's have a show of hands here.
Who in the audience is like a water bottle,
Andy?
Like you always carry a water bottle around?
Cos I'm not.
Like I lose it,
it gets gross,
it gets mouldy,
um,
I forget to fill it,
I forget to empty it,
I don't know
like
how long it's been since I cleaned it,
all sorts of stuff like that.
I.
Yeah,
I have,
I have a collection of water bottles in my
cupboard that have all been mouldy at some point,
and
when they get mouldy,
I'm like,
hey,
I screwed up somehow this is bad,
right?
And I'll clean it the best I can and then I put it through the dishwasher.
But then it goes into the cupboard and I can't
quite bring myself to use it after it's been mouldy.
I suppose it's a bit like a toilet,
right?
You don't want a second,
no one wants a secondhand toilet.
Um,
if,
if you have water bottles that you can recommend
that are like,
they,
they have to be aggressively simple,
like aggressively simple,
and the reason behind that is like any nooks
and crannies or straws or lips or grooves or like
um places where crud can accumulate,
it will,
and I will just like think about it.
I don't know if it's like a sort of like
um
money thing as well,
like I,
I would always rather just like
buy a drink out and about.
And yeah,
I know it's expensive,
but like I would rather do that than
carrying around like a potentially like mouldy thing.
I also get really funny about uh stale water as well.
I can't drink stale water.
Uh,
I have a Brita philtre,
it's in the fridge.
Uh,
when I get my own place and I can actually,
you know,
buy my own fridge,
I'm gonna buy one of those big fridges that's got a water philtre on it,
and yes,
I will clean it.
But just something about like
infinite filtered cold water coming directly out of the hole in my fridge,
uh,
sounds like heaven,
cause right now I have to remember to fill up my Brita philtre manually.
Although I was looking at getting a larger Brita philtre,
there's one that's sort of more rectangular.
Can we get back on track?
Let's get back to questions.
How did we get to water bottles?
I don't know.
Anyway,
um.
OSC query,
let me just scan read this.
Uh.
So there's a HTTP server that you stand up
that acts as a broker
for OSC based ports and stuff.
So it's like service discovery for OSC.
Um,
just reading this through,
like I think what you actually want
is for us to support VRCFT,
uh,
Oyasui VR,
ITrack VR natively.
Like if we supported those natively,
we wouldn't have to then implement OSC query.
So from a sort of
prioritisation organisational perspective,
uh,
why DMS now needs to make a,
like an assessment.
Do we spend the time implementing OC query,
or do we spend the time just directly implementing these like face track providers?
Like there is an issue for VRCFT I know.
I don't know what your Somi uh VR or IT track VR are,
um,
but uh I'll have a better look at it,
but that's just like my
um.
That's just my like initial
like thing,
it's like you want to do
service discovery of oversea endpoints
for the process of manually implementing face tracking.
Now we should be doing that for you.
So we have to kind of like
flip flop and figure out which one we can do first.
All right,
moving forward,
Trump says tere update,
we'll do that right at the end and only for like 5 minutes.
But yeah I had like a a a metal
vacuum walled
really nice
um
bottle.
It got mouldy.
uh I had a plastic one that got mouldy.
Uh,
during like high school I used to like grab like a
plastic bottle and just use that like in my bag.
Um,
that never got mouldy cos I'd just like throw out the plastic bottle.
Uh,
let's move forward,
so I've got to scroll through all of the,
the water bottle questions.
Uh,
no,
actually,
I've got to scroll back through them.
Uh,
telephone metaphor,
text update.
OK,
Marty says if there's a policy,
what kind of code can you not show?
Yeah,
it's,
it's hard to sort of reason about,
um,
because a lot of it is sort of due to,
uh,
like security and stuff like that.
Like a good example of something I,
I wouldn't show would be anything to do with login or ban evasion
or like a business contract.
A good example of something I can show
is violent April Fool's explosion.
Right,
absolutely,
you can see April Fool's violent explosion.
But if April Fool's violent explosion,
like,
I don't know,
if it did cryptography to like
process payments or whatever,
that would be a stupid thing to show,
right?
Um,
additionally,
I don't show anything from the cloud because although
hypothetically,
if you could gain access to the machine that the cloud servers run on,
you could decompile the code that's on there.
Um,
it isn't something that we distribute to our,
uh,
player base,
so
the,
um,
you know,
showing the code there is like,
it's like extra secret.
Uh,
for example,
right now I could share my screen and I could
show you how all of the fruit badges are established.
Uh,
fruits would be incredibly angry at me about that though,
so I'm not gonna do that.
But I will show you April Fool's violent explosion,
cos you've asked.
Uh,
April Fool's violent explosion is also like a really good
example of like a a like a unity feeling component.
Like it feels like something that I could have easily made in unity as well.
Um,
because like what it does when you,
when you attach it
is like it sets itself up,
sets itself up with like
sound effects and materials and stuff,
and then it just listens to events.
And that's really like the beauty of components in
unity or in in Fruits engine or or whatever,
like.
If you get the right
design,
like everything's sort of automatic,
and that that's what happens here,
right?
This is all
very logical,
um,
very logical code.
This one at the bottom here is just like a a helper method to
do it on any given area.
Alright,
let's move forward on our questions.
Red says,
why is dynamic impulse tag command sync but dynamic impulse type
tag value async uh hm.
There's lots of comments going on about cryptography and stuff like that.
Yeah,
um,
if I'm ever like audibly speaking about security mechanisms or anything like that,
I take everything I'm saying with a grain of salt.
Like when I do security based work,
I have to like sit down,
get my like bigger glasses on
and like sit there like.
Turn into an old man,
a little bit,
put on some slippers and like seriously sit there and think and like
absolute silence and I'm just like,
all right,
what are we doing?
securing thing.
OK.
How do we do that in a reasonable way?
Let's make sure we do it properly.
But if I'm talking about it,
yeah,
who knows,
we're gonna say all sorts of shit.
Uh,
where are we in questions?
Uh,
basis,
yeah,
basis.
What are your personal thoughts on basis?
Yeah,
the last time I looked at basis,
um,
I saw some activity,
but not like
that much activity,
and I've just gone back and I've said,
yeah.
Uh,
so the last activity was 3 weeks ago.
Now I'm not someone who would say like,
hey,
it hasn't had an update in 3 weeks,
that means it's dead.
Um,
but I do see like sporadic activity,
which is interesting.
One of the other things to note as well about it
is that
it's difficult to compare or
or look at simply from the fact of like,
a lot of stuff needs to happen the same way,
like no matter what you do.
Um,
the structure of this project is like
really weird as well.
Like the the the the the GitHub repo is kind of strange.
Like where's the engine?
I'm in asset,
I'm mean basis,
basis,
assets basis
and there's no code.
Oh,
basis packages probably.
Uh,
yeah,
here we are com.basis.
I don't.
I,
I wish them luck.
Why have they got
assembly?
No,
that's not assembly,
that's an ASM death,
that's a a unity thing.
Yeah,
let me lock last week's questions.
Uh,
thank you for that.
Alright,
moving on from basis.
I wish them luck.
I'm gonna keep looking.
The one item feedback I have is,
hey,
your Git repo is kind of confusing,
but,
but that's because it's a unity project.
I don't think like Unity like wants you to use Git.
it works,
but like I don't think they want to.
Like metaphiles and all that stuff,
it's just a mess.
OK,
now on to.
Yeah,
I,
I didn't miss you.
I'm I'm just
working it down.
I'm working down.
Do you have any fun plans for more CICD?
Yes,
so
we're moving.
It feels like that like Sisyphus,
no,
is that,
no,
that's the ship.
What's the one about the man that that pushes the boulder up the hill?
That is Cyphesus,
isn't it?
It feels like that,
like CICD is going to be like that all the time.
And you can see that with like the um the dependencies that we we we we have sometimes
um
the
uh new packages,
all sorts of stuff like that.
But we're having it right now,
for example,
because Fruits has moved
leap motion stuff
and Vive stuff
over to
uh Fruit Extension from the Unity Project.
And in doing that,
we wanted to update it and we wanted to publish it.
There's a dependency,
which requires CICD which requires licences and all sorts of stuff like that.
The end goal is that
at any point that we want,
we can just say to someone who's not our computer,
like let's say like Fruits is on a train,
you could just say to a server somewhere,
Hey,
could you do like a a resinate build?
um,
you know,
and.
It will go,
sure,
and it will do everything.
And when I say everything,
it will do everything.
It will upload it to Steam.
It will publish the release notes to Steam.
It will publish the release notes to um Discord here.
It'll probably publish the release notes to Twitter or whatever.
Um,
you know,
it will do everything.
Like there will just be a big button.
Fruits will push it
and it'll be like done,
and then he can like he can sit back and he can marvel at his work.
What is that like Iron Man Jericho missile?
Yeah,
here we go,
this is,
this is perfect,
right?
So I push the green button
and then the the build will just launch.
It's even got like a furry head of Photoshop to it.
That's the end goal of CICD and and we will get there.
I just think it's gonna take
probably longer than we imagine.
Uh,
moving forwards,
we did basis.
I didn't answer Red's question.
I kept skipping it accidentally.
Let's head over to Headless.
Uh,
Solution Explorer,
cloud audio.
I forgot audio was there.
I haven't even looked at audio.
Let me just open a random audio file and go yay,
yay,
1.
I opened audio Inlet,
which actually doesn't have that much code in it,
but there we go.
Uh,
headless commands,
uh,
headless commands,
here we are.
Handler register commands,
save config,
log in,
log out,
message,
invite,
friend request,
accept friend requests,
worlds,
focus,
start world,
start world template.
Status session euro session ID copy session euro copy session ID users close,
save,
restart,
kick,
silence,
unsilence
ban unman list bans ban by name.
OK,
we'll keep going
respawn,
uh,
name axis level hide
Max uses spawn.
Oh,
here we are,
we're getting there uh.
OK,
so the answer to your question is very boring.
Uh,
dynamic impulse,
the command,
which doesn't have any data,
triggers it using trigger dynamic impulse,
and dynamic impulse string,
flow in,
whatever,
uses trigger async dynamic impulse with argument.
I don't particularly know why,
but uh
there we go.
There is no uh oh
no,
there is one that does it synchronously.
There is trigger dynamic impulse with argument T
that could do it synchronously,
so I,
I don't know why these are asynchronous.
If freaks is still there,
uh,
I might be able to help us out,
but,
but there we go.
There's no other command,
it's like a,
a,
ah,
this,
this stuff you can just see,
hold on.
Yeah,
it's not another command,
that's why it's not documented.
Share the right screen again.
Yeah,
good,
cool.
Uh,
so here are the,
the commands and
uh this is just for string,
but like
uh in and float are the same,
they're just like lower on down here.
So you can see here,
uh,
this one has no data
and so it uses trigger dynamic impulse.
Uh,
this one has data in this case it's a string,
so it does trigger async dynamic impulse.
But if we go into here by doing control click,
you'll see that this one has no argument.
This one
does,
and then there's an async version of both.
So I don't know why we're not using this one there,
but like there has to be a reason
because like.
That's a much longer phrase to type.
Maybe,
maybe there's something I'll get blame.
Uh rixius on
The 11th of the 7th.
Oh,
yeah,
that doesn't know.
That's just like when it got moved from like .NET 4 to whatever.
I like one of the other reasons I can't wait for
us to be like done with this whole like .net bullshit
is because like the,
the versioning of .net versions prior to 5 are so confusing
that like.
I had to write them down on a piece of paper and pin them to my wall,
and I've lost that piece of paper now.
Fella,
could we not bark at the door,
thanks.
36 being cool without a weight.
Uh,
yeah.
It is,
that'll be a
task.
So this will be a task here,
this will be
task in a task,
yes,
task in,
and then we would have to
like this,
this is like
not gonna log
the in.
This is going to log the task and
ah make a GitHub issue and we could take a look at it there or whatever.
All right,
looking for additional questions,
we did basis,
we did CICD,
we did the dynamic impulse,
scroll through my code review links.
Now we're down at,
alright,
see any other questions.
So I,
I,
I think we're gonna have to leave off cos these
dogs are gonna piss and shit everywhere if I don't,
basically.
Uh,
if you're typing right now,
I'll take your question,
otherwise we'll we'll leave off.
Unless I've forgotten anything,
did I forget anything?
Tech tree,
yes,
I did miss the tech tree.
I'll give you a,
a look at the tech tree.
I do have some updates to make that I'm aware of.
This poor dog is just scary,
staring at me.
It's like,
please take me outside.
All right,
let's see,
uh,
there's no easy way to do this one,
so I'm just going to have to do it.
There we go,
there we go and.
Can I edit the text inside this box,
please?
Thank you.
There we go,
uh,
it's on the,
um,
it's on the wiki,
um,
and it gets updated when I,
when I,
when I post it.
And yeah,
it,
it's 100% not official.
Look,
Ma by Pro might be wrong.
Like,
basically,
the more um
specificity or
uh scrutiny is placed in the tech tree,
the less I want to interact with it.
And so like if it's wrong,
like for a couple of weeks for some reason,
just let it be wrong,
right?
We'll we'll,
we'll get it.
Like,
it's not official or anything.
We've actually got a similar one of these now for some internal stuff now as well.
I was using that to explain to the team
um how we make money.
I guess the splittings like happening right now,
um,
so we can do.
Uh,
let me
And that is done.
I don't know why that got detached,
that's why we attach it.
Yeah,
if it's just bugs,
we'll call it done.
Sometimes I hate this app,
but I want to click the arrow.
Thank you,
and I want to link them.
Uh,
let's see.
Oh yeah,
we can,
uh,
split this in two.
How do I,
oh,
it's up 5.
I'm gonna forget who made the community event system we're using.
Let me see,
uh,
talking about it literally yesterday cos I got sent the,
the GitHub link by,
yeah,
Gly sent me the,
the GitHub link.
Brodo,
is Brodock one of the first people that I got like,
hold on,
let me,
let me let me double check.
Did we have I don't I have the,
no,
I,
I didn't have the whole Klingon conversation with Brodock.
So there are a bunch of people in the resin I uh community
who have names which I feel are Klingon or would sound better with a Klingon accent.
Uh,
and I mean,
uh,
Star Trek Discovery Clios as well.
Who was it?
I think it was Verroc,
yes,
it was Verroc,
which you don't think,
I can't remember what they're called.
Anyway,
basically the names sound like click on names and whenever I see
those people in passing,
my brain reads it
in a Klingon voice and in my head like a Klingon like warrior says it,
like the visual of a Klingon warrior says it.
Um,
but you have,
you have to like,
it's Brodo,
you know,
it's like the Klingon way of
saying everything and Baruch,
Braddock and Vuk fought in battle.
They made an event system.
Uh,
but yeah,
uh,
so we're gonna be using,
uh,
that.
Let me go ahead and
see what I can do here with
there's a Broddock's,
uh,
picture,
and I'm,
I'm gonna be setting that up and
maybe we should get goudley.
Oh,
no,
should get,
uh,
how do I,
it's the easiest way to get,
ah,
there we go,
I found.
image,
can we stop barking like please.
A bunch of people are are like
helping out,
making that happen.
OK,
let's see if there's anything else,
uh,
anything on my end.
Uh,
hey,
we did this.
Uh,
this is done now.
Uh,
Red Hat we still haven't done because we've got some free type stuff to do.
Uh,
I haven't done.
Oh,
this is like really close to being done.
Uh,
it just needs the UI put in the,
uh,
in the settings panel,
and you'll be able to reset settings on individual categories.
Uh,
physics sweeps is almost there,
as well,
so that'll be good.
Splitting in is happening,
we might as well.
Uh,
like,
uh.
Cos this is like
everyone's like,
hey,
the splitting started,
what's happening?
What the mesh optimisation,
mesh mesh upload optimisation.
C is done,
yeah.
Anything else blue.
Hey,
like,
one day,
I
I like,
I promise,
like it it's so frustrating to me that this happens.
One day I will do low motion mode,
I promise.
I just,
I don't think it's gonna be this month or next month.
But I will,
I will do it at some point.
Can we,
I think,
I think that's it.
There's like a bunch of other stuff,
but like I can add it when people uh ask for it.
Otherwise we'll be here all day.
Like for example on audio,
uh there's some other stuff like there's some other features that we'll have
that that could come off here,
but
I don't I don't,
I don't need to do that.
Stuff that should just work,
oh yeah,
let's just,
I'm just gonna put like
compressorator and then 3 dots because,
yeah,
screw compressor.
Still,
still having fun with compressorator.
Amazing library.
What I don't understand about the library is that it's abandoned.
It seems like it's like a revolutionary library,
right?
It can,
it can,
it can compress images to like a bajillion different formats,
but it like it seems like AMD has completely abandoned it.
So like my,
my brain is like,
well,
if,
if they've abandoned it,
they must be using a different tool,
and if they're using a different tool,
is that open source too?
But can we have a look?
Well,
we already have a fork.
Uh,
and we're gonna have a a larger fork after this,
um,
after I figure out what's wrong as well.
We do have an evil resonate version.
I do contribute back to,
um,
back to the source,
like,
oh,
I have,
I think right now 1,
and there'll probably be like 2 or 3 more once I figure out what's wrong with it.
Um,
PR's open to the source of Compressinator.
So if that team does wake up and,
and,
and wants to merge it in,
that's fine.
Let's not
um
put any sort of ill intentions or ill
will towards the team responsible for compressing,
right?
They are ultimately employees of an organisation that are
paid to do jobs that they're assigned to do.
And if for some reason the organisation
has decided not to invest in Compressinator,
then
it's not
their responsibility to to change that,
uh,
so let's not be angry at them,
but like still like it's just
abandoned.
So it's,
it's kind of confusing.
Uh,
you can look at the Reflection Pro issue for more information there,
but there was a bug linked
that someone opened on the compressorator source,
and it was like,
AI found this bug,
and it was some sort of like bit shift that was wrong,
and I'm just like,
yeah,
that's quite clearly wrong,
and I can quite clearly fix that.
Like it'd be like a,
I think a single character change in the C++ source code,
but I just have no idea if that's going to break anything.
So I've got to take a look at that a little bit closer.
Uh,
we wouldn't need it to be API compatible at all.
Like it,
like
it would be better if it,
it,
it wasn't.
But we can,
we can swap out compressor for something else quite easily.
We can even like swap out
compressorator for certain
compression schemes,
and we do do that.
Uh,
so
certain compression schemes you use a
crunch compression rather than compressor AO.
Compressionator is basically only used for block
compression and a few other things.
So
if you can find a library that does block compression,
um,
BC1 through like all the BCs,
then,
then maybe we can,
we can fit.
I could probably get you the list of ones that we use.
That we use compressor for.
Uh,
here we are,
block compress.
Find all block compress.
Uh,
so,
of note here,
uh,
the ASTC ones are already not supported.
Uh,
compressor need to removed ASTC support.
So we are looking for an additional ASTC library.
Um,
not many of the graphics cards or devices that people are using these days right now
can use ASTC encoded images,
but that will change as more and more people move to sort of this current generation.
There is some benefit for ASTC,
so we would like to eventually get that sorted.
The particular one that we're trying to fix right now is BC6H.
BC6H is uh the one that is compressed it is just dying.
I would ignore the LZZMA on top,
that just means we do
block compression 6H
and then follow it up with an LZMA.
And that's more for sort of like archival purposes.
So like it's a block compressed 6H image
that is then archived as an LZMA compressed stream into uh into storage.
Yeah,
smaller than one.
So if there's libraries out there that
that support those particular compression formats
and you think they're good,
hit up a GitHub issue and and we can take a look.
Until then,
I'm going to be beating my head against the wall for
BC 6H.
I just don't see what other option we have other than.
Just try and fix it.
When I say like try and fix it,
it makes it sound like I've been working on it for hours.
For the past week,
I haven't really touched it.
I've been recovering from nose surgery,
doing some other stuff.
Uh,
Last week was completely washed due to a
bunch of sort of like business paperwork stuff,
so
it hasn't been actually that bad and I haven't really spent
Anything more than a day trying to figure it out.
So I'm confident that with like a week or maybe even like 2 or 3 days,
I'll be able to at least have some idea
about where to start and the possibility of me maybe improving that situation.
Uh,
with that,
I'm going to go ahead and take this dog
out because they are barking at an increasingly frequency,
which basically means like,
Dad,
I'm going to poop myself,
so I'm going to take the dogs out
and then I'll get,
um,
I'll get this exported so we can get updated in the wiki and stuff like that.
Sunnydale's exists,
but I think I accidentally deleted the image,
like all the images after T take a look.
Sunnydale does exist on our system,
so,
uh,
I will speak to you soon.