background image

• Fixed Time Step – η λογική του παιχνιδιού ενημερώνεται σε σταθερά χρονικά βήματα

(π.χ. 60Hz), ανεξάρτητα από το rendering.

• Variable Time Step – η λογική βασίζεται στον πραγματικό χρόνο (delta time) μεταξύ

frames.

• Hybrid Loops – συνδυασμοί των παραπάνω για σταθερότητα + απόδοση.

2.2.7

Physics engine (Μηχανή Φυσικής)

Η μηχανή φυσικής είναι υπεύθυνη για την προσομοίωση ρεαλιστικής κίνησης, δυνάμεων και

συγκρούσεων στον κόσμο του παιχνιδιού. Πρόκειται για ένα από τα πιο πολύπλοκα υποσυστή-

ματα, καθώς βασίζεται σε μαθηματικά μοντέλα και αλγορίθμους βελτιστοποίησης. Η μηχανή

φυσικής (physics engine) μπορεί να χωριστεί σε δύο βασικά μέρη: Dynamics – προσομοίωση

κίνησης με βάση δυνάμεις (π.χ. βαρύτητα, ώθηση, τριβή) και Collision Detection – εντοπισμός

συγκρούσεων μεταξύ αντικειμένων, ώστε να εμποδίζεται η διείσδυσή τους.

Οι ([7]) αναφέρουν ότι οι μηχανές φυσικής μπορούν να είναι είτε απλουστευμένες (arcade

physics) για παιχνίδια 2D/retro, είτε ρεαλιστικές (rigid body dynamics) για 3D παιχνίδια και

προσομοιώσεις. Κάποια υποσυστήματα φυσικής:

• Collision Detection

• Broad Phase: γρήγορη ανίχνευση πιθανών συγκρούσεων (π.χ. με spatial partitioning:

quadtrees, octrees, BVH).

• Narrow Phase: ακριβής υπολογισμός σημείων επαφής.

• Collision Response

• Εφαρμογή κατάλληλων δυνάμεων για να αντιδράσουν τα σώματα (π.χ. bounce, slide,

stop).

• Rigid Body Dynamics

• Υπολογισμός θέσης/προσανατολισμού με βάση τις δυνάμεις (F=ma, ολοκλήρωση

Euler/Verlet).

• Constraints / Joints

• Εφαρμογή περιορισμών (π.χ. άρθρωση τύπου hinge, spring, slider).

Στις εμπορικές μηχανές:

Η Unity χρησιμοποιεί το PhysX (NVIDIA).

Η Unreal Engine χρησιμοποιεί το Chaos Physics Engine.

Η Godot διαθέτει δικό της physics system για 2D και 3D.

14