Converting 6 Months of Progress from Unity to Godot

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments

I actually posted on your video but I'll say it here as well. Welcome to the godot community. Also I've been watching your devlogs from the beginning it's crazy you were able to convert everything so quickly.

👍︎︎ 44 👤︎︎ u/FruityDerpy 📅︎︎ Jun 07 2020 🗫︎ replies

Does it feel weird to be able to recreate your entire 6-month project in a week?

👍︎︎ 25 👤︎︎ u/OscarCookeAbbott 📅︎︎ Jun 07 2020 🗫︎ replies

Being a fan of C#, what made you decide to use GDScript over C#?

👍︎︎ 16 👤︎︎ u/semajwf 📅︎︎ Jun 07 2020 🗫︎ replies

So how much of it would you say was Godot and how much was knowing what you want and generally how to implement it?

👍︎︎ 6 👤︎︎ u/ZonkRT 📅︎︎ Jun 07 2020 🗫︎ replies

I've been watching your unity content and I'm glad you've started to like Godot, welcome to the club 😁😁

👍︎︎ 7 👤︎︎ u/nad_lab 📅︎︎ Jun 07 2020 🗫︎ replies

I like Godot, but GDScript and the internal editor were weak points.

All my development in Godot is with C# and the Rider IDE - and it's great! :) (and you can mix in some GDScript if you really want)

👍︎︎ 15 👤︎︎ u/softgripper 📅︎︎ Jun 07 2020 🗫︎ replies

I just saw your video! Welcome to the godot community!

👍︎︎ 5 👤︎︎ u/doe_gee 📅︎︎ Jun 07 2020 🗫︎ replies

This is great! I've been following your content for awhile and recognized Dauphin as soon as I saw the cover. So cool to see you're going to be working with Godot! I had a similar experience a year or two ago where I decided to port a big project over and was pretty impressed with the engine, and that made me decide to stick with it instead of Unity. Can't wait to keep following along!

👍︎︎ 3 👤︎︎ u/josephmbustamante 📅︎︎ Jun 07 2020 🗫︎ replies

Great video! I've been watching your devlogs for a bit now, and I am really happy to see you made the switch!

