Unity Addict Tries Godot for the First Time

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hi this is the great expanse I swear I don't have a problem you have a problem I may use Unity but at least I'm not doing cocaine but I could probably afford to set my life straight and try to go clean so uh what can I use to help while I go through withdrawal ah here we are gdau the kids on redit love this one I got some comments asking me to try out gdau and by com ments I mean a single comment but you know I have been wanting to try out Gau for a while now so why not do it under the ruse of listening to my viewers so gdau is an open source game engine that has been gaining popularity all over the place Reddit and it's also perceived better as a 2d engine which is perfect for me because I'm too scared and incompetent to go 3D so let's download it and jump right in uh so let's download it and jump right into the documentation woohoo so first things first I think is making something move I thought it would just fall if there was a rigid body attached but apparently not okay so the Sprite needs to be set as a child of the rigid body that's a start but it's not colliding and I was using the wrong component I need a static body 2D not an area 2D okay and let's figure out how to make the player move and here it is gd's input system is pretty much the same as unities in that you set up the inputs in the project settings and then check the inputs via code with the string values except Unity allows you to check specific button inputs in code without needing to set them up in the editor which is usually what I do I'm not sure if Gau allows for the same thing or not but I couldn't seem to find something like that after like one minute of searching not that it actually matters though but unity's inputs are based on axis for some reason while gdos are just button presses with methods that provide the same functionality which to me just seems to be simpler Unity also has a new input system but I know literally nothing about it so I can't compare it since I've mastered everything about the engine already I have an idea for a little game So the plan is to just make a simple bull hell game that's it nothing crazy there will probably only be like one level because learning the engine is already taking long enough so I wanted to start with some basic terrain so I need to figure out how to make a tile map to start the terrain theme is this brick Castle aesthetic it was really hard not to make it a cave aesthetic again trust me it was actually really easy to get going I spent too long realizing that you need to hit the select button before you can place tiles but besides that it went smoothly and then adding a collider to each tile is super easy as well you just go into the tile set settings and add which tiles you want to have Collision however I can't really compare this tile map system to unities at all because I've never used a tile map in unity before honestly there's a lot of unity features that I've just never bothered using now we need to create player movement that's better than the script I stole from gau's tutorial site as well as figure out how to make the camera follow the player here's the spray I'm using for the player since this game is simple I just wanted to give the player one hit point so I thought you know what else has one hit point glass so I made this little ghost in a lantern but it seems that the collider is the incorrect size which it shouldn't be because I set it to the size of the Sprite huh and for some reason I changed the scale of the Collision shape it works perfectly now first attempt with adding forces okay nice just need to scale down impulse and stop it from rotating and with some tweaking I like this but it's jittery so we need interpolation but when I was searching for an interpolation field on the rigid body or in the project settings there was nothing which is honestly really strange to me it's kind of a huge feature that makes a big difference so I don't know how there isn't a simple fix for it this is the first thing in Gau I've noticed that I don't like but because I don't want to spend forever on it I'm probably not going to bother wasting time fixing it but if any of you knows of a solution I would love to hear it and then I needed to get the spray animation going and good has an animated Sprite 2D node which makes it pretty easy to set up in unity I had to make a custom script to do this and it wasn't as good as what gdau offers because their system allows for multiple animations so this is pretty nice now for the camera to follow the player first the background I probably shouldn't have wasted time doing this but I made a super boring background it's just more bricks gdau has a parallax effect node built in so I'm going to use it here is the camera follow working first try ah shoot wrong clip so I wrote an entire rant in the script about how gdau doesn't have a way to set node references in the inspector but then I saw this and then realized there's a thing called node paths which solves that entire problem they act as a path that can be easily set in the inspector and it allows you to change the name of the nodes as well as move them around the only difference from Unity is that you have to call the get node method with the node path as a parameter to actually get the node so it's one extra step but whatever oh man I was so close to of being socially Outcast by Reddit and being socially Outcast by the social outcasts is an absolute low Point speaking of redditors now I need to work on a way to make this character take damage and die alone so Unity has tags that you can assign to game objects which then you can check in your scripts to Define different behavior for different objects I'm not seeing anything like that in the node inspector so let's find out what their alternative is so apparently gdau has a thing called groups which are more powerful and versatile Apparently one no can be added to multiple groups which is nice so I made a script that damages objects that collide with it and a script that can take damage that's it and when the player collides with the obstacles which I made this texture for they unceremoniously die let's fix that I know people are always sing for unity's particle system so I'm curious to see how gdo Stacks up so they have a GPU particle system and they have a CPU particle system I think the CPU particle system has more features so even though that's more expensive I'm just going to use that I shouldn't need to worry about it though cuz this game is really small one thing I'm noticing that I like more about unity's particle system is that it uses drag to slow particles down which basically means that unity's particles slow down more naturally because the force applied to slow down particles is dependent on the particles velocity but gdo uses damping which slows down the particles linearly which kind of looks bad they have a damping curve but it's not intuitive to use and it's frustrating to work with to get the effect you want so yeah I'm not a big fan of that but maybe there's some way to get the effect that I want that I don't know about so here are some simple particles that appear when the player dies as well as a camera Shake then I wanted the ability to save the number of deaths between scene reloads so I made a script that holds the variable and then put it into an autoload node to make it globally accessible and with some UI to display it here it is I don't have much to say about the UI it's pretty good I guess and now when you die the screen Fades out I started using what would be the gdau equivalent of co- routines to make this the await key word waits for a signal before continuing the code where it left off at which allows you to gradually do things over time except the signal for the end of the frame as well as the Delta time for a frame can't be accessed from a static property you actually have to have a node reference to get both the frame end signal and the Delta time which is sort of strange coming from Unity so my static helper class needs to have a node autoloaded in the background which I then need to access in order for my co- routines to be able to function statically okay okay okay let's work on the main part of game the moving bullets that need to be dodged the bullet pattern will be executed in this script and the pattern itself will be stored as a resource and when I tried to create a class to represent each bullet in the pattern I found that you can't expose custom classes in the inspector which is honestly literally the worst thing that has ever happened to me in my entire life so yeah you know how my day is going strangely however gdos supports custom enums in the inspector which Unity does not so I guess instead of using array of classes to group The Bullet information I'm just going to create a bunch of separate arrays of the information that was otherwise going to be stored in a class and then I can store a resource for each pattern of bullets and then put those pattern resources in an array on the script that executes them in order I'm storing the bullet positions in polar coordinates as I figured it would be easier to create the patterns that way instead of manually inputting the XY positions here's a simple test of the bullet generation okay now comes the tedious part which is making even more bull and setting up the bullet patterns here are the different bullets there wasn't really a design decision for any of them I just made circles but in different sizes in colors I only made four because I'm kind of running low on time and actually before making the patterns I just made more of the room and made this barrier lock behind the player when they enter if you survive the bullets then it unlocks this next door and you move on the door wasn't working at first as the Collision wouldn't turn on but then I realized I was setting the wrong field so changing that fixed it up now work on the patterns it was tedious but I got it done it really just consisted of changing a bunch of numbers in the inspector making patterns in straight lines was kind of annoying because I set the bullet positions in polar coordinates I don't regret doing it because it's just made everything else easier so yeah plus to make straight lines easier I actually just wrote a command line tool to Output a line as a set of polar coordinates because doing that was totally easier than spending 2 minutes doing the calculations myself also I wrote it in rust because I'm feeling very hip with the kids today now let's talk about gdau itself the first thing that people usually mention about Gau is its node system but to be honest it's not really that different from the parent child situation Unity has going on there's differences but it's not huge feel free to correct me and tell me why I'm a big dumb idiot in the comments but honestly I'm not feeling a huge difference but then again I didn't really get into it that deep another thing is that g do only allows for a single script per node which is a little limiting Unity really emphasizes the script reuse and using many scripts on one object so this is a bit of a big change gdau really seems to push you towards inheritance but it's so limiting that it feels like composition with a bunch of child nodes is the only option maybe that's the point I don't know but like if you're going to force us to create child nodes as the only way to add extra scripts then you might as well add support for multiple scripts on one node but since each script has to extend the node it's currently on that isn't possible I really don't understand the love for inheritance sometimes it can be useful but for a lot of cases it just becomes a pain to maintain composition over inheritance is where it's at one thing I am a fan of is gdau signal system it makes it pretty easy to connect two nodes via the editor as all nodes emit signals for various actions which then you can assign methods to in the inspector it's very simple and reduces the need to hardcode connections between nodes which is good for example to detect a collision you don't need to create a script that overrides the Collision update method like in unity all you have to do is grab the signal and attach it to the method on another node that you want to call you can do this in unity but it just takes your own script and it's not as universal my only gripe with this is the limitations with passing arguments via signals if a signal by default passes an argument like a node that has been collided with you have two choices either the method being called has to have the same value being passed by the signal which isn't always what you want or you can drop the signals argument but then you can't pass any other custom arguments through so it's a little frustrating when you want two nodes to talk but you can't pass any custom arguments from the editor without changing code ideally you would be able to drop and add whatever values you wanted to pass through but right now you can't additionally there isn't any way to connect signals to Global quote unquote static nodes which is also a little frustrating because you can in unity at least with the ult events plugin which I love one thing from Unity that I do miss is the ability to see and edit the running game in the editor I know gdau wasn't built for that but that's very handy for debugging something I'm very fond of is the quick compilation time in unity every time you change a script Unity steals 5 to 10 seconds of your precious life on this planet to recompile but gdau it takes half a second you save your changes on a script and boom it's all set it is so nice I know it's because GD script is a scripting language and isn't actually compiling anything but that doesn't change the fact that it's super nice I mean I'd prefer to have a real programming language over the quick compilation time but you know let's take the positives where we can get them okay time to literally just whine for a bit these are going to be problems I had with gdau that are virtually non-existent in unity just hold in your unbridled rage while I event okay so most of my complaints are just a bunch of small inefficiency things like assigning resources is slow and clunky you can see the problem I'm having here in dragging the resource and sometimes it just opens the resource as opposed to dragging it just handling resources in general seems to be laggy and slow while on Unity managing prefabs is smooth and easy and copying and pasting resources doesn't work at least not for me and attempting to load via file requires you to scroll down this giant list where load is all the way at the bottom for some reason and even then you still have to navigate files to load it and there are other things like the UI being a little too cluttered important commonly accessed Fields being stuck behind tabs which makes them slow to modify connecting signals sends you to the script tab every single time you connect undoing with control Z is just finicky and sometimes you have to click multiple times on a button before it actually does what you want and I do have more small complaints like this but I don't feel they're all worth going over right now so I won't it's just that a lot of these small things add up and makes attempting to navigate and work efficiently really frustrating I'm really not trying to shill for either Unity or gdau here I'm just comparing their differences with what I personally experienced everyone praises gdau and rightly so because an open source game engine such as this is really impressive I would love to support an open source project like this more but as sophisticated as gdau is it's no we're close to what Unity is I know people love to love gdau and people love to hate Unity but they're completely different tools for different purposes for someone looking to make more than just small one-off games gdau isn't really the right tool it's inefficient to work with and manage its performance just isn't as good as unity and it doesn't have the same level of support wow I feel like I'm really dogging on this engine I feel like I very clearly need to clarify this gdau is not a bad engine and I would love to see it become more mainstream but I plan on starting a more long-term project in the future and I wanted to try out other engines and I don't think a do is what I'm going to settle on at least not right now however all this stems from my experience with one project in gdau so take it with a grain of salt if I said anything completely incorrect let me know and I'll probably update the description with a list of what I incorrectly stated okay and to wrap it up I just made a title screen and called it done the title of this game is Phantom bound because it's about a little ghost trapped in a lantern woo and this is all I'm going to work on this for now uh I found this out after finishing it takes forever to load and then runs really slow when it does o i published it on my itch page anyway though feel free to play it I personally wouldn't though it kind of sucks you know what doesn't suck though Cavern Clinger on the IOS app store or Google Play Store is free to play travel through endless caves collecting gems dodging obstacles and escaping the lava wall as it gets faster and faster you can use your gems to purchase over 20 unique skins each with unique abilities to help you travel further also there's a boss fight I personally know the developer and can't confirm he is quite handsome oh um and Cavern Clinger is fun too I guess I I mean the developer has a video up about how he made it it's not a very good video but feel free to go over there and watch it anyway because he has a small Channel and needs all the support he can get now that the video is over feel free to subscribe but you know you don't have to it's completely optional well I hope I don't relapse see you next time bye-bye
Info
Channel: TheGreatExpanse
Views: 2,312
Rating: undefined out of 5
Keywords: #godot, #gamedev, #devlog
Id: rVYGZo7hypI
Channel Id: undefined
Length: 16min 11sec (971 seconds)
Published: Wed Dec 20 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.