CodingQuest
CodingQuest
  • 25
  • 331 499
Procedural world generation with Perlin Noise
Procedural generation of game worlds using perlin noise.
In this video I show how to generate random game worlds, like those in the game civilization.
The worlds are 2d tilemap worlds, and the implementation is in Python/PyGame.
☕️ ☕️ No coffee, no coding! 🔥 🔥
If you like to support my work with a small donation:
www.buymeacoffee.com/CodingQuest
Thank you!!
You can find the source code, and tile set here:
github.com/CodingQuest2023/Algorithms (WorldGeneration/PerlinNoise)
Music: Imagine by Auixe is licensed under a Creative Commons License.
creativecommons.org/licenses/...
Support by RFM - NCM: bit.ly/2xGHypM
Music: Imagine by Auixe
Soundcloud: soundcloud.com/auixe
TH-cam: /@auixemusic4618
มุมมอง: 6 772

วีดีโอ

Maze generating algorithms
มุมมอง 2.1K11 หลายเดือนก่อน
Generating random mazes using these 3 algorithms: - Binary tree - Aldous-Border - Hunt-and-kill ☕️ ☕️ No coffee, no coding! 🔥 🔥 If you like to support my work with a small donation: www.buymeacoffee.com/CodingQuest Thank you!! You can find the source code, and tile set here: github.com/CodingQuest2023/Algorithms (/MazeAlgorithms) Music: Imagine by Auixe Soundcloud: soundcloud.com/auixe TH-cam: ...
4. Loading the level - Creating a 2D platformer in PyGame
มุมมอง 83911 หลายเดือนก่อน
In this series I will show you step-by-step how to create this 2d platformer in Python using the PyGame module. I will share all source code and game assets on my GitHub, see the link below. Episode 4: Using the PyTmx module to load the level that was designed in the Tiled editor into our game. We will load the platforms layer, and create sprites for each of the tiles in this layer. ☕️ ☕️ No co...
The Wave Function Collapse algorithm
มุมมอง 284K11 หลายเดือนก่อน
Generating random worlds using the wave function collapse algorithm. This video explains how the WFC algorithm works, and explains how to implement the WFC algorithm in python code. ☕️ ☕️ No coffee, no coding! 🔥 🔥 If you like to support my work with a small donation: www.buymeacoffee.com/CodingQuest Thank you!! You can find the source code, and tile set here: github.com/CodingQuest2023/Algorith...
x64 Assembly course: 16. Floating points, SIMD and SSE
มุมมอง 871ปีที่แล้ว
Programming x64 Assembly language in Visual Studio crash course. Episode 16: In this episode we will look at some basic floating point calculations on SSE, both SISD and SIMD. ☕️ ☕️ No coffee, no coding! 🔥 🔥 If you like to support my work with a small donation: www.buymeacoffee.com/CodingQuest Thank you!! Source code: github.com/CodingQuest2023/AssemblyX64_Tutorial If you like to try the code f...
3. Sprite collisions - Creating a 2D platformer in PyGame
มุมมอง 781ปีที่แล้ว
In this series I will show you step-by-step how to create this 2d platformer in Python using the PyGame module. I will share all source code and game assets on my GitHub, see the link below. Episode 3: Implementing sprite collision detection. GitHub: github.com/CodingQuest2023/PyGameDev
2. Main character sprite animation - Creating a 2D platformer in PyGame
มุมมอง 698ปีที่แล้ว
In this series I will show you step-by-step how to create this 2d platformer in Python using the PyGame module. I will share all source code and game assets on my GitHub, see the link below. Episode 2: Creating the main character and add idle, running and attack sprite animations. ☕️ ☕️ No coffee, no coding! 🔥 🔥 If you like to support my work with a small donation: www.buymeacoffee.com/CodingQu...
1. Creating the first sprite - Creating a 2D platformer in PyGame
มุมมอง 2.4Kปีที่แล้ว
In this series I will show you step-by-step how to create this 2d platformer in Python using the PyGame module. I will share all source code and game assets on my GitHub, see the link below. Episode 1: Drawing a background and creating animated bee sprites. ☕️ ☕️ No coffee, no coding! 🔥 🔥 If you like to support my work with a small donation: www.buymeacoffee.com/CodingQuest Thank you!! GitHub: ...
Creating a 2D platformer in PyGame
มุมมอง 3.5Kปีที่แล้ว
In this series I will show you step-by-step how to create this 2d platformer in Python using the PyGame module. I will share all source code and game assets on my GitHub, see the link below. Episode 0: Introduction ☕️ ☕️ No coffee, no coding! 🔥 🔥 If you like to support my work with a small donation: www.buymeacoffee.com/CodingQuest Thank you!! GitHub: github.com/CodingQuest2023/PyGameDev
x64 Assembly course: 15. Creating a windows application
มุมมอง 1.5Kปีที่แล้ว
Programming x64 Assembly language in Visual Studio crash course. Episode 15: In this episode we create a basic windows application in x64 assembly code using the win32 API functions. ☕️ ☕️ No coffee, no coding! 🔥 🔥 If you like to support my work with a small donation: www.buymeacoffee.com/CodingQuest Thank you!! Source code: github.com/CodingQuest2023/AssemblyX64_Tutorial If you like to try the...
x64 Assembly course: 14. A number guessing game
มุมมอง 646ปีที่แล้ว
Programming x64 Assembly language in Visual Studio crash course. Episode 14: Let's have a look at a simple game fully programmed in x64 Assembly, that demonstrates the things we have learned in the previous episodes. We use Printf (episode 10), Scanf (episode 12), compare instructions and conditional branch instructions (episode 7). ☕️ ☕️ No coffee, no coding! 🔥 🔥 If you like to support my work...
x64 Assembly course: 13. Bitwise logical instructions
มุมมอง 404ปีที่แล้ว
Programming x64 Assembly language in Visual Studio crash course. Episode 13: An introduction to the assembly instructions AND, OR, XOR and NOT for performing bitwise logical operations. ☕️ ☕️ No coffee, no coding! 🔥 🔥 If you like to support my work with a small donation: www.buymeacoffee.com/CodingQuest Thank you!! Source code: github.com/CodingQuest2023/AssemblyX64_Tutorial If you like to try ...
x64 Assembly course: 12. Calling Scanf from Assembly code
มุมมอง 716ปีที่แล้ว
Programming x64 Assembly language in Visual Studio crash course. Episode 12: In this episode we will look at how we can call Scanf from Assembly code. Example 1 will read an integer value using Scanf, and example 2 will read a string. ☕️ ☕️ No coffee, no coding! 🔥 🔥 If you like to support my work with a small donation: www.buymeacoffee.com/CodingQuest Thank you!! Source code: github.com/CodingQ...
x64 Assembly course: 11. Cheating with Disassembly
มุมมอง 643ปีที่แล้ว
Programming x64 Assembly language in Visual Studio crash course. Episode 11: In this episode we will look at how we can use the disassembly debug window to improve our Assembly coding. By first writing a small C program, and then look at the C-compiler generated assembly code we can learn a lot! ☕️ ☕️ No coffee, no coding! 🔥 🔥 If you like to support my work with a small donation: www.buymeacoff...
x64 Assembly course: 10. Calling Printf from Assembly code
มุมมอง 990ปีที่แล้ว
x64 Assembly course: 10. Calling Printf from Assembly code
x64 Assembly course: 9. Using the Stack
มุมมอง 1.2Kปีที่แล้ว
x64 Assembly course: 9. Using the Stack
x64 Assembly course: 8. Debugging your assembly code
มุมมอง 677ปีที่แล้ว
x64 Assembly course: 8. Debugging your assembly code
x64 Assembly course: 7. The CMP instruction and Conditional branches
มุมมอง 790ปีที่แล้ว
x64 Assembly course: 7. The CMP instruction and Conditional branches
x64 Assembly course: 6. Conditional branch instructions
มุมมอง 817ปีที่แล้ว
x64 Assembly course: 6. Conditional branch instructions
x64 Assembly course: 5. The Flags register
มุมมอง 1Kปีที่แล้ว
x64 Assembly course: 5. The Flags register
x64 Assembly course: 4. The ADD, SUB, INC and DEC instructions
มุมมอง 1.3Kปีที่แล้ว
x64 Assembly course: 4. The ADD, SUB, INC and DEC instructions
x64 Assembly course: 1. Programming x64 assembly in Visual Studio 2019 & 2022
มุมมอง 14Kปีที่แล้ว
x64 Assembly course: 1. Programming x64 assembly in Visual Studio 2019 & 2022
x64 Assembly course: 2. General purpose registers and the MOV instruction
มุมมอง 3.3Kปีที่แล้ว
x64 Assembly course: 2. General purpose registers and the MOV instruction
x64 Assembly course: 3. Directives and the call & ret instructions
มุมมอง 1.9Kปีที่แล้ว
x64 Assembly course: 3. Directives and the call & ret instructions

