#0.14 Bevy Jam

1 messages ยท Page 5 of 1

bitter sparrow
#

think i like that better

#

actually that lets you see the current bg color but not the next one

#

how about this

#

when transitioning from screen A -> B:

  1. spawn screen B underneath screen A, UI interactions disabled
  2. fade the opacity of screen A over time
  3. despawn screen A once it's fully transparent
#

as for actually implementing this idk if it's possible

agile dirge
#

too invasive for the template

bitter sparrow
#

yeah fair enough

slender belfry
#

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

agile dirge
#

honestly, my proposal is too big too

bitter sparrow
#

sometimes Steps

slender belfry
bitter sparrow
#

let me find some examples rq

#

dont see step here but i swear ive seen it used

slender belfry
bitter sparrow
#

probably 3rd-party crates

slender belfry
#

Lemme check some big ones

bitter sparrow
slender belfry
#

Avian is Set

bitter sparrow
#

StepSet ๐Ÿ˜„

slender belfry
bitter sparrow
#

sure

slender belfry
#

Let's see LWIM

#

System

slender belfry
bitter sparrow
#

iyes_progress uses Set and no-prefix

slender belfry
#

So I guess Set is the majority here?

#

I hate Set is already a data structure

bitter sparrow
#

in the ecosystem it seems yes, in bevy proper it seems System is the majority

slender belfry
#

But eh

bitter sparrow
#

yeah i agree with that. i wanted to name something like StateSet

#

instead i went with StatePattern :p

slender belfry
#

How about we do SystemSet as a compromise?

bitter sparrow
#

at the very least i think a bevy issue to make the suffixes consistent is reasonable? or at least Systems -> System

bitter sparrow
#

in terms of correctness though i get it. Event is a common prefix for events for example

slender belfry
bitter sparrow
#

seems like everyone in the bevy ecosystem was like.. SystemSet is too long. let's remove one of the words ๐Ÿ˜„

bitter sparrow
#

in which case it should be AppSet and not Set ofc

bitter sparrow
#

or something else-Set

prisma delta
#

What do you want to do with the bad / malformed theme suggestions?

bitter sparrow
#

probably remove and let the user know so they can submit something else?

slender belfry
prisma delta
slender belfry
#

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

bitter sparrow
#

how about ping the author and let them fix it or lose? ๐Ÿ˜„

slender belfry
#

Like "hey, your suggestion is malformed, you will probably get no votes FYI"?

prisma delta
slender belfry
#

I like that that one doesn't delete anything. Seems friendly enough.

slender belfry
prisma delta
#

No need I have decided lol

slender belfry
#

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!" ๐Ÿ˜„

prisma delta
#

The lack of responsibility is the big one lol

#

But mucking around helps me be less overwhelmed when I get back

slender belfry
bitter sparrow
slender belfry
prisma delta
#

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?

bitter sparrow
#

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

slender belfry
#

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

prisma delta
#

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

slender belfry
#

Sure, on it ๐Ÿ™‚

slender belfry
bitter sparrow
#

you could probably ping all of them in a single message?

slender belfry
#

Yeah, I'll do that

bitter sparrow
#

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

slender belfry
#

I'll post it here first and then you can tell me if that's fine ๐Ÿ™‚

bitter sparrow
#

sounds good

#

i'll do a double-suggestion search

prisma delta
#

Consider grouping the pings by problem

bitter sparrow
#

this may be helpful, did some copy/paste and text editing:

slender belfry
#
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
bitter sparrow
#

some python magic later, found all the double-posts

#

DokkaeCat, jetp250, rewin

slender belfry
#

lemme edit the post

bitter sparrow
#

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

slender belfry
#

Alright, sec

fallen stag
#

error: unbalanced parentheses, does not compile

bitter sparrow
#

good jam theme

fallen stag
#

Jam theme: Could not compile project due to one previous error

#

take it its free

slender belfry
#
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
bitter sparrow
#
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
slender belfry
#

Better?

bitter sparrow
#

heh

slender belfry
#

Same time ๐Ÿ˜„

bitter sparrow
#

i think including the suggestions verbatim may not be needed?

slender belfry
#

I'd be happy if I got pinged with the submission

bitter sparrow
#

understandable

slender belfry
#

Otherwise I'd have no idea what I submitted tbh

#

But that might just be me being forgetful

bitter sparrow
#

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

