Pushing Unity To The Limit - Hyperbolica Devlog #6
HTML-код
- Опубликовано: 16 май 2024
- Choosing to use Unity instead of building a custom engine saves a lot of development time, but it comes at the cost of excessive hacking to bend the engine to my will. These are just a few examples of Unity hacks I needed to do to get Hyperbolica working.
This is part 6 of the Hyperbolica Devlog series. Full playlist here:
• Hyperbolica
Hyperbolica on steam: store.steampowered.com/app/12...
Join my discord: / discord
Merch: crowdmade.com/collections/cod...
Support me on Patreon or Ko-fi:
/ codeparade
ko-fi.com/codeparade
Music (CC BY 3.0):
My Luck - Broke For Free
brokeforfree.bandcamp.com/alb...
"Unity does this useful thing, but since this is hyperbolic I had to make it again from scratch."
Why even use Unity at this point? xD
@@quentinquaadgras description
"Unity wasnt enough so I made Hyperbolity, a new game engine!! "
Same with black holes, light is not straight near them.
@@quentinquaadgras Why not just make your own engine. Yeah
God I hope this game is a financial success. I really want other devs to be able to look at this and know that doing weird stuff is viable.
Every time an innovative game succeeds, the industry gets just a little bit better.
I know I'm buying the game lol
Like anti-chamber, that's a great example IMO
0:25 ooh, that reflection looks pretty good! I wonder if a mirror in spherical geometry would need to clone the entire world?
Yeah I think it would!
not if it is a mirror inside a closed space, like inside the house, as long as you can't see doors or windows through it. Right?
@@CodeParade Consider the spherical world embedded into 3D space. For puddles, what about inverting the world with respect to the surface (which is a sphere once the world is embedded into 3D space)? You shouldn't need to load the entire world to render, and that prevents more than two nested reflections (because the line of sight only crosses the surface sphere twice at most).
Maybe you could set up a second camera facing away from the mirror as soon as you approach it
hey "cary knows hyperbolics"
Can't wait to see the Let's Players bluescreen their brains while playing this.
Can't wait to see Any% speedruns
Can't wait for players to play a game and accidentally solve the puzzle while not knowing what they did.
It would bluescreen my computer :(
Oh my god I really hope carlsagan42 does a play through. It will be simultaneously hilarious and incredibly frustrating.
@@cmdr_ameba can't wait for tos any%
“I rewrote the physics system based on what I made for Marble Marcher.”
The Hyperbolica extended universe is coming together.
if we don't see any fractal landscapes in hyperbolica we riot (/s)
@@SSM24_
that sounds terrifying
The hyperbolica lore
Reusing things from previous games is pretty common I think.
not the Sierpiński 5 sided square carpet...
NOT THE 90 ANGLED 5 SIDED MENGER SPONG
Sorry honey, I can't go to our wedding, new hyperbolica dev log just dropped
@@hadrian922 wait a minute…
I am not a gamer by any means, but this game is something I really look forward to. These dev-logs have reinforced my fascination in the game, as I really really like mathematics and theory that I in actuality don’t at all understand.
and i am a gamer, and, just like u r, i am rlly excited for this masterpiece as well!
I agree, I’m not a huge gamer but this is almost like more of an experience than just a game
I'm super excited for it as well and am really glad that there's another development for it.
non gamers 😤
Trippy as balls
2:34 cameras also have a cullingBounds property that can replace the matrix used for culling (by default the projection matrix) with a matrix of your own. The only time I’ve seen this fail is with tilemap renderers, and that’s a bug with tilemaps themselves, not the cameras. Just replace the culling bounds with a giant one
Thanks for the tip! Never heard of that so I looked into it and I found "camera.cullingMatrix" which I think is what you meant. I used a Matrix4.Ortho with big bounds and it actually worked! So that simplified the hack a lot and generalizes to more types of renderers. Thanks a bunch!
@@CodeParade or you turn the checkbox "occlusion Culling" off, at the camera component.
We did this once our own culling solution was implemented. Nothing will be culled automatically.
@@johnleorid occlusion culling != frustum culling
@@TrentSterling indeed, occlusion culling prevents rendering of geometry that's behind other geometry, while frustum calling is explained in video
@@TrentSterling True. For some reason I thought this checkbox toggles both settings, but I think I've been wrong.
I love how he can say things like "hyper core" and its not some silly sci-fi mumbo jumbo or marketing speak but an actual accurate description of what's going on.
I'm pretty hyped for the hyperbolic geometry but that's a bit of a hyperbole on my part
As someone interested in mathematics, what I found really interesting was the dual coordinates. From how you've described it, it seems like what you're doing is taking advantage of the manifold structure of hyperbolic space. A manifold is a type of space that, among other very jargon-y conditions, is what's called "locally Euclidean", meaning that for each point, you can find a neighborhood that is homeomorphic to Euclidean space (meaning basically that if you zoom in far enough it "looks like" Euclidean space). In these neighborhoods, we use what are called local coordinates to actually do stuff like calculus on the manifolds, and the local coordinates are how the local Euclidean condition is often used. It sounds like Unity is doing the exact same thing, especially since it's only valid for a small area around each point before you get distortions. This area of math is called differential geometry and studying hyperbolic space (i.e. negatively curved space) is actually what lead me to discover Hyperbolica and your channel!
Finally those differential geometry classes I took in college will be useful for something!
Uhuh
I'm more interested how are the hyperbolic coordinates represented in coffee in terms of the actual structure. Show is the code!
He is speaking the language of god
@@gurbanguliberdimuhamedov4228 hyperbolic space is weird if you look far away, but if you only look at things close to you it looks normal, so for small areas you can just __pretend__ it's normal and everything's basically fine. And in maths we call things like that manifolds
as a game dev who's feed is filled with game dev youtubers, i have no idea how i have not heard of you yet!
this is some crazy awesome shit man!
and you are talking about it so casually as if its easy.
when you brought up the other game with the sphere my mind was blown, that looked fucking insane, good job!
That sphere game is called "marble marcher"
And he actually made a video on it , it's extremely good , check it out !!
Link ruclips.net/video/9U0XVdvQwAI/видео.html
And an update video he did on it ruclips.net/video/YGEpfmQbVBw/видео.html
Yeah he explains exactly how the code works, which is remarkably elegant
@@unitysparticlesystem yeah i actually saw it 5 minutes after commenting lol. then got into 3D fractals and made some pretty cool shit
I love watching this game unfold, can't wait to play it when it comes out!
pun intended?
@@marchrugree mayhaps...
Hi Magnogen :D
@@MagmaMusen Oh hey Magma! What a surprise to see you here!
@@MagmaMusen Massive surprise seeing you here lol. Good to know game dev is one of your interests :)
Would love to play the game in December, best of luck!
You should look into filing a few patents for your game before Unity does, lol
Why would Unity patent something like this? Why would anyone patent non-euclidian geometry? It probably would never get passed, but if it did, it would hold the world back from so many incredible creations. This guy is not the first to mess around with this stuff, but certainly the first I've seen to do it on a scale such as this.
But seriously, patents suck. They hold the industry back.
@@ZedAmadeus A week ago Unity patented "Methods and apparatuses to improve the performance of a video game engine using an Entity Component System." It looks like they're about to become patent trolls so that's why OP is saying that.
@@JrIcify Oh! Haha... sorry, that was really dumb. I'll keep it up so if people who are confused like I was see it and see your reply it'll make sense... but yeah that's embarassing. Thank you for correcting me :D
@@ZedAmadeus Doesn't have to patent the entire concept of non-euclidean geometry in coding, doubt that would ever pass, but he could patent some of the methods he talked about in the video that he had to use to get it working. also if he patents it, he could just allow anyone to use the patented code at their pleasure, nothing says he has to keep exclusive to him or even charge people to use it, but if a larger company gets a patent then the latter would probably be the result
@@Logan-dk8of unless he’s in eu countries
i thinks eu laws are different and the first to discover it gets the right to patent it. Though i could be wrong.
Hypercore sounds like a genre of music that I need to find
Wow, you have overcome so many obstacles! Also mad respect for figuring out all of this. Most developers never get to the boundaries of their engine like you did.
Oh boy yes. Forcing the engine to render all objects and the creating your own object culling system is wayy outside the bounds of most devs
I hope you realize your mechanics innovations will be as big of a deal as the first Portal when it came out. No pressure, but your robot better have the funniest personality and the best credits song ever!
The Euclidean cake is a lie
@@dazcar2203 Still alive
The enrichment center reminds you that the weighted companion hyperbolic cube will never threaten to stab you and in fact, cannot cross dimensions, as it is not a hypercube. In the event that the companion hyperbolic cube does cross dimensions, the enrichment center urges you to touch it and include your experience in your next report, or send your report and equipment from where you are before they get dimensionally dislocated.
@@lightspeedbubble7359 hyperbolic aperture science would definitely say that
For Frustum Culling, you can turn it off in the Inspector on the Camera.
Are you sure you're not mixing it up with Occlusion Culling? Occlusion Culling disables rendering of objects when they are not currently seen by the camera because they are occluded by other objects. Frustum Culling doesn't render anything that isn't inside the view frustum. Maybe I'm blind but I only see the option to turn off Occlusion Culling in the inspector.
yay new devlog
lets go
I swear to god that projects like these are pushing the industry forward and not that hyper realistic games with gameplay from 2008. This is what i visualize when someone says "next gen". Brilliant!
So glad to hear of this project and know your hard work is paying off! It looks amazing, can't wait to play. Love these insights into the process.
You, Sebastian Lague and Code Bullet are hard *carrying* the face of devlog-youtube. I hope you know that these vids are therapy for people like me - they're fun, funny and just so unlike any genre of videos on YT.
🔥 video today as well, love your content!
I agree about Sebastian Lague, but I wouldn't say Code Bullet's style of videos fits this so well, maybe ThinMatrix instead?
I just realized you're supporting VR. I was into it before, now, holy crap
Always super excited when I see one of these videos pop up in my feed
Truly fantastic, you're doing amazing work and I love seeing behind the scenes like this!
Brilliant video! It's super interesting to hear the challenges you've faced using Unity for this project.
1:39 Oh, I just realized this game is going to have the WEIRDEST glitches! Speedrunners are going to have entirely unfamiliar things to exploit.
Its really awesome to see your game making style progress, makes me excited for this first "full" game and (hopefully!) future games on the horizon!
Wow! This is an amazing feat. You are basically creating a new game engine in a sense. So much effort went into this to make it work. The game itself looks super kool and seems to run smoothly. I haven't played anything like this so will definitely give it a try when it comes out so wishlisted. Keep it up! :)
Im also developing a similar game myself. Instead of non euclidian geometry im using terrell rotations to calculate geometries when travelling close to the speed of light.
This game is really awesome. Im gonna buy it as soon as it gets released
Name?
Holy shit that sounds awesome, what's it called?
Awesome! I thought about making something like that too because I wasn't very satisfied with the MIT A Slower Speed of Light demo game.
I'm nowhere near actually doing it though, can you share some of your progress?
Post a prototype somewhere
The development is still at a very early stage. As of right now im still working on core systems. But im hoping to release a prototype demo within couple of months to showcase most of the mechanics that will be in the final release. Im also hoping to share the progress of the development in the future as well :)
So happy to see an update! Very excited to see the final result.
Omg yay! Been waiting for an update! Your work is awesome man.
Can't wait for full release. keep up the good work
Mate, you are the boss. I’ll be following u forever. Your approach is insane, love it
This should hit top 10 in steam for the year. So much work and the game looks amazing.
I'm a little unsure why material property blocks would break batching. Their point is to maintain batching. If you're using an SRP the SRP batcher handles batching for material instances using the same shader and will break when using MPBs, but the built in pipeline should be fine.
You can use the frame debugger to see why Unity hasn't batched things together
Good luck with the finishing details of the game. Super excited to play it
This is phenomenal.
Added it to my wish-list.
I'm so excited! I've been with you since your non-euclidean worlds engine 3 years ago! And been waiting for this since it was announced. Cant wait!
I love this thank you for sharing your update!
i love you dude ppl like you make revolutionary changes
Instancing is where you set a single render state, and send 1 set of vertex data to the GPU, but you also send it a list of variations, a very typical example, is sending in a list transforms. Then for each item in that list, the vertex data is redrawn with the item from the list updated. From a performance perspective, this means you only sent the vertex data and change the render state and pipeline shaders once for however many draws were in the list, this also means command and draw queues only need to be synchronized twice (start and end) for the whole bundle (they typically sync more for things like fetch shaders), this also means in specialized cases that the gpu can parallelise, potentially drawing instance 23 and instance 24 at the same time if the gpu has appropriate capacity for parallel wave processing. It has a very specific use case but its also a very powerful tool
Thanks so much for explaining!
this was a wonderful birthday present last year, Thank you
Teachers could definitely use this game to make Math/Geometry more interesing!
So excited for this! Been saving my money to buy it once it comes out
So excited for this game. Great video too!
I am so exited about the game release. Devlogs are very interesting and inspiring and I hope to see, better say 'hear', an Easter egg about "Sounds of the Mandelbrort Set" in game. ;)
You are a smart and hardworking person already, so I can wish just to stay healthy for your family and best of luck! :)
I'll be starting university soon, IT focus, and this just always makes me hyped, seeing an actual devlog, watching how the work unfolds slowly but surely. I hope December releases won't bury this game, because it looks very cool!
Most of luck to you. I'd always been excited about game development, but nonetheless, It didn't stop me from getting expelled from IT program in my university. It had little to do with game dev, though, so I wasn't interested whatsoever. Still looking forward to take up some courses in the future to acquire at least some of the knowledge this amazing man has. Didn't give up my dream after all. So I hope for the best for the both of us, friend 🙌
@@bassismdonesimply ah, I wish you the best of luck and good times man!
@@Goras147 Thanks!
It's always a treat to get these videos, but don't feel like you're obligated to make them. Can't wait for the release!
I've been following your development of this game since you announced it, and I'm super excited to Let's Play it as soon as it comes out!
Always love to see you put it new videos! And gratz to keeping on schedule, fingers crossed it all stays good 🤞
Idk if it's feasible but I hope you might eventually release this on other platforms than steam. I play very _very_ few things on pc anymore, and don't even have an active steam acct heh.
Glad to hear from you again
Wowow this looks amazing. I'm playing HyperRogue in preparation for this!!
Honestly this is the kind of game I'd probably use as an example of when you should just make your own custom engine. It's impressive that you got it working in Unity as well as you did.
Honestly I wish you did more of these, I don't understand half of the words of a thing, but love your explanation of it!
Been following your dev logs for a while and I can't wait to play this make a video on this game when it gets released!! 🥳
I literally didn't understand a SINGLE word you said in this video but this is amazing! I wish to one day look up to developers like you and many others and create my own big game! Keep up the great work.
On track for release date? :0 that’s unheard of these days!! Don’t worry about us, you’re cusping the horizon of crunch time- dedicate all the time you need! The next few months are the hardest, make sure to focus on yourself and your mental health as well. I’ve been following this project since that first video you made about non-Euclidean ‘gates’ many moons ago - can’t believe how far this has all come, and how close we are to being able to try it out. Best of luck moving forward.
Cheers :)
Absolutely stunning!
I cant wait for this to release its so cool!
Speedruns of this game are going to be insane
What a nice idea! You are such a great programmer and I don't understand a fraction of this, it looks super fun and unique though :)
cat on my knees, codeparade video, basically all i could've hoped for
This is amazing to look at.
Been a while great to see you again
Totally understand not making any videos, so hype! Can barely wait... but don't feel afraid to push things back a bit if necessary.
GG man, great job, keep up!
Cautiously optimistic to see where this ends up - I make it a rule to never be too hype about anything lest my expectations be dashed to pieces upon release, but I'll still make it a point to purchase this day one and have some fun with it (assuming my computer can run it lol)
I'm getting a VR headset just to experience this game. Never been so excited to voluntarily throw up!
YES, ANOTHER DEVLOG
Each devlog blows my mind
I'm so happy to see the game come along
Looks really good, great job
My mind is still trying to comprehend that last bit where the fence is actually behind the windmill
i never thought i'd learn so much from a devlog
発売が待ち切れぬっ
Can’t wait the release !
this looking so good
I think of this game as what portal was when it came out.
cant wait!
When I see that bubble gun at the end, I think all this game needs is the fuel rod gun from Halo and a bunch more crates - I would really like to watch things fly apart in hyperbolic space, rather than just moving through it!
Everything is looking amazing so far
This beats the record of "unknown words used in a 6-7 minutes video" for me
Really neat to see the dev cycle of a unique game engine
YES! Another video! Good luck programming!
looking forward to playing this bad boy
Man your stuff confuses the hell outa me in the best possable way thank you.
This gonna be fire dude
codeparade codeparade!!!
idk what any of this means but it's cool to listen to and feel like I know things :]
I still don't understand how it works at all but it looks so cool!! Can't wait to play it!
At this point I'm starting to wonder if it would have been easier if you just wrote the entire engine yourself, since at this point I don't even know what advantages Unity still has over the many limitations you are facing, but I'm impressed how you managed to overcome them all with minimal compromises.
He said in another comment that he still doesn't regret using Unity: "Yeah. As much as I hate dealing with it sometimes, it still saves tons of time with all the other aspects of game making."
It would be a hundred times harder. I won't pretend to know how Hyperbolica or Unity works under the hood, but Unity handles rendering, physics, assets, lighting, animations, environments, menus, inputs, and so much more. I cannot fathom the workload that would be required to build all that on TOP of making a game like Hyperbolica :)
@@dorkyface For a normal game I would agree, but he explained that he had to resort to hacky solutions or just straight up rewrite most of these existing systems. In this video for example, he said that he created his own physics engine instead of using Unity's built-in system, and the rendering pipeline uses a lot of shaders he wrote himself, so I don't believe it would have been "A hundred times harder".
@@NamePointer Having to rewrite 30% of the engine is still much less work than having to write 100% of the engine from scratch.
@@NamePointer Difficulty curve isn't linear. If he had to rewrite something he had no prior experience to, then it'd be significantly harder.
Imagine how trippy this woulb be in VR
This is both amazing and incredibly annoying at the same time.
Like....man just looking at it hurts, and you're *building* it.
Props. Im so glad you like writing a custom game engine for this experience because I would just be like "yeah fuck it I'm gonna figure out a different idea entirely."
I feel like I was looking through a kaleidoscope, or a wearing someone else's glasses.
A Miegakure update and now Hyperbolica! So good.
I hope for 'such a masterpiece' at the end all this, despite Unity which makes it almost impossible. Best of luck !
Great work! Keep it up
Your code looks very clean and proper.
If you can, patent some of these methods you have developed before unity swallows them up. Hell, in the far future, you could make a nonEuclidian focused game engine!
One of my most hyped games right next to ksp 2, can't wait!
Hyperbolica? More like “Heck yeah!” This is going to be incredible!
As someone who has never seen anythinf on this at all ever, this looks amazing, im going to go watch the rest of the devlogs and wi be wishlisting this game!
This is another level of game develop than most of game dev log on RUclips
quality content each time ✅