Winterdev
Winterdev
  • 10
  • 289 301
Making my game clearer | Regolith devlog 3
In this video I go over the feedback that I got from episode 2 and how I implemented the changes that these true champions suggested. The main focused seemed to be making it clear what everything meant, so I cleaned up the graphics and gameplay!
Checkout the latest build: iainwinter.itch.io/regolith
Blog: https:: winter.dev
zhlédnutí: 5 922

Video

Play testing my game | Regolith devlog 2
zhlédnutí 3,4KPřed 2 lety
I was pressed for time this week so didn't write a script lol. This covers what I did last week and shows where to play the game if you are interested. Play the game: iainwinter.itch.io/regolith Website: winter.dev
Finally making a game with Falling Sand | Regolith devlog 1
zhlédnutí 10KPřed 2 lety
Hey its been a while! I've been working hard on coding and haven't really had anything to show, but recently I've switch gears to this project. This should be an interesting devlog because this project is quite small so progress will be extra speedy. This video covers what I've been doing since the last sand video. I hope you enjoy my ramblings lol. Website: winter.dev
Making scuffed Social Blade with Puppeteer & D3.js
zhlédnutí 944Před 3 lety
Thought I'd share how I built a little side project I worked on last weekend. This uses puppeteer to copy the exact sub count from my studio page, then uses d3 to graph it. Check it out: winter.dev/projects/subscribers idk if this breaks tos shhh..
Making an infinite world with Falling Sand part 2
zhlédnutí 16KPřed 3 lety
Last time we made a falling sand program, but it could only simulate particles inside one screen. In this video we’ll first split the world into chunks, then look at some ways to speed it up. Full article: winter.dev/articles/falling-sand-worlds Code for thread pool: github.com/IainWinter/IwEngine/blob/master/IwEngine/include/iw/util/thread/thread_pool.h Code for the Microsoft map, not sure how...
Making games with Falling Sand part 1
zhlédnutí 33KPřed 3 lety
I want to get familiar with the process of releasing a game before I finish Metal Sphere Rising, so I’m planning on making a game in a month, and then releasing it on Steam or something. Then CZcams started serving me falling sand videos and I thought that it would be cool to use that for this project, and here we are. Let’s look at how the tech behind these simulations work, and then I’ll use ...
EPA Explanation & Implementation
zhlédnutí 19KPřed 3 lety
GJK tells us if there is a collision, but doesn't give enough information to respond to it. In this video I cover a supplemental algorithm called the Expanding Polytope algorithm that uses the pieces from GJK to give us this info. With it we can respond to collisions between any two convex polygons. Check out the full article: winter.dev/articles/epa-algorithm GJK Tool: winter.dev/articles/gjk-...
Dev log 1 - Level Transitions & Boss Fights
zhlédnutí 1,9KPřed 3 lety
Trying out a new style of video. I want to use these as jumping off points for videos like I have made before. This is what I have been doing, but now will be making videos documenting the process. Other articles: winter.dev/ Intro: 0:00 Level design: 0:26 Code: 2:08 Results: 4:54
GJK Algorithm Explanation & Implementation
zhlédnutí 47KPřed 3 lety
Spheres are nice and all, but there comes a time when more complex shapes are needed. One popular algorithm for testing collisions is the Gilbert-Johnson-Keerthi algorithm, or GJK for short. With it we can detect collisions between any two convex polygons. Check out the full article: blog.winter.dev/2020/gjk-algorithm/ Intro- 0:00 Sphere vs Polygons: 0:17 Supporting Points: 1:20 GJK: 3:20
Designing a Physics Engine in 5 minutes
zhlédnutí 152KPřed 4 lety
Physics is a part of games that has always amazed me. I find it funny how impossible it seemed to do correctly when I was younger. While making a custom game engine, it was finally demystified! The full article: winter.dev/articles/physics-engine Full source: github.com/IainWinter/IwEngine/tree/master/IwEngine/src/physics 0:00 Intro 0:26 Dynamics 1:30 Collision Detection 4:16 Collision Response...