👍︎︎ 3 👤︎︎ u/ElasticCracker 📅︎︎ Jun 07 2020 🗫︎ replies
Captions
hey everyone thanks for joining me for a slightly different type of video today rather than welcoming you back to another dead log for dolphin this week I'll be performing something of an experiment in this video I'm going to try and take the six months of progress I've made in unity on my indie RPG and evaluate what it's like to build out those same features and systems in the Godot engine and to be clear I'm not aiming for a hundred percent feature parity or even close to that for the sake of being smart with my time and not totally derail in development of my game I'm limiting the duration of this experiment to about a week so I'm curious to see what I'll be able to build now your next logical question would probably be why on earth is he doing this and you wouldn't be wrong to ask that I have spent the last year and a half of my time as a hobbyist game developer learning unity and unity is what I've used to release the only two games I've ever built in response I'm not doing this because I dislike unity or because I plan to stop using unity I'm doing this as a quest to learn which is honestly one of my favorite parts of game development the last time I use the Godot engine was to quickly create a rather poorly thrown together prototype of the game I'm currently building in unity I decided to switch back to unity for two main reasons I'd already spent a year learning it and I really liked c-sharp looking back on that decision I think those were great reasons to stick with unity but not great reasons to abandon Godot I didn't honestly spend enough time with that engine to learn what it was like to build out these complex RPG systems or even to understand what Genie script which is vidoes custom scripting language is even capable of compared to c-sharp honestly Godot has remained really exciting to me ever since that prototype it's open source meaning I can tinker with and contribute to the engine code which would scratch my growing itch for learning about game engine development it's completely free and it's ever-evolving with new features like a Vulcan graphics backend on the horizon so the purpose of this experiment for me is twofold to learn and to have fun Godot may turn out to be a great fit for dolphin or it might not it may be a great fit for me for smaller future projects or it may not ultimately I want to come out the other side of this exercise a more well-rounded game developer with a better sense of what tools are available to me to create awesome games so there's the purpose of the experi the purpose of the video is to bring you guys along with me so that you can experience and learn from the successes and failures that I go through as I try to implement the backbone of my RPG on a brand new engine at the end of the video I'll also plan to discuss a comparison of both engines based off of my experiences over the course of the next week in the meantime there's plenty to do so let's get to work good morning everyone I'm back about 12 hours later at 6 a.m. on Saturday morning this will be the kickoff point for this little experiment and I'm excited to grab some coffee and jump right into the code before I do that I figure it's probably a good idea to give you a very brief background on the project I'll be attempting to bring over to Godot this is dolphin it's an RPG where you play as a marine biologist who discovers and ultimately must save the world sea life from an unknown source of corruption my intent is for dolphin to feature systems like a RPG style combat underwater terraforming fishing brewing and the capture and study of specimens from the ocean now as far as the features I want to try and convert during the next week here's a rough overview of what I have so far first I want to lay out my scene using a tile set that I've already created and then of course I want to create the player and get him moving around that scene from there I want to implement the most basic form of combat involving an enemy that'll chase me around in some way for me to swing a weapon to defeat it finally I want to try and tackle a more complex system that I've recently been working on in unity which is a loot drop and inventory system it's certainly gonna be a lot of work and I'll be tracking it loosely on my whiteboard over the next week as well as writing down some of my likes and dislikes of this new development environment alright I hope that was a good overview of the project I've been sitting here talking for too long time to create my Godot project and get to work [Music] alright guys I'm back for my first update at 10 a.m. I've pinned like heads down for four hours having so much fun actually learning about Godot that time has just flown I've accomplished a whole lot so I want to show you what I've done and how I got there here's where we are after a morning of development a lot of this looks familiar if you've been following my dolphin dev logs already you can see I've got my background laid out using my beach tile set that I previously created and you'll see a new look for the player that I'd actually been creating on the side for dolphin in response to feedback I get on every video that the player just looked a little bit weird so is your first look at the new player apart from laying out the background you can see that I also have player movement working with animation in all four directions this was super easy to accomplish using an animation tree which is a concept that I had not previously been using in unity though I'm sure something like that probably exists over there I have to say I'm really thrilled with how easy this was to setup and how little code it required and overall I'm just really positive about this experience that I had this morning and how much progress I was able to make now I should mention that instead of just poking around the documentation and trying to figure stuff out of my own as I did with my first prototype I've been following the beginning of an excellent tutorial series by heart beast on the creation of a 2d action RPG and Godot I've been learning all about the note and scene system the functions of various nodes and the best practices for the Godot engine the ebony desire to build something like what I'm doing here I really can't recommend this series enough I'll leave a link down in the description moving forward my next steps are gonna be in the direction of basic combat meaning some kind of basic enemy and a way for the player to defeat him that said I've been going heads down for like four hours now time for a break I think I'm going to do a little bit of exercise go for a run and we'll catch up sometime this afternoon [Music] everyone back to check in with some pretty cool updates but unfortunately it is no longer Saturday afternoon it is now Monday afternoon I started putting the video together on Saturday and realized it was getting way too long before I had even done the bulk of the work so I decided to go heads down for the past two days and just crank through as much as I could at this point I've pretty much made it through heartbeats entire tutorial series and have been spending some time reading videos documentation on best practices and seen organization those two things actually have me feeling really confident about working with Godot and just about what I've built so far so let's go ahead and jump into it so we're now three days into this rebuild and I think the biggest piece of functionality that I added since the last update was these enemies you can see these crabs are kind of wandering around as usual as they were in the unity build and when I get within a certain range of them they are going to detect me and chase after me this was really exciting to get up and running I'm actually doing this and a little more of a clever way than I was in unity I'm using specific colliders and collision masks to do a better job of this honestly than how I was kind of hacking it together in unity so that's working really well these enemies are pretty honestly resembling exactly what they looks like in unity so I'm really happy with them progress another bit of progress I made here is with combat you can see that a player now has a shovel strapped to his back when you click he will bring that shovel into his right hand and swing it into an arc in front of him and that will actually affect these crabs if the frame of the shovel actually manages to hit the crab now I need about twice as many frames here for this to actually look good and honestly I don't know if I'm totally sold on this method of combat anyway too many games have done it I think and I think I can come up with something a bit more creative so this is probably gonna get overhauled but I have some basic collisions working here so I'm happy with that the last thing I want to show you today is a little bit of my state management code and I'm really excited about this because I honestly think it's a better solution than what I had in unity and it really embraces the notion of composition over inheritance if you look at my scene hierarchy over here on the left you'll see that we're looking at the player scene and one of the child nodes of the player scene is a state machine and this is just a node that has a script associated with it that looks just about the same as before it takes in a new state it disables the old state and enables the new state pretty basic as children of the state machine I have different scenes for each individual state that the player is able to swap to and here's the cool thing these states are almost entirely decoupled from the player each of these states uses dependency injection to get everything it needs to perform all the actions that the state is responsible for you can see what I mean here if I click on the move state and the hierarchy and then look over to the right side into the inspector window these variables that you see here are all the variables on which the move state is dependent to do its job movement speed acceleration friction the name of an animation that we want to play the kinematic body that we actually want to move in a reference to the animation tree that will allow us to actually play that animation what this means is that I can actually attach this move state to pretty much any other scene as long as it will allow me to populate these variables if these variables are populated the move scene will be able to do its job making use of this state within my player controller is super easy it's already instantiated as a child of my player scene so I can go ahead and grab a reference to it at the top of the file down a process input I look for input to see if I'm actually pressing one of those WASD keys that wants to trigger movement if I am then we call request state move state and at that point everything about movement is handed over to that state you can see here in my physics process there's nothing going on within the player to actually change the direction and apply velocity or play an animation all that is happening entirely within the move state script so this is just a really good way to compose the player by adding behaviors and being able to trigger those behaviors from player I think that I wrap up my updates for today I have to say I'm pretty stoked about the progress we've made so far and very excited about Godot I've experienced an extremely low amount of friction getting to this point so that's really encouraging that said I am done with the awesome tutorial series that I was following so I will definitely be on my own for the next couple of days next up is implementing better combat as you saw it was looking pretty bad there in that short demo so I'll catch up once I have something more exciting to show you guys hey everyone back on Wednesday morning at around 6 a.m. with another update and this one is on combat gonna keep this quick I'm really happy with how this turned out and I just want to keep this momentum going so here's a quick look at the new combat system first let's take a look at the players attacks the left click is just gonna be your standard primary attack where the player takes whatever tool or weapon he has on his back and swings it out in front of him in an arc this looks very similar to what you saw before except now I've added an extra frame which makes the animation look a lot smoother and actually makes the hit detection perform better so that was a win-win now the secondary attack which I've just added very recently it's supposed to represent the kind of blue spinning thing that I originally implemented in unity but this time I've made it look a lot cooler I've actually used the Godot particle system to create a fireball which obviously looks really cool I'm really happy with how that turned out so now we'll go down and start attacking some of these corrupted crabs and you'll notice a few differences and improvements from my original iteration when I attack these crabs of course they're affected by knock-back but they also flash white to indicate that they've been hit and of course just as they did in unity once I hit these guys enough their corruption disappears and they become peaceful now with these fireball attack it's actually got more knock-back associated with it so you'll see this crab fly quite a bit further back versus when I hit him with a little shovel here and of course it does more damage so it takes less hits to clintons between this feedback from the knock back and the flashing of the sprite I think this combat is actually just way way more satisfying than what I had to have helped before so I am really happy with how this turned out I hope you guys liked those new attacks as much as I do now that the combat system feels super satisfying I want to make the same true about the experience of picking up loot and putting it in your inventory so time for me to go heads down again and get to work on creating the inventory system [Music] hey everyone it's Friday now going on seven am about to get some exercise in before I get ready for work but I thought this would be a good time for the final update before the end of the experiment at this point in the experiment I have combat completely caught up to the way it was back in the unity project of course you've seen the primary and secondary attacks but how if you try to cast a secondary while it's still on cooldown you get a little poof as if you've kind of run out of magic I think that's pretty funny now if we go down here to the crabs and start to attack them you'll see that they respond the same way they did previously they'll start to change from their dark corrupted color back towards their original light color I've accomplished this in Godot the same way I did back in the other project by creating a shader and I had to write that shader and godot's custom shading language I think I actually prefer that writing a script as opposed to using one of those visual editors anyway this was not too hard to achieve and I'm just happy it's working now you probably noticed there that apart from just combat I actually have loot drops working and in my mind these are actually a pretty big improvement over what we had back in the other project you'll notice that when the loot item actually drops it's got a little bit of an animation where it falls and bounces and slides away from the character I think this is doing a much better job of drawing the players attention towards the item that's dropped of course we have no way to pick it up yet that is the last item on my board to take care of for this experiment and what I'm going to be working on today so next time you see me hopefully I'll have that wrapped up and I'll be in a good place to discuss the difference between these two engines and how I felt about this experiment but for now let's get back to work [Music] welcome back everyone it is now Saturday morning and we've done it I worked my tail off this past week to convert as much in my previous six months of progress and unity over to the Godot engine with the hopes of learning more about the engine and I was successful yesterday evening I wrapped up the last bit of functionality I wanted to pull over and that was the inventory system you can see that familiar looking inventory panel here and of course when I pick up a dropped item it will be sorted into the inventory I even have a nice little animation for collecting loot now which is a welcome improvement so at the end of the week where do I stand with these two engines I want to start off by taking a look at that list of likes and dislikes that I accumulated on my whiteboard over the course of the last week but before we do I just want to say that this is not going to be a comprehensive comparison of unity and Godot that definitely deserves its own video what this is going to be instead is really more of a take based off of my last week of experience with Godot and my deep dive so just keep that in mind okay well start by looking at the things I didn't necessarily like about my experience over the last week with Godot right off the bat I ran into some strange cyclical dependency errors when using GD scripts static typing still don't really understand what was going on here but I managed to work around it when I began to use the tile map node I felt that there was some room for improvement I would have appreciated more tools to paint tiles in different ways and setting collision properties on tiles was tedious but hey this is an open source project maybe one day I can help improve it when working with GD script only one error is shown at a time as the file is parsed from top to bottom not a huge deal and based on a recent blog post I think this is going to be resolved very soon scene inheritance and Godot is great but deciding that you want to use it after you've already created those would be inheriting scenes is a bit of a pain you can't introduce that relationship after the fact so you'll be redoing those scenes as I did with my enemies finally as I worked on my scripts and scenes some errors would appear in the console seemingly out of nowhere that I just didn't understand quick restart of the engine almost always fixed these animate them go again not a big deal just kind of annoying alright now for the fun part things that I very much liked about my past week with Godot animation animation in Godot feels way less clunky to me than it does in unity you can animate any property working with blend trees was very intuitive for me and I love the functionality for calling a function during an animation signals I love the pattern of calling down into child components and having those child components use signals to signal back up when they've completed a task it really allows for the development of loosely coupled components which brings me to my next point focus on composition Godot is strongly object oriented and lends itself very well towards composition over inheritance the use of nested scenes dependency injection and signals have together allowed me to design this dauphin prototype in a far more modular way than what I had before apart from what I've just listed I also have a little laundry list of things that I just enjoyed using those include the input system project and import settings scene inheritance a built in code editor Gd script static typing and GD script itself after that first prototype I made months ago and I initially decided to switch back to unity c-sharp was one of if not the main reason for doing so after spending a week taking a deep dive into GD script I have to say I don't really miss c-sharp static typing within GD script gives me the safety that I want and overall I found it easy to learn far less verbose and quicker to develop new features so with all that said where have I landed and what does the future look like for dolphin I will be continuing development of dolphin with the Godot engine but it's important to note I have nothing but love for unity and this does not mean the end of unity content on the channel right now after spending this last week with Godot there's just so much that excites me about that project so that's what I'm going to focus from this experiment alone it seems clear to me that I'm able to build features more quickly with Godot using patterns that result in more flexible and reusable code it's an obvious plus when it comes to me actually releasing this thing at some point in the future apart from all that I'm just excited to support the project I love that it's open source and I love the documentation and the code and the community our ever growing I think it's gonna be a good fit for me and for Dauphin I hope you guys enjoyed watching me undertake this massive effort over the past week I learned a ton and I hope I was able to convey some of that over to you or if not at least a bit of inspiration to give gadot a try or any other technology that you genuinely want to learn about the next time you see me we'll be in dolphin's next devlog built with the Godot engine thanks so much for watching and I'll see you then
Info
Channel: DevDuck
Views: 301,181
Rating: undefined out of 5
Keywords: unity vs godot, unity engine vs godot engine, godot 2d rpg, godot 2020, godot indie game dev, godot devlog, indie game devlog, devduck, dauphin
Id: vxRzLf4PdgY
Channel Id: undefined
Length: 19min 13sec (1153 seconds)
Published: Sun Jun 07 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.