11# Design
22
3- I could tell you that the Brenta engine was perfectly designed, with a
4- clear vision from its inception, with a beautiful and powerful API
5- that makes programming truly enjoyable. Except the fact that it would
6- be a lie. I do not mean that I don't find the current design and API
7- beautiful and fun - I think Brenta is a powerful engine - but its
8- development has been more iterative than meticulously designed. I
9- rewrote huge parts of the engine many many times, to the point where I
10- am not scared to do big refactoring anymore - that is just routine -
11- and I know I am deemed to repeat this process again. But through these
12- many refactoring, the API reached a point where all objects work well
13- together and you can reason about them through what I call the
14- "architecture" or "design" of the engine. This is what I aim to
15- describe in this documents.
163
174Game engines are complex pieces of software. They provide an interface
185to define logic, render graphics, and access system resources like
@@ -21,6 +8,15 @@ the developer.
218
229![ high-level-overview] ( ./brenta-picture.png )
2310
11+ Brenta's its development has been more iterative than meticulously
12+ designed. I rewrote huge parts of the engine many many times, to the
13+ point where I am not scared to do big refactoring anymore - that is
14+ just routine - and I know I am deemed to repeat this process
15+ again. But through these many refactoring, the API reached a point
16+ where all objects work well together and you can reason about them
17+ through what I call the "architecture" or "design" of the engine. This
18+ is what I aim to describe in this documents.
19+
2420I wanted to write my own graphics engine primarily because I was
2521curious to understand how these big systems are designed and
2622implemented, and as a programming exercise / learning experience. The
@@ -94,7 +90,7 @@ provides the abstractions necessary to integrate other methods.
9490## Scene
9591
9692There are many ways to define a scene. Brenta supports both the
97- scene -graph architecture, commonly used in Godot, Unity and Unreal,
93+ node -graph architecture, commonly used in Godot, Unity and Unreal,
9894and the ECS (Entity Component System) architecture like in
9995[ Bevy] ( https://github.com/bevyengine/bevy/ ) .
10096
0 commit comments