I have a basic architectural question.
I’m doing a project, but I’m afraid I’m going to redo the entire project for several reasons.
I prefer to apply good practices Hexagonal + DDD + Vertical Slice + Screaming.
If I apply the practices I mentioned, the problem is that C++ has 2 parts, both private and public. That already causes the folders to be duplicated twice, which causes the code to increase the structure x2. Although I can apply Hexagonal very subtly. (Although with the asynchronous response towards Blueprints it becomes another world).
I understand that there is no framework, since what there is seems to be the typical “fire” embedded MVC.
So is there any way to do this efficiently? That is, follow a standard?
The framework of Gameplay Framework in Unreal engine | Unreal Engine 5.3 Documentation UE5 seems a bit… well, how can I say it, old.
Can someone experienced in the field give me some advice?
I’m thinking of using this idea:
As we can see UE5 seems to have a good engineer in good practices. But “something” is missing. That +.
I’m going to illustrate this with a simple example of Character and Vehicles
For example:
Summary
- Character (folder)
--private (folder)
--public (folder)
-Vehicles (folder)
--private (folder)
--public (folder)
This seems simple, the problem is when you want to apply Hexagonal, with the 3 layers of abstraction. My question is, what should it be like?
For example:
YouProject/source/nameProject/
1 - Form A
Summary
- Character
-- domain
---- private
---- public
-- application
---- private
---- public
-- infrastructure
---- private
---- public
- Vehicles
....
Or on the contrary:
2 - Form B
Summary
- Character
---- private
-- domain
-- application
-- infrastructure
---- public
-- domain
-- application
-- infrastructure
- Vehicles
...
The problem is that I see this as too repetitive by having two public/private sections. I would choose form 2 although it is too tedious to repeat all that, I don’t know if I will have problems with it in the future, in principle I shouldn’t have them.
Many people without knowledge of architectures (90%) do this:
https://www.reddit.com/r/unrealengine/comments/xy0j5y/c_project_structure/
Summary
YourModules
\- Public/Private
\- AI
\- Contexts
\- Decorators
\- Services
\- Actors
\- GameModes
\- Pawns
\-PlayerControllers
\- <other game specific recurring subtypes>
\- Components
\- WidgetComponents
\- PrimitiveComponents
\- <other game specific recurring subtypes>
\- Interfaces
\- Framework
Note: At first glance this seems “neat and correct”. I’ll explain it.
Sorting all actors by actor type, or rather, sorting everything by one type in the same folder, this is not productive. If you have 100 Actors, having them all in one folder is chaos.
The way EPIC programmers do it in the Engine project is good practice, but it is not enough.It seems that they have only stayed at the beginning of good practices without continuing. It’s like a principle of good practices.
this is just my case.
Summary
YourModules
\- Public/Private
\- Pawn
\- Character
\- Humanoid
\- Vehicles
There are people who don’t give it importance and say “it doesn’t matter as long as it works”, well, it is true that “the whole” application can be put in a single .cpp and work. But it’s not practical for me.
In the editor with blueprints, I would follow the same approach (I would already be repeating too much, for the private, the public + in the editor). Although it is front, I would also like to have it good.
90% of Indies leave because maintaining a UE5 project is complex.
So is there any way to do this efficiently? That is, follow a standard?
Can someone experienced in the field give me some advice?
What architecture do Epic programmers recommend?