Winterdev
Winterdev
  • 10
  • 302 538
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
Переглядів: 6 215

Відео

Play testing my game | Regolith devlog 2
Переглядів 3,6 тис.3 роки тому
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
Переглядів 11 тис.3 роки тому
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
Переглядів 9623 роки тому
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
Переглядів 17 тис.3 роки тому
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
Переглядів 34 тис.3 роки тому
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 UA-cam 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
Переглядів 21 тис.4 роки тому
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
Переглядів 2 тис.4 роки тому
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
Переглядів 51 тис.4 роки тому
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
Переглядів 157 тис.4 роки тому
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...

КОМЕНТАРІ

  • @MissPiggyM976
    @MissPiggyM976 8 днів тому

    Too fast...

  • @amishpatel7794
    @amishpatel7794 2 місяці тому

    I'm having trouble adapting the dirty rectangle, 99% of particles move between the chunks (when it changes dirty rectangles to the other chunk's dirty rectangle) however there are a few particles that don't get added the rectangle so it just floats in the air. I don't know where im missing a call to the keepAlive method

  • @EmberLakely
    @EmberLakely 3 місяці тому

    why use a map when you can use a 2d array?

    • @Winterdev
      @Winterdev 2 місяці тому

      If your world is static a 2d array is better, but a map allows for expansion without a lot of reallocation

  • @dynamagon
    @dynamagon 3 місяці тому

    Uh, that's not a solar system, it's a bunch of balls floating in space. A solar system is a collection of masses orbiting a star. ._.

    • @Winterdev
      @Winterdev 2 місяці тому

      maybe the star is behind the camera :p

  • @tundera1297
    @tundera1297 3 місяці тому

    So I have a question. Can't you just have a class that handles sand chunks, and just use a vector to contain all chunks and have a function to convert world coordinates to a position in the vector. This might be a bit biased as I am doing the same thing but my world is not infinite.

    • @Winterdev
      @Winterdev 2 місяці тому

      You could but you would have to reindex the array every time a new chunk is added so you'd end up basically with just a map.

    • @tundera1297
      @tundera1297 2 місяці тому

      @@Winterdev I've done a bunch of stuff, and I implemented dirty rects and chunks. Movement between chunks and the dirty rects work. And while I can simulate more particles the simulation is still pretty slow. I have an 800 x 600 windows. And each sand particle is the size of a pixel. Dirty rects work by each chunk maintaining an update list and containing each particles old position and possible new position(s). I don't really know where I went wrong. Are there any suggestions you can make? Is this just because I haven't multithreaded it, or perhaps something I messed up in the code?

  • @ultima_maxima
    @ultima_maxima 4 місяці тому

    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 5 місяців тому

    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 5 місяців тому

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

    • @Winterdev
      @Winterdev 2 місяці тому

      you need board phase with some spatial hashing

  • @MaxwellCatAlphonk
    @MaxwellCatAlphonk 6 місяців тому

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

  • @thinkandmove479
    @thinkandmove479 6 місяців тому

    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 6 місяців тому

    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 7 місяців тому

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

  • @evprkr3914
    @evprkr3914 8 місяців тому

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

    • @Winterdev
      @Winterdev 2 місяці тому

      a software rasterizer :)

  • @willd2609
    @willd2609 8 місяців тому

    This is SO cool

  • @FromLake
    @FromLake 8 місяців тому

    Wow. Thank you very much for this video!❤

  • @921Ether
    @921Ether 8 місяців тому

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

    • @Winterdev
      @Winterdev 8 місяців тому

      its based on the final list of submitted moves

  • @captainbanglawala2031
    @captainbanglawala2031 9 місяців тому

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

    • @Winterdev
      @Winterdev 2 місяці тому

      yeah but only when you do angular velocity which this doesn't handle

  • @samsaraAI2025
    @samsaraAI2025 10 місяців тому

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

  • @captainbanglawala2031
    @captainbanglawala2031 10 місяців тому

    Please dive deeper into the maths behind the implementations.

  • @Ard1023
    @Ard1023 10 місяців тому

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

  • @antixdevelopment1416
    @antixdevelopment1416 11 місяців тому

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

  • @Beingamanforever
    @Beingamanforever 11 місяців тому

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

  • @skybuck2000
    @skybuck2000 Рік тому

    It might not be stable, floating point comparisons <-

  • @hussainbhavnagarwala2596
    @hussainbhavnagarwala2596 Рік тому

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

    • @Winterdev
      @Winterdev Рік тому

      Nope just the last simplex from gjk and the support function

  • @rmt3589
    @rmt3589 Рік тому

    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 Рік тому

    ;)

  • @laddermane9945
    @laddermane9945 Рік тому

    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 4 місяці тому

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

  • @TinyDeskEngineer
    @TinyDeskEngineer Рік тому

    ...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 Рік тому

      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 Рік тому

    Very interesting... thanks

  • @paraxodondev
    @paraxodondev Рік тому

    i love you

  • @roguegamingvoid4854
    @roguegamingvoid4854 Рік тому

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

  • @chakibchemso
    @chakibchemso Рік тому

    This can benefit so much from ECS

    • @chakibchemso
      @chakibchemso Рік тому

      Or cuda depending on the algorithm and data structure

  • @BuyMyBeard
    @BuyMyBeard Рік тому

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

  • @catgirlQueer
    @catgirlQueer Рік тому

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

  • @ziggyzoggin
    @ziggyzoggin Рік тому

    I miss your videos!

  • @ironduck2
    @ironduck2 Рік тому

    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 Рік тому

    A saga perhaps?

  • @simeonbeckford-tongs9391
    @simeonbeckford-tongs9391 Рік тому

    Thank you

  • @christopherpetrov2355
    @christopherpetrov2355 Рік тому

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

    • @Winterdev
      @Winterdev Рік тому

      nay you should try it ;)

  • @dynamagon
    @dynamagon Рік тому

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

    • @Winterdev
      @Winterdev Рік тому

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

  • @GenericInternetter
    @GenericInternetter Рік тому

    The Cherno sent me here.

  • @kallehed6330
    @kallehed6330 Рік тому

    Don't forget quadtrees!

  • @bamsgian9759
    @bamsgian9759 Рік тому

    How to find direction in supporting point?

  • @tsb4576
    @tsb4576 Рік тому

    excited for the next devlog

  • @Paalui
    @Paalui Рік тому

    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 Рік тому

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

  • @쾌남시대
    @쾌남시대 Рік тому

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

  • @gmjammin4367
    @gmjammin4367 Рік тому

    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 4 місяці тому

      The resource you mentioned has almost 300 pages.

  • @ubuntujackson9133
    @ubuntujackson9133 Рік тому

    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 Рік тому

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

    • @ubuntujackson9133
      @ubuntujackson9133 Рік тому

      @@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 Рік тому

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

  • @tintingai8894
    @tintingai8894 2 роки тому

    great video ! Unfortunatly the full article is down :c