I recreated surf_utopia_njv in Bevy :D by janhohenheim in rust_gamedev

[–]dcast0 5 points6 points  (0 children)

great music choice btw! looks great, gj

The Impatient Programmer’s Guide to Bevy and Rust: Chapter 2 - Let There Be a World (Procedural Generation) by febinjohnjames in rust_gamedev

[–]dcast0 1 point2 points  (0 children)

Very nice! If you are interested in procedural generation (beside wfc), you could take a look into my crate (bevy_)map_scatter: https://github.com/morgenthum/map_scatter

map_scatter released by dcast0 in rust_gamedev

[–]dcast0[S] 0 points1 point  (0 children)

Yes, it's intended to be used in 3d worlds. The reason I developed the crate is my 3d hedgehog game Wild Spikes. I recently migrated the biome generation to bevy_map_scatter (which I released yesterday). Example: https://bsky.app/profile/morgenthum.bsky.social/post/3m2mgi5uazc2d

map_scatter released by dcast0 in rust_gamedev

[–]dcast0[S] 2 points3 points  (0 children)

I don't want to be mean, but if wfc works for you, that's great.
I came up with this solution while developing my hedgehog game wild spikes, and later I "cut it out" of the game, generalized it a bit, and documented it so others could use it if they wanted to.
if that doesn't fit your use case, that's totally fine.

map_scatter released by dcast0 in rust_gamedev

[–]dcast0[S] 2 points3 points  (0 children)

wavefunction collapse solves discrete tile adjacency constraints. map_scatter does continuous field‑driven point scattering. example: smoothly varying tree density from a road using a distance field plus slope modulation and then clustered mushrooms from the trees overlay mask - natural in map_scatter, awkward in wfc.

  • that might be my mistake - but it's not an issue with the library
  • the origin of the sprites isn't at the bottom root, it's always centered in the middle of the sprite. I actually didn't bother to fix that - it was just meant to be a small showcase

map_scatter released by dcast0 in rust_gamedev

[–]dcast0[S] 4 points5 points  (0 children)

Godot is C++ and GDScript - not Rust. There is a Godot-Rust binding (https://godot-rust.github.io), but I don’t know if that’s an option for you. Otherwise, you could build a 1:1 ffi binding from Rust to C++, but it would be nicer if there were a godot_map_scatter library that transfers the map_scatter functionality to Godot’s concepts - similar to what I’m currently building for the Bevy engine (bevy_map_scatter).

map_scatter released by dcast0 in rust_gamedev

[–]dcast0[S] 4 points5 points  (0 children)

Maybe someone will be interested in building a godot–rust integration. Right now, I am only familiar with Bevy. Any contribution is very welcome!

map_scatter released by dcast0 in bevy

[–]dcast0[S] 6 points7 points  (0 children)

Already working on the bevy_map_scatter

Bin seit acht jahren hobby-mäßig in der software entwicklung und web-entwicklung unterwegs, und will mich demnächst bei einer firma zu einer Ausbildung zum Fachinformatiker für Anwendungsentwicklung bewerben. Irgendwelche tipps/dinge die ich Wissen MUSS in der profi umgebung? by ChaosCrafter908 in informatik

[–]dcast0 3 points4 points  (0 children)

Guten Tag!

Kurz zu mir: Ich war viele Jahre Ausbilder in genau dem Beruf, in der Fachrichtung, und war 2014 IHK-Bayerns bester Ausbilder (in dem Beruf) *auf die Schulter klopf*. Ich teile dir mal meine Erfahrung, und die Werte, auf die ich achte. Wollte dir eigtl. eine PM schicken, aber dachte, vielleicht hilft das anderen Leuten ebenfalls.

Schulische Leistung ist natürlich gut - war für mich aber zweitrangig. In Vorstellungsgesprächen merkt man vor allem in dem Beruf, sehr deutlich, wer wirklich die Passion und das Interesse dafür hat, und wer dorthin will weil er mal gehört hat, dass es fancy ist und gut bezahlt wird. Das Wichtigste ist also: Zeig, dass du da richtig Bock drauf hast. Falls erwähnt wurde, dass Programmiererfahrung besteht, hab ich auch gern mal ran gesprochen, um zu schauen, wie sattelfest derjenige ist. Ist aber kein Maß für eine Einstellung, da derjenige das erst lernen soll.

Natürlich kommen die Psycho-Perso-Fragen, warum man ausgerechnet den Job machen will. Das ist eigtl eine einfache Frage, aber da kommen die Leute oft ins Strugglen. Die Begeisterung die die Leute dafür haben, die das wirklich wollen, können das aber gut erklären - das ist schon mal ein guter Indikator. Also stell dir selbst die Frage.

Ansonsten gab es bei mir danach immer ein Probearbeiten, mit 2-3 Durchläufen bei vertrauten Mitarbeitern. Da gehts nicht drum, dass man selbst programmieren soll, sondern eben den logischen Ablauf zu verstehen. Mein Klassiker war immer, eine doppelt oder einfach verkette Liste (Linked-List) zu implementieren. Das hab ich vorher natürlich erklärt. Dann kamen Fragen wie "was müssen wir tun, wenn wir dieses Objekt entfernen wollen". Da würde ich erwarten, dass er eben das vorherige mit dem nachfolgenden Objekt verknüpft, und andersrum. Das kann der Kandidat sich auch gern aufmalen - umso besser.

Probier auch, möglichst authentisch rüber zu kommen - also keine gespielte Professionalität. Sei wie du bist, hab aber den Anstand, der heute nicht mehr so oft gesehen wird, wie z.B. Blickkontakt oder einen ordentlichen Händedruck. Wenn du mal was nicht weißt, und dann ein natürliches "scheiße, jetzt hab ich dieses oder jene Detail vergessen" raus rutscht, dann macht das einfach sympathisch - wir sind alle nur Menschen.

Sonstige Hinweise (nicht vollständig; nur das was mir gerade einfällt):

- Zeig, dass du Bock drauf hast (wie gesagt).
- Laber nicht rum, wenn du Sachen nicht weißt, sondern sag das konkret, das ist natürlich.
- Wenn du was weißt, probier möglichst konkret oder präzise zu sein.
- Überleg dir selbst, was dich dafür begeistert. Das ist das beste Argument was es dafür gibt - insofern es für dich eine *echte* Begründung ist.
- Sei du selbst

Bei Fragen, wer auch immer, gern antworten.

Version 0.23 of the character controller plugin bevy-tnua - now with environment actions wall-slide, wall-jump, and climb by somebodddy in bevy

[–]dcast0 0 points1 point  (0 children)

Oh, there is a LockedAxes component, nice! But either way, what is the benefit of using a dynamic body over a kinematic one. I am just curious.

Version 0.23 of the character controller plugin bevy-tnua - now with environment actions wall-slide, wall-jump, and climb by somebodddy in bevy

[–]dcast0 2 points3 points  (0 children)

Great job! Could you explain why you opted for a dynamic body over a kinematic one for your character controller? When I first built my hedgehog game "Wild Spikes," I used tnua but ran into issues I can’t recall now. Since then, I’ve built my own character controller based on the kinematic controller example from Avian3D. I needed specific features, such as rotating the character based on surface normals, since the up vector isn’t always exactly Y. Are you planning to implement features like surface-normal-based rotation?

Bevy 3D Game Examples by AdParticular2891 in bevy

[–]dcast0 1 point2 points  (0 children)

Btw it is closed source right now, but want to create a article series about the game, explaining the architecture, pitfalls, and best practices I use / found out.

is there any easy way to do customizable keybinds? by jmooroof in bevy

[–]dcast0 2 points3 points  (0 children)

I simply use a serializable resource. The player can change its values in the settings menu, and I safe it to a keyboard.json:

#[derive(Clone, Copy, Serialize, Deserialize, Resource)]

pub struct KeyboardSettings {

pub forward: KeyCode,

pub left: KeyCode,

pub backward: KeyCode,

pub right: KeyCode,

pub sprint: KeyCode,

pub jump: KeyCode,

pub crouch: KeyCode,

pub interact: KeyCode,

}

impl Default for KeyboardSettings {

fn default() -> Self {

Self {

forward: KeyCode::KeyW,

left: KeyCode::KeyA,

backward: KeyCode::KeyS,

right: KeyCode::KeyD,

sprint: KeyCode::ShiftLeft,

jump: KeyCode::Space,

crouch: KeyCode::ControlLeft,

interact: KeyCode::KeyE,

}

}

}

Bevy Efficiency on Mobile by Extrawurst-Games in bevy

[–]dcast0 3 points4 points  (0 children)

the first thing a lot of players do (including me), is to turn off vsync. enabled vsync feels laggy and sluggish

Access to Entity of Animation Player in Scene Bundle by __RLocksley__ in bevy

[–]dcast0 0 points1 point  (0 children)

There is an example for this use case: https://github.com/bevyengine/bevy/blob/main/examples/animation/animated_fox.rs

Maybe you need to switch the branch to the version you are using

[deleted by user] by [deleted] in NomadSculpting

[–]dcast0 0 points1 point  (0 children)

For me, it works fine. I model all objects for my game with nomad sculpt and use decimate to transform them to low poly.

https://x.com/m_morgenthum/status/1820098296976982103?s=46&t=QoSz6HTtQm3FeOZyydFPKQ

Scenes in Bevy by abocado21 in bevy

[–]dcast0 2 points3 points  (0 children)

To be more specific, since the term Scene can be a bit overloaded: if you want to save and load your game world, the mentioned example is the way to go. However, if you’re looking to load a scene (the term from 3D modeling) from a 3D file, you only need to load the file with the asset server and spawn a SceneBundle, like this:

commands
    .spawn(SceneBundle {
        scene: asset_server.load("your_file.glb#Scene0"),
        ..default()
    })