How I Organize My 10k+ Line Godot Project!

Поделиться
HTML-код
  • Опубликовано: 22 ноя 2024

Комментарии • 138

  • @adamhelesic4279
    @adamhelesic4279 3 месяца назад +79

    Deeefinitely please make more of these educational videos! This one was very insightful

    • @DevDuck
      @DevDuck  3 месяца назад +11

      Hey will do, thank you!

  • @pokelord2013
    @pokelord2013 3 месяца назад +134

    I've just hit the point in my RPG dev where I need to seriously consider how I want to organize everything. Truly perfect timing

    • @DevDuck
      @DevDuck  3 месяца назад +15

      That's a pretty exciting point in the project! Happy this helped!

  • @TheCraftyAutistic
    @TheCraftyAutistic 3 месяца назад +21

    I really needed to learn this! So many tutorials seem to stop at the minigame level.

    • @visibletoallusersonyoutube5928
      @visibletoallusersonyoutube5928 3 месяца назад +4

      Yea its to the point where I'm starting to doubt the axiom that making a ton of small games is good for you.

  • @BunchOfNerdsMakingGames
    @BunchOfNerdsMakingGames 3 месяца назад +36

    Great video! The first time I worked with a team on a game jam we didn't know how to organize our files and it turned into complete chaos. By the end of the competition we couldn't find anything in our project. Organization is so critical yet can be so easily overlooked.

  • @loipesmas
    @loipesmas 3 месяца назад +15

    When I started I was grouping files by type (I think some tutorial suggested that), but with time, I've also landed on grouping by functionality instead. So I approve this message!

  • @DUHRIZEO
    @DUHRIZEO 7 дней назад

    I love this. Put files closest to their level of use. If shared, go high. If object specific, go deep.

  • @_gamma.
    @_gamma. 3 месяца назад +5

    One thing that made my workflow work better was adding a “support” folder that includes raw assets for itch store pages, unprocessed audio files I may use, credits, etc. Great video, I’ll pick up some of those organizational tips!

  • @AspiringHeroGames
    @AspiringHeroGames 3 месяца назад +6

    I really like the folder structure. It seems really intuitive to keep everything related together like that.
    I'm so used to keeping all singular file types together (scripts in Scripts, models in Models), and oftentimes it takes me a while to find the file I need. I'm strongly considering implementing a hierarchy like this now!

    • @seagullcabbage
      @seagullcabbage 3 месяца назад

      Why where they hard to find?
      What's was hard about something like Scripts -> Player -> Controllers etc.

    • @AspiringHeroGames
      @AspiringHeroGames 3 месяца назад +2

      I said it can take a while, not that it was hard. You've typed exactly the structure I had before, and have used for years outside of Godot.
      If I'm dealing with an object/scene that has a model, sprite, script, resource and script for the resource, it's comparatively quicker to find them all in one dedicated folder for that "entity type", shall we say, versus needing to visit 5 different folders.

    • @seagullcabbage
      @seagullcabbage 3 месяца назад

      @@AspiringHeroGames Idk sounds like it was harder to navigate to me
      Cool

  • @autumnshade84
    @autumnshade84 3 месяца назад +3

    This is awesome. I had everything in seperate asset>art and scripts folders and was quickly losing everything, and finding I was creating different directory structures. This is much easier to keep track of everything. Thank you so much for sharing.

  • @BosakMaw
    @BosakMaw Месяц назад

    I've always wanted to see a video like this showing how to organize game code in a game engine, because it's very different than how most software is organized and architected.

  • @justgame5508
    @justgame5508 3 месяца назад +5

    This is similar to vertical slice architecture, which is a method in distributed systems and back end architecture design for organising code by features rather than technical concerns. Interesting to see parallels in very different software engineering domains

    • @taliaflor
      @taliaflor 3 месяца назад +1

      Yes! I kept think of this throughtout the video. This is my favorite architeture for organization, I am glad to see a implementation of it in another context.

  • @sonictailsandsally
    @sonictailsandsally 3 месяца назад +1

    And this technique scales pretty well. It’s what I’ve been doing in my 100K line (NestJS server) project. Basically “abstracting” the folders.
    - src
    - automation
    - config
    - data
    -- common
    -- crm
    -- db
    -- metrics
    -- csr
    -- branch
    -- common
    -- …
    -- server
    - lib

  • @poleski7281
    @poleski7281 3 месяца назад +8

    Love this! Great to see someone elses implementation and organization strategies, even if there are some downsides. I find that managing shared files often gets overlooked with the "organize by usecase". Like a player and an enemy that both have a shared health script. The health script doesnt belong in either folder, and thus is booted up a layer. Despite the feeling that it should live at the same level as both the player and the enemy. It almost feels as if like a file hierarchy isnt doing justice to the complexity of the code structure. Like if i could organize files based on a 2D graph instead of a filesystem, i feel like that would almost be more intuitive. Forget folders and organization strategies, and just looked at which nodes / files are tied to each other in the 2D graph.

  • @betadyne9559
    @betadyne9559 Месяц назад +1

    Do you know this is by far the Godot video I've watched the most so far, except maybe the Miziziziz's video about tutorials ? This is extremely precious knowledge and I'm glad you spent time sharing this with us because it's very good !

  • @grymmjack
    @grymmjack 3 месяца назад +1

    Thank you for showing us behind the curtain of a well organized and large Godot project! Very helpful. I can see how this system could work in lots of ways, and scaffolding you've got here is very good!

  • @Michael-The-Composer
    @Michael-The-Composer 3 месяца назад +1

    I've taken notes from this video and put it in a nice document called 'Game Dev Wisdom', and I will be using this structure when I eventually delve into a bigger game!!! I appreciate this breakdown so much! This system just makes so much sense

  • @_mickmccarthy
    @_mickmccarthy 3 месяца назад +8

    Excellent video! I've just gotten back into game dev after a few years out, and am always interested to hear about things like directory structure, design patterns, how entities communicate etc. So would love to see some more of this style of video if it's something you're interested in covering!

  • @SDGGames
    @SDGGames 3 месяца назад +44

    That's a big tree! I'm surprised that you haven't color-coded anything in there. I love having different folder colors for art, UI, scenes+scripts, etc. At least in my experience, it's made things a lot quicker to find.

    • @danikvitek6845
      @danikvitek6845 3 месяца назад +16

      Forgot that this is a feature

    • @DevDuck
      @DevDuck  3 месяца назад +32

      Whoa I need to do this!

    • @visibletoallusersonyoutube5928
      @visibletoallusersonyoutube5928 3 месяца назад +3

      Is there a quick way to explain how it's done?

    • @SDGGames
      @SDGGames 3 месяца назад

      @@visibletoallusersonyoutube5928 Just right-click on the folder in the FileSystem dock, then select a color under "Select Folder Color..."
      Colors are applied to nested folders automatically.

    • @SDGGames
      @SDGGames 3 месяца назад

      @@visibletoallusersonyoutube5928 Just right-click on the folder color in the FileSystem tab, then select a color under "Set Folder Color...".

  • @grzegorzgrzelczyk
    @grzegorzgrzelczyk 3 месяца назад

    I'm here watching this for the second time as I'm reorganizing my little project just because when I watched it for the first time I knew I must do it this way. Seems super intuitive.

  • @julkip
    @julkip 3 месяца назад +4

    Interesting concept. Not what I use, but still good to see a different approach.

  • @RichardCalder67
    @RichardCalder67 3 месяца назад +1

    As a new game dev, but a long time developer, I love this. I keep watching tutorials with a Scripts folder and that just seems like such a horrible idea for a real game to me. This also gave me some ideas on how to better structure my own work moving forward. Thank you!

  • @MM-24
    @MM-24 Месяц назад +1

    This is a extremely well written and well executed video - bravo
    As a follow on - id love to see. the scene architecture that correlates with all this. How does a main menu get loaded, how do we load the gameplay, where does the various scenes and entities load into one another.
    Great video, super helpful

  • @EmilyGamerGirl
    @EmilyGamerGirl 3 месяца назад +4

    Neat. Personally I'd split Entities into `Entities` and `Objects`, where things like the player, enemies, npcs are 'Entities' but things like weather/doors/etc would be `Objects`.

  • @johannesandersson9302
    @johannesandersson9302 3 месяца назад

    This was one of the most helpful videos I have seen in a long time. Not only does this inspire new developers to better organize their projects but also seasoned developers. Personally I think maintaining good orginasized code throughout the project is the most challenging. Your ability to organize your project is inspiring. Thank you for uploading such a good content

  • @matt1871
    @matt1871 3 месяца назад +2

    4 years! Wow that's gone fast. I'm looking forward to playing this on release ❤

  • @pbilkhu818
    @pbilkhu818 3 месяца назад

    Great video! As someone who struggles with organizing projects to the point where I feel like I’m constantly changing my folder structure, this is very insightful. I especially like your naming conventions for different inherited objects, it’s feels really intuitive. I’d love and appreciate more content like this!

  • @saveciprian
    @saveciprian Месяц назад

    Honestly I'd just move config into the utilities folder since you don't need to access it often. Really nice video, I feel the sudden need to organize my project now :))

  • @shindig9000
    @shindig9000 3 месяца назад

    Thank You!
    This has finally helped answer some of my questions that I can never seem to find information or advise on! 😭

  • @darkooo94
    @darkooo94 2 месяца назад

    The big drawback to any file organization is the folder system. We're stuck with it for so long because real life documents can be only in one place at the time. I believe tag-based organization system would be more versatile.
    Anyway, thank you for sharing your approach, seems reasonable and more natural than "hey, here are all the flowers' looks and there are the smells".

  • @drpainnuk3d
    @drpainnuk3d 3 месяца назад

    Thanks so much, I have definately struggled to find something which makes sense and prevents bleeding functionality from one component to another. I can see this working well, will have to give it a go.

  • @KurzweilTV
    @KurzweilTV 3 месяца назад

    Thanks for this. I've made a lot of small game jams, but I'm just not starting on a larger project and this is a big help. I'd love more general Godot engine stuff like this.

  • @pixeldynamics283
    @pixeldynamics283 3 месяца назад

    Definitely more like this! Your insight into good development practices are super helpful.

  • @Harotyx
    @Harotyx 3 месяца назад

    Really congratulate you for the ammount of work put into this game, sincerely the boat sailing around the island and the trasparent sea looks amazing. Great work and thanks for sharing with us

  • @rozvieta
    @rozvieta 3 месяца назад

    I needed that video. I was actually struggling hard with organizing my game project - and it was nowhere near the Daupin complexity!

  • @razzy9896
    @razzy9896 3 месяца назад

    Thank you for this video. This is something I've been struggling with a lot. I would love to see more in depth how you handle this

  • @alexanderkulaev541
    @alexanderkulaev541 3 месяца назад

    Thank you, great video on an obscure topic! Please tell us more about game inner workings and how to organize a game from the inside. For a beginner dev like me, without coding knowledge and experience, it's such a valuable source of learning!

  • @nathanielblairofkew1082
    @nathanielblairofkew1082 3 месяца назад

    super useful! would like to see more about how you avoid clutter

  • @jtenzgames
    @jtenzgames 3 месяца назад +3

    I'm currently making my game in Game Maker Studio 2 and I've let my file/folder structure turn into a nightmare. This is good motivation for me to finally clean things up

  • @noname-dj7vj
    @noname-dj7vj 3 месяца назад

    This is honestly really really great for me to be hearing right now. Thank you so much for making this for people like me to find!

  • @BRBS360
    @BRBS360 3 месяца назад

    Really enjoy these highly focused videos about one topic. I dare say I like them even more than the regular Dev Logs (which are still interesting!).

  • @possiblyink
    @possiblyink 3 месяца назад +17

    The timing for this video is insane. I'm planning on making an unusual inventory system for my game, but I didn't know if I would be able to manage all of the lines of code. I'll definitely be using some of these tips. Thank you!

    • @DevDuck
      @DevDuck  3 месяца назад +3

      Dauphin has a few inventory implementations in my UI folder for the player equipment, player inventory, and fishing rod setup. Fun to build out - good luck!

  • @BeigeDockland
    @BeigeDockland 3 месяца назад

    This was awesome! I found this super helpful even after working with Godot for a few years. MORE PLEASE :D

  • @dadarkdan
    @dadarkdan 3 месяца назад

    Looks like a professional take on the subject, fellow dev. I do find putting all stuff concerning one model or entity or even system very close to each other very smart.
    One problem you might encounter with your specific solution is compilation time since you got most of your stuff in entities, but I have no idea of Godot so I might be wrong here.

  • @6Pope9
    @6Pope9 3 месяца назад +1

    Please make a video on making a "common" classes and scripts for reusable scenes. That would be really helpful!

  • @lonkodektes5725
    @lonkodektes5725 3 месяца назад

    Dauphin looks fantastic, great work!

  • @joaoprogrammer5306
    @joaoprogrammer5306 3 месяца назад

    Thanks for this content. For self-taugh gamedevelopers and programmers, it's useful to see a skeleton of OOP for an complex game in Godot. There isn't such a lot of content on this. ;)

  • @Ducky39101
    @Ducky39101 3 месяца назад

    Thanks for this. Just starting out with some game development and always wondered how to group stuff.

  • @sweatyeti
    @sweatyeti 3 месяца назад

    This is very helpful. Thank you so much for sharing your approach!

  • @plantchargedgames
    @plantchargedgames 3 месяца назад

    I love these "educational" videos in addition to the devlogs, great work! :)

  • @rileysikes9285
    @rileysikes9285 3 месяца назад

    Super insightful, I really appreciate the in depth walk through and examples you gave!

  • @emerson00santos
    @emerson00santos 3 месяца назад

    Thank you, Ben! I will definitely implement this pattern in my project. It brought several ideas that are certainly very useful!

  • @Marth8880
    @Marth8880 3 месяца назад

    Common folder is brilliant. Very very smart.

  • @6Pope9
    @6Pope9 2 месяца назад +1

    @DevDuck Please make a video on how to make a "common" reusable assets! That would be really helpful

  • @SergioEduP
    @SergioEduP 3 месяца назад

    At first it looked weird but as you went on explaining it started to make a lot of sense, I will start considering something like this for my future projects, so far I've been organizing stuff mostly by type rather than functionality and it starts getting messy real fast. Been looking for alternative ways for a while now.

  • @t.e.e.j.a.y
    @t.e.e.j.a.y 3 месяца назад

    Nice Vid! Love this type of content. Would be awesome to see a video on how you have structured and/or manage and/or share states of both the player and NPCs, and maybe how you manage and/or share collisions/attacks/interactions, etc. between entities, items and the environment, etc., if that makes sense 🤔

  • @Freddy78909
    @Freddy78909 2 месяца назад

    Love that t-shirt. Really cool! 🧊

  • @SuperKrug3r
    @SuperKrug3r 3 месяца назад

    Thanks for the tour! I would be interested to see examples of whats in that common folder and how you write them so they are reusable in different projects.

  • @erik-sandberg
    @erik-sandberg 3 месяца назад

    Hey, love this video! So good to see the internals of a more mature project in Godot. One question I feel like I never have a great grasp of is how to scale sprites. For example, at 2:30 in the video I see a text popup in the bottom left and the font is very legible, but only takes up a small part of the screen. That makes me think the resolution of your game must be quite large, but your main character is still very chunky and pixelated. Can you elaborate on your window size, stretch mode (canvas vs viewport?), font size, and scaling of sprites?

  • @hiiambarney4489
    @hiiambarney4489 3 месяца назад +1

    Damn, I thought I got a big screen but brotherman out here sitting in front of a TV.

  • @vacantknight
    @vacantknight 3 месяца назад +1

    Another fantastic video as always

  • @Lacotemale
    @Lacotemale 3 месяца назад

    Nice video. I group by functionality too. Not using Godot yet but I hope to use it for my next project.

  • @UlshaRS
    @UlshaRS 3 месяца назад

    Just getting to adding folders to build the prototpe and my organizational OCD is thrilled and terrified

  • @tonnnn86
    @tonnnn86 3 месяца назад

    This is really useful! Nice work!

  • @guiedudev
    @guiedudev 3 месяца назад

    Working in software I feel the pain of organizing a project propelly all the time. I have a similar structure, but I'll for sure make some tweaks based on your suggestions. I particularly like the ide of organzing entities based on classes. Thanks a bunch and keep it up. The game is coming out top notch!

  • @DIYGamer1981able
    @DIYGamer1981able 3 месяца назад

    Great video. Im making an rpg in Godot too and I love hearing about how to organize the project and design patterns and such. I've been really busy lately and i haven't worked on my game because life happens(i got married). But someday I'll finish it.

  • @RoyaleWind
    @RoyaleWind 3 месяца назад

    [3:11] Same, I don't know; I like leaving it by default in the root because it’s clean and feels more organized.

  • @ReadOnGames-nq2ok
    @ReadOnGames-nq2ok 3 месяца назад

    YES. Such a persistent problem for me.

  • @Revilo2242
    @Revilo2242 3 месяца назад

    huge life safer for my own godot project after this video decided to take the time to sort out the mess

  • @codeandcraft
    @codeandcraft 3 месяца назад

    i kind of like organizing each aspect of the game in its own folder for example id have code, scenes, textures and audio as the first level of folders and then in those add sub categories to things like entities, gui, items misc etc. and in those id add more sub categories.

  • @MeRancic
    @MeRancic 3 месяца назад +1

    I think 11k lines for a 4 year project is actually really amazing. One of my games had 9k lines after only 6 weeks (to be fair it's written in Rust/Bevy so no meta files, instead all in the code). I think the less code you have the better. Are you putting effort into keeping your code clean/small? Like regularly refactoring or similar.

  • @AzraelTheManHandler
    @AzraelTheManHandler 3 месяца назад

    I think this is very interesting because the first organizational choice you make at the top level will often drive the rest of your organization. And I have found how you pick to do that is how a combo of keeping top level folder count low + how you think about finding things personally off the top. For example if you have a bug in one of your enemy behavior scripts, how would you think to find it? Is it “oh it’s an enemy and of this name so it’s there?” And therefore follow a pattern shown here? Or is it “oh an enemy script is having a problem so I better go to my scripts and enemies” etc. For me personally I find I like organizing my top level by types (levels, audio, scripts, etc) and then subfoldering in the way that is grouped by logic in the game. But both ways are good, just make sure you stick to it consistently! Mixing styles gets confusing fast lol

  • @JakobKobberholm
    @JakobKobberholm 3 месяца назад

    Interesting video. I am wondering what you do with shared assets. I.e. two in-game objects that use the same sprites or sounds.
    I generally prefer something like your structure, but it always ends up coming back to bite me, as things get more complicated.
    And as I was watching your video, one of my first thoughts were "Where did he put his UI folder?!" :D

  • @R2D_YT
    @R2D_YT 3 месяца назад

    Super helpful video

  • @fabiovank
    @fabiovank 3 месяца назад

    That's it! Thank you.

  • @heyderekj
    @heyderekj 3 месяца назад

    This is so clean and well thought out. At what point did you create this organization? I love the implementation BUT also love the reason and process to get there.

  • @scottwears674
    @scottwears674 3 месяца назад

    Are you crowd sourcing the localised text? Be interesting to see how you handle that

  • @adrian333dev
    @adrian333dev 3 месяца назад

    Awesome content! BTW I'm just starting 2D game dev in Godot and I become really overwhelmed by all the skills I need to learn, and I'm actually more concerned about art stuff rather than Godot, because I have background in programming. Do you mind making some roadmap video on this in the future on this?

  • @deevus
    @deevus 3 месяца назад

    It would be great to see how you're doing enemy AI. It looked like you had a reusable state machine for that.

  • @dmytrokyrychuk7049
    @dmytrokyrychuk7049 3 месяца назад

    How would you organize a project with DLCs? Thanks for sharing!

  • @FirstName-l1j
    @FirstName-l1j 3 месяца назад

    sailboats anchor from the bow (the front)

  • @_wooshplanet7727
    @_wooshplanet7727 3 месяца назад +1

    the beard 🔥

  • @lygun5581
    @lygun5581 3 месяца назад

    I'm curious on how you organize files that are shared between entities. For example a hurt sound effect that all enemies share.

  • @rifz42
    @rifz42 2 месяца назад

    what do you think about naming "0 Tilesets" or "Z Tilesets" so it always shows up at the top or bottom? also is there a way to color code folders? thanks

  • @moose6459
    @moose6459 3 месяца назад +1

    I can’t manage to organize files like this, feels too much like inheritance. I understand you store an entity in a far sub folder, but where do you store components that it and other entities share? Like a health component.

  • @ucmRich
    @ucmRich 3 месяца назад

    ty for this bro!! ^_^

  • @chizuru1999
    @chizuru1999 3 месяца назад

    I have a question. In godot using composition we create standalone components. Are they equivalent to scriptable objects of unity?
    I am new to game dev.

  • @TheDarkfire9251
    @TheDarkfire9251 3 месяца назад +2

    Your config folder sounds like something that should be in user:// rather than res://

  • @bobbeh_tv
    @bobbeh_tv 3 месяца назад

    How did you make that burning crab look so smooth.

  • @sosasees
    @sosasees 3 месяца назад

    in my projects, the folder name "common" does not mean "things which can be used in any project" but "things which at least 2 other things in my project uses"

  • @juan_jojos
    @juan_jojos Месяц назад

    So addons folder should be in Utilities right?

  • @tristanlai2650
    @tristanlai2650 2 месяца назад

    what's the difference in the UI folder in Commons and the UI folder in Entities?

  • @riufq
    @riufq 3 месяца назад

    Do you make that clothes?

  • @BlueOctopusDev
    @BlueOctopusDev 3 месяца назад

    Thanks

  • @DeadIndGames
    @DeadIndGames 3 месяца назад

    So I just started to make my project big enough that I actually have files to organize and move around. How many dependencies have you broke with this many files in your game?

  • @rohithreddy75
    @rohithreddy75 Месяц назад

    If the game is 10k code lines how much % of the project is completed?

  • @nitrogamer2361
    @nitrogamer2361 3 месяца назад +1

    50th ??!!

  • @adrianMT4U
    @adrianMT4U 3 месяца назад

    do you have ebook for this, like pdf for free 😅

  • @axelandru9346
    @axelandru9346 3 месяца назад

    Swear you wrote Common folder !

  • @NotH3ntaiTeddy
    @NotH3ntaiTeddy 3 месяца назад +1

    You started this Project 54 months ago, yet there are only 53 Videos in the" Dauphin Development Logs" Playlist. There is an ENTIRE video less than i want.
    When do you upload a new Video in the Playlist?

  • @SmugDarkLoser10
    @SmugDarkLoser10 3 месяца назад

    You probably should organize code by real actual dependencies, and then only after then by conceptual category.