btw please measure performance in frame time, not fps
@alvarobyrneАй бұрын
go go go .,sadfg ak,rÚÒƯ¿ÅÚ¯¿˝¸
@richardramirez5746Ай бұрын
great
@starplatinum3305Ай бұрын
conemarching is just for depth ?
@nabilnymansourАй бұрын
Yes, I use it to get the depth value to the scene which reduces how many times I have to ray march later.
@amireasy6419Ай бұрын
Does raymarching lose detail with smaller objects? amazing video btw.
@nabilnymansourАй бұрын
Not necessarily, if the object is really far away then yeah it will lose the detail since the number of pixels the object will occupy on the screen will be very small, but if the object is very close to the camera and is occupying a lot of the screen, then it doesn't matter. I guess to answer your question: its relative to how many pixels the object is occupying the screen. Oh and thank you!
@UltimatePerfectionАй бұрын
Capsules > cones.
@end_rickАй бұрын
I think the video is great. The solution with the plane as the camera near plane rescued me. Personally, I would appreciate some more explanation of how the world position and view direction work together in that context, because that is still a closed book for me. However, I understand that these topics can be daunting for the majority of viewers. I would love to see more videos in that style, though.
@nabilnymansourАй бұрын
I'm glad the video helped. For your question though, I am assuming you are taking about how the ray marching plane is being calculated from the camera. The idea is to keep the plane on top of the near plane of the camera right, so calculating that position of the near plane globally is what we are trying to find. the near plane is always in front of the camera so we first get the global position of the camera, then move in the direction that the camera is looking at by how far the near plane is. Now when I look back at the video and the article, you are right. I should have explained the details of that and probably some more illustrations to showcase that in action. I am new to the tutorial making scene so I'll try to be more meticulous next time. I hope my explanation here helped though
@nabilnymansourАй бұрын
Okay I came up with a quick illustration to explain what I mean. I don't use excaldraw for sharing so I hope this link isn't broken after a while excalidraw.com/#json=QI6S4Ify4eEwRAQ0GZE_q,NtoAV0HPR4RSaF9Yc4zerA
@ch03618Ай бұрын
Excellent video! 😄
@nabilnymansourАй бұрын
Thanks!
@judgsmithАй бұрын
Super underrated
@nabilnymansourАй бұрын
Glad you liked it!
@nabilnymansourАй бұрын
Let me know if the style of video is good as a tutorial. I'm experimenting a bit so any feedback would be good 👍
@richardramirez5746Ай бұрын
The style is perfect for developers.
@richardramirez5746Ай бұрын
Do you have more stuff on three js? An just another question. How did you learn raymarching?
@nabilnymansourАй бұрын
@@richardramirez5746 Glad to hear that!
@nabilnymansourАй бұрын
@@richardramirez5746 I will soon. I will be making one more video about the ray marching optimization and it will also be in three.js. As a side note, I am trying to transition my content into three.js so I'll prob make more in the future. As to ray marching, I essentially started with watching inigo quilez's live streams. I then learned shader programming and then tried to make a whole game with it. U learn by actually coding. U know what, that actually might be a good video idea 🤔
@richardramirez5746Ай бұрын
@@nabilnymansour Great, so first viewer here! I am subscribed.
@noahtell1314Ай бұрын
I do feel like building signed distance function (SDF) in a bounding volume hierarchy (BVH) along with fractals and other procedural algorithms, plausibly neural networks for textures could be an actual breakthrough in game development. It could create a dynamically changing world with the prospect of a very simple collision algorithm through the SDF. The awkward thing is the dilemma between using minus operators or not. It is useful for splitting objects, but probably a nightmare by the ambiguity it adds to shape representations. If one could create an algorithm to switch between minus and union operators for the same shape, that would be gold.
@nabilnymansourАй бұрын
I also think that making the tools for it is not that easy or straightforward since you want artists to be the ones using it and I can't find a simple way of making a nice and seamless way of doing that. I know that womp.com/index have tried to do that (I do think they end up polygonizing the SDF, but still it's pretty good).
@noahtell1314Ай бұрын
Oh cool someone actually thought of this. I had a similar idea some years ago but called it sphere marching. Seems to not be the same. For my idea, you would calculate a sphere as a march step in some direction and rasterize and progress any fragment on within the perceived circle of the sphere. The tricky part would be selecting the direction/pixel to continue merging as well as memory handling on the GPU. Considering that the real bottleneck of raymarching is rays passing and running in parallel with the surfaces of the scene. I suspect that opting for spheres that are as far way from parallel surfaces as possible would greatly speed up closer rays as they would ride in parallel to the surface of the sphere. However, now the new bottleneck becomes marching rays along creases. 🤷♀
@jayleo5003 ай бұрын
Sorry, I'm a bit slow on this. So, the terrain in the game doesn't have a collider because it's just a shader, right? and you just have the shader on a plane in front of the player charactor that takes up the whole screen and makes it look like the geomatry is in front of the player?
@nabilnymansour3 ай бұрын
Well that is one way of doing things, but you can also make it as a post effect shader which is what I am doing. You could also make separate computerations to see how far your player is from the terrain (which can be used for collisions). That is what I do in the game. You should check out my rendering engine since I have some demos about that github.com/NabilNYMansour/Unity-FractiX
@Magicalbat3 ай бұрын
What is the SDF you are using at 3:12? Is that a sphereflake? I spent a while recently trying to render a sphereflake and I was not able to do it with traditional raymarching transformations that I have seen. I had to create an entirely new way of transforming space to position the sub spheres correctly. If you figured out a more elegant way to render it, I would love to know how.
@nabilnymansour3 ай бұрын
Yeah no problem, I am using this SDF: float sphereFold(float4 z, float minR, float maxR, float bloatFactor) { // bloat = 1 will not change size. float r2 = dot(z.xyz, z.xyz); return max(maxR / max(minR, r2), bloatFactor); } void boxFold(inout float4 z, float3 r) { z.xyz = clamp(z.xyz, -r, r) * 2.0 - z.xyz; } float apollonianHills(float3 pos) { float4 p = float4(pos, 1.); float3 col = float3Init(1e20); for (int i = 0; i < 11; ++i) { boxFold(p, float3(1, 1.5, .5)); p *= sphereFold(p, 0., 2, 0.02); } return p.y * 0.2 / p.w; } idk if sending code here is good, but Ill make a couple of shadertoys later that will have all the maps. I've just been super busy with other things and haven't been able to focus on youtube recently. I hope this helps though!
@Magicalbat3 ай бұрын
@@nabilnymansour Hmm, this seems like more of a variation on a mandelbox fractal than a sphereflake. Thank you for sharing the code though.
@cvabds4 ай бұрын
Do you take comissions? How kuch for you to create conemarching in templeOS?
@nabilnymansour4 ай бұрын
Haha, I've never really gotten a job with shaders, you can email me if you have more information. As to templeOS, I haven't really used it before so Idk much about, but I think it's doable. I am busy these days, but around the end of this month, I should be done with a cone marching tutorial.
@lel75314 ай бұрын
Great game
@nabilnymansour4 ай бұрын
Thank you!
@Mega-134 ай бұрын
This is a very impressive project. I am really interested in Raymarching in a Unity context. But there are not many resources out there. Finding this and all the resources you provide made me very happy :)
@nabilnymansour4 ай бұрын
Glad I can be of help!
@wagbagsag5 ай бұрын
The cool thing about fractals is that they have texture at every scale. I think it would be really cool if you could shrink your player and fly into the infinite detail
@nabilnymansour5 ай бұрын
That is very true, I suppose the only thing about this is I don't really know how to make that into a game mechanic...
@GoDogGame4 ай бұрын
@@nabilnymansour how about as a replacement for the standard collision mechanics? if (distance-speed < threshold): scale
@majkl27115 ай бұрын
Hi, the game looks cool. Here is a little tip on how to easily improve the look of the UI. The left/right "arrows" in UI (for level selection etc.) ruin the look. Replace the "arrow" with an equilateral triangle with exactly the same line weight (and white color) as the font is. Not filled, just the outlines. The font itself looks really good, good choice.
@nabilnymansour5 ай бұрын
Hmm 🤔Thanks for the suggestion.
@xaracen72075 ай бұрын
i think the point sound should a softer subtle tone with its pitch indicating the point increase rate, the hit marker sound is, odd, imho. but i think thats the only critique i can offer
@nabilnymansour5 ай бұрын
Oh yeah, the final game actually has a different sound all together!
@user-eh5wo8re3d5 ай бұрын
great idea with the boids, adds a lot to the gameplay and the world. and congrats for finishing a project and putting it out.
@nabilnymansour5 ай бұрын
Thank u!
@user-eh5wo8re3d5 ай бұрын
Really nice project, and the video is really well made too
@user-eh5wo8re3d5 ай бұрын
would be interesting to see if it would be possible to texture the fractal procedurally and maybe spawn regular assets that way too. e.g. having water under a certain height, and have the fractals look like sand or stone caves, and higher up could be mountains and plant like fractal colouring plus some plant assets maybe
@nabilnymansour5 ай бұрын
@@user-eh5wo8re3d I do think thats all possible. My idea with this game is to try to control it in some fashion. I also made the rendering engine open source so that others could also experiment with this. I still need to document it though: github.com/NabilNYMansour/Unity-FractiX
@rmschindler1445 ай бұрын
now imagine that you can shrink or grow your flying character by an order of magnitude
@nabilnymansour5 ай бұрын
Tha could be an option outside of the game itself, but if its in game (while ur flying) you get really dizzy and nauseous. But not a bad idea!
@LonelyTurtle-xd5yb5 ай бұрын
You can add a cooler camera to this game!
@kenarnarayaka5 ай бұрын
This is incredible! Ima make a fractal game myself for my school project, so yeah im gonna steal all of your optimisations. I'm also definitely buying your game. Also, do you have any advice? How long did this project take you from start to finish?
@nabilnymansour5 ай бұрын
It took me 3 years to learn shaders and how to effectively use them (though I wasn't giving 100% of my time for it) and it took 3 months of work to make this unity project. The rendering engine took 2 months, and the game itself was 1 month.
@user-fe8hp6jv9f5 ай бұрын
Love this video, but really hoped that you would talk a little more about how cone marching works, because I didn’t really get it from the 2 pictures you have shown us.
@nabilnymansour5 ай бұрын
Soon 😭I've just been busy with other stuff recently. However, you can actually check out the code right now. I made the rendering engine open source: github.com/NabilNYMansour/Unity-FractiX/
@Nib1055 ай бұрын
it might be worth lowering the opacity of the boids the closer they are to the camera, it is a little jarring when you fly through a cloud and start attracting them and they POP in front of the camera.
@nabilnymansour5 ай бұрын
I did want to have some dithering effect applied, but I would have to go back to my custom rendering engine and add that functionality which seems a bit more complicated .
@nabilnymansour5 ай бұрын
Though now that I think about it, it might be not as complicated as I thought it would be. Hmm, I'll experiment with this later. Thanks 👍
@Tetopettenson15 ай бұрын
Looks trippy
@o14975 ай бұрын
I feel like there should be some more gameplay in terms of dopamine. The flying is freaking awesome but I can imagine it getting boring quickly if it’s always the same. Adding some randomness in terms of maybe flying things you can eat that give you boosts. Example: a glowing bird that gives you 2x speed for like 5 seconds. Little things like these can add up to make the game way more interesting. Also maybe personalising your gliding character with wings that affects how well you glide or your speed might be fun!
@nabilnymansour5 ай бұрын
u read my mind, i had a lot more ideas that i wanted to add, but I really didn't want to push the scope of the game further from what it is. I was really scared of feature creep so I kept on saying to myself "just stick to the original plan". But yes, I do agree that at some point, the game does become repetitive. I might fix some bugs that I've been informed of, but idk if ill end up adding really new big features and script different logic. Its not like I'm 100 certain I wont work on this game from now on, but at least for now, I don't think I'll be adding stuff.
@o14975 ай бұрын
@@nabilnymansour Sure! They were just recommendations, but I was saying that because I see potential for an extremely good incremental/Roguelite game, like the new game HASTE from landfall. But I struggle to keep my scope small in my own games and I see you are doing well in that sense so it's a good choice.
@nabilnymansour5 ай бұрын
@@o1497 Oh yeah for sure. The focus was really to explore making the fractals and turning it into a game, but I do think taking that aside, the gliding mechanic has a lot of potential and there are many things that u can expand on it.
@ManiakPL225 ай бұрын
I love diving into recent small yt channels and videos especialy on stuff like devlogs. Sometimes you find weird and confusing stuff, sometimes you find garbage, sometimes you find someone who deserves way more recognition, and is able to produce content on the same level as bigger channels, that is also really interesting, while only having a fraction of the views. Keep going men, you are a great inspiration, I hope you will get some well deserved reognition soon and keep growing.
@nabilnymansour5 ай бұрын
You are very kind thank u so much 🙏
@Scottx125Productions5 ай бұрын
It's not really 3 months of development when you've been essentially prototyping this since 9 months ago with other fractal games.
@nabilnymansour5 ай бұрын
haha i suppose. In that sense this is a 3 years project. But in terms of the actual hours I've spent on this exact unity project, I spent 2 months before the fall semester doing the rendering, and I spent this Jan finishing it up with boids and other levels.
@dottedboxguy5 ай бұрын
i feel like giving the player a small glow, kinda like a point light, would be highly appreciated, as it'd make it slightly easier to get a hang of how close you are to the fractals
@nabilnymansour5 ай бұрын
Thats a good point, but i am a bit afraid of adding another light source since I actually have to ray march to every light source when calculating the light for the scene. Though u r right, this is something I overlooked...
@nabilnymansour5 ай бұрын
After thinking about it, I might be able to change the color of the terrain based on how close the player is to it, that might serve as a way to tackle the issue you mentioned without really making another light source. I'll test that out when I get some time.
@dottedboxguy5 ай бұрын
@@nabilnymansour sounds cool ! i do feel like that'd enhance the feeling quite a bit and make the game more enjoyable
@dottedboxguy5 ай бұрын
this game is quite cool, i installed the demo today, but i didn't have the time to try it out, can't wait for tomorrow
@nabilnymansour5 ай бұрын
I hope u enjoy it! The demo has the first 2 levels unlocked, the full game will have 3 more
@Rafale255 ай бұрын
Ain't no game without boids :)
@emanuelkozerski83315 ай бұрын
This is looking really really cool! You should consider adding ambient occlusion to it. It is really as simple as counting how many steps the ray took to reach the surface and darken it accordingly. Also, what is the environmental concept of this game? I mean, do you have any ideas for its settings, mood, backstory, time, etc.? Other than that, keep it up! I love fractals and your game is looking gud
@nabilnymansour5 ай бұрын
I think I had it turned off maybe when I recorded this since I have added AO to my rendering engine. Also, this is just a proof-of-concept game so I haven't thought much in terms of a story 😅. You can check it out on Steam right now. I have a demo also if u wanna try it out. The game is called FRACTAL GLIDE.
@emanuelkozerski83315 ай бұрын
@@nabilnymansour Awesome. I totally will
@ch036185 ай бұрын
Amazing game, Cant wait!
@nabilnymansour5 ай бұрын
🙌
@dottedboxguy5 ай бұрын
seems very cool ! the flying seems very satisfying ( also that music be going kinda hard ngl, your brother did a very nice work )
@nabilnymansour5 ай бұрын
Thank you!
@josephkindaro60915 ай бұрын
Can’t wait to play it!!!😆😆
@justinsemple74545 ай бұрын
Would it be possible to make an airplane combat game kinda like starfox in these fractal environments? Or would optimized AI navigate for enemies basically be impossible?
@nabilnymansour5 ай бұрын
Hmm, I think its not impossible, but the logic might be a bit expensive. I am trying to think of different ways of computing the closest distance, but I would imagine that if you can query the environment in a way, then you can make some type of navigation logic. I wanted to do that really with the mengerites, but saw that it would be too expensive. TLDR, I 'believe' its doable.
@gpjedy73795 ай бұрын
Alright! Glad to see this project finished
@nabilnymansour5 ай бұрын
Honestly, same 😴 It has been a bit tiring working on this. There was so much more I wanted to add, but feature creep is something I wanted to avoid as much as I can.
@MaximusOvernight5 ай бұрын
looks so cool!
@nabilnymansour5 ай бұрын
Thank you!
@danielhooper5 ай бұрын
Trailer starts at 00:31
@josephkindaro60915 ай бұрын
Okay and?
@ImNetheN5 ай бұрын
cool
@nabilnymansour5 ай бұрын
Thanks
@user-wl2vk4eo4y5 ай бұрын
You could totally make the points sound like a geiger counter
@nabilnymansour5 ай бұрын
haha maybe, the new version has a different sound though
@Yggdr4zyl6 ай бұрын
The background music in the first half is VERY loud, on my phone it makes it painful to even keep the sound on.
@nabilnymansour5 ай бұрын
Hmm, I did put a slider for the volume in the final build, maybe I can do a slider for each component of the game. We'll see.
@Dolmek6 ай бұрын
Your work is inspiring! I would love to see a tutorial series about it
@nabilnymansour6 ай бұрын
I will make a tutorial about raymarching and conemarching in the future and I do intend to have my rendering engine be open source. so stay tuned 👍
@Alpha_GameDev-wq5cc6 ай бұрын
Frankly the math exploration part feels like it could differentiate this game into it’s own thing… maybe you should try expanding on that. Perhaps making the landscape geometry dynamic and changing (might be too much for rendering) or taking an educational/fun spin on the game. Would be fun to see if the game could incite mathematical curiosity in players
@nabilnymansour6 ай бұрын
I had an idea to incorporate the construction of the fractal as a game mechanic but its not very easy to visualize and idk how I would make that fun. But u r right, the concept of fractals can be expanded on in many ways. I will make my rendering engine open source after release but for now I think just to test if fractals is even something that would attract people is enough. also for making the fractal change, that is doable but as you fly in the game, having the terrain change ended up making me nauseous when working on it. I do think its doable, but experimenting on that just gave me a headache lol
@dextruax49036 ай бұрын
Superflight on crack, Incredible!
@crackedemerald49306 ай бұрын
Neat idea: good for a shorts if it isn't too much work. Scale the player (or world, whichever is easier) so they're always the same distance appart. Make the world smaller, when further away. And bigger, when closer.