bitter sparrow
#

true lol

slender belfry
#

I took your wording

slender belfry
bitter sparrow
#

okay i like the current iteration personally

slender belfry
#

Yeah I'll post it like that

bitter sparrow
#

you can link to this channel directly

slender belfry
#

well, I can't post it ๐Ÿ˜„

#

Thanks, Discord!

bitter sparrow
#

split it into multiple messages?

slender belfry
#

Sec

bitter sparrow
#

curious what the "blocked content" is lol. spam detection ig?

slender belfry
#

Yeah multiple messages = no blocked content

bitter sparrow
#

nice ๐Ÿ‘

slender belfry
bitter sparrow
#

rewin pinged 3 times ๐Ÿ’€

agile dirge
#

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

bitter sparrow
#

technically you can see the edit date i believe if you hover over:

agile dirge
#

hm, that should be fine then

#

just remove edited post submission

#

yeah you can, all good then

bitter sparrow
#

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.

agile dirge
#

agreed

bitter sparrow
#

looked at other trait naming conventions

#

Plugin is 100% consistent :)

#

and there are so many plugins, so that's impressive

slender belfry
#

Huh, didnโ€™t expect that!

bitter sparrow
#

events are always either Event or no suffix. which i think is fair, sometimes the suffix would make readability worse

slender belfry
#

Yay!

bitter sparrow
#

no concrete states are provided by bevy proper

slender belfry
#

Idk about how to do Triggers

bitter sparrow
#

like OnXyz vs XyzEvent?

#

technically they both impl Event

slender belfry
#

Theyโ€™re technically events, but I kinda want to make it obvious that theyโ€™re meant to be observed

slender belfry
bitter sparrow
#

yeah tbh they should be different traits, or the functionality should be unified somehow

#

but that's been discussed

slender belfry
#

Yeah its typing is a little bit awkward right now

#

Has Bevy consistently named its observables OnFoo?

bitter sparrow
#

bundles are 100% consistent

bitter sparrow
slender belfry
slender belfry
#

So that really only leaves system sets, huh

bitter sparrow
#

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

bitter sparrow
slender belfry
#

Could you open an issue on Bevy for the inconsistent SystemSets?

bitter sparrow
#

i'll probably open an issue for all naming inconsistencies at once i think

bitter sparrow
slender belfry
bitter sparrow
#

CameraDriverLabel odd-one-out

#

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

hoary flower
#

for next jam, I'd love to experiment with something to help with theme voting ; ludum dare "tournament voting" process is so much fun

bitter sparrow
#

we've created 12/20 of the latest upstream bevy issues super_bevy

bleak grail
slender belfry
slender belfry
#

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?

agile dirge
#

I'm adding animation cause why not

slender belfry
agile dirge
#

i will need a bit of feedback on how to structure this properly

slender belfry
#

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
prisma delta
fallen stag
slender belfry
prisma delta
#

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

slender belfry
agile dirge
#

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"

prisma delta
agile dirge
#

The bug testing pipeline:

  1. Deep core developers make a feature
  2. User interface developers find bugs in core features
  3. Template makers find bugs in user interface
  4. Users find bugs in templates
#

bonus if you find rustc issues

slender belfry
prisma delta
#

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 bavy

hidden pond
#

I do like that it seems that 'second party' has become the way to describe our affiliation since I used it yesterday lol

slender belfry
slender belfry
slender belfry
agile dirge
#

We're also entering a stage where engine provides 2-3 solutions to more generic problems and then it's a matter of preference

hidden pond
#

Continue to steal from me in that regard, after all: "Good Artists Copy, Great Artists Steal."

prisma delta
#

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

slender belfry
hidden pond
#

