Πώς να γίνετε ένας πραγματικός εμπειρογνώμονας αυτοματισμού

Πίνακας περιεχομένων

  1. Αυτοματοποίηση ροών εργασίας με σχεδιαγράμματα, C ++ και Python
  2. Γιατί το Unreal Engine είναι ενδιαφέρον
    • Γιατί να χρησιμοποιήσετε Blueprints για ροή εργασίας και ακόμη και προγραμματισμό παιχνιδιών
    • Γιατί να χρησιμοποιήσετε το C ++ για τη ροή εργασίας και τον προγραμματισμό παιχνιδιών
    • Γιατί να χρησιμοποιήσετε το Python για βελτιστοποίηση ροής εργασίας
  3. Γράφοντας το δικό μας αυτοματοποιημένο σενάριο εκκαθάρισης έργου χρησιμοποιώντας το Python
    • Αλλά αποδίδει;
  4. Μάθετε πώς να αυτοματοποιείτε και να βελτιστοποιείτε τις ροές εργασίας με scripting στο Udemy

Αυτοματοποίηση ροών εργασίας με σχεδιαγράμματα, C ++ και Python

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

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

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

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

Σε αυτό το άρθρο, θέλουμε να περιγράψουμε τη σημασία του αυτοματισμού όταν συνεργαζόμαστε με λογισμικό σε πραγματικό χρόνο, όπως το Unreal Engine.

Γιατί το Unreal Engine είναι ενδιαφέρον

Το Unreal Engine της Epic είναι ένα από τα πιο δημοφιλή παιχνίδια 3D και σε πραγματικό χρόνο. Χρησιμοποιείται για τη δημιουργία ψυχαγωγικού περιεχομένου όπως παιχνίδια και διαδραστικές ρυθμίσεις.

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

Επιπλέον, η αγορά παιχνιδιών και τρισδιάστατου πραγματικού χρόνου αυξάνεται συνεχώς, γεγονός που αυξάνει τη ζήτηση για ταλέντο.

Σύμφωνα με μια μελέτη που πραγματοποιήθηκε από την εταιρεία ανάλυσης αγοράς εργασίας Burning Glass Technologies, οι μέσες αποδοχές για προγραμματιστές της Unreal αυξήθηκαν κατά 22% πέρυσι , οι μισθοί για τους καλλιτέχνες, κατά 51% .

Γιατί να χρησιμοποιήσετε Blueprints για ροή εργασίας και ακόμη και προγραμματισμό παιχνιδιών

Εκτός από τη γενική διεπαφή προγραμματισμού C ++, το Unreal Engine παρέχει ένα γραφικό σύστημα προγραμματισμού που ονομάζεται Blueprints . Εκθέτουν την πλήρη λειτουργικότητα ως κώδικα C ++, που σημαίνει ότι όλα, συμπεριλαμβανομένων των λειτουργιών εντός του παιχνιδιού, μπορούν να προγραμματιστούν χωρίς τεράστια μειονεκτήματα απόδοσης.

Η γραφική διεπαφή μας επιτρέπει να συνθέσουμε γρήγορα οντότητες σε μια ροή για να δημιουργήσουμε λειτουργικότητα. Κοιτάζοντας ένα παράδειγμα που θέτει το υλικό για έναν ηθοποιό στατικού πλέγματος, μπορούμε να δούμε ότι το Blueprint είναι εύκολα αναγνώσιμο.

Γιατί να χρησιμοποιήσετε το C ++ για τη ροή εργασίας και τον προγραμματισμό παιχνιδιών

Η «εγγενής» προσέγγιση στην κωδικοποίηση για τον μη πραγματικό κινητήρα είναι C ++. Χρησιμοποιείται για τη δημιουργία λογικής εντός του παιχνιδιού, την απλοποίηση της δημιουργίας επιπέδων και των ροών εργασίας και τη βελτίωση του αγωγού ανάπτυξης. Είναι πιο περίπλοκο και δύσκολο να το μάθετε έπειτα τα Blueprints, αλλά μπορεί να προσθέσει μια επιπλέον ώθηση στο χρόνο εκτέλεσης και την απόδοση.

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

Γιατί να χρησιμοποιήσετε το Python για βελτιστοποίηση ροής εργασίας

Σε σύγκριση με Blueprints ή C ++, το Python είναι μια από τις de-facto τυπικές γλώσσες που χρησιμοποιούνται για την αυτοματοποίηση εργασιών . Είναι απλό να μάθει, κατανοητό και εξαιρετικά ευέλικτο, καθώς μπορεί να τρέξει σε σχεδόν οποιαδήποτε πλατφόρμα χωρίς επιπλέον προσπάθεια.

Το Epic απαριθμεί την Python ως μία από τις απαιτούμενες δεξιότητες, για παράδειγμα, για τα Data Pipeliners στον Οδηγό πεδίου του Δημιουργού για αναδυόμενες σταδιοδρομίες στο διαδραστικό 3D.

Το Unreal Engine διαθέτει πλήρη υποστήριξη σεναρίων Python . Δυστυχώς, δεν είναι κατάλληλο για scripting σε πραγματικό χρόνο και σε παιχνίδι, αλλά μπορεί να χρησιμοποιηθεί μόνο για scripting Unreal Editor. Η απλότητα της Python, ωστόσο, την καθιστά μια απίστευτη επιλογή για γρήγορο πρωτότυπο αυτοματισμού αγωγών.

