Manuals
Manuals




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

Δομικά στοιχεία

Στον πυρήνα του σχεδιασμού του Defold υπάρχουν μερικές έννοιες με τις οποίες ίσως χρειαστείτε λίγο χρόνο για να εξοικειωθείτε. Αυτό το εγχειρίδιο εξηγεί τα βασικά δομικά στοιχεία του Defold. Αφού το διαβάσετε, συνεχίστε με το εγχειρίδιο διευθυνσιοδότησης και το εγχειρίδιο ανταλλαγής μηνυμάτων. Υπάρχει επίσης ένα σύνολο οδηγών εκμάθησης, διαθέσιμο μέσα από τον επεξεργαστή, για να ξεκινήσετε γρήγορα.

Δομικά στοιχεία

Υπάρχουν τρεις βασικοί τύποι δομικών στοιχείων που χρησιμοποιείτε για να δημιουργήσετε ένα παιχνίδι Defold:

Συλλογή
Μια συλλογή είναι ένα αρχείο που χρησιμοποιείται για τη δομή του παιχνιδιού σας. Μέσα στις συλλογές δημιουργείτε ιεραρχίες αντικειμένων παιχνιδιού και άλλων συλλογών. Οι συλλογές χρησιμοποιούνται συνήθως για τη δόμηση επιπέδων, ομάδων εχθρών ή χαρακτήρων που αποτελούνται από πολλά αντικείμενα παιχνιδιού.
Αντικείμενο παιχνιδιού
Ένα αντικείμενο παιχνιδιού είναι ένας περιέκτης με αναγνωριστικό, θέση, περιστροφή και κλίμακα. Περιέχει στοιχεία. Τα αντικείμενα παιχνιδιού χρησιμοποιούνται συνήθως για χαρακτήρες παικτών, βλήματα, συστήματα κανόνων ή για τη φόρτωση και εκφόρτωση επιπέδων.
Στοιχείο
Τα στοιχεία (components) είναι οντότητες που τοποθετούνται σε αντικείμενα παιχνιδιού και τους δίνουν οπτική, ακουστική ή λογική παρουσία στο παιχνίδι. Χρησιμοποιούνται, για παράδειγμα, για γραφικά sprite, script, ηχητικά εφέ και εφέ σωματιδίων.

Συλλογές

Οι συλλογές είναι δενδροειδείς δομές που περιέχουν αντικείμενα παιχνιδιού και άλλες συλλογές. Μια συλλογή αποθηκεύεται πάντα σε αρχείο.

Όταν ξεκινά η μηχανή Defold, φορτώνει μία συλλογή εκκίνησης (bootstrap collection), όπως καθορίζεται στο αρχείο ρυθμίσεων game.project. Η συλλογή εκκίνησης ονομάζεται συχνά main.collection, αλλά μπορείτε να χρησιμοποιήσετε οποιοδήποτε όνομα θέλετε.

Μια συλλογή μπορεί να περιέχει αντικείμενα παιχνιδιού και άλλες συλλογές, μέσω αναφοράς στο αρχείο της υποσυλλογής, σε οποιοδήποτε βάθος ένθεσης. Ακολουθεί ένα παράδειγμα αρχείου με όνομα main.collection. Περιέχει ένα αντικείμενο παιχνιδιού με αναγνωριστικό can και μία υποσυλλογή με αναγνωριστικό bean. Η υποσυλλογή περιέχει με τη σειρά της δύο αντικείμενα παιχνιδιού: bean και shield.

Συλλογή

Σημειώστε ότι η υποσυλλογή με αναγνωριστικό bean αποθηκεύεται στο δικό της αρχείο, /main/bean.collection, και το main.collection περιέχει μόνο μια αναφορά σε αυτό:

Συλλογή bean

Δεν μπορείτε να απευθυνθείτε στις ίδιες τις συλλογές, καθώς κατά τον χρόνο εκτέλεσης δεν υπάρχουν αντικείμενα που να αντιστοιχούν στις συλλογές main και bean. Ωστόσο, μερικές φορές πρέπει να χρησιμοποιήσετε το αναγνωριστικό μιας συλλογής ως μέρος της διαδρομής προς ένα αντικείμενο παιχνιδιού. Για λεπτομέρειες, ανατρέξτε στο εγχειρίδιο διευθυνσιοδότησης:

-- file: can.script
-- get position of the "bean" game object in the "bean" collection
local pos = go.get_position("bean/bean")

Μια συλλογή προστίθεται πάντα σε μια άλλη συλλογή ως αναφορά σε αρχείο συλλογής:

Κάντε δεξί κλικ στη συλλογή στην προβολή Outline και επιλέξτε Add Collection File.

Αντικείμενα παιχνιδιού

Τα αντικείμενα παιχνιδιού είναι απλά αντικείμενα, καθένα από τα οποία έχει ξεχωριστή διάρκεια ζωής κατά την εκτέλεση του παιχνιδιού. Κάθε αντικείμενο παιχνιδιού έχει θέση, περιστροφή και κλίμακα, τις οποίες μπορείτε να μεταβάλετε και να κινήσετε κατά τον χρόνο εκτέλεσης.

-- animate X position of "can" game object
go.animate("can", "position.x", go.PLAYBACK_LOOP_PINGPONG, 100, go.EASING_LINEAR, 1.0)

Τα αντικείμενα παιχνιδιού μπορούν να χρησιμοποιηθούν κενά, για παράδειγμα ως δείκτες θέσης, αλλά συνήθως περιέχουν διάφορα στοιχεία, όπως sprite, ήχους, script, μοντέλα, factory και άλλα. Τα αντικείμενα παιχνιδιού μπορούν να δημιουργηθούν στον επεξεργαστή και να τοποθετηθούν σε αρχεία συλλογής ή να δημιουργηθούν δυναμικά κατά τον χρόνο εκτέλεσης μέσω στοιχείων factory.

Τα αντικείμενα παιχνιδιού είτε προστίθενται επιτόπου σε μια συλλογή είτε προστίθενται σε αυτή ως αναφορά σε αρχείο αντικειμένου παιχνιδιού:

Κάντε δεξί κλικ στη συλλογή στην προβολή Outline και επιλέξτε Add Game Object για προσθήκη επιτόπου ή Add Game Object File για προσθήκη ως αναφορά σε αρχείο.

Στοιχεία

Components are used to give specific expression and/or functionality to game objects. Components have to be contained inside game objects and are affected by the position, rotation and scale of the game object that contains the component:

Components

Many components have type specific properties that can be manipulated and there are component type specific functions available for interacting with them in runtime:

-- disable the can "body" sprite
msg.post("can#body", "disable")

-- play "hoohoo" sound on "bean" in 1 second
sound.play("bean#hoohoo", { delay = 1, gain = 0.5 } )

Components are either added in-place in a game object, or added to a game object as a reference to a component file:

Right-click the game object in the Outline view and select Add Component (add in-place) or Add Component File (add as file reference).

In most cases it makes most sense to create components in-place, but the following component types must be created in separate resource files before being added by reference to a game object:

  • Script
  • GUI
  • Particle FX
  • Tile Map

Ανατρέξτε στην επισκόπηση στοιχείων για μια λίστα των διαθέσιμων τύπων στοιχείων.

Αντικείμενα που προστίθενται επιτόπου ή μέσω αναφοράς

Όταν δημιουργείτε ένα αρχείο συλλογής, αντικειμένου παιχνιδιού ή στοιχείου, δημιουργείτε αυτό που στο Defold ονομάζεται πρωτότυπο (prototype· σε άλλες μηχανές είναι γνωστό και ως prefab ή blueprint). Με αυτόν τον τρόπο προστίθεται μόνο ένα αρχείο στη δομή του έργου και όχι κάτι στο παιχνίδι που εκτελείται. Για να χρησιμοποιήσετε μια συλλογή, ένα αντικείμενο παιχνιδιού ή ένα στοιχείο που βασίζεται σε τέτοιο αρχείο, προσθέτετε ένα στιγμιότυπό του σε ένα από τα αρχεία συλλογής σας.

