This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Η εκτέλεση ενός έργου σε λειτουργία Debug δημιουργεί μια διεργασία για ένα συγκεκριμένο στιγμιότυπο χρόνου εκτέλεσης της μηχανής με το παιχνίδι σας και μια ειδική υπηρεσία μηχανής, στην οποία υπάρχει πρόσβαση για υποδομές ανάπτυξης και δημιουργίας προφίλ, λογική και μηνύματα χρόνου εκτέλεσης, κατάσταση της μηχανής και επεκτάσεις.
Η υπηρεσία μηχανής είναι μια υπηρεσία HTTP ανάπτυξης που ανήκει σε μια δοκιμαστική μηχανή (dmengine) η οποία εκτελείται.
Είναι ξεχωριστή από τον διακομιστή επεξεργαστή, ο οποίος ανήκει στον επεξεργαστή Defold και ελέγχει το ανοιχτό έργο.
Οι δύο υπηρεσίες χρησιμοποιούν διαφορετικές θύρες. Ένα εργαλείο που συνδέεται στη θύρα του επεξεργαστή δεν μπορεί να καλέσει εκεί διαδρομές επεκτάσεων χρόνου εκτέλεσης, και αντιστρόφως — ένα εργαλείο που συνδέεται στην υπηρεσία μηχανής δεν μπορεί να καλέσει λειτουργίες του επεξεργαστή.
Η υπηρεσία μηχανής αποτελεί μέρος της υποδομής δοκιμών, ανάπτυξης και δημιουργίας προφίλ. Τα στιγμιότυπα της μηχανής έκδοσης δεν δημιουργούν την υπηρεσία.
Όταν ο επεξεργαστής εκκινεί μια δοκιμαστική μηχανή, ζητά μια δυναμικά εκχωρημένη θύρα υπηρεσίας. Η μηχανή αναφέρει την επιλεγμένη θύρα στο Console (`και στο αρχείο καταγραφής της αν εκτελείται από CLI):

INFO:ENGINE: Engine service started on port <port>
Η γραμμή εμφανίζεται στην κονσόλα του επεξεργαστή όταν το παιχνίδι εκκινήθηκε από τον επεξεργαστή. Ένας απλός τοπικός ελεγκτής μπορεί να αναλύει αυτή τη γραμμή, αλλά μια επαναχρησιμοποιήσιμη ενσωμάτωση θα πρέπει να επιτρέπει στον επεξεργαστή ή στο περίβλημά του να παρακολουθεί το στιγμιότυπο της μηχανής και την καταχωρισμένη θύρα. Έτσι αποφεύγεται η σύγχυση μιας παλιάς θύρας με μια διεργασία που μόλις εκκινήθηκε ή επαναχρησιμοποιήθηκε.
Η μηχανή διαφημίζει επίσης στόχους ανάπτυξης μέσω εντοπισμού υπηρεσιών στις υποστηριζόμενες πλατφόρμες. Αυτός ο μηχανισμός χρησιμοποιείται κυρίως από τα εργαλεία Defold και δεν θα πρέπει να αντικαθίσταται από μια μόνιμα κωδικοποιημένη θύρα.
Ο διακομιστής είναι προσβάσιμος στο localhost (127.0.0.1) σε μια δεδομένη θύρα:

Η τρέχουσα δοκιμαστική μηχανή καταχωρίζει ένα μικρό σύνολο βασικών διαδρομών.
| Τελικό σημείο | Σκοπός |
|---|---|
GET /ping |
Έλεγχος ότι η υπηρεσία μηχανής αποκρίνεται |
GET /info |
Ανάγνωση έκδοσης μηχανής, πλατφόρμας, αναγνωριστικού δημιουργίας και πληροφοριών υπηρεσίας καταγραφής |
GET /state |
Ανάγνωση της κατάστασης σύνδεσης ανάπτυξης που χρησιμοποιείται από τα εργαλεία Defold |
POST /post/<socket>/<message-type> |
Δημοσίευση ενός μηνύματος Defold κωδικοποιημένου με Protobuf σε μια επώνυμη υποδοχή μηχανής |
Για παράδειγμα:
curl -sS "$ENGINE_URL/ping"
curl -sS "$ENGINE_URL/info" | jq
curl -sS "$ENGINE_URL/state" | jq
Η διαδρομή /post χρησιμοποιείται από λειτουργίες ανάπτυξης όπως η δυναμική επαναφόρτωση, η επανεκκίνηση, η αλλαγή μεγέθους και ο έλεγχος διεργασιών. Το σώμα της είναι ένα δυαδικό μήνυμα Protobuf του τύπου που κατονομάζεται στη διαδρομή· δεν είναι API μηνυμάτων JSON.
Αυτές οι διαδρομές αποτελούν υποδομή ανάπτυξης, ενώ στην υλοποίηση της μηχανής υπάρχουν πρόσθετες διαδρομές δημιουργίας προφίλ και επιθεώρησης πόρων.
Στις δοκιμαστικές δημιουργίες, το SDK εγγενών επεκτάσεων μπορεί να παρέχει πρόσβαση στον διακομιστή ιστού της μηχανής. Μια επέκταση μπορεί να καταχωρίζει ένα πρόθεμα διαδρομής σε αυτόν τον διακομιστή και να εκθέτει λειτουργίες που εξαρτώνται από δεδομένα χρόνου εκτέλεσης.
Αυτό είναι χρήσιμο για εργαλεία ανάπτυξης, επειδή μια επέκταση μπορεί να μοιράζεται την υπάρχουσα υπηρεσία μηχανής αντί να ανοίγει άλλον διακομιστή HTTP.
Ένα API αυτοματισμού χρόνου εκτέλεσης που ορίζεται από επέκταση θα πρέπει:
Το επίσημο Automation Bridge του Defold είναι μια εγγενής επέκταση μόνο για δοκιμαστικές εκδόσεις, η οποία βασίζεται στην υπηρεσία μηχανής. Καταχωρίζει ένα API αυτοματισμού χρόνου εκτέλεσης με έκδοση στη διεύθυνση:
http://127.0.0.1:<engine-service-port>/automation-bridge/v1
Το API χρόνου εκτέλεσης παρέχει δυνατότητες όπως επιθεώρηση σκηνών και κόμβων, είσοδο, πληροφορίες οθόνης, στιγμιότυπα οθόνης, εγγραφή, πληροφορίες κύκλου ζωής και προαιρετικό συγχρονισμό που ορίζεται από την εφαρμογή. Ορισμένες λειτουργίες περιλαμβάνουν:
| Λειτουργία | Ενέργεια |
|---|---|
GET /automation-bridge/v1/health |
αναφορά εύρυθμης λειτουργίας, δυνατότητες API και συμβατότητα |
POST /automation-bridge/v1/input/click |
για αλληλεπιδράσεις εισόδου κατά τον χρόνο εκτέλεσης |
GET /automation-bridge/v1/screenshot |
για στιγμιότυπα οθόνης κατά τον χρόνο εκτέλεσης |
Χρησιμοποιήστε την τεκμηρίωση εγγενούς API και την τεκμηρίωση βοηθητικών Python της επέκτασης για την έκδοση που είναι εγκατεστημένη στο έργο.
Το Automation Bridge δεν εκθέτει ούτε το HTTP API ούτε το άρθρωμα Lua στις δημιουργίες έκδοσης.
Τα βοηθητικά Python του Automation Bridge παρουσιάζουν την αρχιτεκτονική δύο πελατών. Η συνάρτηση editor.open_project() επιστρέφει έναν πελάτη έργου επεξεργαστή και η project.build_and_run() επιστρέφει έναν ξεχωριστό πελάτη μηχανής.
| Πελάτης | Σκοπός |
|---|---|
| Project | HTTP API επεξεργαστή, εντολές, πρόγραμμα εντοπισμού σφαλμάτων, κονσόλα, προτιμήσεις, αναφορά, προεπισκοπήσεις, δημιουργία και εντοπισμός θύρας |
| Game - υπηρεσία μηχανής | Σκηνή, είσοδος, στιγμιότυπα οθόνης, κατάσταση χρόνου εκτέλεσης και συγχρονισμός |
Ο διαχωρισμός μεταξύ project και game κάνει το όριο διεργασιών σαφές. Οι λειτουργίες του επεξεργαστή παραμένουν στον διακομιστή επεξεργαστή, ενώ οι παρατηρήσεις και οι ενέργειες στο ζωντανό παιχνίδι παραμένουν στην υπηρεσία μηχανής.
from automation_bridge import editor
project = editor.open_project(".")
game = project.build_and_run()
Η υπηρεσία μηχανής και οι διαδρομές που ορίζονται από επεκτάσεις είναι εργαλεία ανάπτυξης και θα πρέπει να αντιμετωπίζονται ως τέτοια.
Η υπηρεσία μηχανής δεν δημοσιεύει επί του παρόντος έγγραφο OpenAPI. Οι ενσωματώσεις θα πρέπει να περιορίζονται στην τεκμηριωμένη συμπεριφορά ή στο API με έκδοση μιας επέκτασης.
Τα σενάρια χρόνου εκτέλεσης, η φυσική, η είσοδος, τα δυναμικά δημιουργημένα αντικείμενα και η απόδοση πλατφόρμας απαιτούν μια μηχανή που εκτελείται και θα πρέπει να επαληθεύονται μέσω αυτοματοποιημένων δοκιμών χρόνου εκτέλεσης.