Οι ίδιοι οι Epic προσπαθούν να προωθήσουν τη χρήση του Python χρησιμοποιώντας την τεκμηρίωση, τα έγγραφα API, ακόμη και ένα ηχογραφημένο σεμινάριο σχετικά με τη δέσμη ενεργειών Python για το Unreal Engine.

Γράφοντας το δικό μας αυτοματοποιημένο σενάριο εκκαθάρισης έργου χρησιμοποιώντας το Python

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

Το παρακάτω σχηματικό σχέδιο εξηγεί την ιδέα πίσω από το σενάριο.

Από τώρα, η προεπιλεγμένη έκδοση του Python που βρίσκεται στο Unreal είναι το Python 2.7. Εάν θέλετε να χρησιμοποιήσετε το Python 3, μπορείτε να ακολουθήσετε τη διαδικασία που περιγράφεται εδώ για να μεταβείτε στο Python 3.

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

Μπορούμε να πάρουμε τον αριθμό των επιλεγμένων στοιχείων χρησιμοποιώντας τη len()μέθοδο της Python και να χρησιμοποιήσουμε τη μέθοδο καταγραφής του Unreal για να λάβουμε έξοδο στο Log Debug στο Unreal Engine.

import unreal # create unreal class instances editor_util = unreal.EditorUtilityLibrary() # get the selected assets selected_assets = editor_util.get_selected_assets() num_assets = len(selected_assets) unreal.log(num_assets)

Το παραπάνω απόσπασμα κώδικα θα εκτυπώσει έναν μόνο αριθμό στο Debug Log. Για καθένα από τα επιλεγμένα στοιχεία, τώρα θέλουμε να λάβουμε κάποιες πληροφορίες όπως το όνομα και την κατηγορία του στοιχείου.

Το ObjectBaseαντικείμενο Unreal έχει αρκετές βοηθητικές μεθόδους για να πάρει το όνομα, την τάξη και άλλα χαρακτηριστικά. Θα κάνουμε χρήση των μεθόδων get_fname()και get_class().

for assets in selected_assets: # get the class instance and the clear text name asset_name = asset.get_fname() asset_class = asset.get_class() unreal.log("{} - {}".format(asset_name, asset_class))

However, this will only give us the class definition and not the clear text name of the class itself, which we want to use for folder creation.

To get the display name instead of the class definition, we need to create an instance of the SystemLibrary. It's get_class_display_name() method takes a class definition and returns the class name as String.

# create unreal class instances editor_util = unreal.EditorUtilityLibrary() system_lib = unreal.SystemLibrary() ... for assets in selected_assets: # get the class instance and the clear text name asset_name = asset.get_fname() asset_class = asset.get_class() class_name = system_lib.get_class_display_name(asset_class) unreal.log("Name: {} - Class: {}".format(asset_name, class_name)) 

Now we can see something like this "Name: NewMaterial - Class: Material" printed to our log. This is precisely the kind of information we needed.

The last step is to "rename" our assets to a given location. For example, every Material will be renamed to "/Material/" which will move it into the according to folders.

To "rename" assets, we need an additional class. The rename_loaded_asset() method is part of the EditorAssetLibrary, so we need to create an instance of this class first. In addition to that, we have to create a new location to which the asset will be relocated.

To keep this more platform-independent, we will use the os module and its path.join() method.

Once we have created the new_path variable, we can use it in the method call to rename_loaded_asset() to relocate our current asset.

import os import unreal # create unreal class instances editor_util = unreal.EditorUtilityLibrary() system_lib = unreal.SystemLibrary() editor_asset_lib = unreal.EditorAssetLibrary() ... for assets in selected_assets: # get the class instance and the clear text name asset_name = asset.get_fname() asset_class = asset.get_class() class_name = system_lib.get_class_display_name(asset_class) # assemble new path and relocate asset new_path = os.path.join("/Game", class_name, asset_name) editor_asset_lib.rename_loaded_asset(asset_name, new_path) unreal.log("Moved {} to {}".format(asset_name, new_path))

Executing this script in the Unreal Engine, the log will provide you with such a message: "Moved NewMaterial to /Game/Material/NewMaterial".

Observing our project, we can now see that all the selected assets have been cleaned into folders named according to their classes.

As you can see, creating a basic script is quite simple. Of course, we need to take care of error handling, suitable logging, and a friendly user interface for more sophisticated tools, but even simple scripts can save a lot of time.  

But does it pay off?

To show you how big the demand for automation in this sector is, here is a screenshot of the monthly sales of a tool with functionality containing the script we created in this article.

Of course, it is essential to understand the needs of users and artists working in the Unreal Engine to know which tasks are suitable for automation.

Learn how to automate and optimise workflows with scripting on Udemy

Για να καλύψουμε το κενό των πόρων δέσμης ενεργειών του Unreal, δημιουργήσαμε ένα εκτεταμένο μάθημα Udemy κατ 'απαίτηση για να μάθουμε το σενάριο του Unreal Engine Editor από την αρχή.

Μπορείτε να χρησιμοποιήσετε τον κωδικό προσφοράς, AUTOMATEUNREAL20 . Μπορείτε να παρακολουθήσετε το μάθημα με μόλις $ 10 τώρα. Αυτό είναι λιγότερο από τρία Frappuccinos από την Starbucks!

Εάν έχετε οποιεσδήποτε ερωτήσεις ή σχόλια, μη διστάσετε να επικοινωνήσετε μαζί μας στο Twitter ή απευθείας στην ενότητα συζήτησης του μαθήματος :)