- Видео 25
- Просмотров 338 767
CodingQuest
Нидерланды
Добавлен 9 июн 2023
Welcome to my channel!
You can expect videos about various programming related topics here. I am mainly interested in:
C / C++/ Assembly x64
Python / PyGame
GameDev
Algorithms
☕️ ☕️ No coffee, no coding! 🔥 🔥
If you like to support my work with a small donation:
www.buymeacoffee.com/CodingQuest
Thank you!!
You can expect videos about various programming related topics here. I am mainly interested in:
C / C++/ Assembly x64
Python / PyGame
GameDev
Algorithms
☕️ ☕️ No coffee, no coding! 🔥 🔥
If you like to support my work with a small donation:
www.buymeacoffee.com/CodingQuest
Thank you!!
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
RUclips: /@auixemusic4618
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
RUclips: /@auixemusic4618
Просмотров: 7 529
Видео
Maze generating algorithms
Просмотров 2,3 тыс.Год назад
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 RUclips:...
4. Loading the level - Creating a 2D platformer in PyGame
Просмотров 1 тыс.Год назад
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
Просмотров 285 тыс.Год назад
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
Просмотров 925Год назад
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
Просмотров 874Год назад
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
Просмотров 831Год назад
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
Просмотров 3 тыс.Год назад
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
Просмотров 4,4 тыс.Год назад
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,6 тыс.Год назад
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
Просмотров 693Год назад
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
Просмотров 437Год назад
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
Просмотров 799Год назад
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
Просмотров 708Год назад
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
Просмотров 1,1 тыс.Год назад
x64 Assembly course: 10. Calling Printf from Assembly code
x64 Assembly course: 9. Using the Stack
Просмотров 1,2 тыс.Год назад
x64 Assembly course: 9. Using the Stack
x64 Assembly course: 8. Debugging your assembly code
Просмотров 750Год назад
x64 Assembly course: 8. Debugging your assembly code
x64 Assembly course: 7. The CMP instruction and Conditional branches
Просмотров 849Год назад
x64 Assembly course: 7. The CMP instruction and Conditional branches
x64 Assembly course: 6. Conditional branch instructions
Просмотров 898Год назад
x64 Assembly course: 6. Conditional branch instructions
x64 Assembly course: 5. The Flags register
Просмотров 1,1 тыс.Год назад
x64 Assembly course: 5. The Flags register
x64 Assembly course: 4. The ADD, SUB, INC and DEC instructions
Просмотров 1,5 тыс.Год назад
x64 Assembly course: 4. The ADD, SUB, INC and DEC instructions
x64 Assembly course: 1. Programming x64 assembly in Visual Studio 2019 & 2022
Просмотров 15 тыс.Год назад
x64 Assembly course: 1. Programming x64 assembly in Visual Studio 2019 & 2022
x64 Assembly course: 2. General purpose registers and the MOV instruction
Просмотров 3,7 тыс.Год назад
x64 Assembly course: 2. General purpose registers and the MOV instruction
x64 Assembly course: 3. Directives and the call & ret instructions
Просмотров 2 тыс.Год назад
x64 Assembly course: 3. Directives and the call & ret instructions
thanks bro! Awesome video!😄
Thank you so much for this video.
FACT: Perlin noise has been canceled. Use diffusion
Use what works 🤷♂️
:)
Thank you very much for this playlist. I have a lot of fun following this course :)
Great video (:
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.
Love it Sir
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
you must be a beginner, but i and j represent just a number, No need to change anything.
@@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.
@@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
@@ultimateownszi j loops are standard practice afaik, at least in C# I believe k v is the standard in LUA
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.
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.
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
good
Amazing content as usual
Awesome video my guy
Awesome video my guy
I like your explanation thank you.
holy crap I am glad I am not the only one doing y, x
woah
One really interesting algorithm I saw recently on RUclips 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.
This is very good info! What was the name of the video? Edit: I think i found it: ruclips.net/video/zbXKcDVV4G0/видео.html
@@nneptdotnet Yes, that's the one!
Do you know how to create custom libraries?
Best
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
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.
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.
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 😊
THANKS A LOT I WILL USE IT IN MY CS PROJECT
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.
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
Fascinating! Ik ga dit zeker eens proberen gebruiken. Een ander interessant algoritme is met Perlin noise, maar dit lijkt simpeler.
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).
Somehow, looks like an improved version of the Minesweeper game :)
No idea why MSVC doesn't support inline asm64 :/
5:48 wouldn't this be 3d not 2d? X, Y and brightnes?? GREAT video btw thank you 🙏
You did not go through any back tracking. If it cannot find a solution it needs to undo some amount of assumptions
can this be used for biomes cus it doesnt seem like it would?
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. 👍
Thanks so much for this video! Greetings from germany :D
Thank you very much
Continue with these great explanation videos!
Is there any way I could contact you directly ?
CodingQuest2023@gmail.com
Is it in python ?
Yes
Thank you very much! We need more content in this series!
Great work! We need more of this win32 asm lessons!
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.
best explaination so far
Classs!
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!
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
- 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
Very interesting, thanks !
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??? :)