#0.14 Bevy Jam
1 messages ยท Page 5 of 1
actually that lets you see the current bg color but not the next one
how about this
when transitioning from screen A -> B:
- spawn screen B underneath screen A, UI interactions disabled
- fade the opacity of screen A over time
- despawn screen A once it's fully transparent
as for actually implementing this idk if it's possible
too invasive for the template
yeah fair enough
I actually want to rename it to something containing the suffix System. Not because I have any preference here, but because that the name that many libraries expose, so I think there is some level of expectation there
honestly, my proposal is too big too
i feel like there's not really a standard. i've seen Step, Set, and System as suffixes, or even no suffix
sometimes Steps
Ah really? Very possible that I've just randomly mostly come accross the ones that do System, then
I've never seen it personally, but I believe you
probably 3rd-party crates
Lemme check some big ones
there's this hehe https://docs.rs/avian2d/latest/avian2d/schedule/enum.PhysicsStepSet.html
System sets for the main steps in the physics simulation loop. These are typically run in the PhysicsSchedule.
Avian is Set
StepSet ๐
Yeah, but thats a step from physics ๐
sure
High-level system sets for the main phases of the physics engine. You can use these to schedule your own systems before or after physics is run without having to worry about implementation details.
Let's see LWIM
SystemSets for the crate::systems used by this crate
System
https://docs.rs/bevy_asset_loader/latest/bevy_asset_loader/loading_state/struct.LoadingStateSet.html
Systems in this set check the loading state of assets.
bevy_mod_picking: Set
Groups the stages of the picking process under shared labels.
lightyear: SystemSet
API documentation for the Rust InputSystemSet enum in crate lightyear.
in the ecosystem it seems yes, in bevy proper it seems System is the majority
But eh
Kinda interesting split
yeah i agree with that. i wanted to name something like StateSet
instead i went with StatePattern :p
How about we do SystemSet as a compromise?
at the very least i think a bevy issue to make the suffixes consistent is reasonable? or at least Systems -> System
too long imo, System is already pretty long
in terms of correctness though i get it. Event is a common prefix for events for example
Let's go with Set then? I don't like it much, but if that what the ecosystem mostly uses, I'd like to follow suit
seems like everyone in the bevy ecosystem was like.. SystemSet is too long. let's remove one of the words ๐
works for me
in which case it should be AppSet and not Set ofc
hehehe
or something else-Set
What do you want to do with the bad / malformed theme suggestions?
probably remove and let the user know so they can submit something else?
You mean the ones like
"Maybe do something with the new 3D rendering options"?
Yeah, or the ones with long explanations
Hmm. On one hand, it would be nice to have them be homogenous. On the other hand, they historically don't get any votes anyways
how about ping the author and let them fix it or lose? ๐
Like "hey, your suggestion is malformed, you will probably get no votes FYI"?
Yeah, that's probably the way
I like that that one doesn't delete anything. Seems friendly enough.
Now what do I vote ๐
No need I have decided lol
BTW I hope you're enjoying your vacation @prisma delta. I've seen you respond to stuff on GitHub and couldn't help but think "Stop working!" ๐
The lack of responsibility is the big one lol
But mucking around helps me be less overwhelmed when I get back
Oh I believe that
vote autoCAD like the rest of us obviously
I'm supremely intrigued by that theme
Some borderline ones:
Fubar beyond destruction
Worms-like (the artillery game genre)
Mechanic Syndrome (It works when you go to get help)
This Jam was brought to you by Technicolor, and shot on location in the Uncanny Valley.
Should I ping all of these?
Hrmm
the first one i just don't understand what it means
the other ones could be pinged with a quick explanation as to what should be changed
no explaining the theme, or too long / specific
The first one is really obscure. The second and third one, I get why they added the explanation. Number 3 should probably just be "It works when you go to get help"
Yeah, I'd ping them
kk
Actually, one of you want to handle this? You have my blessing to pester folks โค๏ธ
Be nice about it, and explain that historically themes with these problems get almost no votes
Sure, on it ๐
Would you write them publicly on #jam or dm them?
you could probably ping all of them in a single message?
Yeah, I'll do that
as long as the reasoning isn't super specific for their particular theme
o just noticed there's at least one double-suggestion
rewin has two suggestions
I'll post it here first and then you can tell me if that's fine ๐
Publicly in #jam ๐
Consider grouping the pings by problem
Hi birds :broovy:
Us from the Jam working group have spotted some submitted themes that are phrased in a way that, in our experience, makes them unlikely to be picked.
In general, themes that are easy to understand, quick to read and need no explanation have done better than others.
These are your themes and you're free to leave them as-is, but we've got some suggestions for how to improve them if you want.
@ivanceras: Fubar beyond destruction -> Total Destruction
@physgun.: Worms-like (the artillery game genre) -> Artillery
@__lyynn: Fog (there are things to do with the new volumetric lighting system) -> Fog
@screamsinjank: Mechanic Syndrome (It works when you go to get help) -> It works when you go to get help)
@__rewin__: Time travel and multiverse (let's blow our minds) -> Time travel and multiverse
@frank_7674: Mechanics Mayhem: Focus on unique and unconventional game mechanics as the central theme. -> Mechanics Mayhem
@__rewin__: Everything in this game is procedurally generated and there are no assets -> Total Procedural Generation
@dreamertalin: This Jam was brought to you by Technicolor, and shot on location in the Uncanny Valley. -> Uncanny Valley
@floppydisck: Focusing on some of the new features would be nice, like the lighting and fog improvements -> Lighting
Additionally, the following themes are very close to another one already submitted. Feel free to edit your post if you want to change it to a new one.
@neo.blondie: time travel and multiverse
@onkoe: cad software :)
@stdpi: cad and construct seems fun
Lastly, the following users have submitted two themes! Do you prefer to keep your first or second one?
@__rewin__, @jetp250, @DokkaeCat
in you want -> if you want
i'm not sure about providing suggested replacement themes, i think a general "this is the issue with your theme" would be better
and grouping the user tags by issue
Alright, sec
missing a paren for screamsinjank
error: unbalanced parentheses, does not compile
good jam theme
Hi birds :broovy:
Us from the Jam working group have spotted some theme submissions that are phrased in a way that, in our experience, makes them unlikely to be picked.
In general, themes that are easy to understand, quick to read and need no explanation have done better than others.
You may want to edit your post to improve your submission.
May be difficult to understand:
- @ivanceras: Fubar beyond destruction
Shouldn't include an explanation:
- @physgun.: Worms-like (the artillery game genre)
- @__lyynn: Fog (there are things to do with the new volumetric lighting system)
- @screamsinjank: Mechanic Syndrome (It works when you go to get help)
- @__rewin__: Time travel and multiverse (let's blow our minds)
- @frank_7674: Mechanics Mayhem: Focus on unique and unconventional game mechanics as the central theme.
A bit long:
- @__rewin__: Everything in this game is procedurally generated and there are no assets
- @dreamertalin: This Jam was brought to you by Technicolor, and shot on location in the Uncanny Valley.
- @floppydisck: Focusing on some of the new features would be nice, like the lighting and fog improvements
Of course, these are your themes and you're free to leave them as-is :)
Additionally, the following themes are very similar to another one already submitted.
Feel free to edit your post if you want to change it to a new one.
- @neo.blondie: time travel and multiverse
- @onkoe: cad software :)
- @stdpi: cad and construct seems fun
Lastly, the following users have submitted two themes! No worries, but could you please decide which one you like best?
- @__rewin__
- @jetp250
- @DokkaeCat
May be difficult to understand: @ivanceras
Shouldn't include an explanation: @physgun., @__lyynn, @screamsinjank, @frank_7674
Too long: @__rewin__, @dreamertalin, @floppydisck
Very similar to an earlier theme suggestion: @neo.blondie, @onkoe, @stdpi
Lastly, the following users have submitted two themes! Do you prefer to keep your first or second one? @__rewin__, @jetp250, @DokkaeCat
Better?
heh
Same time ๐
i think including the suggestions verbatim may not be needed?
I'd be happy if I got pinged with the submission
understandable
Otherwise I'd have no idea what I submitted tbh
But that might just be me being forgetful
btw all the multi-suggestions are exactly 2 of them, in case that helps improve wording
seems we split into issues pretty much the same way
Has or needs an explanation:
this might be confusingly worded though
Ah, lemme change it then
ironic
true lol
I took your wording
@prisma delta what do you think about this? ๐
okay i like the current iteration personally
Yeah I'll post it like that
oh btw
you can link to this channel directly
split it into multiple messages?
Sec
curious what the "blocked content" is lol. spam detection ig?
Yeah multiple messages = no blocked content
nice ๐

