Hogyan válhat irreális automatizálási szakértővé

Tartalomjegyzék

  1. Munkafolyamatok automatizálása Blueprints, C ++ és Python használatával
  2. Miért érdekes az Unreal Engine?
    • Miért érdemes használni a Blueprinteket a munkafolyamatokhoz és még a játék programozásához is
    • Miért érdemes a C ++ -t használni a munkafolyamat és a játék programozásához?
    • Miért használja a Pythont a munkafolyamat optimalizálásához?
  3. Saját automatizált projekttisztító szkriptünk írása Python használatával
    • De megtérül?
  4. Tudja meg, hogyan automatizálhatja és optimalizálhatja a munkafolyamatokat az Udemy parancsfájlokkal

Munkafolyamatok automatizálása Blueprints, C ++ és Python használatával

Minden munkának vannak ismétlődő feladatai és automatizálható folyamatai. Ezek a feladatok jelentős időt foglalhatnak el.

Valaki, aki csak a szkriptekről rendelkezik alapvető tudással, létrehozhat egy szkriptet, amely minimálisra csökkentheti a feladatok végrehajtásának idejét. Hosszú távon ez az időmegtakarítás további órákra halmozódik fel, amelyek felhasználhatók a produktívabb munkára.

A dolgok automatizálásának elsajátítása ezért felbecsülhetetlen képesség . Olyan készség, amelyet különböző, specifikusabb szektorokban lehet elsajátítani, majd más, általánosabb ágazatokban is alkalmazni lehet.

Különösen a jelenlegi nehéz időket figyelembe véve elengedhetetlen egy új készség elsajátítása, amely jelentős hatással lesz a foglalkoztathatóságra.

Ebben a cikkben szeretnénk leírni az automatizálás fontosságát, amikor olyan valós idejű szoftverekkel dolgozunk, mint az Unreal Engine.

Miért érdekes az Unreal Engine?

Az Epic Unreal Engine az egyik legnépszerűbb játék- és valós idejű 3D-s alkalmazás. Szórakoztató tartalmak, például játékok és interaktív beállítások létrehozására használják.

Az olyan tudományágak, mint a virtuális és a kibővített valóság, olyan kifinomult folyamatok használatát igénylik, amelyek, akárcsak bármely más csővezeték, automatizálással optimalizálhatók.

Emellett folyamatosan növekszik a játékok és a valós idejű 3D-s piac, ami növeli a tehetség iránti keresletet.

A Burning Glass Technologies munkaerő-piaci elemző cég által készített tanulmány szerint tavaly az Unreal fejlesztők átlagfizetése 22% -kal , az Artists bére 51% -kal nőtt .

Miért érdemes használni a Blueprinteket a munkafolyamatokhoz és még a játék programozásához is

Az általános C ++ programozási felület mellett az Unreal Engine grafikus programozási rendszert is kínál Blueprints néven . C ++ kódként teszik ki a teljes funkcionalitást, ami azt jelenti, hogy mindent, beleértve a játékon belüli funkciókat is, hatalmas teljesítménybeli hátrányok nélkül lehet programozni.

A grafikus felület lehetővé teszi számunkra, hogy az entitásokat gyorsan folyamatba állítsuk a funkcionalitás létrehozása érdekében. Megtekintve egy példát, amely egy statikus hálós színész anyagát állítja be, láthatjuk, hogy a Tervrajz könnyen olvasható.

Miért érdemes a C ++ -t használni a munkafolyamat és a játék programozásához?

Az irreális motor kódolásának „natív” megközelítése a C ++. Használják játékon belüli logika létrehozására, a szintkészítés és a munkafolyamatok egyszerűsítésére, valamint a fejlesztési folyamat javítására. Összetettebb és nehezebb megtanulni, mint a tervrajzokat, de további lendületet adhat a futási időnek és a teljesítménynek.

A teljesítmény előnye teszi a nyelv választás alapvető, alacsonyabb szintű műveletek, mint teszi és a fizika játék fejlesztését. A fejlesztők számára, akik már jártasak a C ++ - ban, kényelmes kiegészítő, ha képesek automatizálni a folyamatokat anélkül, hogy további nyelvet tanulnának közvetlenül.

Miért használja a Pythont a munkafolyamat optimalizálásához?

A Blueprints-hez vagy a C ++ -hoz képest a Python az egyik de facto szabványos nyelv, amelyet a feladatok automatizálásához használnak . Ez egyszerűen megtanulható, érthető és rendkívül sokoldalú, mivel szinte minden platformon futtatható további erőfeszítések nélkül.

Az Epic a Pythont az egyik szükséges készség közé sorolja, például az Data Pipeliners számára az Alkotók terepi útmutatójában az új interaktív 3D-s pályákról.

Az Unreal Engine teljes Python parancsfájl-támogatással rendelkezik . Sajnos nem alkalmas valós idejű és játékon belüli szkriptek készítésére, de csak az Unreal Editor szkriptekhez használható. A Python egyszerűsége azonban hihetetlen lehetőséget kínál a csővezeték-automatizálás gyors prototípusának elkészítéséhez.

Az Epic maguk is megpróbálják elősegíteni a Python használatát a dokumentáció, az API-dokumentumok és még az Unreal Engine Python-szkriptjeiről szóló rögzített webszeminárium segítségével.

Saját automatizált projekttisztító szkriptünk megírása Python használatával

A nagyobb projektek gyorsan rendetlenné válhatnak. Ha kéznél van egy olyan szkript, amely képes megtisztítani azáltal, hogy megnézi az összes kiválasztott elemünket, és automatikusan áthelyezi azokat megfelelő mappákba, az jelentősen javítja a munkafolyamatot.  

Az alábbi sematikus rajz elmagyarázza a forgatókönyv mögött rejlő ötletet.

Mostantól az Unrealban a Python alapértelmezett verziója a Python 2.7. A Python 3 használatához kövesse az itt leírt folyamatot a Python 3-ra való váltáshoz.

Először is először be kell importálnunk az irreális könyvtárat a hatókörünkbe. Miután ezt megtettük, létrehozhatjuk az elemi osztályok osztálypéldányait. Egyelőre csak arra van szükségünk, EditorUtilityLibraryamely lehetővé teszi, hogy listát kapjunk az összes kiválasztott eszközről.

Megkaphatjuk a kiválasztott eszközök számát a Python len()módszerrel, és az Unreal naplózási módszerével kimenetet kapunk az Unreal Engine hibakeresési naplójához.

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)

A fenti kódrészlet egyetlen számot nyomtat a Debug Log. Minden egyes kiválasztott eszközről most szeretnénk információkat szerezni, például az eszköz nevét és osztályát.

Az Unreal ObjectBaseobjektumnak számos segítő módszere van a név, osztály és egyéb attribútumok megszerzésére. Kihasználjuk a get_fname()és get_class()módszereket.

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

To help close the gap of Unreal scripting resources, we created an extensive Udemy on-demand course to learn Unreal Engine Editor scripting from scratch.

You can use the promo code, AUTOMATEUNREAL20. You can get the course for as little as $10 now. That’s less than three Frappuccinos from Starbucks!

If you have any questions or feedback, feel free to reach out to us on Twitter or directly in the discussion section of the course :)