Voxel Game Development Is Hard
Vložit
- čas přidán 14. 07. 2024
- I'm making a voxel game with the rust programming language and a game engine called bevy.
Hot reloadable rust code, ambient occlusion, physics, block texturing, dynamic camera, game design: damage formula for spells,
are among the things I've implemented the last 3 months.
The project is alive!
My discord group:
/ discord
Want to support me?
Patreon: / tantandev
Monero: 43Ktj1Bd4Nkaj4fdx6nPvBZkJewcPjxPB9nafnepM7SdGtcU6rhpxyLiV9w3k92rE1UqHTr4BNqe2ScsK1eEENvZDC3W1ur
Resources (The tech I'm using)!
bevy game engine: bevyengine.org/
game_stat: github.com/TanTanDev/game_stat
physics (3D and 2D): github.com/dimforge/rapier
inspector ui (runtime tweaking): github.com/jakobhellermann/be...
hot reloading using dlls/so files: docs.rs/dlopen/latest/dlopen/
benchmarking: github.com/bheisler/criterion.rs
world generation: my own custom implementation is not open source at the moment.
other rust libraries, that I recommend:
game engine: github.com/not-fl3/macroquad
Graphics rendering api: wgpu.rs/
multithreading: github.com/zesterer/lagoon
profiling: crates.io/crates/profiling, using Optick feature
Credits:
Music Wintergatan Build Track - Moon And Star
Music brazilian street fight By Punch deck
Punch deck link: / punch-deck
Punch deck license: creativecommons.org/licenses/...
Wintergatan link: wintergatan.net/ License can be found on website
#tantan #gamedev #voxelgame - Věda a technologie
"It works like a charm, even though I barely know what I'm doing."
Programming in a nuttshell.
I'm messing with Bevy as well, not gonna lie, it's starting to make sense. But I TOOOOOOOOOOOOOOOTALLY did not spend 3 days trying to make it so my space ship can repeatedly shoot projectiles by just holding the button.
Progress!!
@@beaver_stealer Progress indeed.
We developers have never ever ever ever ever ever ever spent disproportionate ammount of time in smaller stuffs! Never! That doesn't happen. We know absolutely what we are doing. So good job!!
Bevy truly can be hard to wrap ones mind around at the start.
But it's lovely once you get it!
@@costelinha1867 Have you checked the setup instruction on the getting started page of the website? It has some tips for faster compile times, I never wait longer than about 1 second
3:33 you should use assert_eq! instead of assert! here, it takes two arguments and panics if the two are not equal. because youre passing the actual variables for the macro to use instead of just a bool, the panics will give you more information than assert!. you can also do assert_ne! for inequality.
Hey Tantan, things are looking good, especially the AO! Make sure to implement the quad-flipping tweak mentioned at the end of 0fps' ambient occlusion article to get rid of those sharp 'AO spikes', it makes things look significantly better, it's definitely worth doing!
You got me into Rust and I quite like the user-friendliness.
After some 2D stuff I'm now working on a 3D game with planes and stuff. I'm probably not gonna use an engine and so I spent 1 Week just on figuring out the coordinate system :D
I wanted millimeter accuracy anywhere in the world, so I was first working on a complicated position system where an i32 represents the current chunk and an f32 gives the position locally in that chunk.
But there where so many edge cases, that I eventually realized I could just use an i64 and Fixed Point conversion, where I pretend that a certain number of bits at the end represent the fraction and when I need the Meter-value, I right shift by the amount of fraction-bits.
I could then delete all the complicated code I had written. It was a week of work, but the new solution felt so much better.
Anyway at this pace I will be done in around 12 Years, and my motivation for a project usually lasts a month, so we'll see how much further I'll get :D
As a novice programmer i have no idea of what you are talking about but i am happy for your progress
@@caveirainvocada9438 Haha ty :')
You might as well just use a 64 bit double floating point, why did you want to use fixed point?
@@KyranFindlater True, but I didn't want any difference in behaviour close to the origin vs far away.
When floats are close to 0, they have much more precision than at higher values. And I wanted the same precision / deterministic behaviour, regardless of location. This is really just a minor detail :P
You should take a look at Veloren. It is an open-source project which was also inspired by Cube World and it is also written in Rust
Veloren is a really cool project!
So good to see you back on your project ! I hope you'll have a lot of fun making it.
Great video! You really got the balance of technical / high level right. It's nice when you find a fun project that keeps you motivated to push through the hard parts, you learn so much!
Great to see you making solid progress! I really like how you jump into smaller projects to understand what you're doing in the main one.
Man, your videos are so interesting and inspiring. Hopping on a flight and was excited to be able to watch this before boarding!
It's always nice to see the progress you make on this project, big or small. Great video, already waiting for the next one 😲
dorball
He's BAACKKK! Love these videos, and it's super cool that you're still making your voxel game in Rust! (Also my favorite programming language, that I actually found from your first Rust video)
You probably heard of this before. But there's a voxel game made entirely in rust called Veloren. Maybe you should check it out for some inspiration.
Amazing as always! Awesome project, great video, ETCETERA!
LOking forward for the release! Good luck!
Good to see your progress on the voxel game. Totally agree, that implementing physics without a game engine is a nightmare. I had to do it for a game I made with Three.js and it took me an entire month to finish!
Finally a video where i can see the guys mouse, he says words clearly and actually SHOWS how to open stuf like the soft roll instead of
Just wanted to say thank you for doing this series; it's great!
looking forward to learning from the rest of your videos. Subscribed!
Hey man thanks a lot. I was really overwheld and confused but now it all makes sense. Thank you.
Amazing! keep up the great work dude!!!
This is very impressive. One of my new favourite dev channels
Nice, was fun to watch as another rust dev
Dude, it's awesome to see your content thriving! Great stuff as always.
Ey, isn't that Noah James! :D
@@TantandevYup! I'm still alive!
Finaly a devlog again!!! Woho! thank you!
will be a fantastic journey!
Oh my god so good explained thank you!!!!
TNice tutorials is just the pick up I needed, thanks man
TNice tutorialS WAS SOOOOOO HELPFUL!!
Hell yeah bro I'm making my own voxel game on unreal engine let me tell you it's hell fun exciting for a minute or two than absolute hell again
TNice tutorials was super helpful, dude! I got the tutorial version of soft soft just to get a taste, and after figuring it out I decided to purchase the
Eeehoo, how I love this (probably already a column) on the channel.
s and a couple EDM and Dubstep goals for myself, and I guess I better start learning sowhere. Thanks for the great vid!
TNice tutorials was an amazing video! you really Nice tutorialt all the key points for the basics without ever over complicating anytNice tutorialng. A hard job and you did
I'm also making a voxel engine in Bevy?!?!?!? I knew there were others but holy cow...
So awesome!!
thank you very much❤
So I went into soft soft and tried to intuitively grasp the basic fundantals. And now listening back I feel like I'm one step ahead of Nice tutorialm.
Text is quite easy to render properly in 3d with signed distance functions/fields :)
The generation is cumbersome, but there ofc is open tools to pre-generate them :)
There are great, easy examples of it on ShaderToy.
wintergatan music. outstanding choice sir
Awesome, always fun to see your progress. I have a question - what program do you use to edit your videos on PopOS?
Highly likely it's Kdenlive or Davinci Resolve
Great video! I always love to see more rust game dev videos.
What tool are you showing in 0:39 for managing your tasks? I'd like to check it out for myself.
I use hacknplan.com
Cool video. Im currently playing with Rust but not with any game engine just cli, yew. Maybe next I will do project using Bevy:) Also I like to change some of my productivity habits. Recently switched from vscode + vim to Neovide with Astronvim base and I ❤️ it so far. Wonder how it compares to mentioned Helix 🤔
in the details. when you get stuck, roll back to the beginning and start over. The other weay is to focus entirely on one set of commands
Say it with me:
Bevy
Bevy
Bevy
Bevy
Bevy
Bevy
Bevy
Bevy
Am I the only one who gets bevy triggered like that?
I would love to see a video on that 2d physics engine!
Very cool!
Tantan. Your hair is magnificent.
Art tip, don't use pure black for your occlusion! In the real world, shadows are often dark blue. Try it - it might look more colourful & less muddy 👍
This inspector is making me want to go back on game development on my free time.
Thanks for lesson number one I'm going to leave ssages on a few of your posts and maybe even a few links to soft I make in the
where I’d record one track of the soft and than use a second Edison to record scrubbing through the soft to mimic a wave table.
ankyou so much and you just earned a sub
yo im always happy when I see one of these devlogs. Idk, you just make boring stuff interesting
Do you stream on twitch or any other place? I would really enjoy watching you code while I work on my own projects!
I do not stream. have thought about it but I don't see me trying it any time soon.
Will probably try some time in the future when I can do some light-weight programming. Doing a lot of hard thinking stuff atm
I love the RuneScape emotes
_It gets messy the code is messy but surprisingly it works like a charm..._
Said every developer more frequently than we'd like to admit.
tbh i would continue on the physics, they can be a pain in the ass, but cutting down a tree, and killing enemies with it uhh
The problem with stopping every block on physics may have been because you didn't simplify the geometry. When two bits of collision are next to each other physics engines tend to get caught up on the edge between. A solution is usually to merge flat areas of collision geometry into one simple box instead of a bunch of small ones.
Hey! I love your videos and I was partly inspired to learn rust and switch over my game development endeavors to the rust programming language because of you. I just finished the rust programming language book and am looking to get started on my first project. I was thinking I would begin in SDL2, but I’m not sure it’s the best option considering stuff like Bevy exists. What’s your take on the matter?
I don't think it matters as much what library you decide to start with. I've personally never tried SDL together with Rust, it's probaly fine. Try one, make something with it, a tech demo/game.
I would probably recommend macroquad at the start. Then try Bevy after that. Reason I don't recommend Bevy as an entry into gamedev in rust is because other libraries will be better to teach you the language, but if you know the basics in Rust bevy is fine :)
@@Tantandev Appreciate the advice, thanks!
very cool
TNice tutorials was honestly so helpful. I’ve been working around soft, whether it be church, singing in a band, or theatre for most of my life so tNice tutorials
I basically know everytNice tutorialng there is to know about soft soft but I still watched tNice tutorials through just because of how good you explained
can we just talk about how he is very evidently using Linux, but still uses .exe in his demonstration?
He also uses .dll. I don't think he's using Linux. Might be WSL.
@@plebisMaximus i don't think it's WSL because his terminal host-name was something that had pop_os in it, and pop_os as far as I know doesn't work with windows subsystem yet.
Are you not worried by the fact that there already exists a written in Rust, Voxel RPG, inspired by Cube World that is already playable and is free and open source?
It's called "Veloren" in case anyone is wondering.
I recomnd you two to buy the Producer Edition (And if you have got money, buy the Full Bundle)
Really helped in 19 thx
This might sound weird but consider making ao color slightly yellow as light from the sky is mostly blue. Id also recommend not using a linear gradient
Tantan, how would you recommend to learn rust? I've installed it and its really fun so far, I'm just struggling to understand any of it lol
a different world. It's the sa laws, but different application. Without your videos, I'm not sure I would be at the level I'm at. I'm not a pro
using egui very cool
Something i've seen in a lot of voxel engines that i still dont get is, why do you only need top side bottom? what if there is a block in the air? do all other sides just get filled?
yes
LOOOL YESSSSSSSS TNice tutorialS COMNT IS FELTTTTT
did you try using greedy meshing ? are you satisfied with the rendering speed ? (greedy meshing is great but doing AO with it is massive pain, im trying to deside what to do im my project)
I have not tried greedy meshing, I feel like the fps is good enough to have a 8 chunk radius around the player. (With my rather old graphics card gtx 660).
It's a topic I would like to explore, but atm I'm not doing anything related to performance/graphics.
Priority 1 at the moment is getting a combat gameplay loop in!
Awesome
ikr!
did you managem to improve the performance of the code? You mentioned this some videos ago
Ah maplestory memories.
I feel you with the diagrams. I can't read code. I can only write it. So if I want to know what my code does, I better have diagrams like the one @1:44 .
You should probably get rid of the ultrablack areas somehow
Come on man, the variable doesn't need to be mutable!
I have respect for people who doesn't use a game engine. It's a much more difficult and experience rich path
What software were you using for the tasks and management?
Just been thinking, if you let players build with the blocks you should probably have all sites xD.. also how would the grass block look from below with that setup, just no texture or the top one?
recursive tan, inner tan function
real time dynamic baking into light maps instead of ambient occlusion
do you have only one computer
lib reliance succs balls, not cubes
tan found his inner tan
You should try to get close to the game veloren's team
nice tuto eyw
You should check out Veloren. Its open source, Rust based, and it's really good right now.
Gosh I love Rust
Hey, what is your project management software ?
question since you're developing on POPOS, but you're using DLLS internally will this game natively support linux still?
Could make a video how to setup helix for rust and bevy? I tried alot couldnt get it worked so far like i wanted.
What did you have problems with?
What task/project management software do you use here 0:35 ?
I feel the stone texture looks a bit too gritty, it tends to just look like noise from a distance.
It is hard to find a Bevy 0.8 tutorial, could you make one? :->
What backend does this use? Vulcan? How is the Rust language compare to c++ or python?
depending on what you are trying to do, a full 3D physic engine can be overkill, and starting a new one with balls isn't a good idea, you will then have to deal with quaternions and impulse resolution
for something like minecraft, you should focus on a 2D platformer engine with a fixed grid and aabbs, it's pretty easy and porting to 3D is straightforward
any reason you’re using bevy over something like uniry or godot?
not know , but just know you've affected my life, and apparently tens of thousands of others, in an imnsely positive way. Thank you
4:00 why is it a dictionary and not an array with enum indexes? I don't know much about rust, just asking