Μπορείτε να δείτε σε ποιο αρχείο βασίζεται ένα στιγμιότυπο αντικειμένου στην προβολή Outline. Το αρχείο main.collection περιέχει τρία στιγμιότυπα που βασίζονται σε αρχεία:

  1. Την υποσυλλογή bean.
  2. Το στοιχείο script bean στο αντικείμενο παιχνιδιού bean της υποσυλλογής bean.
  3. Το στοιχείο script can στο αντικείμενο παιχνιδιού can.

Στιγμιότυπο

Το όφελος από τη δημιουργία αρχείων πρωτοτύπων γίνεται εμφανές όταν έχετε πολλά στιγμιότυπα ενός αντικειμένου παιχνιδιού ή μιας συλλογής και θέλετε να τα αλλάξετε όλα:

Στιγμιότυπα αντικειμένων παιχνιδιού

Αλλάζοντας το αρχείο πρωτοτύπου, κάθε στιγμιότυπο που το χρησιμοποιεί ενημερώνεται αμέσως:

Αλλαγή πρωτοτύπου αντικειμένου παιχνιδιού

Εδώ αλλάζει η εικόνα sprite του αρχείου πρωτοτύπου και ενημερώνονται αμέσως όλα τα στιγμιότυπα που χρησιμοποιούν το αρχείο:

Ενημερωμένα στιγμιότυπα αντικειμένων παιχνιδιού

Ιεραρχίες γονέα-παιδιού

Σε ένα αρχείο συλλογής μπορείτε να δημιουργήσετε ιεραρχίες αντικειμένων παιχνιδιού, έτσι ώστε ένα ή περισσότερα αντικείμενα να είναι παιδιά ενός γονικού αντικειμένου παιχνιδιού. Απλώς σύρετε ένα αντικείμενο παιχνιδιού και αποθέστε το επάνω σε ένα άλλο. Το αντικείμενο που σύρατε γίνεται παιδί του αντικειμένου προορισμού:

Ιεραρχία γονέα-παιδιού

Οι ιεραρχίες γονέα-παιδιού είναι μια δυναμική σχέση που επηρεάζει τον τρόπο με τον οποίο τα αντικείμενα αντιδρούν στους μετασχηματισμούς. Κάθε μετασχηματισμός, δηλαδή μετατόπιση, περιστροφή ή κλιμάκωση, που εφαρμόζεται σε ένα αντικείμενο εφαρμόζεται με τη σειρά του στα παιδιά του, τόσο στον επεξεργαστή όσο και κατά τον χρόνο εκτέλεσης:

Μετασχηματισμός παιδικού αντικειμένου

Αντίθετα, οι μετατοπίσεις ενός παιδιού γίνονται στον τοπικό χώρο του γονέα. Στον επεξεργαστή μπορείτε να επιλέξετε αν θα επεξεργαστείτε ένα παιδικό αντικείμενο παιχνιδιού στον παγκόσμιο ή στον τοπικό χώρο, επιλέγοντας Edit ▸ World Space (προεπιλογή) ή Edit ▸ Local Space.

Μπορείτε επίσης να αλλάξετε τον γονέα ενός αντικειμένου κατά τον χρόνο εκτέλεσης, στέλνοντάς του το μήνυμα set_parent.

local parent = go.get_id("bean")
msg.post("child_bean", "set_parent", { parent_id = parent })

Μια συνηθισμένη παρανόηση είναι ότι η θέση ενός αντικειμένου παιχνιδιού στην ιεραρχία συλλογής αλλάζει όταν το αντικείμενο γίνεται μέρος μιας ιεραρχίας γονέα-παιδιού. Πρόκειται όμως για δύο πολύ διαφορετικά πράγματα. Οι ιεραρχίες γονέα-παιδιού αλλάζουν δυναμικά τον γράφο σκηνής, επιτρέποντας στα αντικείμενα να συνδέονται οπτικά μεταξύ τους. Η διεύθυνση ενός αντικειμένου παιχνιδιού καθορίζεται αποκλειστικά από τη θέση του στην ιεραρχία συλλογής και παραμένει στατική σε όλη τη διάρκεια ζωής του αντικειμένου.