White Box Dev
White Box Dev
  • Видео 8
  • Просмотров 119 397
Original Soundtrack #3 | Cx6
Cx6 is an arcade-style bullet-hell game about deflecting off walls and manipulating gravity to avoid being struck by an endless wave of bullets.
Music is composed and owned by Keeton Kowalski and Ben Stoffel-Murray. Please do not use in your projects without explicit permission.
🔗 Cx6 on Steam:
store.steampowered.com/app/2302410/Cx6
🎬 Cx6 Playlist:
ruclips.net/p/PL8NAsjaVlA7_FLXTXlr2qq4Frd6mApyQV
#gamedev #defold #cx6
Просмотров: 179

Видео

Original Soundtrack #2 | Cx6
Просмотров 63Год назад
Cx6 is an arcade-style bullet-hell game about deflecting off walls and manipulating gravity to avoid being struck by an endless wave of bullets. Music is composed and owned by Keeton Kowalski and Ben Stoffel-Murray. Please do not use in your projects without explicit permission. 🔗 Cx6 on Steam: store.steampowered.com/app/2302410/Cx6 🎬 Cx6 Playlist: ruclips.net/p/PL8NAsjaVlA7_FLXTXlr2qq4Frd6mApy...
Original Soundtrack #1 | Cx6
Просмотров 99Год назад
Cx6 is an arcade-style bullet-hell game about deflecting off walls and manipulating gravity to avoid being struck by an endless wave of bullets. Music is composed and owned by Keeton Kowalski and Ben Stoffel-Murray. Please do not use in your projects without explicit permission. 🔗 Cx6 on Steam: store.steampowered.com/app/2302410/Cx6 🎬 Cx6 Playlist: ruclips.net/p/PL8NAsjaVlA7_FLXTXlr2qq4Frd6mApy...
Steam Trailer | Cx6
Просмотров 442Год назад
Cx6 is an arcade-style bullet-hell game about deflecting off walls and manipulating gravity to avoid being struck by an endless wave of bullets. 🔗 Cx6 on Steam: store.steampowered.com/app/2302410/Cx6 🎬 Cx6 Playlist: ruclips.net/p/PL8NAsjaVlA7_FLXTXlr2qq4Frd6mApyQV #gamedev #defold #cx6
Fractal Noise | Procedural Generation | Game Development Tutorial
Просмотров 12 тыс.3 года назад
In this video, I explain what fractal noise is, how it works, and how to implement it. 0:00 Introduction 0:10 What is fractal noise? 3:56 How does it work? 9:07 Implementation 12:30 Demo 🔗 Demo: whiteboxdev.github.io/bundles/example-fractal-noise/index.html 🔗 Source: github.com/whiteboxdev/example-fractal-noise 🎬 Game Development Tutorial Playlist: ruclips.net/p/PL8NAsjaVlA78V7IyxTeIab-5JqLHm8E...
Lazy Flood Fill | Procedural Generation | Game Development Tutorial
Просмотров 12 тыс.3 года назад
In this video, I explain what lazy flood fill is, how it works, and how to implement it. 0:00 Introduction 0:11 What is lazy flood fill 1:13 How does it work? 6:52 Implementation 9:06 Demo 🔗 Demo: whiteboxdev.github.io/bundles/example-lazy-flood-fill/index.html 🔗 Source: github.com/whiteboxdev/example-lazy-flood-fill 🎬 Game Development Tutorial Playlist: ruclips.net/p/PL8NAsjaVlA78V7IyxTeIab-5J...
Diamond Square | Procedural Generation | Game Development Tutorial
Просмотров 27 тыс.3 года назад
In this video, I explain what diamond square is, how it works, and how to implement it. 0:00 Introduction 0:11 What is diamond square? 0:38 How does it work? 6:58 Implementation 11:08 Demo 🔗 Demo: whiteboxdev.github.io/bundles/example-diamond-square/index.html 🔗 Source: github.com/whiteboxdev/example-diamond-square 🎬 Game Development Tutorial Playlist: ruclips.net/p/PL8NAsjaVlA78V7IyxTeIab-5JqL...
Cellular Automata | Procedural Generation | Game Development Tutorial
Просмотров 67 тыс.4 года назад
In this video, I explain what cellular automata is, how it works, and how to implement it. 0:00 Introduction 0:12 What are cellular automata? 1:44 How do they work? 6:16 Implementation 11:50 Demo 🔗 Demo: whiteboxdev.github.io/bundles/example-cellular-automata/index.html 🔗 Source: github.com/whiteboxdev/example-cellular-automata 🎬 Game Development Tutorial Playlist: ruclips.net/p/PL8NAsjaVlA78V7...