ความคิดเห็น

  • @Siroitin
    @Siroitin วันที่ผ่านมา

    FACT: Perlin noise has been canceled. Use diffusion

  • @GonzaloDev-ww9un
    @GonzaloDev-ww9un 5 วันที่ผ่านมา

    :)

  • @nico6465
    @nico6465 10 วันที่ผ่านมา

    Thank you very much for this playlist. I have a lot of fun following this course :)

  • @Jaun_
    @Jaun_ 11 วันที่ผ่านมา

    Great video (:

  • @SaniSensei
    @SaniSensei หลายเดือนก่อน

    One thing I noticed, that might be difficult to achieve, is probably deterministic maps. e.g. like in minecraft you can set a seed for the randomizer, and will get the same map for the same seed everytime. With WFC, this will probably work fine if you generate the entire map right from the beginning and just set random.seed(...) at the beginning.. but if you want to dynamically grow the map (again like in minecraft where the world grows in the players walking direction), then you'll likely run into the issue that tiles might result in different outcomes, depending on from what direction you approach them. Addition: So WFC would no longer choose the tile with the lowest entropy *globally*, but limited to the players proximity. In a sense a nice feature, because it adds a source of randomness (player movement), practically guaranteeing that no map is like the other, but it also loses this nice feature of the ability to share a seed. But all the other features you can play around with, that have already been mentioned in the comments, are certainly worth to try it out.

  • @kingshahzad78
    @kingshahzad78 2 หลายเดือนก่อน

    Love it Sir

  • @ultimateownsz
    @ultimateownsz 2 หลายเดือนก่อน

    You could define your for loops more clearly, for i or for j doesn't make sense in reading the code. Still a great video nonetheless

    • @Franchescovisk
      @Franchescovisk 2 หลายเดือนก่อน

      you must be a beginner, but i and j represent just a number, No need to change anything.

    • @ultimateownsz
      @ultimateownsz 2 หลายเดือนก่อน

      @@Franchescovisk lmao, why would you assume this. For clarity the iteration can be named whatever, but for readability it is better practice if you name it something related to the context of your code.

    • @Franchescovisk
      @Franchescovisk 2 หลายเดือนก่อน

      @@ultimateownszthe for loop variable doesn't mean anything and is just the loop number, it doesn't make sense to name it since it doesn't mean anything besides that

    • @userk9
      @userk9 7 วันที่ผ่านมา

      @@ultimateownszi j loops are standard practice afaik, at least in C# I believe k v is the standard in LUA

  • @ThomasJagust
    @ThomasJagust 2 หลายเดือนก่อน

    Hi i got two improvements but they are optional. Lets say u have a sprite for the tileMap which is bigger in size than the tileSize than the unit cant´go between lets say a coast north tile which has grass in the north an a forest north tile which has gras in the south cause its too big. So i figured that out with some lines of cde that between every partial grass tile and another partial grass tile always one grass tile is place so theres always enough space for bigger sized sprites to pass between those two partial sprites. And the other thing is, its just a tiny thing, when the connectors in the constrain method are added there dont need to be duplicates in the connectors cause the resulting connectors list only is a comparison list where a value like "0" only needs to be in once.

  • @AleksaAleksic-r1w
    @AleksaAleksic-r1w 2 หลายเดือนก่อน

    please make a real tutorial for like navigating in pycharm what is that config thing evrething i know a lil of python coding but i do not know how to order files and all that so if u could make it. In present of this coment i am still trying to find a tutorial.

  • @DanielMüller-r7m
    @DanielMüller-r7m 2 หลายเดือนก่อน

    Thank you for the nice tutorial. I'm currently trying to understand and apply object-oriented programming. When I saw your video I just thought: "Oh damn, this guy is really, really fast...way too fast for me :) After 10 times I was able to implement it. Best regards, Daniel

  • @clushsfg
    @clushsfg 2 หลายเดือนก่อน

    good

  • @rowanvanzyl426
    @rowanvanzyl426 2 หลายเดือนก่อน

    Amazing content as usual

  • @rowanvanzyl426
    @rowanvanzyl426 2 หลายเดือนก่อน

    Awesome video my guy

  • @rowanvanzyl426
    @rowanvanzyl426 2 หลายเดือนก่อน

    Awesome video my guy

  • @gsc8902
    @gsc8902 3 หลายเดือนก่อน

    I like your explanation thank you.

  • @firesickle
    @firesickle 3 หลายเดือนก่อน

    holy crap I am glad I am not the only one doing y, x

  • @gamalielgerona2391
    @gamalielgerona2391 3 หลายเดือนก่อน

    woah

  • @GameJam230
    @GameJam230 3 หลายเดือนก่อน

    One really interesting algorithm I saw recently on TH-cam was used for a Minecraft randomly changing maze, but it wasn't generating a NEW maze from scratch, but instead had the ability to convert any EXISTING perfect maze into another one, only by needing to change the properties of two adjacent cells. It worked by representing the maze ad a tree structure with a root node, and having all other nodes have exactly one path to navigate back up the tree towards it. This means there are no loops, and no isolated areas. Starting with a maze of this format, you look at the root node and choose one of its adjacent cells (not diagonals). You go to that cell, and if the tree node representing it has any other nodes pointing TO it, you wall off that connection. Then, you make the OLD root node point to it, and now this node is the new root node. Every time you run this algorithm, one perfect maze becomes a new entirely valid perfect maze, and you get to choose how many times you run it. It could be as fast as O(1) if you choose to only run the algorithm a fixed number of times, but if the maze is significantly bigger than the number of times you run it, your maze might look extremely similar to previous versions, so I believe the creator recommended running it about 10 times for every cell in the maze if I recall? Maybe less than that, but ultimately it's up to the user.

    • @nneptdotnet
      @nneptdotnet 3 หลายเดือนก่อน

      This is very good info! What was the name of the video? Edit: I think i found it: th-cam.com/video/zbXKcDVV4G0/w-d-xo.html

    • @GameJam230
      @GameJam230 3 หลายเดือนก่อน

      @@nneptdotnet Yes, that's the one!

  • @eduardopozos5022
    @eduardopozos5022 3 หลายเดือนก่อน

    Do you know how to create custom libraries?

  • @papapspe5662
    @papapspe5662 3 หลายเดือนก่อน

    Best

  • @buriedbones-nh9xr
    @buriedbones-nh9xr 3 หลายเดือนก่อน

    Just because a game has a generated world that doesnt make your game more unique or interesting I mean how much does it make a difference if the tile is a grass texture tile or a tree I think indie game developers are still struggling with what makes a game interesting

  • @kcvinu
    @kcvinu 3 หลายเดือนก่อน

    Nice video. It is really helpful. Is there any option to use Visual Studio to create a dll file with MASM64 ? I am using VS 2022.

  • @yelle8647
    @yelle8647 3 หลายเดือนก่อน

    At 09:50, sorry, but I don't quite get why we add extra +1 to size_x, size_y. What we have seen before? At what minute I should have seen it.

    • @CodingQuest2023
      @CodingQuest2023 3 หลายเดือนก่อน

      To know which terrain tile you need, you need to have 4 noise values for each of the tile corners. So if you want a world with NxN tiles you need N+1xN+1 noise values. I hope this helps 😊

  • @sunnynayak9444
    @sunnynayak9444 4 หลายเดือนก่อน

    THANKS A LOT I WILL USE IT IN MY CS PROJECT

  • @kevnar
    @kevnar 4 หลายเดือนก่อน

    I once used wave function collapse for a procedural melody maker about 15 years ago. I didn't even know the algorithm existed. I just set up a system that decides what notes can come next, based on the current note. For example, if it's the 4th note in the scale, it has a higher probability to go to the 1, 5, or 8th note, and a lower probability to go to 2, 3, and 6. And so it just kept plinking along through the endless melodies. Great things happen when you're bored and curious.

  • @xCCflierx
    @xCCflierx 5 หลายเดือนก่อน

    Just started watching and I'm already inspired. Putting a limit on how many times a tile can be used would mean only a certain percentage of the map will ever be that tule, and only if the condition to place that tile is correct. So if I want a small building I would only make 4 corner tiles, top tile, bottom tile, left tile, right tile, center tile. It only makes sense for them to connect to each other. And then I'm thinking the algorithm would look beyond just what's next to each square, otherwise i might start a building that cant be finished

  • @teamredstudio7012
    @teamredstudio7012 5 หลายเดือนก่อน

    Fascinating! Ik ga dit zeker eens proberen gebruiken. Een ander interessant algoritme is met Perlin noise, maar dit lijkt simpeler.

  • @squareski
    @squareski 5 หลายเดือนก่อน

    I quite like the hunt and kill algorithm, but it doesn't seem to generate any crossroads. I noticed this with the depth first algorithm too. Both 'carve' corridors so wonder if this method means it never generates a crossroads (that is a cell with 0 walls).

  • @indieBen
    @indieBen 5 หลายเดือนก่อน

    Somehow, looks like an improved version of the Minesweeper game :)

  • @TheRawi
    @TheRawi 5 หลายเดือนก่อน

    No idea why MSVC doesn't support inline asm64 :/

  • @connorjosh2088
    @connorjosh2088 5 หลายเดือนก่อน

    5:48 wouldn't this be 3d not 2d? X, Y and brightnes?? GREAT video btw thank you 🙏

  • @timonix2
    @timonix2 5 หลายเดือนก่อน

    You did not go through any back tracking. If it cannot find a solution it needs to undo some amount of assumptions

  • @iloveblender8999
    @iloveblender8999 6 หลายเดือนก่อน

    I really like this video and will use the algorithm in godot.

  • @iloveblender8999
    @iloveblender8999 6 หลายเดือนก่อน

    So if you have n tiles and m possible values, that would be m^n possible combinations, but we want to find one that satisfies the rules. I have heard of that. CSP?

  • @bloggy6465
    @bloggy6465 6 หลายเดือนก่อน

    can this be used for biomes cus it doesnt seem like it would?

  • @matt8ress
    @matt8ress 6 หลายเดือนก่อน

    yall make this sound too simple, took me 4 months to make my own implementation. nonetheless, all videos i watched were great, but this one stands out to me because its about wfc and wfc only. 👍

  • @andewprod
    @andewprod 7 หลายเดือนก่อน

    Thanks so much for this video! Greetings from germany :D

  • @tsogbayarsambuu9826
    @tsogbayarsambuu9826 7 หลายเดือนก่อน

    Thank you very much

  • @Masemiliano_
    @Masemiliano_ 8 หลายเดือนก่อน

    Continue with these great explanation videos!

  • @frontbro9571
    @frontbro9571 8 หลายเดือนก่อน

    Is there any way I could contact you directly ?

    • @CodingQuest2023
      @CodingQuest2023 8 หลายเดือนก่อน

      CodingQuest2023@gmail.com

  • @saminegamme
    @saminegamme 8 หลายเดือนก่อน

    Is it in python ?

  • @SwapChain
    @SwapChain 8 หลายเดือนก่อน

    Thank you very much! We need more content in this series!

  • @SwapChain
    @SwapChain 8 หลายเดือนก่อน

    Great work! We need more of this win32 asm lessons!

  • @InCognite
    @InCognite 8 หลายเดือนก่อน

    Thank you for uploading this video! Now I finally understand how wave function collapse works both in theory and code and managed to port it into my own project.

  • @po_decol
    @po_decol 8 หลายเดือนก่อน

    best explaination so far

  • @papapspe5662
    @papapspe5662 8 หลายเดือนก่อน

    Classs!

  • @이정섭-x7d
    @이정섭-x7d 8 หลายเดือนก่อน

    This is something I would find very interesting to implement using F#. I am developing a simulation program in .NET for a research that I'm conducting, and generating terrains with diverse and realistic environment factors is one of the main problems I have to tackle. This video gave me great insight!

  • @GoobNoob
    @GoobNoob 8 หลายเดือนก่อน

    Not a fan of this one, because you don't explain how to actually get those windows/views for debugging the registers and step through on VS2022

    • @DxXNA
      @DxXNA 8 หลายเดือนก่อน

      - Run Your Program to a Break Point. If you don't know how to breakpoint you can right click any line in your code -> Breakpoint -> Insert Breakpoint - Click on Debug at Top in VS 2022 -> Windows -> Registers -> Memory -> Watch

  • @francescopiazza4882
    @francescopiazza4882 9 หลายเดือนก่อน

    Very interesting, thanks !

  • @markmanning2921
    @markmanning2921 9 หลายเดือนก่อน

    had to stop watching when you said "implemented in python" because i literally spent 3 months trying to learn that and i just rejected everything about it outright. can you do it again in C??? :)