summaryrefslogtreecommitdiff
path: root/blog/src/g
diff options
context:
space:
mode:
Diffstat (limited to 'blog/src/g')
-rw-r--r--blog/src/g/godot_project_structure.md27
1 files changed, 16 insertions, 11 deletions
diff --git a/blog/src/g/godot_project_structure.md b/blog/src/g/godot_project_structure.md
index f69a74d..3f013cc 100644
--- a/blog/src/g/godot_project_structure.md
+++ b/blog/src/g/godot_project_structure.md
@@ -6,9 +6,9 @@ tags: gamedev
short
english
-One of my first issues when starting a project is how to structure everything. So I had to spend some time researching best practices and go with what I like the most.
+One of my first issues when starting a project is how to structure everything. So I had to spend some time researching best practices and go with what I like the most and after trying some of them I wanted to write down somewhere what I'm sticking with.
-The first place to look for is of course the official *Godot* documentation on [Project organization](https://docs.godotengine.org/en/stable/tutorials/best_practices/project_organization.html); along with project structure discussion, also comes with best practices for code style and what-not. I don't like this project/directory structure that much, just because it tells you to bundle everything under the same directory but it's a really good starting point, for example it tells you to use:
+The first place to look for is, of course, the official *Godot* documentation on [Project organization](https://docs.godotengine.org/en/stable/tutorials/best_practices/project_organization.html); along with project structure discussion, also comes with best practices for code style and what-not. I don't like this project/directory structure that much, just because it tells you to bundle everything under the same directory but it's a really good starting point, for example it tells you to use:
- /models/town/house/
- house.dae
@@ -28,27 +28,26 @@ Where I would prefer to have more modularity, for example:
- house.y
- house.z
-It might look like it's more work, but I prefer it like this. I wish [this site ](https://www.braindead.bzh/entry/creating-a-game-with-godot-engine-ep-2-project-organization) was still available, as I got most of my ideas from there, but apparently the owner is not maintaining his site anymore; but there is [this excelent comment on reddit](https://www.reddit.com/r/godot/comments/7786ee/comment/dojuzuf/?utm_source=share&utm_medium=web2x&context=3) which shows a project/sirectory structure more in line with what I'm currently using (and similr to the site that is down that I liked that much). I just do somethings a bit different, and end up with:
+It might look like it's more work, but I prefer it like this. I wish [this site](https://www.braindead.bzh/entry/creating-a-game-with-godot-engine-ep-2-project-organization) was still available, as I got most of my ideas from there and was a pretty good resource, but apparently the owner is not maintaining his site anymore; but there is [this excelent comment on reddit](https://www.reddit.com/r/godot/comments/7786ee/comment/dojuzuf/?utm_source=share&utm_medium=web2x&context=3) which shows a project/directory structure more in line with what I'm currently using (and similr to the site that is down that I liked). I ended up with:
- /.git
-- /assets (raw assets/editable assets for their respective software, could also be the whole imported assets from some packs, where you can just select few of them to actually use)
+- /assets (raw assets/editable assets/asset packs)
- /releases (executables ready to publish)
- /src (the actual godot project)
- .godot/
- actors/ (or entities)
- player/
- - assets/
- sprites/
+ - player.x
- ...
- enemy/ (this could be a dir with subdirectories for each type of enemy for example...)
- - assets/
- sprites/
+ - enemy.x
- ...
- - actor.gd
+ - actor.x
- ...
- levels/ (or scenes)
- common/
- - assets/
- sprites/
- ...
- main/
@@ -57,7 +56,7 @@ It might look like it's more work, but I prefer it like this. I wish [this site
- ...
- dugeon/
- ...
- - Game.tscn (I consider the "game" itself a level/scene, so I'm including it here)
+ - Game.tscn (I'm considering the "Game" as a level/scene)
- game.gd
- objects/
- box/
@@ -72,11 +71,17 @@ It might look like it's more work, but I prefer it like this. I wish [this site
- menus/
- ...
- ...
+ - sfx/
+ - ...
+ - vfx/
+ - ...
+ - etc/
+ - ...
- Main.tscn (the entry point of the game)
- main.gd
- - icon.png
+ - icon.png (could also be on a separate "icons" directory)
- project.godot
- ...
- \<any other repository related files\>
-And so on, I hope the idea is clear. Basically you need to abstract some entity/object that you're going to use into its more basic form and use subdirectories for each level of abstraction (a player is an actor and thus we use actor/player; a box is part of the world, and is a level so we can use levels/common/decor/box or something like that). Once you have the most basic abstraction done, anything that belongs to that abstraction will have all of its assets/sounds/shaders/etc in it's directory. \ No newline at end of file
+And so on, I hope the idea is clear. I'll probably change my mind on the long run, but for now this has been working fine. \ No newline at end of file