Комментарии

  • @godfreyofbouillon966
    @godfreyofbouillon966 10 дней назад

    I dont understand what am I doing wrong but if I apply this rule (wall if 5+ neighboors are walls, floor otherwise) and I start with roughly 50/50 or 60/40 initial distribution, after the very first iteration I'm left with huge floor-only map with very few walls around the edges. I've tried adding additional rule if zero neighbors are walls, become a wall, that I saw in some tutorial, in which case I end up with a map virtually undistinguishable from an initial random generation, maybe walls/floors distributed a bit more evenly but that's it. I really dont get it how you end up with such nice organic looking maps.

  • @user-og6hl6lv7p
    @user-og6hl6lv7p Месяц назад

    Thanks for the tutorial. I spent the weekend implementing this into my own project and managed to get it working. However it wasn't so simple just drawing the height map points. The height map points must be normalized for the height map to be coloured correctly, otherwise it ends up looking like bismuth. For anyone who is curious, you need to grab the min and max values of the height map points (v_max and v_min), which can be calculated in during the diamond step loop. Before you pass the height map points to the renderer, each height map value must be normalized: float v_range = v_max - v_min ... float value = (height_map[x][y] - v_min) / v_range

  • @stevedoetsch
    @stevedoetsch Месяц назад

    Lacularity is the change in frequency between each octave (layer), and persistence (gain) is the change in amplitude between each octave. If you understand that one sentence, you understand how the whole system works.

  • @stevedoetsch
    @stevedoetsch Месяц назад

    Perlin also invented perlin noise, which he did not copyright, so then he invented simplex noise and copyrighted it, but of course it was too late and most everybody just uses perlin noise now. 😅 So, yes, simplex noise is better, but you have to pay a license fee for it, and the benefit is negligible for most people's uses.

  • @Dragon20C
    @Dragon20C 3 месяца назад

    I didnt understand why you had "count" in the diamond function, looking at your github in the description made it easier to understand, it was used to make sure its inside the controlled grid

  • @wynniebun
    @wynniebun 3 месяца назад

    Trying to interpret this and convert what I understand to GML, as I'm working in Gamemaker... I'm having lots of trouble because I feel like some variables are left out. Start and end are used lots in the for loops, but I have no understanding of what those mean, could you offer some insight?

  • @tortenschachtel9498
    @tortenschachtel9498 4 месяца назад

    By changing the Lacunarity you _are_ basically zooming in and out every octave except for the first one, since this directly affects the frequency of those octaves. One might say you are zooming in or out on the detail layers.

  • @turkeyphant
    @turkeyphant 4 месяца назад

    3:44 makes no sense. where are these diamonds?!

  • @le_plankton
    @le_plankton 4 месяца назад

    I love this video

  • @darkgecko5581
    @darkgecko5581 5 месяцев назад

    Loved this video because it was just concept and not a walkthrough of any particular game engine or code. I've been working through a lot of Unity tutorials but my brain needed something meta level to see how the nuts and bolts actually work. Thank you kindly

    • @WhiteBoxDev
      @WhiteBoxDev 5 месяцев назад

      @@darkgecko5581 Glad you found it helpful. 🙂

  • @lln6123
    @lln6123 5 месяцев назад

    A very big thank you, I was able to rebuild it in my own little 2D engine and saving it as bmp. Next will be something like using Fragment-Shader instead saving and loading the image all the time...

  • @DobinSergei
    @DobinSergei 6 месяцев назад

    It would be nice to add one rule to algorythm. Before all make a mask of bytes, with sizes of map. Using on it a diamond sqare algorythm, with height range = 0..1, we get natural looking areas. Now, we do default diamond square generation of map. But we using not constant rougness, instead we control it with our premade mask. It makes more interesting heights variation. With smaller regions more rough heights variation, and with more steep and smooth plains and hills overall.

  • @NikoKun
    @NikoKun 6 месяцев назад

    Neato. The maps this generates remind me a little of the level design from the old Sega Genesis game Sub Terrania.

  • @theHiddenStone
    @theHiddenStone 7 месяцев назад

    Reminds me a lot of the old C64 game Ancipital by Jeff Minter. This is a good thing.

  • @romeo9015
    @romeo9015 9 месяцев назад

    You are my FAVORITE RUclipsr rn. I’ve been playing pygame recently and your videos have been instrumental for visualizations.

  • @andisarifi5805
    @andisarifi5805 10 месяцев назад

    great video!

  • @sushismitcher225
    @sushismitcher225 10 месяцев назад

    It's really cool, but I'm having performance issues. I'm probably going to create a chunk system so that the tiles only have to check nearby tiles, but I'd love to learn about other optimisation methods. Great video!!

  • @Dent42
    @Dent42 11 месяцев назад

    6:17 I thought the point of fractal noise was that it looked "similar", independent of the zoom-level? Is this not the same as 1/f (a.k.a. "pink") noise? (Very informative video, btw!)

  • @marcuthdev
    @marcuthdev 11 месяцев назад

    14:00 como você fez aquele ruído ficar assim? Estou há alguns dias tentando fazer algo parecido em TypeScript, mas sem sucesso. É para gerar cavernas em um jogo como Minecraft 2D

  • @lastvirtualdomain
    @lastvirtualdomain 11 месяцев назад

    im doing something wrong, the edges are great... but at large scales.. it looks mostly square.

  • @umtbmt2395
    @umtbmt2395 11 месяцев назад

    Thank you for your tutorial, but i don't quite get it what's the difference between step and iteration?

    • @WhiteBoxDev
      @WhiteBoxDev 11 месяцев назад

      I use the two terms interchangeably.

  • @llpBR
    @llpBR 11 месяцев назад

    I was looking for a different algorithm to make my maps. I've created one from my mind and necer thought it was a cellular automata also. This one is way simpler and effective. I'll try and it!

  • @monkey7218
    @monkey7218 Год назад

    Hi! Great video :D I know this is quite an old video by now but, do you know why you get quite "jagged" walls a lot of the time? Any clues on how to fix that?

    • @sdbadik
      @sdbadik 9 месяцев назад

      For every wall cell, try to apply this: If the wall has 0 neighbors to the left or right, destroy it. If the wall has 0 neighbors to up or down, destroy it as well.

  • @hatac
    @hatac Год назад

    What happens if the four corner values are the same? I presume you get a flat sea bed, 'swamp', plains or plateau. This gives a uniform sea level. How would you get a highland lake or pond? I presume that would require another algorithm with added passes.

  • @LKamodon
    @LKamodon Год назад

    Great video! At 8:55 it was a bit confusing seeing the whole grid being re-generated from scratch as you narrated "you will notice as the iterations increases", maybe you could have increased the iteration counter by pressing 6 multiple times instead. I don't mean to be rude, just trying to provide a bit of constructive feedback. Thank you for making the video.

    • @WhiteBoxDev
      @WhiteBoxDev Год назад

      Thanks for the feedback! Since the demos are not scripted like the rest of the video, my error-ridden brain takes over and thus we see some explanation quirks.

  • @svenskazengrodan
    @svenskazengrodan Год назад

    I really appreciated all your map generation videos. Very pedagogical.

  • @daka.notatp
    @daka.notatp Год назад

    i followed the tutorial... and it works! but my maps are mirrored diagonaly, from upper left to bottom right, anyone knows why?

  • @Sketchaphone
    @Sketchaphone Год назад

    Thanks for demoing all these different techniques. It's really useful to compare the difference in terrain generation methods for my use cases

    • @WhiteBoxDev
      @WhiteBoxDev Год назад

      No problem, they were fun to make.

  • @Sketchaphone
    @Sketchaphone Год назад

    what a simple yet effective tweak to generate landmasses. I was looking for different techniques for generating terrain and I'm delighted to see that a modified floodfill does the trick

  • @sergodobro2569
    @sergodobro2569 Год назад

    Respect to pseudocode!

  • @PolarTop6260
    @PolarTop6260 Год назад

    bro this channel is so underated, this channel teaches you procedural generation methods you might of never heard of, that are simple to understand and looks very good, and also teaches you how to implement them

  • @hamsterbyte
    @hamsterbyte Год назад

    Very interesting algo. I'm curious though, did you try any aside from exponential decay? Perhaps logarithmic, linear, or quadratic? I'm not suggesting there is anything wrong with this implementation as it is really quite clever, I'm really more interested in how the decay would fall off if it were implemented with another algo. Gonna throw you a sub for getting me thinking. Great job.

  • @NathoSteveo
    @NathoSteveo Год назад

    Awesome video mate thanks

  • @GbyP
    @GbyP Год назад

    I really needed this so I can finally understand my CS projects for class

  • @francescocarbone8466
    @francescocarbone8466 Год назад

    Best work.

  • @felipecruz9567
    @felipecruz9567 Год назад

    nice explanation

  • @WhiteBoxDev
    @WhiteBoxDev Год назад

    After reaching the 2nd square step at 4:45, I make a handful of manual arithmetic mistakes. I'm sorry about this! Thank you to the people who did the math and commented. My solutions of <6, 7, 7, 5> should actually be <4, 5, 5, 3>. Similar situation with the 2nd diamond step at 5:34. Please follow the algorithm as explained and your answers will be correct. Disappointing mistake.

  • @jamesmunroe6558
    @jamesmunroe6558 Год назад

    You lost me at 5:23. "The math for calculating each of these values is the exact same as before." Only with our new squares, we have the average of the corner values for x as (2+4+6+5)/4 = 17/4 + R, for y as (4+8+5+4)/4 = 21/4 + R, for z as (6+5+5+4)/4 = 20/4 = 5 + R, and for w as (5+4+4+1)/4 = 14/4 = 7/2 + R. Am I missing something?

    • @WhiteBoxDev
      @WhiteBoxDev Год назад

      Yes, you are correct, I made some arithmetic mistakes while doing the calculations manually. I'll post a standalone comment about this. Thank you.

    • @jamesmunroe6558
      @jamesmunroe6558 Год назад

      @@WhiteBoxDev OK thanks, I'm glad I wasn't off the beam - I was worried I'd messed up. I'll stay tuned for your comment so I can complete the exercise.

  • @gokudomatic
    @gokudomatic Год назад

    I find your work very interesting. Thanks for making those videos. I'm trying to implement a credible infinite world in Godot. I have already a basis, but I struggle to make real continents and oceans. And there's the topic of lakes and rivers that I didn't even begin to think about. That's why your videos are giving me helpful hints. Extra hints for my specific goal would of course be very welcome, as I'm still a real beginner in procedural worlds.

    • @WhiteBoxDev
      @WhiteBoxDev Год назад

      Good luck with your projects! I suppose the best hint I can give to beginners is that procedural generation is never about just one perfect algorithm or method. A generated world is built with all kinds of algorithms layered on top of each other. The result of each layer can be interpreted by the programmer however they like. It’s all about creative thinking and breaking down the end vision into a series of steps.

    • @gokudomatic
      @gokudomatic Год назад

      @@WhiteBoxDev Thanks. Indeed, multiple layers are necessary, even just for creating biomes. What I have in mind for continents was the Voronoi noise and opensimplex on top of that. I'd love to find an article containing the good practices for worldmap generation, though. Advanced math isn't exactly my strong point.

  • @DrCaesarsPalace_MD
    @DrCaesarsPalace_MD Год назад

    So cool!! In the pseudo code at 8min you would want to regenerate the random number for each (i,j) cell in the grid 👍

  • @jay_william17
    @jay_william17 Год назад

    Nicely done tutorial

  • @davdav4804
    @davdav4804 Год назад

    Thanks man, your video is a blessing, I really look forward to try to implement this in my projects ! Thank you so much for sharing and explaining it so well because I work with Unity and I already have a vague idea of how I will try to implement it!

  • @mikamulperi
    @mikamulperi Год назад

    Thank you! Very clear and understandable video.

  • @jaxonpetersen5942
    @jaxonpetersen5942 Год назад

    The for loop makes no sense

  • @bike_n_fish
    @bike_n_fish Год назад

    Every time I discover a knew procedural generation algorithme I'm like a child before christmass wondering what stupid things I will do with my new toy

    • @WhiteBoxDev
      @WhiteBoxDev Год назад

      The cool thing about procgen is that you can create your own quirky algorithms just by thinking of little tweaks that might align better with whatever you're making. There are many established algorithms, but what makes them really come to life are the little changes you make.

  • @emmaccode
    @emmaccode Год назад

    Nice. Well explained, good code. Thanks. This will be easy to reinterpret and implement :p

  • @panos3620
    @panos3620 Год назад

    Nice!

  • @zentek5989
    @zentek5989 Год назад

    This is a cool vibe

  • @zentek5989
    @zentek5989 Год назад

    Love how you included two options for playtime, I know a few games that get annoying to listen to because it’s so repetitive

  • @zentek5989
    @zentek5989 Год назад

    This one’s my favorite!