Μονάδες
1. Εισαγωγή στην τεχνητή νοημοσύνη στην ανάπτυξη παιχνιδιών: Ρόλοι, όρια, επαλήθευση, πνευματικά δικαιώματα και ηθική 2. Πρωτότυπο και Μηχανικός Σχεδιασμός: Ταχεία Επανάληψη από την Ιδέα στον Πυρήνα με δυνατότητα αναπαραγωγής 3. Συστήματα Συμπεριφοράς και Διαλόγου NPC: Τεχνητή Νοημοσύνη που ζωντανεύει τον χαρακτήρα 4. Δημιουργία Διαδικαστικού Περιεχομένου (PCG): Επίπεδο, Χάρτης, Αναζήτηση και Αφήγηση 5. Περιουσιακό στοιχείο και οπτική παραγωγή: concept art, 2d/3d και texture 6. Παραγωγή ήχου, μουσικής και εφέ: The Heard World of the Game 7. Δημιουργία κώδικα και ενσωμάτωση κινητήρα: Unity (C#) και Unreal (Blueprint/C++) 8. Ισορροπία παιχνιδιού, προσομοίωση και οικονομία: Ένα δίκαιο παιχνίδι με αριθμούς 9. Διασφάλιση ποιότητας (QA), εντοπισμός σφαλμάτων και αυτοματοποιημένη δοκιμή 10. Πνευματικά δικαιώματα, πρωτοτυπία, άδεια και δεοντολογία: Δημοσιεύσιμο και υπεύθυνο περιεχόμενο 11. Ροή εργασιών από άκρο σε άκρο, ενοποίηση γραμμής παραγωγής, διακυβέρνηση και υπηρεσία Live Service
Μονάδα 7 / 11

Δημιουργία κώδικα και ενσωμάτωση κινητήρα: Unity (C#) και Unreal (Blueprint/C++)

Κέρδη:

  • Δυνατότητα παραγωγής αξιόπιστου, μεταγλωττιζόμενου κώδικα παιχνιδιού από τεχνητή νοημοσύνη δίνοντας μηχανή, έκδοση, γλώσσα και αρχιτεκτονικό πλαίσιο και ενσωμάτωσή του διαβάζοντας και κατανοώντας τον κώδικα
  • Δυνατότητα διαχείρισης της απόδοσης του συγκεκριμένου κώδικα παιχνιδιού (κατανομή ανά καρέ), του κύκλου ζωής του κινητήρα και των κινδύνων παραισθήσεων μέσω συλλογής, δοκιμών και προφίλ
  • Δυνατότητα εφαρμογής της αρχής του οικοδεσπότη-αυθεντίας σε παιχνίδια για πολλούς παίκτες και η υπεύθυνη χρήση των πληροφοριών ασφαλείας μόνο για την υπεράσπιση και την επαλήθευση του δικού του παιχνιδιού.

Το παιχνίδι είναι λογισμικό. Όσο καλά και αν είναι σχεδιασμένο, υλοποιείται με κώδικα. Η μηχανή παιχνιδιού είναι η υποδομή που κάνει το παιχνίδι να τρέχει: το Unity (ευρέως χρησιμοποιούμενος κινητήρας σε σενάριο C#) και το Unreal Engine (μηχανή που χρησιμοποιεί C++ και η οπτική γλώσσα σεναρίων Blueprint) είναι τα δύο πιο κοινά. Η τεχνητή νοημοσύνη είναι ένα από τα πιο ώριμα βοηθήματα στη δημιουργία κώδικα: ελεγκτής αναπαραγωγής, σύστημα αποθέματος, μηχανές κατάστασης, αποθήκευση/φόρτωση, λογική διεπαφής, εντοπισμός σφαλμάτων και ανακατασκευή (αναπαράσταση κώδικα χωρίς να παραβιάζεται η συμπεριφορά του). Όμως ο κώδικας παιχνιδιού έχει τις δικές του παγίδες: απόδοση (ρυθμός καρέ), κύκλος ζωής του κινητήρα, ασφάλεια για πολλούς παίκτες. Σε αυτή την ενότητα θα μάθετε πώς να χρησιμοποιείτε το AI με ασφάλεια και αποτελεσματικότητα στον κώδικα παιχνιδιού.

Κρίσιμη αρχή: πλαίσιο κινητήρα και έκδοσης

Εάν το AI δεν γνωρίζει για ποιον κινητήρα και την έκδοση γράφει, θα δημιουργήσει ένα μπερδεμένο, παρωχημένο ή ανύπαρκτο API. Δώστε λοιπόν περιβάλλον κινητήρα, έκδοσης, γλώσσας και αρχιτεκτονικής σε κάθε προτροπή κώδικα. Το "Write player move for Unity" είναι αδύναμο. Το "Unity 2022.3, C#, νέο Σύστημα Εισόδου, Κίνηση φυσικής με βάση το άκαμπτο σώμα" είναι ισχυρό. Καθορίστε εάν θέλετε το Blueprint ή το C++ σε Unreal και ποια έκδοση χρησιμοποιείτε.

Ασφαλής ροή κώδικα βήμα προς βήμα:

  1. Δώστε περιεχόμενο (μηχανή, έκδοση, γλώσσα, τρέχουσα αρχιτεκτονική, περιορισμοί).
  2. Θέλετε να είναι μικρό και καθορισμένο (μονο συστατικό, όχι ολόκληρο το σύστημα).
  3. Διαβάστε και κατανοήστε τον κώδικα (κατανοήστε τι κάνει γραμμή προς γραμμή, μην βάζετε κώδικα που δεν καταλαβαίνετε).
  4. Κατασκευή και δοκιμή (λειτουργία στον κινητήρα, προφίλ — μέτρηση απόδοσης).
  5. Refactor and integrate (ταιριάζουν με το πρότυπο έργου).
Συμβουλή: Όταν ζητάτε κωδικό από το AI, πείτε "εξηγήστε με σχόλια". Ο στόχος σας είναι να κατανοήσετε τον κώδικα. Η τοποθέτηση κώδικα τεχνητής νοημοσύνης που δεν καταλαβαίνετε σε ένα έργο θα συσσωρεύσει μη συντηρήσιμο χρέος. Ζητήστε επίσης κώδικα σε μικρά, ελεγχόμενα κομμάτια: Αντί για ένα σύστημα 500 γραμμών, ένα στοιχείο 30-50 γραμμών που κάνει μια συγκεκριμένη εργασία είναι εύκολο να επαληθευτεί και να ενσωματωθεί.

Παγίδες ειδικά για τον κώδικα του παιχνιδιού

Απόδοση. Ο κώδικας παιχνιδιού εκτελείται 30-60+ φορές το δευτερόλεπτο. Η τεχνητή νοημοσύνη μπορεί να τοποθετήσει ακριβές λειτουργίες (εκχώρηση μνήμης, αναζήτηση, χειρισμός συμβολοσειρών) στον βρόχο ενημέρωσης που εκτελείται σε κάθε πλαίσιο. αυτό μειώνει τον ρυθμό καρέ. Δημιουργήστε κρίσιμους κώδικες απόδοσης προφίλ και δώστε περιορισμούς τεχνητής νοημοσύνης όπως "εκτέλεση σε κάθε πλαίσιο, χωρίς κατανομή".

Κύκλος ζωής κινητήρα. Το AI μερικές φορές συγχέει όταν καλούνται ειδικές μέθοδοι, όπως Awake/Start/Update στο Unity, BeginPlay/Tick στο Unreal. Εντοπίστε σφάλματα κύκλου ζωής με δοκιμή.

Ασφάλεια για πολλούς παίκτες. Αυτό είναι το πιο κρίσιμο ζήτημα όσον αφορά την πληροφορική/ασφάλεια. Μην εμπιστεύεστε ποτέ τον πελάτη σε πολλούς παίκτες: ο πελάτης στον υπολογιστή του παίκτη μπορεί να χειραγωγηθεί για εξαπάτηση. Επαληθεύστε την κρίσιμη κατάσταση όπως πόντοι, ζημιές, χρήματα στον διακομιστή (διακομιστής-εξουσιοδοτημένος). Ελέγξτε τον κώδικα δικτύου που δημιουργείται από το AI σύμφωνα με αυτήν την αρχή. Εάν το AI έχει δημιουργήσει ένα θέμα ευπάθειας που εμπιστεύεται τον πελάτη, διορθώστε το. Χρησιμοποιήστε αυτές τις πληροφορίες μόνο για να υπερασπιστείτε και να επαληθεύσετε το δικό σας παιχνίδι. Η μη εξουσιοδοτημένη πρόσβαση ή η εξαπάτηση σε διακομιστή κάποιου άλλου είναι παράνομη και ανήθικη.

Προσοχή: Ο κώδικας που δημιουργείται με τεχνητή νοημοσύνη ενδέχεται να περιέχει τρωτά σημεία (έλλειψη επικύρωσης εισόδου, εμπιστοσύνη πελάτη, αποθήκευση αρχείων χειρισμού). Μην αποδέχεστε τυφλά τον κωδικό. Πραγματοποιήστε μια αναθεώρηση ασφαλείας, ιδιαίτερα του δικτύου, των οικονομικών και αποθηκεύστε κώδικα.

Χρέος αρχιτεκτονικής και συντήρησης

Το AI παράγει μεμονωμένες λειτουργίες γρήγορα. Αλλά η αρχιτεκτονική ενός παιχνιδιού - πώς χωρίζονται τα συστήματα, πώς συνομιλούν μεταξύ τους, πού διατηρούνται τα δεδομένα - είναι μια μακροπρόθεσμη απόφαση και ανήκει στον άνθρωπο. Εάν πείτε στην τεχνητή νοημοσύνη να «γράψει ολόκληρο το απόθεμα, να πολεμήσει και να σώσει το σύστημα μαζί», θα έχετε μια λειτουργική αλλά σφιχτά συνδεδεμένη, δύσκολο στη συντήρηση, μη επεκτάσιμη μπάλα νήματος. Αντίθετα, σχεδιάζετε την αρχιτεκτονική, χρησιμοποιείτε τεχνητή νοημοσύνη για να συμπληρώσετε μικρά στοιχεία με καθορισμένες διεπαφές. Η καλή αρχιτεκτονική κάνει τη διαφορά καθώς το παιχνίδι μεγαλώνει: οι κακές αποφάσεις επανέρχονται ένα χρόνο αργότερα ως τεχνικό χρέος που καθυστερεί κάθε νέο χαρακτηριστικό.

Μια άλλη πηγή χρέους συντήρησης είναι ο κωδικός που μπαίνει στο έργο χωρίς να γίνεται κατανοητός. Ένα σύστημα γραμμένο από AI θα μπορούσε να λειτουργήσει σήμερα. Όταν όμως πρέπει να το αντικαταστήσεις έξι μήνες αργότερα και κανείς δεν θυμάται τι έκανε, το χρέος μετατρέπεται σε τόκο. Αυτός είναι ο λόγος για τον οποίο δύο κλάδοι είναι απαραίτητοι: η ανάγνωση και η κατανόηση του κώδικα κατά τη στιγμή της παραγωγής και το αίτημα για διευκρινιστικά σχόλια από την τεχνητή νοημοσύνη. Ως εμπειρικός κανόνας, μην βάζετε κώδικα AI στο έργο σας που δεν μπορείτε να ξαναγράψετε μόνοι σας ή τουλάχιστον να εξηγήσετε γραμμή προς γραμμή. Το AI δίνει ταχύτητα. Η πειθαρχία σας δίνει βιωσιμότητα.

τρεις μίνι θήκες

Περίπτωση 1 — Το περιβάλλον έκδοσης απέτρεψε το σφάλμα. Ένας προγραμματιστής είπε αρχικά, "Γράψε απόθεμα για το Unity". ο κώδικας χρησιμοποιούσε ένα παλιό API, δεν έγινε μεταγλώττιση. Στη συνέχεια έδωσε το πλαίσιο "Unity 2022.3, C#, based on ScriptableObject". ο κώδικας μεταγλωττίστηκε την πρώτη φορά και ταιριάζει στο έργο. Το περιβάλλον εξοικονόμησε μια ώρα εντοπισμού σφαλμάτων.

Περίπτωση 2 — Παγίδα απόδοσης. Σε ένα παιχνίδι ο ρυθμός καρέ ήταν χαμηλός. Κατά τη δημιουργία προφίλ, διαπιστώθηκε ότι μια μέθοδος ενημέρωσης που παρήχθη από το AI διέθεσε μια νέα λίστα σε κάθε πλαίσιο και έψαξε για εχθρούς. Διορθώθηκε ο κώδικας με αποθηκευμένη αναφορά στην κρυφή μνήμη και μη τετραγωνική ενημέρωση, αυξάνοντας τον ρυθμό καρέ από 42 σε 60.

Περίπτωση 3 — Εντοπίστηκε ευπάθεια ασφαλείας. Σε ένα παιχνίδι για πολλούς παίκτες, ο κώδικας που δημιουργήθηκε από την τεχνητή νοημοσύνη υπολόγισε τη ζημιά στον πελάτη και την ανέφερε στον διακομιστή. αυτό ήταν ανοιχτό για εξαπάτηση (ο πελάτης μπορούσε να προκαλέσει άπειρη ζημιά). Ο κωδικός έχει γίνει διακομιστής-αυταρχικός (ο διακομιστής υπολογίζει τη ζημιά). Ο έλεγχος απέτρεψε ένα σκάνδαλο εξαπάτησης μετά τη δημοσίευση.

Τέσσερα πρότυπα με δυνατότητα αντιγραφής

1) Αίτημα κωδικού με περιεχόμενο:

Κινητήρας: Unity 2022.3. Γλώσσα: C#. Αρχιτεκτονική: [π.χ. Βασισμένο σε στοιχείο].Περιορισμός: Εκχώρηση στην ενημέρωση. να είναι ευανάγνωστο και σχολιασμένο.Εργασία: [μονό, καθορισμένο συστατικό, π.χ. "ελεγκτής χαρακτήρων διπλού άλματος"]. Βεβαιωθείτε ότι κάθε API που χρησιμοποιείτε είναι σε αυτήν την έκδοση. Εάν δεν είστε σίγουροι, ενημερώστε με.

2) Επεξήγηση/αναθεώρηση κώδικα:

Εξηγήστε τον ακόλουθο κώδικα γραμμή προς γραμμή και γράψτε (1) τι κάνει, (2) πιθανά προβλήματα απόδοσης (κατανομή ανά καρέ, ακριβή αναζήτηση), (3) πιθανά σφάλματα, (4) προτάσεις για βελτίωση. Κώδικας: [επικόλληση]

3) Έλεγχος ασφαλείας για πολλούς παίκτες:

Εξετάστε τον ακόλουθο κωδικό για πολλούς παίκτες για λόγους ασφαλείας. Συγκεκριμένα: μέρη όπου ο πελάτης είναι αξιόπιστος, κρίσιμη κατάσταση που πρέπει να επαληθευτεί στον διακομιστή (ζημία, πόντοι, χρήματα), έλλειψη επικύρωσης εισόδου. Πρότεινε διόρθωση για να γίνει ο διακομιστής-αυταρχικός. Αυτό είναι απλώς για να υπερασπιστώ το δικό μου παιχνίδι. Κωδικός: [επικόλληση]

4) Ανακατασκευαστής εστιασμένος στο προφίλ απόδοσης:

Αυτός ο κώδικας εκτελείται σε κάθε καρέ και μειώνει τον ρυθμό καρέ: [κώδικας]. Βρείτε εκχωρήσεις, ακριβές αναζητήσεις και περιττές λειτουργίες καρέ-καρέ. Βελτιστοποιήστε χωρίς διακοπή συμπεριφοράς με προσωρινή αποθήκευση και λιγότερο συχνές ενημερώσεις. Εξηγήστε τις αλλαγές.

Αδύναμη προτροπή / Ισχυρή προτροπή

Αδύναμη προτροπή:

Γράψτε ένα σύστημα αποθήκευσης στο Unity.

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

