![Winterdev](/img/default-banner.jpg)
- 10
- 289 301
Winterdev
United States
Registrace 30. 07. 2020
I make game engines and game engine accessories
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
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...
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.
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?
What is the best way to resolve 20k objects' collisions?
This makes me feel like a "Welcome back, to the SandPond saga. Let's get started."
Good video, and I could understand it. But... However... Why are you speaking as fast as possible without any space between your sentences?
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.
looks really cool! you gonna release it on steam soon?
How did you tackle the rotation problem? That’s something I’ve been trying to solve on my own for quite some time!
This is SO cool
Wow. Thank you very much for this video!❤
how do you handle updating the dirty rect if two particles want to occupy the space but only one gets chosen?
its based on the final list of submitted moves
Don't you also need the full set of contact points?
When you say that you iterate the direction D. How you do that? How many directions you use? Which values?
Please dive deeper into the maths behind the implementations.
are u still there? beacause there is not any video while two year
Pretty neat but a little info and code on optimisation would have been really good.
I tried to download the code from and GitHub and tried to run the build file but it throws some errror
It might not be stable, floating point comparisons <-
To implement the EPA, do we need to have all the possible Minkowski difference points?
Nope just the last simplex from gjk and the support function
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?
;)
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?
thought the same thing. I also think, that this is an error.
...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?
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
Very interesting... thanks
i love you
came back after 3 years to this channel, looks like you still going strong. looks very nice :)
This can benefit so much from ECS
Or cuda depending on the algorithm and data structure
Ugh. Too. Much. Math. I think i’ll just stick to iterating over my edges to find an overlap
been a while, wanted to say this looks really cool and would love to see more of it
I miss your videos!
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
A saga perhaps?
Thank you
I might sound silly but can we have a python version of this😅
nay you should try it ;)
how do you construct your vector3 union/struct/class?
It’s just 3 floats and you pass it x,y,z or it defaults to 0,0,0
The Cherno sent me here.
Don't forget quadtrees!
How to find direction in supporting point?
excited for the next devlog
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]])
Just found this comment and it solved the issue I was on for hours, thanks a lot!
Wow!! Thank you for the easy explanation.!!!
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!
The resource you mentioned has almost 300 pages.
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???
It’s in the article :p github.com/IainWinter/IwEngine/tree/master/IwEngine/src/physics
@@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
It is the first example of well defined problems with this kind of physics mechanics. Loved the way you explained them <3
great video ! Unfortunatly the full article is down :c
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.
Going to make any more videos? How about a github link?
Definetly has a cool foundation. Are you still working on this? Can you upload the project to your git? :)
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
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!
Have you ever considered using compute shaders for sand logic simulation ?
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.