(But fwiw I feel like it's an apt discriptor of our 'status')

slender belfry
#

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.

dawn crag
#

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.

prisma delta
#

Especially with the new substates!

slender belfry
hidden pond
#

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.

prisma delta
#

(things I want to steal for the examples...)

slender belfry
prisma delta
slender belfry
# prisma delta (things I want to steal for the examples...)

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.

slender belfry
#

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

prisma delta
#

Yeah, it's really satisfying

slender belfry
hoary flower
#

yes, I can write a summary of the ludum dare process when I've got the time if there's interest

slender belfry
#

Thanks ๐Ÿ™‚

agile dirge
#

why do we have a tag named "main"?

#

it's causing issues

slender belfry
#

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?

agile dirge
#

One sec my cat brought a bird as a gift...

#

Is motion blur enabled by default?

slender belfry
#

But the sprite is not looking "crisp" while moving

slender belfry
agile dirge
#

i mean

#

if i freeze the video

#

any given frame the duck is crisp

#

so it's not an app issue

slender belfry
#

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?

agile dirge
#

animation helps

#

when the sprite is changing it's less noticeable

slender belfry
#

That's fair

agile dirge
slender belfry
#

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

agile dirge
#

k

slender belfry
#

Have you seen that we need an asset loading stage after all?

agile dirge
#

yes

agile dirge
slender belfry
#

Will need to check again once it's merged, but works locally

bitter sparrow
slender belfry
#

@bitter sparrow I addressed your comments

bitter sparrow
#

it's not in the code you linked to

#

probably a mistake though, i think it will error when run

slender belfry
#

Is that not what you're reffering to?

bitter sparrow
#

nope

slender belfry
#

Or am I misunderstanding something?

#

@dawn crag recognize the code? ๐Ÿ˜›

bitter sparrow
#

that's bash syntax

dawn crag
#

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

bitter sparrow
#

the | Out-File ... is powershell

slender belfry
#

I see

#

Yeah no way ๐Ÿ˜„

bitter sparrow
#

hehe

#

must have been copy-pasted from the windows job then

slender belfry
#

haha, sorry, it was so far right on my screen that my mind just blinked it out of existence

slender belfry
#

there you go

bitter sparrow
#

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

dawn crag
bitter sparrow
#

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

dawn crag
#

@bleak grail might have had opinions about universal binaries, dmg vs app, cargo-bundle, etc.

slender belfry
agile dirge
#

Im curious what you crafted

bitter sparrow
#

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

bitter sparrow
agile dirge
#

Do you use it anywhere? Im mostly curious in that

#

Aqh, you added example

bitter sparrow
#

yea

agile dirge
#

Isnt that the same version you posted earlier?

slender belfry
#

@bitter sparrow I addressed everything on the macOS PR

bitter sparrow
#

i think i made it work better somehow but idr

slender belfry
bitter sparrow
#

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

slender belfry
bitter sparrow
#

almost perfect

slender belfry
#

(I'm so sick of macOS build pipelines, please release me from my suffering)

bitter sparrow
#

the thing is

slender belfry
#

kill me

bitter sparrow
#

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

slender belfry
#

Sounds cozy ngl

slender belfry
#

nvm, not cozy

slender belfry
bitter sparrow
#

commited one small thing myself and approved

#

(adding quotes in one place)

slender belfry
#

thanks

bitter sparrow
#

merged, you can go ahead and trigger a release

slender belfry
#

whelp, this will take a while now since it has to build for two targets

bitter sparrow
#

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

slender belfry
#

Feel free to do that, I'm not touching that beast any more than necessary ๐Ÿ˜„

bitter sparrow
#

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

slender belfry
bitter sparrow
#

CI is supposed to be unintelligible

slender belfry
#

You could try generating the yaml from a more esoteric language?

#

Some custom DSL maybe?

bitter sparrow
#

i'll use a golf lang

#

like pyth

slender belfry
#

TIL

bitter sparrow
#

Every function, variable and statement in Pyth is a single character. In addition, [...]

slender belfry
#

My vote goes to Piet, I bet you know that one

bitter sparrow
#

yup

#

funny concept, no clue how it works lol

slender belfry
#

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.

bitter sparrow
#

im sure it would make looking at our CI code much more enjoyable

#

the benefits end there though ๐Ÿ˜‚

slender belfry
#

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

bitter sparrow
slender belfry
#

Guess what. It really is faster to build twice for macOS than once on Windows ๐Ÿ˜„

bitter sparrow
#

heh i see the exit button in the web build on itch.io

#

target = "wasm" should be target_family = "wasm" i believe

slender belfry
bitter sparrow
#

yeah yeah lol

#

been like this from the start

prisma delta
#

Oh I wonder if it's multiple logins or something?

bitter sparrow
#

hmm if it's about the-bevy-flock user, it should just be francois

slender belfry
#

It's the terrorism we've been sneaking into the template ๐Ÿ‘€

bitter sparrow
#

nah there's no way that would be an issue

slender belfry
#

YAY the macOS build on itch.io and the GitHub release works!!!!!!!

#

I AM FREE!!!

bitter sparrow
#

amazing

slender belfry
bitter sparrow
#

ope there are more. i'll add to pr

slender belfry
#

๐Ÿ‘

bitter sparrow
#

oh you already approved right

slender belfry
#

hehe

bitter sparrow
#

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

slender belfry
#

Yep!

#

I hope no Discord bot scrapes this link and posts crypto in it

bitter sparrow
#

spooky

prisma delta
# prisma delta
poll_question_text

What to do with bad jam suggestions? Typos, explanation...

victor_answer_votes

5

total_votes

7

victor_answer_id

2

victor_answer_text

Ping the author and remove them

bitter sparrow
#

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

nova trail
#

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?

Bevy Jam 2024 on Notion

This template was created by PixelArtist for the Bevy Engine Discord server.

bitter sparrow
#

this is the right place ๐Ÿ˜„

prisma delta
#

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?

bitter sparrow
#

how would team-matching work?

#

usually there are various requirements for a team, like at least one artist, or matching timezones, matching goals, etc.

slender belfry
#

People write in a designated chat with their role and experience and we match them?

prisma delta
#

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

bitter sparrow
#

btw. funnily enough, previous jam i teamed with 1 other person and we had completely different timezones

slender belfry
#

Add a little checkmark emoji reaction to the people that were already matched

slender belfry
bitter sparrow
#

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

prisma delta
#

Yeah, I don't think I'd want to be in the same time zone ๐Ÿค”

bitter sparrow
#

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

slender belfry
#

Talking about time zones: I'm off for the night, see ya ๐Ÿ‘‹

bitter sparrow
#

like "my timezone is xyz, i don't care about others' timezones", or maybe you do care

nova trail
#

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 ๐Ÿ˜…

bitter sparrow
#

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.

bitter sparrow
#

@slender belfry am i reading this right that the MacOS package has assets in bevy-template.app/Contents/MacOS/assets/assets/?

bitter sparrow
#

working on release.yaml in my own template. will make a PR after everything looks good

slender belfry
#

At least not in the final package, no

slender belfry
bitter sparrow
bitter sparrow
slender belfry
#

That would also be nice on non-Windows targets

slender belfry
#

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 ๐Ÿคทโ€โ™‚๏ธ

bitter sparrow
#

nah it should 100% default to no licenses and user can add their own

slender belfry
#

@agile dirge I've left reviews on your PRs ๐Ÿ‘

bitter sparrow
#

my github workflow-fu may be powerful enough now to combine all of the jobs into one matrix job. we will see

bleak grail
slender belfry
#

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.

slender belfry
slender belfry
agile dirge
#

updated Prs

slender belfry
#

Only left one small suggestion each

slender belfry
bitter sparrow
#

want to finish it while it's in my head

bitter sparrow
#

390 -> 318 lines isn't as great as i was expecting, but:

  1. it builds macOS in parallel
  2. my template is not using trunk yet, so i have to do those steps manually
  3. had to split some steps into smaller steps to make each platform align so they can be merged
  4. 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

slender belfry
#

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

bitter sparrow
#

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
bitter sparrow
#

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

agile dirge
#

Prs updated

slender belfry
agile dirge
#

Animation is waiting @bitter sparrow approve

#

also a rebase, ill do that quickly

hidden pond
slender belfry
slender belfry
#

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

agile dirge
#

that's covered in duck animation

#

cause i was checking module headers

slender belfry
#

@bitter sparrow I addressed your comments

agile dirge
#

shouldn't cause a conflict though

slender belfry
#

๐Ÿ‘

bitter sparrow
#

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

slender belfry
#

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 ๐Ÿคทโ€โ™‚๏ธ

bitter sparrow
#

then cargo cache should run after cargo build in the other jobs?

bitter sparrow
#

current target would be empty before, though

slender belfry
#

It fills the target IIRC

bitter sparrow
#

hm ok

slender belfry
#

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

bitter sparrow
#

yeah

slender belfry
#

as then they will both also follow sccache -> dtolnay -> cargo-cache -> cargo build

bitter sparrow
#

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

bitter sparrow
#

also clippy complaining about an unused import

bitter sparrow
slender belfry
slender belfry
bitter sparrow
#

yeah it seems so

#

also wasm-bindgen outputs binary_bg.wasm right

#

weird

slender belfry
#

Triggering a release to populate caches

bitter sparrow
#

should populate on CI as well? is the cache shared between CI and CD?

#

i'm assuming yes

slender belfry
bitter sparrow
#

ic. they use different profiles actually so that makes sense

slender belfry
#

I think we can configure cargo-cache to reuse the CI cache in CD

#

But that will only work for Linux

agile dirge
bitter sparrow
agile dirge
#

wait, u sure?

#

default transform sets Z = 0

bitter sparrow
#

scale = 1 should be the default

agile dirge
#

gah

bitter sparrow
#

for translation yea

agile dirge
#

right

bitter sparrow
#

hehe

agile dirge
#

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

bitter sparrow
agile dirge
#

i don't want a main tag

#

it gets prioritized over main branch

bitter sparrow
#

well you can delete main tag for sure

#

the release workflow should be creating a v0.1.0 tag now instead

agile dirge
#

oh, alright

#

ill trigger manually then

bitter sparrow
#

np to delete that as well, it'll just be recreated

agile dirge
#

ah, Jan is already running one

#

I'll test on trunk then

#

in the meantime

bitter sparrow
#

good to make sure trunk works

#

i should prob try out trunk on linux just to be sure. have never used it

slender belfry
agile dirge
#

the asset preloading landed earlier so it should be fine as long goes to itch

slender belfry
#

Oh wait, it's done anyways ๐Ÿ‘

agile dirge
#

no stutters ๐Ÿ‘

slender belfry
#

No stutters for me either ๐ŸŽ‰

#

Only some visual stutters because of lack of interpolation, but that's fine

agile dirge
#

idk man, you've got some 144Hz eyes or something

#

I don't see any issues xD

slender belfry
#

No, just running it on a shitty laptop ๐Ÿ˜„

#

I also get no visual stutters on my desktop PC ๐Ÿ™‚

#

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 ๐Ÿ‘€

lunar sail
bitter sparrow
#

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+ ๐Ÿคช

lunar sail
#

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

slender belfry
#

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

lunar sail
#

Thanks! Curious to hear what you'll find :)

slender belfry
#

Looks like sccache is not caching anything ๐Ÿ‘€

bitter sparrow
slender belfry
bitter sparrow
#

:p

#

the cfg spam is ugly too but yeah. code would be prettier with bevy_mod_picking

lunar sail
slender belfry
#

so it should not matter

lunar sail
#

Hmm.. then I'm not sure

slender belfry
#

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

bitter sparrow
#

make a question issue about sccache probably

lunar sail
#

Once I have more time again I'll try to look at sccache in more detail

slender belfry
bitter sparrow
#

merged

slender belfry
#

hurray!

bitter sparrow
#

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

slender belfry
#

(And maybe create an issue if there's a merge conflict)

bitter sparrow
#

๐Ÿ˜ฐ

slender belfry
#

Not a big deal if not, I'm just doing it by hand every now and then ๐Ÿ˜›

bitter sparrow
#

maybe but definitely not in the near future lol

slender belfry
bitter sparrow
#

after the jam maybe

slender belfry
#

I think it should be simple though

#

But yeah, no hurry

bitter sparrow
#

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

slender belfry
#

Makes sense

bitter sparrow
slender belfry
bitter sparrow
#

oh the upload lol

slender belfry
#

@agile dirge the synchronized steps with the animation are supremely cute as well hehe

bitter sparrow
#

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

slender belfry
#

I can check

bitter sparrow
#

will make a PR as soon as i get this green + add cargo cache

bitter sparrow
#

in the artifacts

slender belfry
#

yeesss

#

sec

#

I'm sorry

bitter sparrow
#

rip

slender belfry
#

wait, I'll try the build artifact

bitter sparrow
#

seems 7z can extract .dmg on linux, i'll try inspecting the internals

slender belfry
#

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>
bitter sparrow
#

hm

#

internal structure looks the same as bevy-template

slender belfry
#

It tries to open the game as a document

bitter sparrow
#

is that the case for bevy-template as well or just mine?

#

interesting

slender belfry
#

pretty sure that's the issue

#

can you throw in a chmod +x before packaging?

bitter sparrow
#

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

bitter sparrow
slender belfry
bitter sparrow
#

i'll check

#

i only looked at the file structure didn't try running it

slender belfry
#

I mean, I guess Linux users are used to setting chmod +x manually

bitter sparrow
#

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

slender belfry
bitter sparrow
#

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

bitter sparrow
#

linux and web builds confirmed working now

#

will add cargo cache then make pr to bevy-template

bitter sparrow
#

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

slender belfry
#

Wrote something new

#

You're right

#

(I think)

bitter sparrow
#

๐Ÿ˜ญ

#
   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

slender belfry
#

You know what

#

I'll just run it

#

let's see

bitter sparrow
#

like it seems to me that --all-targets actually reduces how many targets are being tested (specifically removing doc tests)

#

from the man page

slender belfry
#

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.

bitter sparrow
#

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

bitter sparrow
#

and then that --all-targets checks all targets

#

but --doc isn't even an option

slender belfry
slender belfry
bitter sparrow
#

all targets ||except docs|| bavy

slender belfry
bitter sparrow
#

rea

slender belfry
#

--all-targets-for-real-for-real

#

very.

#

cool.

bitter sparrow
#

๐Ÿ˜ฉ

#

hm well i can just do two commands to be extra sure

#

in the same job

#

first all-targets, then docs

slender belfry
#

Sounds great acceptable

bitter sparrow
#

updated pr

slender belfry
#

Left some final comments

bitter sparrow
#

resolved

slender belfry
#

Approved

#

(But need to change branch protections since the jobs have different names now ๐Ÿ˜„)

#

there we go

#

Oh heck

#

Missed something small

bitter sparrow
#

ope

slender belfry
#

That's why the docs step is taking so long, hehe

bitter sparrow
#

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

slender belfry
#

Huh, does that actually not fail otherwise?

bitter sparrow
#

not sure

#

i'll add the no-deps for now

bitter sparrow
#

it wasnt this slow in my template :p

slender belfry
bitter sparrow
#

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

slender belfry
#

we also need RUSTDOCFLAGS='-D warnings'

#

otherwise the docs thingy doesn't do much

bitter sparrow
#
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

slender belfry
#

works fine with --no-deps ๐Ÿ™‚

bitter sparrow
#

ok now try something that exists?

slender belfry
#

all good ๐Ÿ‘

bitter sparrow
#

ok great

#

ci looks good

#

fast and no cache warnings

slender belfry
#

Nice!

#

Left you a final final comment

bitter sparrow
#

love that for cargo

#

can i do --deny warnings instead of -D at least?

slender belfry
#

No

bitter sparrow
#

i mean in the RUSTFLAGS

slender belfry
#

no clue honestly

bitter sparrow
#

ok

slender belfry
#

The deeper you look into it, the more bavy cargo gets

bitter sparrow
#
$ rustdoc -h | grep deny
    -D, --deny LINT     Set lint denied
$ rustc -h | grep deny  
    -D, --deny LINT     Set lint denied
#

should be good

slender belfry
#

yay!

bitter sparrow
#

also i assume i can just add this to the global env right?

slender belfry
#

At that point, you might as well set RUSTCFLAGS to deny warnings as well to be safe? idk

bitter sparrow
#

oh i did add RUSTFLAGS heh

slender belfry
bitter sparrow
#

redundant?

slender belfry
#

Not sure

#

since it's clippy and not rustc

#

eeeh let's leave it there

#

Approved

bitter sparrow
#

sounds good

#

should automerge blazingly fast

slender belfry
#

why is it recompiling the tests ๐Ÿ‘€

bitter sparrow
#

idk. it seemed to hit the cache

slender belfry
#

Maybe because of the RUSTFLAG?

bitter sparrow
#

ah could be

slender belfry
#

kinda makes sense, since we changed the build config

bitter sparrow
#

release.yaml will be even more fun

slender belfry
#

โค๏ธ

#

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 cooltofu

slender belfry
#

#1261408668159709315 message

bitter sparrow
#

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

bitter sparrow
#

well that saved another 49 LoC. will have to test that it works

bitter sparrow
#

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

bitter sparrow
#

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

bitter sparrow
#

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

dawn crag
bitter sparrow
#

looking at the data, there's a lot of it. did you come to any conclusions?

dawn crag
#

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.

bitter sparrow
#

its interesting that lto="fat" makes wasm-opt significantly faster than with "thin"

dawn crag
#

lto = "thin" seems better and faster than "fat".

bitter sparrow
#

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

dawn crag
#

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.

bitter sparrow
#

codegen-units=1 making the combined time lower (in some cases)... interesting

dawn crag
#

z + z is significant for filesize, but not worth the runtime perf cost IMO.

bitter sparrow
#

opt level S having lower frame time than opt level 3 is interesting

dawn crag
#

That possibility was alluded to be someone or some document somewhere, so it's cool to see that potentially confirmed for this bench, anyway.

bitter sparrow
#

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

bitter sparrow
#

@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

bitter sparrow
#

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)

hidden pond
bitter sparrow
slender belfry
bitter sparrow
#

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)

bitter sparrow
slender belfry
#

๐Ÿ˜„

slender belfry
#

Look "good" otherwise, in the sense that for me, a mere mortal, it sure looks like a workflow.

bitter sparrow
#

hehe. the diff is kinda hard to read because the file is mostly fully changed

slender belfry
#

I like how all the duplication is gone ๐Ÿ™‚

bitter sparrow
#

yep. adding new features to all builds (like caching) is really easy now

slender belfry
bitter sparrow
#

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

slender belfry
slender belfry
#

Approved

bitter sparrow
bitter sparrow
#

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?

hidden pond
#

@slender belfry gone ahead and updated PR based on the feedback

slender belfry
#

I already wrote a bit about how to interact with the release.yaml

slender belfry
slender belfry
slender belfry
#

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

bitter sparrow
#

yeah the README is the last thing that needs to get done, everything else is just extra

#

so we can focus that

slender belfry
#

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

bitter sparrow
#

i agree for the most part. i only think we're overusing observers

hidden pond
#

Alright I've updated the PR.

slender belfry
slender belfry
#

@hidden pond did you find the EditorConfig plugin?

bitter sparrow
#

(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

slender belfry
slender belfry
bitter sparrow
#

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

slender belfry
bitter sparrow
hidden pond
#

I'll add in the Licenses stuff sometime later as that'll require...a bit more involved stuff.

slender belfry
#

Oh btw, I'd like to collect all the issues and PR we've created while working on the template.

bitter sparrow
#

as a post-mortem?

slender belfry
#

Yep

bitter sparrow
#

sounds good, should be easy to search based on author

hidden pond
#

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

lunar sail
#

--all-features --all-targets --workspace --please-im-begging-you-just-do-it

bitter sparrow
#

starting a release workflow now for testing. somehow the linux build completed in under 3 minutes rust_on_fire

#

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

bitter sparrow
#

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

bitter sparrow
#

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

bitter sparrow
slender belfry
#

Maybe it will work better if we split the regular test and the doc tests into two jobs?

slender belfry
bitter sparrow
#

ok makes sense

#

current CI is done

#

pushed an empty commit to the PR

#

doc tests hit cache, other tests did not

slender belfry
#

the heck o.O

bitter sparrow
#

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

slender belfry
#

can you change it to cargo test --all-targets to see if that really hits the cache in our current setup?

bitter sparrow
#

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
bitter sparrow
#

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') }}
slender belfry
#

Oh, so all jobs share a cache?

bitter sparrow
#

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

bitter sparrow
#

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

slender belfry
#

smart!

#

so we can close the PR and do a cargo update, which would be good anyways

bitter sparrow
#

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

slender belfry
bitter sparrow
#

true but it's a footgun for editing the CI.yaml

slender belfry
#

Hmm

#

Fair enough

#

Actually, is there a wait to recache on changes to the workflows?

#

That would be enough

bitter sparrow
#

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

bitter sparrow
#

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

slender belfry
#

(if it's not too much work)

bitter sparrow
#

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

bitter sparrow
#

Test finished in 1:37

#

${{ github.workflow_sha }} seems promising, will test how it works

bitter sparrow
slender belfry
bitter sparrow
slender belfry
bitter sparrow
#

i found a way to hash only the specific workflow file but it's a bit of a hack

slender belfry
#

I'd upstream it

bitter sparrow
#

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

slender belfry
#

That's clever ๐Ÿ‘€

bitter sparrow
#

since this will probably be fixed upstream, what should i do for bevy-template in the meantime?

bitter sparrow
#

this also pulls in the new release of blake3 with the recompile fix

bitter sparrow
#

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

slender belfry
#

Wait, per that thread someone made recently, release does not benefit from any cache at all anyways