Ισχυρή προτροπή:

Κινητήρας: Unity 2022.3, C#. Εργασία: Σύστημα αποθήκευσης/φόρτωσης που βασίζεται σε JSON. Για αποθήκευση: τοποθεσία παίκτη, απόθεμα, πρόοδος. Περιορισμός: λήψη διαχείρισης σφαλμάτων έναντι καταστροφής αρχείων. Προσθέστε έναν έλεγχο ακεραιότητας (hash) στο αρχείο αποθήκευσης για να αποτρέψετε την εξαπάτηση αλλάζοντας το εύκολα από τη συσκευή αναπαραγωγής. Σχολιάστε τον κωδικό και επαληθεύστε ότι κάθε API είναι σε αυτήν την έκδοση.

Η έκδοση, το εύρος, ο χειρισμός σφαλμάτων και ο έλεγχος ακεραιότητας σκληραίνουν την έξοδο.

Πίνακας περιβάλλοντος κινητήρα/γλώσσας

κινητήρα

γλώσσα

Τι πρέπει να δώσετε στο AI

ιδιαίτερη προσοχή

ενότητα

C#

Έκδοση, σύστημα εισόδου/φυσικής

Κατανομή ενημέρωσης, κύκλος ζωής

εξωπραγματικό

Σχεδιάγραμμα