Komentáře

  • @ultima_maxima
    @ultima_maxima Před 26 dny

    I'm confused on the part where you reverse the distance and normal if the face is facing toward the origin. There is an edge case where if I have two cubes that are aligned on two axes and they collide, reversing the normal seems to be causing problems giving me the wrong normal. That's because the smallest normal becomes largest normal I guess, but I don't want to just cut the code out without understanding why it was there to begin with.

  • @micmaci9343
    @micmaci9343 Před měsícem

    Can you explain why 3:06 for SphereToPlane you pass a *tb Transform pointer as Plane Transform struct ? I cannot find this part of engine on github?

  • @sergodobro2569
    @sergodobro2569 Před měsícem

    What is the best way to resolve 20k objects' collisions?

  • @MaxwellCatAlphonk
    @MaxwellCatAlphonk Před 2 měsíci

    This makes me feel like a "Welcome back, to the SandPond saga. Let's get started."

  • @thinkandmove479
    @thinkandmove479 Před 2 měsíci

    Good video, and I could understand it. But... However... Why are you speaking as fast as possible without any space between your sentences?

  • @soranuareane
    @soranuareane Před 3 měsíci

    Where were you back in 2013 when I was writing my Terraria world analysis software that depended on computing biome extents using these algorithms... Thank you for such a clear explanation. This is amazingly informative and very useful.

  • @Leviathan_22
    @Leviathan_22 Před 3 měsíci

    looks really cool! you gonna release it on steam soon?

  • @evprkr3914
    @evprkr3914 Před 4 měsíci

    How did you tackle the rotation problem? That’s something I’ve been trying to solve on my own for quite some time!

  • @willd2609
    @willd2609 Před 4 měsíci

    This is SO cool

  • @FromLake
    @FromLake Před 4 měsíci

    Wow. Thank you very much for this video!❤

  • @921Ether
    @921Ether Před 5 měsíci

    how do you handle updating the dirty rect if two particles want to occupy the space but only one gets chosen?

    • @Winterdev
      @Winterdev Před 4 měsíci

      its based on the final list of submitted moves

  • @captainbanglawala2031
    @captainbanglawala2031 Před 5 měsíci

    Don't you also need the full set of contact points?

  • @samsara2024
    @samsara2024 Před 6 měsíci

    When you say that you iterate the direction D. How you do that? How many directions you use? Which values?

  • @captainbanglawala2031
    @captainbanglawala2031 Před 6 měsíci

    Please dive deeper into the maths behind the implementations.

  • @Ard1023
    @Ard1023 Před 6 měsíci

    are u still there? beacause there is not any video while two year

  • @antixdevelopment1416
    @antixdevelopment1416 Před 7 měsíci

    Pretty neat but a little info and code on optimisation would have been really good.

  • @Beingamanforever
    @Beingamanforever Před 7 měsíci

    I tried to download the code from and GitHub and tried to run the build file but it throws some errror

  • @skybuck2000
    @skybuck2000 Před 8 měsíci

    It might not be stable, floating point comparisons <-

  • @hussainbhavnagarwala2596
    @hussainbhavnagarwala2596 Před 10 měsíci

    To implement the EPA, do we need to have all the possible Minkowski difference points?

    • @Winterdev
      @Winterdev Před 10 měsíci

      Nope just the last simplex from gjk and the support function

  • @rmt3589
    @rmt3589 Před 10 měsíci

    That... explains a lot... A while back, was trying to figure out why all the collision detection stuff was reactive to objects clipping together. Apparently, this is the norm. I wonder if I can make it more proactive. Maybe with a raycast?

  • @oamioxmocliox8082
    @oamioxmocliox8082 Před 11 měsíci

    ;)

  • @laddermane9945
    @laddermane9945 Před 11 měsíci

    Pretty sure there is an error in formula @2:20. We want max(D*A - D*B) => max(D*A) - min(D*B) => max(D*A) - (-max(-D*B)) => max(D*A) + max(-D*B). This is using the identity that min(f(x)) = -max(-f(x)). I think you just merged the minus signs on accident. What are your thoughts? Am I missing something?

    • @ruslahn6717
      @ruslahn6717 Před měsícem

      thought the same thing. I also think, that this is an error.

  • @TinyDeskEngineer
    @TinyDeskEngineer Před 11 měsíci

    ...Is collision detection between primitives really as simple as separate functions for each possible interactions between all the different shapes? Is there not a better, more easily extended way to do this?

    • @Winterdev
      @Winterdev Před 11 měsíci

      I changed it to be a table of function pointers later on which was much easier to work with. I don’t like the double dispatch at all looking back

  • @P-G-77
    @P-G-77 Před 11 měsíci

    Very interesting... thanks

  • @paraxodondev
    @paraxodondev Před 11 měsíci

    i love you

  • @roguegamingvoid4854

    came back after 3 years to this channel, looks like you still going strong. looks very nice :)

  • @chakibchemso
    @chakibchemso Před rokem

    This can benefit so much from ECS

    • @chakibchemso
      @chakibchemso Před rokem

      Or cuda depending on the algorithm and data structure

  • @BuyMyBeard
    @BuyMyBeard Před rokem

    Ugh. Too. Much. Math. I think i’ll just stick to iterating over my edges to find an overlap

  • @catgirlQueer
    @catgirlQueer Před rokem

    been a while, wanted to say this looks really cool and would love to see more of it

  • @ziggyzoggin
    @ziggyzoggin Před rokem

    I miss your videos!

  • @ironduck2
    @ironduck2 Před rokem

    Great video! But I have a question, how did you do the graphycs of the video? Like the dynamics title and those trancitions. I want to do videos like this, but I don't know how to make them visually apealing

  • @Poly_0000
    @Poly_0000 Před rokem

    A saga perhaps?

  • @simeonbeckford-tongs9391

    Thank you

  • @christopherpetrov2355

    I might sound silly but can we have a python version of this😅

  • @dynamagon
    @dynamagon Před rokem

    how do you construct your vector3 union/struct/class?

    • @Winterdev
      @Winterdev Před rokem

      It’s just 3 floats and you pass it x,y,z or it defaults to 0,0,0

  • @GenericInternetter
    @GenericInternetter Před rokem

    The Cherno sent me here.

  • @kallehed6330
    @kallehed6330 Před rokem

    Don't forget quadtrees!

  • @bamsgian9759
    @bamsgian9759 Před rokem

    How to find direction in supporting point?

  • @tsb4576
    @tsb4576 Před rokem

    excited for the next devlog

  • @Paalui
    @Paalui Před rokem

    Hello Winterdev. Thanks for the great Video. When checking what faces to delete you check if the normal of the triangle and the supportpoint are in the same direction. This only works for some cases. Since you want to check if the support point is on one side of the triangle you want to use the supportpoint relative to the triangle. So the check would look like this if (SameDirection(normals[i], support-polytope[faces[i*3]])

    • @NTSHOni
      @NTSHOni Před rokem

      Just found this comment and it solved the issue I was on for hours, thanks a lot!

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

    Wow!! Thank you for the easy explanation.!!!

  • @gmjammin4367
    @gmjammin4367 Před rokem

    Not to be a jerk but I think it would be valuable to clarify that this is really the sub-variant of the traditional GJK algorithm (GJK-SAT). As well as this, the number of cases in three dimensional space actually expands to considering all regions rather than just the faces of the simplex. I hate to be rude but I spent way too long figuring this out when attempting to implement this myself. Gino van den Bergen's 'Colllsion Detection in Interactive 3D Environments' documents the GJK as well as Gino's EPA rather extensively, and I think the full distance minimization implementation is insightful for those just figuring this stuff out. Either way, this video does a fantastic job explaining the essence of the support function and the configuration space obstacle. I can't wait to see what else you're up to!

    • @Hector-bj3ls
      @Hector-bj3ls Před 26 dny

      The resource you mentioned has almost 300 pages.

  • @ubuntujackson9133
    @ubuntujackson9133 Před rokem

    Winterdev: Codes a physics engine in 5 minutes, provides glimpses of classes but doesn't provide the source code Me: Can I see the full source code, so that I can run and experiment with it? Winterdev: NOOOOO, don't you know how much TIME and hard work went into this??? How can you put such high expectations on me???

    • @Winterdev
      @Winterdev Před rokem

      It’s in the article :p github.com/IainWinter/IwEngine/tree/master/IwEngine/src/physics

    • @ubuntujackson9133
      @ubuntujackson9133 Před rokem

      @@Winterdev Thank you, and sorry for the harsh comment, I just see a lot of bait on YT nowadays, trying to give ppl the false sense they've learned something when they've just made eyecandy for viewers

  • @zimi992
    @zimi992 Před rokem

    It is the first example of well defined problems with this kind of physics mechanics. Loved the way you explained them <3

  • @tintingai8894
    @tintingai8894 Před rokem

    great video ! Unfortunatly the full article is down :c

  • @Tigrou7777
    @Tigrou7777 Před rokem

    An alternative approach for handling particles in a efficient way is to maintain 2 collections : one is a 2D array that map a x/y position to a particle (same as what you describe in the video) and the other is a array of particles. Each particle contains a type and a x/y position. It can be a struct to avoid creating many objects. To update simulation, you simply iterate on the particle array. it automatically skip all empty grid cells and prevent you moving a particle more than once.

  • @wjrasmussen666
    @wjrasmussen666 Před rokem

    Going to make any more videos? How about a github link?

  • @jannikbock6756
    @jannikbock6756 Před rokem

    Definetly has a cool foundation. Are you still working on this? Can you upload the project to your git? :)

    • @Winterdev
      @Winterdev Před rokem

      Most of the code is here github.com/IainWinter/IwEngine/tree/master/Games/Regolith but I revamped the whole thing so I need to make a vid about that at some point

  • @matthewmathis62
    @matthewmathis62 Před rokem

    Hey man, I just noticed that your Description is not Algorithm Optimized. The first few words in your Description are used by CZcams to help people find your video (CZcams says this in the helper text next to the input box) So, I think it should have keywords and be descriptive of your video, such as: "How to Make a Falling Sand Game in Unity.". Something like that. Just thought I'd tell you!

  • @Tigrou7777
    @Tigrou7777 Před rokem

    Have you ever considered using compute shaders for sand logic simulation ?

    • @Winterdev
      @Winterdev Před rokem

      I did, but didn't have the time to go down that route. I can imagine that the way it would work is instead of looking from the POV of the filled cells, you would look from the POV of the destination and check the 8 surrounding cells. It might be the case that the fps is so high that you don't need more than a 3x3 convolution.