background image

3.5

Σύνοψη κεφαλαίου . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

4

Υλοποίηση

23

4.1

Γενική αρχιτεκτονική . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

4.2

Σύστημα δημιουργίας παραθύρου (Window System – GLFW abstraction) . . .

24

4.3

Σύστημα διαχείρισης εισόδου . . . . . . . . . . . . . . . . . . . . . . . . . . .

26

4.3.1

Enum KeyCode και ανεξαρτησία από backend . . . . . . . . . . . . .

26

4.3.2

Event System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26

4.4

Σύστημα απόδοσης γραφικών Rendering Pipeline . . . . . . . . . . . . . . . .

28

4.4.1

Διαχείριση γεωμετρίας και Buffer Objects . . . . . . . . . . . . . . . .

29

4.4.2

Renderer και Renderer2D

. . . . . . . . . . . . . . . . . . . . . . . .

29

4.4.3

Βελτιστοποίηση μέσω Batch Rendering . . . . . . . . . . . . . . . . .

29

4.5

Αναπαράσταση αντικειμένων: Από την κλάση GameObject στο Entity Component

System (ECS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30

4.5.1

Αναπαράσταση πλέγματος με δομή Half-Edge

. . . . . . . . . . . . .

30

4.5.2

Αρχική προσέγγιση: Ιεραρχία Κλάσεων . . . . . . . . . . . . . . . . .

32

4.5.3

Μετάβαση στην αρχιτεκτονική Entity–Component–System (ECS) . . .

33

4.6

Σύστημα διαχείρισης σκηνής (Scene Management) . . . . . . . . . . . . . . .

35

4.6.1

Η κλάση Scene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

35

4.6.2

Κύκλος ζωής σκηνής . . . . . . . . . . . . . . . . . . . . . . . . . . .

36

4.7

Σύστημα Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

37

4.7.1

Transform Component . . . . . . . . . . . . . . . . . . . . . . . . . .

37

4.7.2

SpriteRenderer Component . . . . . . . . . . . . . . . . . . . . . . . .

37

4.7.3

Light Component 2D . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

4.7.4

Box_Collider Component . . . . . . . . . . . . . . . . . . . . . . . .

38

4.7.5

Camera Component

. . . . . . . . . . . . . . . . . . . . . . . . . . .

39

4.7.6

Audio Component . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

4.7.7

UI Text Component . . . . . . . . . . . . . . . . . . . . . . . . . . . .

40

4.8

Python API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

42

4.8.1

Τρόπος υλοποίησης . . . . . . . . . . . . . . . . . . . . . . . . . . . .

42

4.8.2

Χρήση

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

43

4.9

Σύστημα διεπαφής χρήστη . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

4.9.1

ui components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

4.9.2

ui rendering system . . . . . . . . . . . . . . . . . . . . . . . . . . . .

46

4.9.3

ui διαχειριστής (manager) . . . . . . . . . . . . . . . . . . . . . . . .

46

4.10 Συμπληρωματικές λειτουργικότητες . . . . . . . . . . . . . . . . . . . . . . .

47

4.10.1 input output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

47

4.10.2 Μαθηματικά εργαλεία . . . . . . . . . . . . . . . . . . . . . . . . . .

48

iv