Έκδοση, πλαίσιο κόμβου

Όρια οπτικής λογικής

εξωπραγματικό

C++

Έκδοση, δομή ενότητας

Μνήμη, GC, μακροεντολές

multiplayer

και τα δύο

μοντέλο δικτύου

Παρουσιαστής-αυταρχισμός

Συνήθη λάθη

  • Δεν προσδιορίζεται κινητήρας/έκδοση. Προέρχεται από ξεπερασμένο ή κατασκευασμένο API.
  • Εμπιστεύεστε τον κώδικα χωρίς να τον καταλαβαίνετε. Συσσωρεύεται μη διατηρητέο ​​χρέος.
  • Μη μέτρηση της απόδοσης. Η κατανομή καρέ-καρέ μειώνει αθόρυβα τον ρυθμό καρέ.
  • Εμπιστοσύνη στον πελάτη. Υπάρχει μια ευπάθεια cheating στο multiplayer.
  • Θέλοντας ολόκληρο το σύστημα ταυτόχρονα. Το μικρό, ελεγχόμενο κομμάτι είναι ασφαλέστερο.

Συνοπτικά

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

Εργασία εφαρμογής

Επιλέξτε ένα μικρό στοιχείο (π.χ. διπλό άλμα ή απλό απόθεμα). Δημιουργήστε κώδικα παρέχοντας τη μηχανή και την έκδοση με το πρότυπο "αίτημα κώδικα με πλαίσιο". Στη συνέχεια, καταργήστε τους κινδύνους απόδοσης και σφαλμάτων με τον έλεγχο του ίδιου κώδικα με το πρότυπο "Περιγραφή/επισκόπηση κώδικα". Μεταγλωττίστε και δοκιμάστε τον κώδικα στον κινητήρα.

λίστα ελέγχου

  • [ ] Έδωσα τη μηχανή, την έκδοση, τη γλώσσα και την αρχιτεκτονική.
  • [ ] Διάβασα και κατάλαβα τον κώδικα. Το ήθελα με σχολιασμό.
  • [ ] Το συνέταξα και το δοκίμασα στον κινητήρα και μέτρησα την απόδοση.
  • [ ] Έκανα έναν έλεγχο ασφαλείας στον κωδικό δικτύου/οικονομίας/αποθήκευσης.
  • [ ] Χρησιμοποίησα πληροφορίες ασφαλείας μόνο για να υπερασπιστώ το δικό μου παιχνίδι.