rewin pinged 3 times ๐
I hope this won't be necessary, but we should encourage people to delete wrong submissions and enter new ones
Right now it's not a problem, but I'd rather not have an (edited) theme win
technically you can see the edit date i believe if you hover over:
hm, that should be fine then
just remove edited post submission
yeah you can, all good then
thoughts on screen transitions:
Okay so after some more thought, my current stance is that this feature would clearly make the template's game better, but it's not clear that it would make the template's code better, which is what users will be interacting with.
Opting for wont-fix for Bevy Jam 5 + reconsider later, especially if Bevy adds some new features that make screen transition code simpler and easier to add/remove.
agreed
looked at other trait naming conventions
Plugin is 100% consistent :)
and there are so many plugins, so that's impressive
Huh, didnโt expect that!
events are always either Event or no suffix. which i think is fair, sometimes the suffix would make readability worse
Yay!
Agreed
no concrete states are provided by bevy proper
Idk about how to do Triggers
Theyโre technically events, but I kinda want to make it obvious that theyโre meant to be observed
Exactly
yeah tbh they should be different traits, or the functionality should be unified somehow
but that's been discussed
Yeah its typing is a little bit awkward right now
Has Bevy consistently named its observables OnFoo?
bundles are 100% consistent
well observables only just landed ๐ i think bevy proper only provides the component events?
I thought some internal things were ported? I guess that was just an open issue and not yet implemented
Schedules have no real convention. Neither do components
So that really only leaves system sets, huh
i consider components to be consistently no-suffix
since none of them use a Component suffix
checking the same for resources
im keeping track in a list :)
all good
Could you open an issue on Bevy for the inconsistent SystemSets?
i'll probably open an issue for all naming inconsistencies at once i think
huh for schedules it's just ExtractSchedule that's the odd one out?
Oh wow, forgot about that one. Yeah, that should have no suffix.
CameraDriverLabel odd-one-out
API documentation for the Rust UiLayoutSystemRemovedComponentParam struct in crate bevy.
what's that java bean factory meme
basically everything is fine except SystemSet and 3 stray type names
ik marker components are inconsistent too but didn't bother trying to find them all
for next jam, I'd love to experiment with something to help with theme voting ; ludum dare "tournament voting" process is so much fun
we've created 12/20 of the latest upstream bevy issues 
could you add an entry for this template in https://github.com/bevyengine/bevy-assets/tree/main/Assets/Templates?
I was waiting for that until the README was done
Approved all ๐
Working on the macOS CI right now
Afterwards, I'll start a hackmd for us to work on the readme
And then I'd say we're done?
I'm adding animation cause why not
that'd be cool ๐
i will need a bit of feedback on how to structure this properly
BTW @prisma delta could I get some clarification on the "officiality" of this template? I have understood the following, but I want to make sure I got it right.
- The template is not part of the Bevy org because of two main reasons
- The Bevy foundation has not enough maintainer-power (what is the gender-neutral term for manpower?) to guarantee that it stays up-to-date
- The Bevy foundation at this point does not wish to enforce official opinionated ways of structuring a game
- The template is thus in a second-party repo managed by a working group
- The template is "semi-official" in so far as that
- It is officially endorsed as a good starting point for jams
- It does not use third-party crates
- We take care of incorporating feedback by the community
So, that was the intended state of things. Given how in-flux this is (needs user testing, needs broader feedback, needs engine features), I'd like to strike "It is officially endorsed as a good starting point for jams" from the list and change the itch.io page to link the minimal CI template + the Bevy Assets page for templates (to which this should be submitted)
(i like horsepower or FTE 'full-time-equivalent' as neutral terms)
Thanks ๐
I'm very pleased with how this work has gone (lots discovered, and lots to steal!), but I don't think this is mature enough to recommend to people coming to Bevy for the first time
That's a bit of a bummer :/ Agreed that the template page should be linked, but I feel strongly that this should at least be preferred over the CI template for beginners. We took great care to remove the parts that clash with the immature parts of the engine, addressed the feedback we got and simplified a lot in the process. What would be missing to regain that status?
I honestly don't think template is a good "learning material", it's meant to showcase basic functionality, but that's inherently complex due to the amount.
What the template gives is the ability to have a functional game without learning all that was necessary, you can straight up ignore parts of it and play around with specific features.
Examples are the begginer level learning resources
Personally I've never downloaded a template and went "okay let's read all of this now"
User testing is the big one for me. I'd like to do a pass on it myself once I'm off vacation, but even the carefulest examination won't stand up to users mucking around and breaking things.
The bug testing pipeline:
- Deep core developers make a feature
- User interface developers find bugs in core features
- Template makers find bugs in user interface
- Users find bugs in templates
bonus if you find rustc issues
Alright, that's fair enough.
I do want to promote it unofficially in #jam, and get folks with a bit more experience trying it out and roasting the patterns ๐
In terms of engine features, I'm also very annoyed that we don't have basic input-action mappings for use in a vanilla Bevy template 
I do like that it seems that 'second party' has become the way to describe our affiliation since I used it yesterday lol
That sounds good. Keep in mind that it's likely people who dislike a certain pattern will voice that while people who are okay with it will probably not write anything. Sorry, I notice I'm being a bit protective here of the project ๐
Yeah I stole that from you ๐
I really really really want LWIM upstreamed ๐ฎ
We're also entering a stage where engine provides 2-3 solutions to more generic problems and then it's a matter of preference
Continue to steal from me in that regard, after all: "Good Artists Copy, Great Artists Steal."
BTW, for audio (especially on web), you really need to load the various sounds into memory ahead of time or you'll get nasty stuttering
Hmm, you mean we need to add an asset loading stage without bevy_asset_loader?
(But fwiw I feel like it's an apt discriptor of our 'status')
Yep ๐
Alright, I'll note that in the issue. Thanks for the heads-up
Is it okay if the assets/template description reads like this?
The template brought to you by the Bevy Jam Working Group.
A great way to start working on a jam entry. Includes a basic project structure.
Yep, this is great
bevy_asset_loader is handy and I use it in 90% of my stuff, but implementing a loading state without is pretty trivial and not scary.
Especially with the new substates!
Ah, good to know! I never looked into the implementation and just kinda assumed it did some magic, haha
Also I presume that work will continue on this template after the Jam...would we still want to organize in this wg even afterwards or? This doesn't necessarily need to be answered now, but I thought I'd ask just so that I don't forget.
(things I want to steal for the examples...)
I'd like to rename the wg to just "Bevy Jam" and continue work in here, if that's fine for @prisma delta
Yeah, that's fine by me ๐
I have a suggestion: when you take a peek at the template after your vacation, you could write down a list of stuff you'd like to upstream as examples. We can then turn that into issues on the template so that we can submit individual PRs for them.
Will do!
I have found that I kinda like adding examples to Bevy ๐
It's nice to be able to focus on just a single feature and showcase it in the best way possible
Yeah, it's really satisfying
Regarding the jam in general, I don't want this comment to go unnoticed. I've never participated in a Ludum Dare, but I assume tournament voting means voting in a series of diminishing theme candidates?
yes, I can write a summary of the ludum dare process when I've got the time if there's interest
Thanks ๐
maybe from the release workflow?
Feel free to delete it
Moving the ducky looks supremely blurry on my macOS. Is this an issue on main on other screens as well?
@agile dirge would you mind starting the application and moving the duck around real quick?
Dunno how visible it is in the video
But the sprite is not looking "crisp" while moving
I think the effect is visible on fullscreen
i mean
if i freeze the video
any given frame the duck is crisp
so it's not an app issue
You're right
This may be because of the missing visual interpolation that was yeeted with the fixed timestep
After all, in every frame, the ducky will move by a very heterogenous amount
If so, I guess it's fine to leave it?
That's fair
I can check it out after I fix the macOS stuff
Itโs really annoying to debug since the OS just tells you "this is wrong, I do not like" without any indication about what exactly is missing
k
Have you seen that we need an asset loading stage after all?
yes
it's from manually triggering the release workflow without pushing an actual tag
@bitter sparrow I addressed your comments
idk where you got the powershell syntax from
it's not in the code you linked to
probably a mistake though, i think it will error when run
nope
that's bash syntax
yeah there's no way that could work on a mac. pyr is talking about the specific line pointed to in the review
and I have no idea where that came from, not mine
the | Out-File ... is powershell
haha, sorry, it was so far right on my screen that my mind just blinked it out of existence
exactly
there you go
im so annoying for adding suggestions that just add a period to the end of a comment ๐
will review some more
@slender belfry left some more comments
i think the "upload package to artifacts" step is accidentally missing, and the "upload to itch.io" job needs artifacts or it won't upload the mac release
@slender belfry dumped comments
btw unrelated but i just want to share that i think i've got a great entity spawning API using entity commands
resources required to spawn an entity are decoupled from the system that spawns the entity, and an entity ID is returned immediately, and the ergonomics are nice imo
I think in the past it was suggested to just use https://crates.io/crates/cargo-bundle for mac packaging but I never looked into it / don't remember who suggested that.
just had to write a few extension traits to add some methods missing from upstream bevy
mac is so extra
it's an executable, what more do you need ๐ฉ
metadata and a specific package format apparently
@bleak grail might have had opinions about universal binaries, dmg vs app, cargo-bundle, etc.
Didnโt know about that, gonna try it out later ๐
Share
Im curious what you crafted
extension traits here: https://github.com/benfrankel/bevy_jam_template/blob/main/src/util/patch.rs
UI widgets here: https://github.com/benfrankel/bevy_jam_template/blob/main/src/ui/widget.rs
example spawning the title screen here: https://github.com/benfrankel/bevy_jam_template/blob/main/src/screen/title.rs
if i could make w/e change i want to bevy, i'd make spawn take an EntityCommand instead of a Bundle and then impl<T: Bundle> EntityCommand for T
then you could do both commands.spawn(widget::menu_button("Quit")) and commands.spawn(NodeBundle { ... }) instead of requiring spawn_with for the former
the other thing that would make ergonomics a little bit nicer is being able to use SystemParams in entity command functions
for now you can use a SystemState at the top of the function if needed
actually idk how this interacts with being used in a command instead of a system
yea
Isnt that the same version you posted earlier?
@bitter sparrow I addressed everything on the macOS PR
hmmmmmm
i think i made it work better somehow but idr
ah wait I did not, sec
i think there was some edge case before
that made it annoying for a spawn function to call another spawn function
but maybe i'd resolved that already and forgot
Now ๐
almost perfect
(I'm so sick of macOS build pipelines, please release me from my suffering)
the thing is
kill me
when i release you from your suffering
that's out of the pan and into the oven
github actions will be your next code reviewer
Sounds cozy ngl
addressed
thanks
merged, you can go ahead and trigger a release
whelp, this will take a while now since it has to build for two targets
probably still faster than the windows job
tbh maybe it's possible to split it up into three jobs
two to build for each macos platform, one to combine them into the final macos package
so the build jobs can run in parallel
make it work then make it fast tho ofc
Feel free to do that, I'm not touching that beast any more than necessary ๐
oh yeah for sure. ive spent enough time on the release workflow that i feel like i know what i'm doing with the code atp
which is sad, i shouldn't understand how the release workflow works
That great, actually ๐
CI is supposed to be unintelligible
You could try generating the yaml from a more esoteric language?
Some custom DSL maybe?
TIL
Every function, variable and statement in Pyth is a single character. In addition, [...]
Oh it's actually fairly simple.
You see, a codel in Pieฬทtฬต ฬธiฬดsฬถ ฬถlฬธiฬตke an iฬตออmฬทฬฬแธฬธอแธกฬตฬฑeฬทฬฆ's แนฬถฬซiฬตฬณฬxฬทฬ ฬแบปฬทฬกlฬธฬฬ.
Sอฬome Piฬตฬขรซt prฬดoวซrร ms aฬดrฬตฬปeฬถฬณฬ ฬทฬฬupscรกlศฉd, ฬดอฬฅmฬดฬซฬฑรซฬดฬขศลiฬตฬอnฤฃ thaลฅ แบก cอoฬตฬนdฬทฬฤฤบ mแธญgอhฬถฬขฬฒtฬทฬฬฑ ฬดฬจแนลลฃ alแบรคแปตลก ฬทฬขฬbฬตฬฤ ฬตฬจฬข
ฤ
รฝฬดฬจฬงsฬตอฬผ ฬธฬขฬฐbฬตฬฬฤฬดฬซ ศ
qฦฐรฌแนฝฬอรคฬตฬฐฬฅฤบฬถฤลt tศฏ 1 piฬดฬขฬกxฬถฬจฬจeฬตฬกฬขlฬธฬขฬ,ฬตฬฬ ฬดฬจฬจbฬตฬจศt a รงฦกแธฤฬธฬงฬฉฤพฬถอฬฅ ฬทฬงฬงแปฬถฬขอล แบฃlแบรครฝฬถฬงอลฬดฬผฬฏ ฬทฬa sฦฐbstituอฬฐtฬดฬขฬฤฬตฬงฬจ ฬดฬงฬฃfฬตฬฬนฦกฬธอฬ rฬถฬขฬ pixฤls.
im sure it would make looking at our CI code much more enjoyable
the benefits end there though ๐
No one will be able to submit a PR to the CI
idk if that's a pro or con tho
Need a quick approve on something trivial
done
Guess what. It really is faster to build twice for macOS than once on Windows ๐
not surprised, considering windows takes 3x as long as the other jobs ๐
heh i see the exit button in the web build on itch.io
target = "wasm" should be target_family = "wasm" i believe
Oh I wonder if it's multiple logins or something?
hmm if it's about the-bevy-flock user, it should just be francois
It's the terrorism we've been sneaking into the template ๐
amazing
Approved, but was that the only place where we used the wrong thing?
ope there are more. i'll add to pr
๐
hehe
also it seems the manual release workflow created a v0.1.0 tag. that's better than creating a main tag so should be fine
Yep!
Alright, my next task is writing a nice README. Here's the collaborative hackmd: https://hackmd.io/@hohenheim/H1dRzMhDC/edit
I hope no Discord bot scrapes this link and posts crypto in it
spooky
What to do with bad jam suggestions? Typos, explanation...
5
7
2
Ping the author and remove them
btw we're currently using Esc to go from playing screen back to title screen... unfortunately Esc is bad on web because it cancels fullscreen
not a big deal but mentioning
makes perfect sense on native tho
Hey all! I'm not sure where the best place for this is, but I just created a Notion project to help organize my team for the jam and I think other teams could benefit from it as well.
You should be able to duplicate this template and customize it for yourself using a button in the top right corner. https://hot-bolt-35e.notion.site/Bevy-Jam-Team-Planner-8ea225058e894660b463dedffa33ede6?pvs=4
Would anyone find this useful and if so, how could we get the word out?
this is the right place ๐
Linking it in #jam now and as the jam starts would be good
BTW, I'd really like a team-matching mechanism
Maybe we just do it manually?
how would team-matching work?
usually there are various requirements for a team, like at least one artist, or matching timezones, matching goals, etc.
People write in a designated chat with their role and experience and we match them?
That's the sort of requirements I'd like to figure out ๐
But yeah, #jam-find-a-team always feels kinda unhelpful and chaotic to me
btw. funnily enough, previous jam i teamed with 1 other person and we had completely different timezones
Add a little checkmark emoji reaction to the people that were already matched
Oh right, thatโs important as well
we convened twice a day when we were both awake, and then we'd swap working solo for the day
which actually surprisingly was an advantage
no merge conflicts or arguments during work time, so it can be more productive
Yeah, I don't think I'd want to be in the same time zone ๐ค
automatically creating a thread on each post in #jam-find-a-team maybe?
some people don't like receiving dms, and creating a thread yourself is a barrier
some kind of template for posting info about yourself and what you're looking for in a team could be helpful in organizing the posts
Talking about time zones: I'm off for the night, see ya ๐
like "my timezone is xyz, i don't care about others' timezones", or maybe you do care
I have a section in my notion template that covers team bios and I found that just having a bit more structure to people's introductions can do wonders for matchmaking:
Overview
[Enthusiastic one sentence introduction goes here!]
Interests
[favorite games and other interests go here]
Portfolio
[links to portfolio, github projects, notable social media accounts, etc go here]
Jam Availability
Time Zone: CST
[days and hours of availability during the jam go here]
Contact Info
Discord:
Github:
Well, perhaps it should take up less vertical space for the discord version ๐
Hi, I'm Pyrious! I love bevy blah blah blah...
Skills: Code, pixel art, etc.
Timezone: GMT+55.
Availability: I'll be busy but can contribute a few days.
Portfolio: https://pyrious.itch.io
Favorite games: Minecraft, Noita, etc.
contact info less relevant for matchmaking and more relevant after the team has been formed
other lines that could be included:
Goals: I want to submit a game!
Looking for: Similar timezones, someone with music skills, etc.
bumping this
@slender belfry am i reading this right that the MacOS package has assets in bevy-template.app/Contents/MacOS/assets/assets/?
working on release.yaml in my own template. will make a PR after everything looks good
At least not in the final package, no
Maybe you could speed up Windows by using LLD? Don't bother with cranelift though, it's really not there yet on Windows for anything but cargo check, which I'm not even sure it speeds up since that shouldn't produce any LLVM anyways
interesting.
i can give that a shot as well
That would also be nice on non-Windows targets
Added cargo generate support! Run cargo generate TheBevyFlock/bevy-template --branch cargo-generate
@hidden pond ^
I also removed licenses from that branch
In theory, we could ask the user if they want to keep it or not
But eh ๐คทโโ๏ธ
smart
nah it should 100% default to no licenses and user can add their own
@agile dirge I've left reviews on your PRs ๐
my github workflow-fu may be powerful enough now to combine all of the jobs into one matrix job. we will see
It was decided against in the official template to not introduce complex CI concepts
I have come to treat the CI template mentally as more of an extension of bevy/examples, so in that vein, that makes perfect sense.
I'd be interested in seeing that. I suspect that I will have no clue whatโs going on, but Iโm ready to be proven wrong ๐
@bitter sparrow got a small CI improvement: https://github.com/TheBevyFlock/bevy-template/pull/121
updated Prs
Went ahead and also added cargo-cache and sccache to speed things further up.
ok, will check out once im done with matrix change
want to finish it while it's in my head
390 -> 318 lines isn't as great as i was expecting, but:
- it builds macOS in parallel
- my template is not using
trunkyet, so i have to do those steps manually - had to split some steps into smaller steps to make each platform align so they can be merged
- had to add "if platform == web" etc. checks to a lot of steps
still have to test that it works :p
thoughts on using variables instead of env for configuration?
instead of values directly in the release.yaml file
i'm thinking probably not worth
would be useful if we had multiple workflows that need to access the same variables
Is that at the same place as where the itch.io secret goes?
If so, the user needs to go there anyways, so it might save them from having to touch the workflow file
it seems to be the same page, yes
the real reason i asked about using variables is because it'd let us remove the useless check-if-itch-is-configured job lmao
i did find a way to make that job more concise though
i really waited 15 minutes for CI to fail with this error message
mv: './tmp/bevy-jam-template-linux/bevy-jam-template/run' and './tmp/bevy-jam-template-linux/bevy-jam-template/run' are the same file
(i actually ended up fixing 3 errors from the one CI run i just thought this error was funny)
i discovered that rm -f xyz is not an error if xyz doesn't exist
but mv -f xyz xyz does error lol (whether or not xyz exists)
Prs updated
Approved both 
Good work!
Thanks for doing that! Apologies for taking so long. IRL has been busier than normal lately >.>
No worries ๐ Feel free to add options to the generate.toml, thereโs a bunch of possibilities I didnโt implement. The user currently has to enter an itch.io name, but it would be nice if that could be left blank, which would disable that part of the CI. We could also add their name to the credits automatically.
Added asset credits into the game
BTW @agile dirge I just realized that I didn't even try the sounds out yet, I always had the game on mute.
Checked it out now and it's very very fun ๐ Love the footstep sounds combined with the music, it's so cute haha
Got a super tiny PR: https://github.com/TheBevyFlock/bevy-template/pull/124
oh yeah you were missing out
Ah, good. I'll close my PR then.
@bitter sparrow I addressed your comments
shouldn't cause a conflict though
๐
so wrt the remaining comment, i misread
but im still a bit confused
the other jobs run 1. scc-cache 2. cargo-cache 3. cargo build, in that order
the macos job has two cargo builds
Yep, and I think cargo cache reads the current target and caches that. But I'm not sure. That's why I ran it twice
Figured it can't hurt ๐คทโโ๏ธ
then cargo cache should run after cargo build in the other jobs?
What? no
current target would be empty before, though
It fills the target IIRC
hm ok
But I'm really really not sure. Summoning @lunar sail
In any case, I know it works now. It might just be running once in the macOS flow without doing anything, but eh
I figured if you can split the macOS job it won't matter
yeah
as then they will both also follow sccache -> dtolnay -> cargo-cache -> cargo build
oh it automerged lol i approved with 2 nits
all good just comment nits
hm
is it wrong to run wasm-bindgen after wasm-opt?
i'm getting an error during wasm-bindgen currently and wondering if this is the reason
left a few nits. largely looks good though so i'll approve after
also clippy complaining about an unused import
one comment, will approve after
done ๐
That definitely sounds wrong, yes
Fixed them in https://github.com/TheBevyFlock/bevy-template/pull/125
appreciate it
Triggering a release to populate caches
should populate on CI as well? is the cache shared between CI and CD?
i'm assuming yes
It is currently not, no
ic. they use different profiles actually so that makes sense
I think we can configure cargo-cache to reuse the CI cache in CD
But that will only work for Linux
approved, committed a quick tiny fix
scale = 1 should be the default
gah
for translation yea
right
hehe
but hear me out ๐ ๐
we're representing infinitely thin shapes
/j
mind if i delete 0.1.0 tag and add it again, so this version goes on itch?
i wanna check audio stutters
release workflow should upload to itch regardless
well you can delete main tag for sure
the release workflow should be creating a v0.1.0 tag now instead
np to delete that as well, it'll just be recreated
good to make sure trunk works
i should prob try out trunk on linux just to be sure. have never used it
Feel free to cancel and start a new one. Mine is just to populate caches.
the asset preloading landed earlier so it should be fine as long goes to itch
Oh wait, it's done anyways ๐
no stutters ๐
No stutters for me either ๐
Only some visual stutters because of lack of interpolation, but that's fine
No, just running it on a shitty laptop ๐
I also get no visual stutters on my desktop PC ๐
Looking through the issues, I think the only thing missing is better readme: https://hackmd.io/@hohenheim/H1dRzMhDC/edit
Feel free to add brief TODOs and comments in there, I'll try and write everything out nicely later today
@lunar sail about to roast how wrong I was about how cargo-cache works ๐
Hi. Indeed cargo-cache will fill target and some other folders, so it should be used before cargo build.
But I didn't check out sccache yet so I'm not sure how the two interact or if sccache can fully replace caego-cache
just wanted to share while i'm going insane, i got the most blazingly-fast ubuntu-latest instance in my latest release attempt
3:19 to cargo build + wasm-bindgen + wasm-opt for web release
meanwhile windows is still going at 13:00+ ๐คช
Hmm, at first look, sccache might be able to replace cargo-cache ๐ค
cargo-cache is also a bit hacky as we had to work around the limitations of GitHub's weird caching system. Maybe sccache can also work more reliably
I don't have much time this weekend to look into it, but I'd recommend to try out just using sccache for a project and looking in the CI logs to see if it's sufficient
I'll test it right now ๐
Running a release now with pre-built caches using both LWCC and sccache
Will then write a PR to remove LWCC and then trigger two releases again
Thanks! Curious to hear what you'll find :)
Got a trivial PR in the meantime: https://github.com/TheBevyFlock/bevy-template/pull/126
And here's the PR for removing cargo-cache: https://github.com/TheBevyFlock/bevy-template/pull/127
Looks like sccache is not caching anything ๐
mmm another way to do this would be let _ = app_exit, but that's kinda indirect
that's supremely ugly, plz not
:p
the cfg spam is ugly too but yeah. code would be prettier with bevy_mod_picking
It might only work for subsequent runs. You can try pushing an empty commit once this CI run has completed
I was using sccache + LWCC before
so it should not matter
Hmm.. then I'm not sure
Same. I don't really want to spend too much time on this since cargo-cache is working nicely already. I'll remove sccache for now instead
make a question issue about sccache probably
Once I have more time again I'll try to look at sccache in more detail
Feel free to use bevy-template as a guinea pig ๐
merged
hurray!
also my WIP matrix workflow finally succeeded (up to the itch.io upload where it failed but i know why)
idk if the packages are actually good yet but it's almost done
Oh great CI wizard, could you also merge main into cargo-generate whenever a PR is merged?
(And maybe create an issue if there's a merge conflict)
๐ฐ
Not a big deal if not, I'm just doing it by hand every now and then ๐
maybe but definitely not in the near future lol
๐
after the jam maybe
so the workflow im working on has two matrix jobs
build and package
build produces binaries as artifacts, and package produces packages
so build produces 1 more artifact than package, because of the double macos
Makes sense
noooooooo
oh the upload lol
@agile dirge the synchronized steps with the animation are supremely cute as well hehe
packages look good under manual inspection of their internal structure
besides macos cause i cant open .dmg
i'm doing a zip named bevy-template-windows.zip which contains the structure bevy-template/{bevy-template.exe,assets/}
the version number isn't needed in the package name because itch.io and github release both have custom ways to specify version number
Can you upload it somewhere?
I can check
will make a PR as soon as i get this green + add cargo cache
you should be able to see it here? https://github.com/benfrankel/bevy_jam_template/actions/runs/9910265871
in the artifacts
rip
wait, I'll try the build artifact
seems 7z can extract .dmg on linux, i'll try inspecting the internals
I think that's good for the build artifact?
Contents of the dmg look like this
Info.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>bevy-jam-template</string>
<key>CFBundleExecutable</key>
<string>bevy-jam-template</string>
<key>CFBundleIdentifier</key>
<string>Pyrious.bevy-jam-template</string>
<key>CFBundleName</key>
<string>bevy-jam-template</string>
<key>CFBundleShortVersionString</key>
<string>v0.1.0</string>
<key>CFBundleVersion</key>
<string>v0.1.0</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
</dict>
</plist>
The executable flag is not set
It tries to open the game as a document
just yours
pretty sure that's the issue
can you throw in a chmod +x before packaging?
ok. i wonder if that's due to the binary being uploaded as an artifact then downloaded to be packaged
maybe the flag gets lost during that sequence
yeah i can try that
And that was not a problem on Linux?
I mean, I guess Linux users are used to setting chmod +x manually
that is also true ๐
yeah the flag is missing on linux as well, runs after adding it
and yeah confirmed the flag is set for bevy-template
cool it's consistent then
only weird thing is the wasm file shouldn't be marked executable (currently neither of them are)
wow
it's literally a known issue since 2019
And yet again the template runs into edge cases ๐
why was bevy-template not hitting this i wonder
ah the download is when the zipping occurs, apparently
wild bug to not fix ngl
is it a big deal if the .wasm is marked executable
if not i have to edge case for that as well
which is do-able EDIT: did it
linux and web builds confirmed working now
will add cargo cache then make pr to bevy-template
cargo cache worked, i updated my CI as well and will try to bring the improvements to bevy-template
starting with ci.yaml because it's easier
the main difficulty here will be the web build, because it uses trunk
which creates the final package directly instead of creating a binary first like all the other platforms
web: 0 binaries, macos: 2 binaries ๐
i think web build will be better off not being in the matrix for bevy-template
so i'm still a bit confused about cargo test @slender belfry
cargo test --all-targets: does that test docs?
cargo test does i believe
๐ญ
Documentation tests
Documentation tests are also run by default, which is handled by rustdoc. It extracts code samples from documentation comments of the library target, and then executes them.
this is why i'm confused about cargo test vs cargo test --all-targets
like it seems to me that --all-targets actually reduces how many targets are being tested (specifically removing doc tests)
from the man page
I don't think that is the case. When I use rust-analyzer without --all-targets, it will not show me all errors, but also take up less space on disk. There is something going on with things like binaries and examples.
rust-analyzer may have different logic than cargo-test
for example cargo-check man page says that by default it checks binary and library targets
Yeah there's an open issue for that since years
This suggests that any weird behavior is entirely cargo's fault
all targets ||except docs|| 
Some Targets Are More Equal Than Others
rea
๐ฉ
hm well i can just do two commands to be extra sure
in the same job
first all-targets, then docs
Sounds great acceptable
updated pr
Left some final comments
resolved
Approved
(But need to change branch protections since the jobs have different names now ๐)
there we go
Oh heck
Missed something small
ope
That's why the docs step is taking so long, hehe
ah that is intentional
documenting deps so that links to deps will be valid
whether that's actually needed idk, but that is my rationale
Huh, does that actually not fail otherwise?
it wasnt this slow in my template :p
hehe it can't actually merge before yours because I already changed the branch protection rules
so i think the reason the ci is slow rn
is because there is no cache for the doc test command yet
and then all-features balloons the time
we also need RUSTDOCFLAGS='-D warnings'
otherwise the docs thingy doesn't do much
Failed to save: Unable to reserve cache with key Linux-(ffa9cf99a 2024-06-03)-doc-9d2c396dd6346a52c23fcf9d3d30f3533e6b2c25ccd0477a4d22ba88992e775e-60db438780d04b1e73edaa22633702f4b51bd392256300103bbf383b4a87f279, another job may be creating this cache. More details: Cache already exists. Scope: refs/pull/130/merge, Key: Linux-(ffa9cf99a 2024-06-03)-doc-9d2c396dd6346a52c23fcf9d3d30f3533e6b2c25ccd0477a4d22ba88992e775e-60db438780d04b1e73edaa22633702f4b51bd392256300103bbf383b4a87f279, Version: 4464b218375e2702da53c92c2e51ffdd3cdd5aeba23dec304d9c1239b4ef594a
output of CI trying to cache after doc test
ok now try something that exists?
No
idk
i mean in the RUSTFLAGS
no clue honestly
ok
The deeper you look into it, the more
cargo gets
$ rustdoc -h | grep deny
-D, --deny LINT Set lint denied
$ rustc -h | grep deny
-D, --deny LINT Set lint denied
should be good
yay!
also i assume i can just add this to the global env right?
sure
At that point, you might as well set RUSTCFLAGS to deny warnings as well to be safe? idk
oh i did add RUSTFLAGS heh
redundant?
idk. it seemed to hit the cache
Maybe because of the RUSTFLAG?
ah could be
kinda makes sense, since we changed the build config
release.yaml will be even more fun
โค๏ธ
cargo test is still recompiling everything
is it possible that cargo test --doc is yeeting the target?
OH OF COURSE
--all-features is missing
sneakily added it to my already approved PR 
#1261408668159709315 message
@slender belfry https://github.com/TheBevyFlock/bevy-template/pull/132

the LoC savings aren't as big because web build is still a separate job
i think i could combine the two matrices into one by allowing multiple targets per job so that macos can do its thing
well that saved another 49 LoC. will have to test that it works
may be possible to throw the web platform back into the matrix now that there's no intermediate job where it has to produce only binaries
actually i just realized this unparallelizes the macos builds ๐
it may be worth the tradeoff to simplify the workflow, especially since windows takes forever anyways. but probably not
this would solve the issue
unless there's not enough cpu to run two cargo build in parallel on a single runner :p
are built dependencies shared between x86_64-apple-darwin and aarch64-apple-darwin targets? the second target never compiles dependencies
i wouldn't expect them to share though
my current take: keep the simpler approach for now. macos still finishes 3min faster than windows
and only like 30sec slower than linux
in the few release runs that i've tried
if macos becomes the bottleneck in the future, it can be re-evaluated
I got curious about runtime performance with various size optimizations: https://github.com/rparrett/bevy_wasm_bench
looking at the data, there's a lot of it. did you come to any conclusions?
No idea how that generalizes to other HW, and I didn't make a huge effort to make things not noisy beyond closing all running programs, so not very scientific.
Yeah, I have a few takeaways.
opt-level = "s" is great (faster than 3), opt-level = "z" is slow. At least for this benchmark on my hardware.
its interesting that lto="fat" makes wasm-opt significantly faster than with "thin"
lto = "thin" seems better and faster than "fat".
the combined time is still lower with thin but not by that much, more like 10-30 seconds diff afaict
but the runtime is pretty much equal
I am generally slightly suspicious of the data but it took like half a day to gather so I don't know if I'll revisit it too soon, lol.
codegen-units=1 making the combined time lower (in some cases)... interesting
z + z is significant for filesize, but not worth the runtime perf cost IMO.
opt level S having lower frame time than opt level 3 is interesting
That possibility was alluded to be someone or some document somewhere, so it's cool to see that potentially confirmed for this bench, anyway.
seems like the winner is S + S + lto=thin + codegen=1, and strip=debuginfo doesn't really matter
we're currently doing Z + S + lto=thin + codgen=1
s: optimize for binary size.
z: optimize for binary size, but also turn off loop vectorization.
... why would we turn off loop vectorization
ig z is meant to be extra aggressive size minimization. we totally don't need to default to that
it does make a significant difference to size though, so mentioning it as an option for sure
@dawn crag it seems codegen-units=1 had a similar effect on compile time as lto="thin"
im making a pr to the bevy website to update the compile options advice
so i'll probably reword them to both say "slightly slows compile time"
or just "slows compile time" because it's not exactly slight, it's just not huge
interestingly codegen-units=1 doesn't seem to do much besides increase compile times if you already enabled lto
maybe it shouldn't be recommended at all
or that might be overfitting to the benchmark
it's possible codegen-units=1 doesn't do much because the crate being benchmarked is small
idk if codegen-units applies to the dependencies being compiled, maybe it does (like 1 codegen unit per dependency)
BTW just submitted this PR for the cargo-generate stuff:
https://github.com/TheBevyFlock/bevy-template/pull/133
did this, now +130 โ272 ๐
That's pretty good ๐ช
three different types of template variables with cargo-generate in release.yaml is crazy
necessary obviously, but crazy
(cargo-generate variables, github workflow variables, and shell variables)
reviewed ๐
we left the same comments ๐ญ
๐
Left a tiny nitpick
Look "good" otherwise, in the sense that for me, a mere mortal, it sure looks like a workflow.
hehe. the diff is kinda hard to read because the file is mostly fully changed
I like how all the duplication is gone ๐
yep. adding new features to all builds (like caching) is really easy now
Yeah I just looked at the final file
the real test is whether the release will succeed. ive been testing on my own template, but i don't use trunk so there are some differences
Just checked, yes, exactly the same comments hahaha
Move fast, break things!
Approved
made the issue: https://github.com/TheBevyFlock/bevy-template/issues/134
thx!
also it seems the bevy github CI template is trying to be the bare minimum "this is what setting up CI looks like" type of thing
so making the CI fast with caching etc. is probably out of scope there
adding more comments would probably be in scope
but i don't personally feel like maintaining another release.yaml file rn
so bevy-template's README should probably have its own custom explanation of how to set up CI / CD. it should still try to keep it simple though
maybe link to a separate document like README-CI?
@slender belfry gone ahead and updated PR based on the feedback
I already wrote a bit about how to interact with the release.yaml
It all makes sense when you consider the CI template an extension of bevy/examples and not an actual template
Could you merge main into cargo-generate in that PR as well to get @bitter sparrow' work in?
Left some more comments
BTW, I really wanted to have the README done by today, but my health again took a bit of a downturn :/
I'll try to get it done tomorrow. As soon as that's finished, I'll record a little video of the template for the Bevy Assets page, submit a PR there, and then go and spam #crates and #jam
yeah the README is the last thing that needs to get done, everything else is just extra
so we can focus that
I'm really really happy with how the template turned out
I think this is legitimately the best showcase of a Bevy project in existence today
i agree for the most part. i only think we're overusing observers
Alright I've updated the PR.
Very possible. I'm curious how a version using Commands would look.
@hidden pond did you find the EditorConfig plugin?
(this is using a few extension traits patching things that should be provided by upstream bevy, in util/patch.rs)
note that the "entity spawning functions" have full world access and don't have to return anything, and the code calling the entity spawning function receives an EntityCommands for further entity building just like the usual Commands::spawn
because "entity spawning function" is actually just a generalization of the insert entity command
Looks great now, thanks!
Looks pretty sweet ๐ But yeah, it also looks too custom to hand it to a beginner
maybe for 0.16. i'm not gonna push for it at this point. but also i think you could definitely say the same about the observer approach
it's mostly an upstream bevy issue
Those look pretty nice as well. Have you opened a PR on Bevy?
PR no, but they all have issues. i'll probably try and implement them
I'll add in the Licenses stuff sometime later as that'll require...a bit more involved stuff.
Oh btw, I'd like to collect all the issues and PR we've created while working on the template.
as a post-mortem?
Yep
sounds good, should be easy to search based on author
(Also we can do other things. Like provide a template README if we wanted, and also exclude certain files from the 'template'. So that if you use the template those files don't get copied over. If we wanted).
We also probably should get CI setup for the template to ensure the template actually works now that I think about it...but that's not super important right this moment. That'll be useful with the merging from main into cargo-generate branch, to make sure something didn't accidentally break.
It always surprises me how hard it is to get Rust CI right lol
--all-features --all-targets --workspace --please-im-begging-you-just-do-it
starting a release workflow now for testing. somehow the linux build completed in under 3 minutes 
do we know why github forgot that the release workflow is named Release?
it's showing as .github/workflows/release.yaml in the UI
while ci still shows as CI
doesn't matter it's just weird lol
successful :)
need to test that the packages are good though
web build is good
ok the executable is not being renamed properly, x86_64-unknown-linux-gnu sounds spooky and is not intentional lmao
linux build does in fact work though
small PR to fix this: https://github.com/TheBevyFlock/bevy-template/pull/135
approved
do we know why the CI tests recompile every time?
maybe it would be better split into a few jobs to parallelize
not a big deal
someone/something fixed this
It started when we added the --doc to the second tests
Maybe it will work better if we split the regular test and the doc tests into two jobs?
i'll make a pr to try that rq
Let's wait until the CI through and then push something to trigger it again
ok makes sense
current CI is done
pushed an empty commit to the PR
doc tests hit cache, other tests did not
the heck o.O
technically it hit the cache but it rebuilds anyways
the old command:
run: cargo test --all-targets
the new command includes --workspace --all-features
but cargo test --workspace --all-features --doc is fine
can you change it to cargo test --all-targets to see if that really hits the cache in our current setup?
will do
actually tbh i'll try cargo test --workspace --all-targets first. we only have one workspace so there should be no difference
will try a few configurations tho (change commit -> empty commit)
realized that clippy is recompiling too, it's just way faster than test
because it doesn't need to produce a binary
run: cargo clippy --workspace --all-targets --all-features -- --deny warnings
this still recompiles...
all the CI runs for the PR seem to be pulling from the same cache
Cache restored from key: Linux-(ffa9cf99a 2024-06-03)-test-9d2c396dd6346a52c23fcf9d3d30f3533e6b2c25ccd0477a4d22ba88992e775e-60db438780d04b1e73edaa22633702f4b51bd392256300103bbf383b4a87f279
Cache restored from key: Linux-(ffa9cf99a 2024-06-03)-test-9d2c396dd6346a52c23fcf9d3d30f3533e6b2c25ccd0477a4d22ba88992e775e-60db438780d04b1e73edaa22633702f4b51bd392256300103bbf383b4a87f279
the key format seems to be: <OS>-(<CARGO_VERSION>)-<JOB_NAME>-<IDK>
ok from the source:
key: ${{ runner.os }}-${{ steps.cargo-version.outputs.cargo-version }}-${{ inputs.cache-group }}-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/Cargo.lock') }}
Oh, so all jobs share a cache?
so it's a hash of (runner, cargo --version, job-id, Cargo.toml, Cargo.lock)
job-id can be manually overwritten when you use the action
it doesn't hash the actual command we're running (cargo test --etc)
so every time i change the command... it re-uses the outdated cache for that job
all runs of the same job
that's interesting. i wonder if replacing the job-id with the actual command being run would be helpful
oh i bet what's happening
cargo test --workspace --all-targets --all-features is fine
but all of our CI runs have been pulling from an outdated cache, since at one point we changed the command but we never changed Cargo.toml or anything since then to trigger a re-cache
OOOOOOOOO
smart!
so we can close the PR and do a cargo update, which would be good anyways
we could save the exact cargo command being run into an environment variable
then pass that through to the cache action
so that if we change the command in the future, it would trigger a re-cache
Don't think that's necessary since we don't touch the commands again
true but it's a footgun for editing the CI.yaml
Hmm
Fair enough
Actually, is there a wait to recache on changes to the workflows?
That would be enough
ah
hm, i think that would require an upstream change to Leafwing-Studios/cargo-cache, if it's possible
the only input we have for when a re-cache occurs is the cache-group: input, which is what i was calling job-id
this should still be different for each job that needs its own cache
Yeah feel free to PR changes
oh actually it isn't strictly required. we can pass in cache-group: <workflow file hash>-<job name>
if upstream could do that automatically it would be better ofc
Please do, that would save others the trouble ๐
(if it's not too much work)
yeah i'll investigate whether it's possible
i could make it hash .github/workflows/**/*
as for knowing exactly which file in there called the action.. idk
that would make any workflow fully re-cache when any other workflow changes
tbf workflows changing doesn't happen often, but that still sounds undesirable for an upstream feature
confirmed that this worked
Test finished in 1:37
${{ github.workflow_sha }} seems promising, will test how it works
nope! i found something that seems to work though
Really? Sounds like expected behavior to me tbh
it means if i change release.yaml it'll reset the ci.yaml cache for example
Yeah thatโs slightly crappy, but better than the current behavior imo
i found a way to hash only the specific workflow file but it's a bit of a hack
I'd upstream it
i take ${{ github.workflow_ref }} which is for example TheBevyFlock/bevy-template/.github/workflows/ci.yaml@refs/branch/main or w/e
then i strip away the repository prefix TheBevyFlock/bevy-template/ and the git ref suffix @refs/branch/main
leaving just .github/workflows/ci.yaml, and then we can hash the file at that path
That's clever ๐
since this will probably be fixed upstream, what should i do for bevy-template in the meantime?
i suppose i can remove workarounds from ci.yaml and then make a cargo update PR like you suggested here
this also pulls in the new release of blake3 with the recompile fix
hm on the other hand, this would prevent sharing a cache between CI and release workflows (assuming that was possible before?)
i mean ig they're not doing the same type of builds in our case anyways, but in other cases that may be a downside
I think that's fine, GitHub has a generous 10 GiB of cache anyways
Wait, per that thread someone made recently, release does not benefit from any cache at all anyways