Voxel Game Development Is Hard

Sdílet
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

Komentáře • 241

  • @costelinha1867
    @costelinha1867 Před rokem +78

    "It works like a charm, even though I barely know what I'm doing."
    Programming in a nuttshell.

  • @costelinha1867
    @costelinha1867 Před rokem +155

    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.

    • @beaver_stealer
      @beaver_stealer Před rokem +10

      Progress!!

    • @costelinha1867
      @costelinha1867 Před rokem +8

      @@beaver_stealer Progress indeed.

    • @deepkhamaru1154
      @deepkhamaru1154 Před rokem +11

      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!!

    • @Tantandev
      @Tantandev  Před rokem +6

      Bevy truly can be hard to wrap ones mind around at the start.
      But it's lovely once you get it!

    • @ietsization
      @ietsization Před rokem +1

      @@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

  • @theroboman727
    @theroboman727 Před rokem +35

    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.

  • @JoshuaBarretto
    @JoshuaBarretto Před rokem +65

    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!

  • @lievenpetersen
    @lievenpetersen Před rokem +37

    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

    • @caveirainvocada9438
      @caveirainvocada9438 Před rokem +11

      As a novice programmer i have no idea of what you are talking about but i am happy for your progress

    • @lievenpetersen
      @lievenpetersen Před rokem +2

      @@caveirainvocada9438 Haha ty :')

    • @KyranFindlater
      @KyranFindlater Před rokem

      You might as well just use a 64 bit double floating point, why did you want to use fixed point?

    • @lievenpetersen
      @lievenpetersen Před rokem +2

      @@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

  • @kirillschmidt9398
    @kirillschmidt9398 Před rokem +5

    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

    • @Tantandev
      @Tantandev  Před rokem +1

      Veloren is a really cool project!

  • @skydrag4227
    @skydrag4227 Před rokem +18

    So good to see you back on your project ! I hope you'll have a lot of fun making it.

  • @mattlennon3
    @mattlennon3 Před rokem +2

    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!

  • @Skeffles
    @Skeffles Před rokem +1

    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.

  • @senkwich
    @senkwich Před rokem +1

    Man, your videos are so interesting and inspiring. Hopping on a flight and was excited to be able to watch this before boarding!

  • @Dorbellprod
    @Dorbellprod Před rokem +9

    It's always nice to see the progress you make on this project, big or small. Great video, already waiting for the next one 😲

  • @eboatwright_
    @eboatwright_ Před rokem +3

    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)

  • @bookle5829
    @bookle5829 Před rokem +5

    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.

  • @flyingsquirrel3271
    @flyingsquirrel3271 Před rokem

    Amazing as always! Awesome project, great video, ETCETERA!

  • @binsubaiih1983
    @binsubaiih1983 Před rokem

    LOking forward for the release! Good luck!

  • @SuboptimalEng
    @SuboptimalEng Před rokem +2

    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!

  • @BritBonjorSpurs
    @BritBonjorSpurs Před rokem

    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

  • @WyrdieBeardie
    @WyrdieBeardie Před rokem

    Just wanted to say thank you for doing this series; it's great!

  • @raulsiatat.9031
    @raulsiatat.9031 Před rokem

    looking forward to learning from the rest of your videos. Subscribed!

  • @jamiesteidle9312
    @jamiesteidle9312 Před rokem

    Hey man thanks a lot. I was really overwheld and confused but now it all makes sense. Thank you.

  • @_jdfx
    @_jdfx Před rokem +1

    Amazing! keep up the great work dude!!!

  • @lemurza5236
    @lemurza5236 Před rokem +1

    This is very impressive. One of my new favourite dev channels

  • @ValarIsLife
    @ValarIsLife Před rokem +2

    Nice, was fun to watch as another rust dev

  • @noahjames9457
    @noahjames9457 Před rokem

    Dude, it's awesome to see your content thriving! Great stuff as always.

  • @johannbandion8455
    @johannbandion8455 Před rokem +1

    Finaly a devlog again!!! Woho! thank you!

  • @davidebernardini814
    @davidebernardini814 Před rokem

    will be a fantastic journey!

  • @andriyvorochuk467
    @andriyvorochuk467 Před rokem

    Oh my god so good explained thank you!!!!

  • @EmadMohamedsaad
    @EmadMohamedsaad Před rokem

    TNice tutorials is just the pick up I needed, thanks man

  • @cronix4640
    @cronix4640 Před rokem

    TNice tutorialS WAS SOOOOOO HELPFUL!!

  • @rickmiller6243
    @rickmiller6243 Před rokem +1

    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

  • @tonkroew
    @tonkroew Před rokem

    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

  • @minegeymer
    @minegeymer Před rokem +1

    Eeehoo, how I love this (probably already a column) on the channel.

  • @user-fi8cg8ne3f
    @user-fi8cg8ne3f Před rokem

    s and a couple EDM and Dubstep goals for myself, and I guess I better start learning sowhere. Thanks for the great vid!

  • @jamesthomson9409
    @jamesthomson9409 Před rokem

    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

  • @Siphonife
    @Siphonife Před rokem +1

    I'm also making a voxel engine in Bevy?!?!?!? I knew there were others but holy cow...

  • @zyxnull
    @zyxnull Před rokem +1

    So awesome!!

  • @mekookhan4795
    @mekookhan4795 Před rokem

    thank you very much❤

  • @mushafnaveed7932
    @mushafnaveed7932 Před rokem

    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.

  • @AntonioNoack
    @AntonioNoack Před rokem +2

    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.

  • @Trisxd
    @Trisxd Před rokem

    wintergatan music. outstanding choice sir

  • @jacques-dev
    @jacques-dev Před rokem +2

    Awesome, always fun to see your progress. I have a question - what program do you use to edit your videos on PopOS?

    • @sm_stormzy1075
      @sm_stormzy1075 Před rokem

      Highly likely it's Kdenlive or Davinci Resolve

  • @janmaier7181
    @janmaier7181 Před rokem +3

    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.

  • @lukkklukk7045
    @lukkklukk7045 Před rokem +1

    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 🤔

  • @peleg7458
    @peleg7458 Před rokem

    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

  • @lievenpetersen
    @lievenpetersen Před rokem +2

    Say it with me:
    Bevy
    Bevy
    Bevy
    Bevy
    Bevy
    Bevy
    Bevy
    Bevy

    • @lievenpetersen
      @lievenpetersen Před rokem +1

      Am I the only one who gets bevy triggered like that?

  • @eboatwright_
    @eboatwright_ Před rokem +3

    I would love to see a video on that 2d physics engine!

  • @redstonerti9918
    @redstonerti9918 Před rokem +1

    Very cool!

  • @adammills4099
    @adammills4099 Před rokem +2

    Tantan. Your hair is magnificent.

  • @squishrabbit
    @squishrabbit Před rokem +1

    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 👍

  • @MaxHeroGamer
    @MaxHeroGamer Před rokem

    This inspector is making me want to go back on game development on my free time.

  • @alexpopay1176
    @alexpopay1176 Před rokem

    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

  • @CXNLunix
    @CXNLunix Před rokem

    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.

  • @se2_115
    @se2_115 Před rokem

    ankyou so much and you just earned a sub

  • @S41L0R
    @S41L0R Před rokem +1

    yo im always happy when I see one of these devlogs. Idk, you just make boring stuff interesting

  • @veltedingel
    @veltedingel Před rokem

    Do you stream on twitch or any other place? I would really enjoy watching you code while I work on my own projects!

    • @Tantandev
      @Tantandev  Před rokem

      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

  • @caspianmerlin6434
    @caspianmerlin6434 Před rokem

    I love the RuneScape emotes

  • @jarrod752
    @jarrod752 Před rokem +1

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

  • @dude2542
    @dude2542 Před rokem +1

    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

  • @S41L0R
    @S41L0R Před rokem +1

    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.

  • @materialistpigeon16
    @materialistpigeon16 Před rokem

    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?

    • @Tantandev
      @Tantandev  Před rokem

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

    • @materialistpigeon16
      @materialistpigeon16 Před rokem

      @@Tantandev Appreciate the advice, thanks!

  • @NoVIcE_Source
    @NoVIcE_Source Před rokem +1

    very cool

  • @ivan2003boy
    @ivan2003boy Před rokem

    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

  • @br1ghtd4rk24
    @br1ghtd4rk24 Před rokem

    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

  • @jkr9594
    @jkr9594 Před rokem +6

    can we just talk about how he is very evidently using Linux, but still uses .exe in his demonstration?

    • @plebisMaximus
      @plebisMaximus Před rokem

      He also uses .dll. I don't think he's using Linux. Might be WSL.

    • @wowvain2989
      @wowvain2989 Před rokem

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

  • @thatonegoblin7051
    @thatonegoblin7051 Před rokem

    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.

  • @mertkonti5428
    @mertkonti5428 Před rokem

    I recomnd you two to buy the Producer Edition (And if you have got money, buy the Full Bundle)

  • @imnotboost_2857
    @imnotboost_2857 Před rokem

    Really helped in 19 thx

  • @oliversargison5719
    @oliversargison5719 Před rokem +1

    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

  • @antlergxrl
    @antlergxrl Před rokem

    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

  • @Not_Glitchy2023
    @Not_Glitchy2023 Před rokem

    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

  • @jaiv
    @jaiv Před rokem +2

    using egui very cool

  • @NetherFX
    @NetherFX Před rokem +1

    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?

  • @giojoscemar5326
    @giojoscemar5326 Před rokem

    LOOOL YESSSSSSSS TNice tutorialS COMNT IS FELTTTTT

  • @arsenbabaev1022
    @arsenbabaev1022 Před rokem +2

    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)

    • @Tantandev
      @Tantandev  Před rokem

      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!

  • @lemonke8132
    @lemonke8132 Před rokem +1

    Awesome

  • @horhe-chan3749
    @horhe-chan3749 Před rokem

    ikr!

  • @renatocesar9972
    @renatocesar9972 Před rokem +1

    did you managem to improve the performance of the code? You mentioned this some videos ago

  • @sceplecture2382
    @sceplecture2382 Před rokem

    Ah maplestory memories.

  • @KANJICODER
    @KANJICODER Před rokem

    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 .

  • @dorktales254
    @dorktales254 Před rokem +1

    You should probably get rid of the ultrablack areas somehow

  • @FaZekiller-qe3uf
    @FaZekiller-qe3uf Před rokem

    Come on man, the variable doesn't need to be mutable!

  • @diligencehumility6971

    I have respect for people who doesn't use a game engine. It's a much more difficult and experience rich path

  • @jorgengullstrand5988
    @jorgengullstrand5988 Před rokem

    What software were you using for the tasks and management?

  • @luca__3044
    @luca__3044 Před rokem

    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?

  • @Jkauppa
    @Jkauppa Před rokem +1

    recursive tan, inner tan function

    • @Jkauppa
      @Jkauppa Před rokem

      real time dynamic baking into light maps instead of ambient occlusion

    • @Jkauppa
      @Jkauppa Před rokem

      do you have only one computer

    • @Jkauppa
      @Jkauppa Před rokem

      lib reliance succs balls, not cubes

    • @Jkauppa
      @Jkauppa Před rokem

      tan found his inner tan

  • @juanrosas4586
    @juanrosas4586 Před rokem +2

    You should try to get close to the game veloren's team

  • @Pasindhu_Himasha
    @Pasindhu_Himasha Před rokem

    nice tuto eyw

  • @Thepewdiepiebro5
    @Thepewdiepiebro5 Před rokem

    You should check out Veloren. Its open source, Rust based, and it's really good right now.

  • @DylanMatthewTurner
    @DylanMatthewTurner Před rokem +1

    Gosh I love Rust

  • @ferdinandkasangati5089
    @ferdinandkasangati5089 Před rokem +1

    Hey, what is your project management software ?

  • @fren648
    @fren648 Před rokem +1

    question since you're developing on POPOS, but you're using DLLS internally will this game natively support linux still?

  • @rgstudio7272
    @rgstudio7272 Před rokem +1

    Could make a video how to setup helix for rust and bevy? I tried alot couldnt get it worked so far like i wanted.

    • @joem9575
      @joem9575 Před rokem

      What did you have problems with?

  • @JackKell100
    @JackKell100 Před rokem

    What task/project management software do you use here 0:35 ?

  • @felixmueller7341
    @felixmueller7341 Před rokem

    I feel the stone texture looks a bit too gritty, it tends to just look like noise from a distance.

  • @oglothenerd
    @oglothenerd Před rokem +1

    It is hard to find a Bevy 0.8 tutorial, could you make one? :->

  • @hbarudi
    @hbarudi Před rokem

    What backend does this use? Vulcan? How is the Rust language compare to c++ or python?

  • @pwouik9784
    @pwouik9784 Před rokem +1

    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

  • @woopslap
    @woopslap Před rokem +1

    any reason you’re using bevy over something like uniry or godot?

  • @arshadmahdi5236
    @arshadmahdi5236 Před rokem

    not know , but just know you've affected my life, and apparently tens of thousands of others, in an imnsely positive way. Thank you

  • @woosix7735
    @woosix7735 Před rokem +1

    4:00 why is it a dictionary and not an array with enum indexes? I don't know much about rust, just asking