Skip to content

Conversation

@ianfromdover
Copy link

@ianfromdover ianfromdover commented Nov 24, 2022

Used the characters from the tree command in Linux for the project structure, making it cleaner and more understandable.

Should I do the same for the v2 branch? By opening a separate pull request.

2e1 Example Project Content Structure

└── Content
    └── GenericShooter
        ├── Art
        │   ├── Industrial
        │   │   ├── Ambient
        │   │   ├── Machinery
        │   │   └── Pipes
        │   ├── Nature
        │   │   ├── Ambient
        │   │   ├── Foliage
        │   │   ├── Rocks
        │   │   └── Trees
        │   └── Office
        ├── Characters
        │   ├── Bob
        │   ├── Common
        │   │   ├── Animations
        │   │   └── Audio
        │   ├── Jack
        │   ├── Steve
        │   └── Zoe
        ├── Core
        │   ├── Characters
        │   ├── Engine
        │   ├── GameModes
        │   ├── Interactables
        │   ├── Pickups
        │   └── Weapons
        ├── Effects
        │   ├── Electrical
        │   ├── Fire
        │   └── Weather
        ├── Maps
        │   ├── Campaign1
        │   └── Campaign2
        ├── MaterialLibrary
        │   ├── Debug
        │   ├── Metal
        │   ├── Paint
        │   ├── Utility
        │   └── Weathering
        ├── Placeables
        │   └── Pickups
        └── Weapons
            ├── Common
            ├── Pistols
            │   ├── DesertEagle
            │   └── RocketPistol
            └── Rifles

@Derjyn
Copy link

Derjyn commented Oct 13, 2025

I want to expose a potential inefficiency or DRY issue with this scaffold. The element that jumps out at me is related to Weapons. Currently there is the following:

└── Content
    └── GenericShooter
        ├── ...
        ├── Core
        │   ├── ...
        │   └── Weapons
        ├── ...
        └── Weapons
            ├── Common
            └── ...

If there are core/common assets and logic in the Weapons directory within the Core directory, is there going to be core/common assets and logic also within the Common directory of the primary Weapons directory? This seems like potential overlap or perhaps an introduction of a coarse semantic that can cause confusion or unnecessary bouncing around and extra management.

The other implied functionality within the Core directory children make sense and seem correct. However we suddenly get granular and have the child Weapons folder; it seems this shouldn't be there, and the higher level, primary Weapons directory with the child Common folder is correct and would have logic and assets related to weapons.

I could be way off base, but I think a more practical/logical structure would have Core with only the specific engine logic and assets, like so:

└── Content
    └── GenericShooter
        ├── ...
        ├── Core
        │   ├── Engine
        │   └── GameModes

Having children/elements within Core that are for specific game elements (a dramatic example to drive my point home would be something like "Vegetation") seems a bit sloppy or rushed, like those folders got dropped in Core because we couldn't figure out a better place for them, if that makes sense. Imagine if the game theme was a bicycling simulator; Would Core have a Bikes directory?

The other children in the structure seem like they should exist outside of Core and have their own logical subdirectories - the Characters, Interactables, Pickups, and Weapons. This way things stay domain specific and modular. Just my two cents, and if there is solid reasoning behind the current structure, please educate me! Even after decades of project management, data structure design, etc, I have those lovely derpy moments and constantly learn new things...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants